DevOps?

  • 대부 없으, 즉 대출해줄 대부업체가 없다는 뜻
  • Dev(Development) + Ops(Operations)의 합성어로, 소프트웨어의 개발과 운영 간의 협업 및 통합을 강조하는 개발환경을 말함
  • 좁게는 애자일 기법에 기반한 개발을 의미하고, 넓은 의미에서는 어플리케이션 개발주기 전체를 일컫기도 한다
  • 개발자가 개발에만 집중할 수 있도록 개발이 끝난 어플리케이션의 빌드, 테스트, 배포, 피드백 및 개선 등 기타 운영 관련 업무 등을 핵심 업무로 삼는 이들을 DevOps 엔지니어라고 한다.

CI/CD?

  • DevOps 엔지니어의 핵심 임무로, 애자일 개발 주기를 자동화하고 각종 데이터의 수집 및 모니터링을 구성하여 이후의 개발 방향의 가이드라인을 제시, 고객에게 안정적이고 높은 신뢰도의 서비스를 제공하는 것이 목표
  • CI : Continous Integration, 즉 어플리케이션을 지속적으로 빌드 및 테스트하는 것을 의미
  • CD : Continous Delivery, 빌드된 어플리케이션을 지속적으로 배포하는 것을 의미
  • 즉, 한국어로는 지속적 통합/지속적 제공 정도의 직역이 된다.
  • 일반적으로 어플리케이션의 개발 주기인 Build-Test-Production에 기초한 파이프라인의 일종
  • 최근 B2C(Business to Consumer) 프로젝트에서 핫한 트렌드로 떠오르는 개발 프로세스인 애자일(Agile)기법에 기반을 두고 있음

대표적 CI/CD 도구?

Jenkins

  • 가장 많이 사용하고 대표적인 오픈소스 CI/CD 도구.
  • 가장 자율적이고 많은 부분을 직접 디자인 가능하지만, 반대로 말하자면 사용법을 익히기가 가장 어렵다.
  • 그러나 가장 커뮤니티가 방대해서 온갖 참고자료를 쉽게 찾을 수 있는 것은 장점.

Gitlab

  • 오픈소스 CI/CD 도구
  • Docker를 공식 실행자로 지원, 쿠버네티스와의 연동도 admin.conf 파일로 간단하게 구성가능.
  • SaaS와 PaaS 모두 제공하고 있으며, PaaS의 경우는 오픈소스, SaaS의 경우는 엔터프라이즈로 제공하고 있다.
  • Docker를 공식 executor로 제공하는데, 이때문에 도커 기반 환경(Docker swarm, K8s(<=1.20)-Gitlab)과의 상성이 아주 좋다.
  • Podman이나 Openshift를 사용하는 경우 추천하고 싶지는 않음
  • Gitlab 공식 Docs에서 예제 CI/CD 파이프라인을 제공하고 있고, 성능 역시 나쁘지 않다. helm 및 Dockerd에 대한 기초적인 이해가 있다면 가볍게 튜닝해서 사용할 수도 있다.

기타 다른 CI/CD Tools

  • Travis
  • CircleCI
  • Bamboo
  • Github action
  • Chef
    • 위 도구들은 내가 미처 사용해보지 못했거나, 어딘가에 리뷰할 만큼 충분히 써보지는 못했던 것들이다. Reddit이나 StackOverflow등을 보면 Chef를 다들 탑으로 선택하던데, 써보지 못해서 잘 모르겠다.

+ Recent posts