Posts CI란? (Jenkins - 1편)
Post
Cancel

CI란? (Jenkins - 1편)


진행중인 프로젝트에서 대부분의 기능을 완성해가고, 서버에 배포하는 작업을 해보기로 하였습니다.
그러던 중 회사에서 진행했던 프로젝트에서 Jenkins를 이용했던 것이 생각나 이를 적용해보기로 했습니다.

1. CI(Continuous Integration)란?

Continuous Integration이란 지속적인 통합이라는 뜻으로, 빠르게 작업한 내용을 브랜치에서 합치고, 빌드하는 방식을 뜻합니다.
그리고 이 작업들을 알아서 해주는 프로그램을 CI tool이라고 부르게 되었습니다.
그러면 CI라는 것이 왜 생겨났는지 알아볼까요?

폭포수 모델

폭포수 모델은 소프트웨어 개발 방법 중 하나로, 오랫동안 사용해왔던 방법입니다.

image

위와같은 순서로 진행되는데, 앞의 순서에서 해야하는 일을 모두 끝나야지만 다음 작업을 진행할 수 있기 때문에 과정 하나하나가 시간이 오래 걸린다는 단점이 있습니다.
또, 모든 개발이 끝난 후에야 테스트를 하기 때문에 그 전까지는 동작이 제대로 되는지 확인할 수 없고, 결함을 발견하더라도 해결하기 힘들다는 단점도 존재합니다.

그래서 이에 대한 단점을 보완하기 위해 Agile 방법론이라는 것이 생기기 시작했습니다.

Agile 방법론

애자일 방식의 경우 소프트웨어 개발을 하면서 조금씩 목표를 수정해 나가는 방법을 말합니다.

image

새로운 요구사항을 받아들여 목표 수정을 위해 위의 과정을 빠른 주기로 반복하게 되는데, 이렇게 진행될 경우 여러 사람이 작업한 코드들을 통합해주고, 테스트하며, 배포해주는 과정 또한 계속해서 진행해주어야합니다.
하지만, 사람이 직접 코드를 통합, 테스트, 배포하는 과정을 하다보면 실수를 할 수 있고, 번거롭기 때문에 CI 자동으로 해주는 Jenkins와 같은 자동화 툴이 나오게 되었습니다.

2. 프로젝트에서 직접 사용해보기 - 준비단계

CI를 위해 필요한 도구는 버전관리 시스템과, 빌드 툴, 테스트 자동화 툴이 먼저 필요합니다.

버전관리 시스템

image

버전관리 시스템에는 여러가지가 있지만, Festa 프로젝트에서는 이미 Git을 사용하고 있기 때문에 그대로 Git을 이용하기로 하였습니다.

빌드 툴

image

빌드 툴은 소스코드의 컴파일, 테스트 등을 진행하고, 어플리케이션을 자동으로 실행 가능한 파일로 만들어 주는 도구를 말합니다.
또, 라이브러리를 관리해주는 등의 일도 해줍니다.

대표적으로는 Maven, Gradle, Ant 가 있지만, Festa 프로젝트에서는 Maven을 사용중이니 그대로 사용하도록 하겠습니다.

테스트 자동화 툴

image

테스트 자동화 툴에도 종류가 여러가지 있지만, Festa 프로젝트는 Java를 사용중이기 때문에 JUnit을 이용하기로 하였습니다.

3. 마무리

이번 글에서는 간단하게 CI가 무엇인지, 어떻게 나오게 된 것인지, CI tool을 위해서는 어떤 것들이 필요한지 알아보았습니다.

다음 글에서는 실제로 프로젝트에 어떻게 적용하는지에 대한 글로 찾아오겠습니다~


참고

관련 프로젝트

This post is licensed under CC BY 4.0 by the author.

AWS S3를 이용하여 이미지 서버를 만들어보기 (2편)

-