본문 바로가기

개발일지/TIL

[230715] [미니] 모여봐요 인생네컷 CI/CD 구성 (1)

CI/CD

✔ 용어 정리

📕 CI/CD는 애플리케이션의 개발 단계를 자동화하여 짧은 주기로 사용자에게 제공하는 방법이다.

📄 CI(Continuous Integration)는 프로젝트를 할 때 "각각의 작업을 어떻게 잘 통합할 수 있는가?"이다.
    📌 방법은 빌드 자동화 및 각 작업을 공유 브랜치에 수월하게 병합할 수 있게 하는 테스트 자동화 등이 있다.
📄 CD(Continuous Deliver)는 빌드된 애플리케이션 코드를 배포를 위한 저장소에 저장하는 것이다.
📄 CD(Continous Deployment)는 빌드된 애플리케이션 코드를 배포 자동화 하는 것이다.
    📌 Continous Deliver와 Continous Deployment 두 용어는 자동화가 어느 정도까지 되었는가에 따라 사용이 된다.

 

✔ 장점

1. 소스 코드를 통합하는 과정에서 불필요하고 반복적인 작업을 줄일 수 있다.
2. 프로젝트에 여러 개발자가 참여하는 경우 각자의 코드 변경 상항 병합 있어 충돌을 방지할 수 있다.
3. 애플리케이션 개발부터 배포까지 빠르게 진행할 수 있다.

프로젝트에 적용

✔ 우리가 선택한 CI/CD

Jenkins, Docker, Git을 사용해서 CI/CD를 구성하기로 했다. Jenkins는 빌드 자동화부터 배포까지 CI/CD를 한 번에 처리가 가능하다. Docker는 Jenkins 서버와 Production 서버 두 개에서 애플리케이션 실행을 위한 동일한 환경을 제공해 준다. Git은 우리의 코드를 저장해 주고 특정 이벤트를 통해 Jenkins으로 코드를 보내준다. 

 

✔ 공부해봤으면 하는 것

❓Jenkins은 서버에 바로 설치하는 것이 좋을까? Docker 환경에서 설치해서 사용하는 것이 좋을까?
 

What are the advantages of running Jenkins in a docker container

I've found quite a few blogs on how to run your Jenkins in Docker but none really explain the advantages of doing it. These are the only reasons I found:reasons to use Docker. 1) I want most of...

stackoverflow.com

참고

 

What is CI/CD?

CI/CD introduces ongoing automation and continuous monitoring throughout the lifecycle of apps, from integration and testing phases to delivery and deployment.

www.redhat.com

생각

CI/CD는 너무나 어렵다. 정의가 어렵다기보다는 CI/CD 전체 흐름에서 어디서부터 어디까지가 CI이고 CD인지 구분하기가 어려웠다. 자동화를 어떤 방식으로 어느 정도까지 해야 하는지도 어려웠다. 그래도 이번에 찾아보면서 어느 정도 감은 잡지 않았나 싶다. 이후에는 검색을 통해 CI/CD 구성해 보면서 구체적으로 그림을 그려봐야겠다.