
지속적 통합
빌드(Build)
: 소프트웨어 개발에서 빌드(build)란, 소스 코드 파일들을 컴퓨터가 이해할 수 있는 실행 가능한 소프트웨어 산출물로 변환하는 과정을 말합니다. 이 산출물은 일반적으로 아티팩트(Artifact)라고 부르며 바이너리 파일, 라이브러리, 패키지 등의 형태로 제공됩니다. 빌드 과정에서는 소스 코드 파일들을 컴파일하고, 링크하고, 패키징하고, 배포할 수 있는 형태로 변환합니다.
빌드 도구의 필요성
- 빌드 과정은 매우 복잡하고 번거로운 일이며, 수동으로 이루어지면 매우 오래 걸리고 실수할 가능성이 높습니다. 또한 프로젝트가 커지면 커질수록 빌드 과정에서 필요한 작업들이 복잡해지고, 빌드 도구 없이는 이를 관리하기가 매우 어렵습니다. 따라서 빌드 도구를 사용하여 빌드 과정을 자동화하고, 더 효율적이고 안정적인 소프트웨어 릴리스를 위한 과정을 간소화할 수 있습니다.
대표적 빌드 도구
- Java : Maven, Gradle
- Python : (의존성 관리 및 빌드 스크립트 실행 도구) pip, setuptools
- JavaScript : (의존성 관리 및 빌드 스크립트 실행 도구) npm, yarn
- C++ : CMake, Makefile
이들 빌드 도구는 각 언어의 특성에 맞게 설계되었으며, 각각의 장단점이 있으므로 사용 시 고려해야 할 사항들이 있습니다.

지속적 통합 (CI: Continuous Integration)
지속적 통합(CI)은 개발자들이 새로운 코드를 작성하고 이전 코드와 함께 자동으로 빌드하고 테스트를 수행하는 프로세스로 매우 중요한 개발 방법론 중 하나입니다. CI는 다음과 같은 이점이 있습니다.
- 코드 품질 향상: CI는 코드를 자동으로 빌드하고 테스트하므로 개발자들은 실수를 줄일 수 있습니다. 이는 코드 품질 향상에 큰 도움이 됩니다.
- 더 빠른 피드백: CI는 새로운 코드를 작성하고 이전 코드와 함께 자동으로 빌드하고 테스트하므로, 문제가 발생하면 빠르게 발견할 수 있습니다. 이는 더 빠른 피드백을 받을 수 있게 해줍니다.
- 더 높은 효율성: CI는 빌드 및 테스트를 자동화하므로, 개발자들은 수동으로 작업하는 시간을 절약하고 더 많은 시간을 실제 개발에 할애할 수 있습니다.
CI를 사용하면 개발자들은 더 많은 코드를 더 빠르게 개발할 수 있으며, 코드의 품질도 향상시킬 수 있습니다. 이러한 이유로 CI는 현재 많은 기업에서 사용되고 있으며, 개발자들에게 매우 중요한 개발 방법론 중 하나입니다.
지속적 통합의 원칙
지속적 통합은 개발자들이 코드를 작성하면 이전 코드와 함께 자동으로 빌드하고 테스트하는 방법입니다. 이를 통해 코드 품질을 향상하고 더 빠른 피드백을 받을 수 있으며, 더 높은 효율성을 얻을 수 있습니다.
지속적 통합의 원칙은 매우 간단합니다. 새로운 코드가 작성되면, 이전 코드와 함께 자동으로 빌드 및 테스트를 수행하고, 문제가 없으면 코드를 릴리스합니다. 이렇게 하면 개발자들은 더 많은 코드를 더 빠르게 개발할 수 있으며, 코드 품질도 향상할 수 있습니다.
더 구체적으로, CI는 다음과 같은 프로세스를 따릅니다.
- 버전 관리 시스템에서 새로운 코드가 등록되면, CI 서버에서 자동으로 빌드 및 테스트를 진행합니다.
- 빌드 및 테스트가 완료되면, 결과를 개발자들에게 알려줍니다.
- 문제가 발생한 경우, 개발자들은 이를 빠르게 수정할 수 있습니다.
- 문제가 없으면, 코드를 릴리스합니다.
이러한 과정을 통해 개발자들은 더 높은 효율성을 얻을 수 있으며, 코드 품질도 향상할 수 있습니다.
지속적 통합 도구

Jenkins는 소프트웨어 구축, 테스트, 제공 또는 배포와 관련된 모든 종류의 작업을 자동화하는 데 사용할 수 있는 독립형 오픈 소스 자동화 서버이다.
Jenkins는 기본 시스템 패키지, Docker를 통해 설치하거나 JRE(Java Runtime Environment)가 설치된 시스템에서 독립 실행형으로 실행할 수도 있다.
✅ 특징
- 설치형 : 별도의 서버 필요
- 다양한 플러그인 활용 가능
- 쿠버네티스, Docker 등과 호환
- 다양한 운영체제에서 사용 가능

Travis CI 는 호스트형 배포 자동화 서비스로, GitHub 및 Bitbucket 등에서 호스팅되는 소프트웨어 프로젝트를 빌드하고 테스트하는 데 사용된다.
✅ 특징
- 클라우드 서비스(SaaS)형태로 사용할 수 있다.
- Travis 자체에서 호스팅을 해주기 때문에 관리적인 측면에서 편리
- Clojure, Erlang, Groovy Haskell, Java, JavaScript, Node.js, Perl PHP, Rython, Ruby 등의 다양한 언어를 지원한다.

GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적 통합 및 지속적 배포(CI/CD)플랫폼이다. 레포지토리에 대한 모든 풀 요청을 빌드 및 테스트하는 워크플로우를 생성하거나 병합된 풀 요청을 프로덕션에 배포할 수 있다.
GitHub Actions는 DevOps를 넘어 레포지토리에서 다른 이벤트가 발생할 때 워크플로우를 실행할 수 있다.
GitHub는 Linux, Windows 및 macOS 가상 머신을 제공하여 워크플로우를 실행하거나 자체 데이터센터 또는 클라우드 인프라에서 자체 호스팅 러너를 호스팅할 수 있다.
✅ 특징
- GitHub 저장소를 기반으로 소프트웨어 개발 Workflow 를 자동화할 수 있는 툴입니다.
- GitHub 마켓 플레이스를 통해 여러 사람이 공유한 Workflow를 찾을 수 있으며, 자신이 직접 만들어 공유할 수도 있다.
- 공개 저장소 (GitHub Public Repository)는 무료로 사용할 수 있으며, 비공개 저장소(GitHub Private Repository) 같은 경우 매달 일정량의 무료 사용량 이후에 요금이 부과된다.
Github Actions를 통한 컨테이너 지속적 통합 흐름

빌드와 컴파일의 차이
- 컴파일 : 사람이 이해할 수 있는 언어로 되어있는 것을 컴퓨터가 이해할 수 있는 언어로 변경하는 것. (변환만 한거고 바로 실행 가능한 상태가 아님)
- 빌드 : 컴파일을 포함해서 링크, 패키징해서 배포할 수 있는 형태로 변환(실행 가능한 파일로 만들어 주는 것)
- 프론트는 컨테이너를 거치지 않고 S3에 배포할 수 있음.