티스토리 뷰

 

 

 Jenkins, Docker, Nexus는 소프트웨어 개발과 배포 자동화에서 가장 널리 사용되는 도구입니다. 하지만 개발 비전문가 입장에서는 이 용어들이 추상적이고 어렵게 느껴지기 쉽습니다. 이 글에서는 각 도구의 개념과 역할을 실제 예시와 함께 설명해, 개발 협업에서 이 도구들이 왜 중요한지 비개발자도 쉽게 이해할 수 있도록 도와드립니다.

 

추상적 도구들이 서로 교감하며 흐름을 형성하는 IT 생태계를 부드럽게 표현

Jenkins – 자동화된 빌드와 테스트의 중심

 Jenkins(젠킨스)는 소프트웨어 개발 과정에서 반복되는 작업을 자동으로 처리해 주는 CI(지속적 통합) 도구입니다. 간단히 말해, 개발자가 코드를 수정하고 저장소(Git 등)에 올리면, Jenkins가 자동으로 코드를 빌드하고(컴파일), 테스트를 실행하며, 오류가 있는지 알려줍니다.

 

 예를 들어 쇼핑몰 웹사이트에서 개발자가 “상품 검색 기능”을 수정했다고 가정해 봅시다. Jenkins는 이 변경사항이 기존 기능에 영향을 주지 않는지 자동 테스트를 실행하고, 문제가 없다면 바로 배포를 준비합니다. 수동으로 컴파일하고 테스트하던 작업을 자동으로 처리함으로써, 실수도 줄이고 개발 속도도 높일 수 있습니다.

 

 Jenkins의 장점은 다양한 플러그인을 통해 Slack, GitHub, Docker 등과 쉽게 연동된다는 점입니다. 개발팀은 Jenkins를 통해 하나의 클릭 없이도 전체 개발–테스트–배포 과정을 자동화할 수 있습니다. 결국 Jenkins는 “자동화된 개발 공정의 컨트롤 타워” 역할을 합니다.

Docker – 개발 환경을 통째로 옮기는 컨테이너

 Docker(도커)는 개발자가 만든 프로그램을 어떤 환경에서도 똑같이 실행되도록 해주는 컨테이너 기반 가상화 도구입니다.
 이해하기 쉽게 비유하자면, “프로그램을 담은 도시락통”이라 보면 됩니다. 도시락통 안에는 음식(프로그램), 젓가락(필요한 도구), 조리법(설정 파일)까지 전부 포함되어 있어서, 어디서든 열면 같은 상태로 먹을 수 있습니다.

 

 이전에는 개발자가 만든 코드가 다른 개발자나 운영서버에서 잘 작동하지 않는 일이 잦았습니다. 이유는 OS 환경, 라이브러리 버전, 의존성 등이 달랐기 때문입니다. Docker는 이러한 문제를 해결합니다. 개발자가 만든 코드를 Docker 이미지로 패키징하면, 운영 환경에 상관없이 어떤 서버에서도 동일하게 실행됩니다.

 

 예를 들어, 쇼핑몰 웹사이트의 결제 모듈을 Docker로 패키징하면, 테스트 서버든 운영 서버든 완전히 동일한 환경에서 실행되기 때문에 “내 PC에선 잘 되는데요”라는 문제가 사라집니다. 또한 Jenkins와 연동하여 빌드한 코드를 Docker 이미지로 자동 배포하는 것도 가능합니다.

Nexus – 모든 빌드 결과물을 보관하는 창고

 Nexus(넥서스)는 Jenkins와 Docker가 만든 빌드 결과물(아티팩트)을 안전하게 저장·관리하는 저장소(Repository)입니다. 말 그대로 “개발한 프로그램을 안전하게 쌓아두는 창고” 역할을 합니다.

 

 Jenkins가 자동으로 프로그램을 빌드하고 Docker로 패키징한 후, 이 결과물을 Nexus에 저장하면, 나중에 어떤 버전의 프로그램이 어떤 시점에 만들어졌는지 쉽게 추적할 수 있습니다. 또한 운영 서버에 배포할 때도 Nexus에서 직접 가져오기 때문에 안정성과 이력 관리에 매우 유리합니다.

 

 Nexus는 다양한 언어(예: Java의 Maven, JavaScript의 npm 등)의 빌드 아티팩트를 저장할 수 있으며, 팀 전체가 동일한 라이브러리와 버전 정보를 공유할 수 있도록 돕습니다.
 예를 들어, "v1.3.5 버전의 검색 기능 모듈"을 Jenkins가 빌드했다면, Docker로 패키징 되고, 이 파일은 Nexus에 저장되어 나중에 운영팀이나 QA팀이 그대로 사용할 수 있습니다.

 

 즉, Nexus는 ‘지속 가능한 소프트웨어 배포’를 위한 버전관리형 창고이자, “배포 가능한 코드 저장소”로서 중요한 역할을 합니다.

 Jenkins, Docker, Nexus는 각각 “자동화”, “환경 일관성”, “결과물 관리”라는 서로 다른 역할을 맡지만, 하나의 파이프라인 안에서 유기적으로 작동합니다.


 이 세 가지 도구가 연결되면, 개발자가 코드를 푸시하는 것만으로 자동 빌드, 테스트, 컨테이너화, 배포 준비, 저장까지 전 과정이 자동화됩니다.

 

 이제 비전문가도 이 용어들의 기본 개념을 알고 있으면, 개발자들과의 협업이나 프로젝트 진행 시 훨씬 수월하게 소통할 수 있습니다. 개발은 더 이상 개발자만의 언어가 아닙니다.

 

 

 

반응형
반응형
공지사항
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more