나쁜 배포 좋은 배포

peterTheAnteater·2025년 1월 1일
18

데브옵스

목록 보기
12/12

이 글 읽으러 들어오신분들 새해 복 많이 받으세요!

글을 쓰게 된 동기

사실은 2024회고록을 올리고 싶었는데 회사일과 외부 활동 때문에 바빠서 2025이 되서야 시간이 괜찮아졌네요.

다시 한번 새해 복 많이받으세요!

제가 외부 활동으로 하는곳에서 질문을 몇번 받았습니다. 거기서 받았던 내용은 정해진 시간동안 프로젝트 (대충 한달) 를 만들어서 배포를 해야되는데 CI/CD를 하는게 맞을까요?

제가 활동하는곳에서 대부분의 분들은 CI/CD를 나중에 시간이 생기면 만드는분들이 대부분입니다. 하지만 저는 역량이 되시는분들은 초반에 자동 CI/CD 파이프라인을 만들어두라고 조언을 드리곤 합니다.

사용하면 스마트해지고 편해지는 자동 CI/CD 파이프라인

사용하는 이유를 한번 설명 해보겠습니다.

자동 CI/CD 파이프라인?

일단 CI CD라는게 뭘까요? 뜻을 찾아보자면 지속적 통합 및 지속적 제공이라고 하긴 합니다. 조금 간략하게 말해서 코드를 업데이트하면 그걸 기반으로 서버에 바로 바로 배포가 되는거겠죠?

저희는 이걸 행하는 파이프라인을 보통 자동으로 만들어놓을때가 많습니다.

이 파이프라인이 할수 있는 일은..

  1. 서비스 테스트 (단위 테스트, 퍼포먼스 테스트, 로드 테스트 등등)
  2. 서비스 빌드 (도커 파일 등등)
  3. 코드 분석 (소너큐브 등)
  4. 서비스 업데이트 (자동 배포)
    그 외 기타등등..

저희는 이걸 손으로도 가능하긴합니다.

  1. (손으로) 테스트 돌리기
  2. (손으로) 서비스 빌드
  3. (손으로/눈으로) 코드 분석
  4. (손으로) 직접 클라우드에 접속해서 배포
    등등....

네 보통 저런걸 하다보면 무척 힘듭니다. 특히 여러 서비스가 동시에 업데이트 되고 그걸 일일히 손으로 업데이트 해준다고 하면....

그래서 저희는 이걸 자동으로 해주는 툴들이 존재합니다.

CI/CD 툴

시장에서 자주 사용되는 오픈소스 CI CD툴은 크게 2개 있습니다.

바로 Jenkins와 TravisCI인데요 그외 Github Actions, Gitlab CI, 등은 오픈소스가 아니지만 자주 쓰이는 툴들입니다.

하지만 위에 언급한 툴들은 쿠버네티스 환경에서 CD툴로는 사용하지 않습니다.

보통 GitOps 방식을 따르는 FluxCD나 ArgoCD를 많이 사용하죠.

그래서 왜 쓰냐고요

자동 CI CD툴을 사용하는게 귀찮음을 없에는거 외에도 많은 장점이 있습니다

  1. 실수가 없어진다
    사람이 하는건 어쩔수 없이 실수를 합니다. 실수 하나가 서비스에 치명적인 오류를 가지고 오면 그건 엄청난 일이죠.
  2. 시간을 아낄수 있다
    특히 이 부분은 초반에 설정 할수록 더 아낄수 있습니다. CI/CD를 설정할때 소모 되는 시간보다 파이프라인이 자동으로 빌드, 테스트, 그리고 배포를 해줌으로서 남는 시간이 더 많습니다.
  3. 버젼 관리 및 롤백도 쉽다
    빌드를 즉석에서 하는게 아니라 레지스트리를 이용한 파이프라인을 사용하면 버젼관리가 쉽고 문제가 있는 버젼에서 없는 버젼으로 롤백이 쉽다.

사실 이렇게 적어두지만 개발자들이라면 공감하는 제일 큰 이유 하나 때문에 씁니다.

귀찮으니까

그리고 파이프라인은 한번 만들어놓으면 우려먹기 좋습니다. 예를 들어서 도커로 배포를 하신다면 결국 도커파일 기반으로 배포를 하실탠데.. 도커 파일 내용이 바뀐다 한들 docker run, docker build같은 ci/cd툴들이 실행해야되는 명령어들이 바뀌는건 아니잖아요?

코드는 재활용이 기본입니다

결론

만약에 모든 개발자들이 배포 관련 지식이 넘치고 자기가 개발한 서비스를 관리할 능력이 있다면 굳이 필요한가 싶을때도 있긴 합니다만...

결국 실수는 자기가 만드는거도 있지만 남이 만들때도 있고 또 서로 상호작용하면서 생기는 오류도 많습니다.

그런 오류들을 미리 예방 하고 시간도 아끼게 해주는 자동 CI/CD툴 한번 프로젝트를 시작하면서 해보는건 어떨까요?

읽어주셔서 감사합니다

profile
소프트웨어 개발과 밀당하는 개발자

2개의 댓글

comment-user-thumbnail
2025년 1월 6일

그럼죽어 ㅋㅋㅋㅋㅋㅋ

답글 달기
comment-user-thumbnail
2025년 1월 15일

와우, 글 정말 재밌게 읽었어요! 😆
특히 "귀찮으니까" 부분에서 빵 터졌네요. 😂 개발자라면 200% 공감하는 이유 아닐까요?
CI/CD 한 번 세팅하면 진짜 배포도 즐거워지는 것 같아요. 🎉
앞으로 프로젝트 시작할 때 초반부터 자동화 파이프라인 꼭 넣어야겠다는 다짐하고 갑니다! 🙌
좋은 글 감사합니다! 💖

답글 달기