CI / CD에 대해 설명해주세요.

최관수·2023년 9월 12일
0

기술면접

목록 보기
23/58

내용 정리

  • CI/CD (Continuous Integration/Continuous Delivery)는 쉽게 말해서 개발 단계를 자동화하여 더욱 짧은 주기로 고객에게 제공하는 방법이라고 볼 수 있습니다. 말 그대로 지속적인 통합, 제공, 배포를 통해 개발팀과 운영팀 사이에 발생하는 문제(일명 "통합 지옥(integration hell)")를 해결하기 위한 솔루션입니다.
  • CI는 지속적인 통합(Continuous Integration)을 의미합니다. 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 저장소에 병합됩니다. 따라서 여러 명의 개발자가 동시에 개발과 관련된 코드 작업을 하는 경우에 충돌에 대한 이슈를 해결할 수 있습니다.
  • CD는 지속적인 서비스 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)를 의미하며, 지속적인 제공이란 개발자들이 새로 적용한 변경 사항이 테스트를 거쳐서 저장소에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 저장소에서 실시간으로 프로덕션 환경으로 배포를 진행할 수 있습니다. 이는 개발팀과 타 부서와의 소통 비용을 낮춰주고 원할한 소통을 가능케 합니다. 추가로 고객이 바로 사용 가능한 프로덕션 환경까지 자동으로 릴리즈가 되기 때문에 지속적인 서비스 제공이 가능하고, 그 덕분에 시장 반응 또한 빠르게 확인할 수 있기 때문에 경쟁력을 높일 수 있다는 장점이 있습니다.
  • CI/CD와 관련해서 가장 널리 알려진 오픈소스 툴은 Jenkins가 있습니다.

꼬리 질문

  • CI/CD 환경을 구축해본 경험이 있으신가요?
    • Vercel, Github Action
  • CI/CD는 DevOps의 라이프사이클 중 단계로 알려져 있는데, DevOps의 의미에 대해서 간단하게 설명해주세요
    • development인 개발 주체와 operation인 운영 주체의 합성어로 그 둘 사이의 소통, 협업, 통합 및 자동화 등을 강조하는 소프트웨어 개발 방법론으로 인지하고 있습니다. CI/CD 외에 애자일 방법론 등과도 관련이 있다고 볼 수 있습니다.
  • CI/CD 파이프라인을 구축했을 때 단점은 없었나요?
    • 복잡성, 초기 비용, 학습 곡선, 보안 문제, 테스트 부족 등
  • CI를 진행하던 도중 git conflict 해결한 경험이 있으실까요?
  • 프로젝트 초기 단계에 git conflict를 줄이기 위해 하셨던 작업이 있을까요?

참고자료

profile
평소엔 책과 영화와 음악을 좋아합니다. 보편적이고 보통사람들을 위한 서비스 개발을 꿈꾸고 있습니다.

0개의 댓글