1. CI/CD?
- [설명]
- **CI[Continuous Integration] / CD[Continuous Delivery]**은 Application 개발 단계를 자동화하여 Application을 더욱 짧은 주기로 client에게 제공하는 방법을 말합니다
- [개념]
- 지속적인 통합, 지속적인 Service제공, 지속적인 배포를 말합니다
- 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(integration hell - 통합지옥)를 해결하기 위한 솔루션 입니다
- 통합 및 Test단계에서부터 제공 및 배포에 이르는 Application의 Life Cycle 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다
- “CI/CI Pipeline”이라 부르며, 개발 및 운영팀의 애자일 방식협력을 통해 DevOps or SRE(사이트 신뢰성 엔지너어링)방식으로 지원됩니다
- [차이점]
- CI
- 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미합니다
- 지속적인 통합이 제대로 구현되면 Application 코드의 새로운 변경사항이 정기적으로 Build 및 Test를 거쳐 공유 리포지토리에 병합됩니다
- 여러 명의 개발자가 동시에 Application 개발과 관련된 코드 작업을 할 경우 서로 충돌하는 문제를 해결 할 수 있습니다
- CD
- 지속적인 서비스 제공 및 지속적인 배포를 의미하며 상호 교환하여 사용이 되기도 합니다
- Pipeline의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 합니다
- 지속적인 제공?
- 개발자들이 Application 에 적용한 변경 사항이 Bug Test를 거쳐 리포지토리에 자동으로 Upload되는 것을 말합니다
- [예시]
- 운영팀은 리포지토리에서 Application을 실시간 프로덕션 환경으로 배포할 수 있습니다
- 개발팀과 비즈니스팀간의 가시성 및 커뮤니케이션 부족 문제를 해결해줍니다
- 지속적인 서비스 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로합니다
- 지속적인 배포?
- 개발자의 변경사항을 리포지토리에서 고객이 사용가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미합니다
- [예시]
- Application 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결해줍니다
- Pipeline의 다음단계를 자동화함으로써 지속적인 서비스를 제공해준다는 것 입니다
- [3가지 구축 사례]
- CI[지속적 통합]
- 여러 개발자들이 동일한 Application의 각기 다른 기능을 동시에 작업할 수 있도록 하는 것을 말한다
- CD[지속적 제공]
- CI의 Build 자동화, Unit 및 통합 Test 수행 후, 이어지는 지속적 제공 프로세스에서는 유효한 코드를 리포지토리에 자동으로 릴리스하는 것을 말한다
- CD[지속적 배포]
- 프로덕션 준비가 완료된 Build를 코드 리포지토리에 자동으로 릴리스하는 지속적 제공의 확장된 형태인 지속적 배포는 Application을 프로덕션으로 릴리스하는 작업을 자동화하는 것을 말합니다
- [Tool & 구축]
- Jenkins 자동화 서버
- 간단한 CI Server에서 완전한 CD Hub에 이르는 모든 것을 처리할 수 있게 설계 되어있음을 말합니다
- Tekton Pipelines
- 표준 클라우드 네이트브 CI/CD 경험과 컨테이너를 제공하는 쿠버네티스 플랫폼을 위한 CI/CD FrameWork입니다
- Open Source CI/CD Tools
- Spinnaker
- 멀티클라우드 환경을 위해 구축된 CD 플랫폼입니다
- GoCD
- 모델링 및 시각화에 중점을 둔 CI/CD Server를 말합니다
- Concourse
- 지속적인 OpenSource 작업 툴을 말합니다
- Screwdriver
- CD용으로 설계된 Build 플랫폼입니다
- 벤터가 제공하는 관리형 CI/CD Tools
- GitLab, CircleCI, Travis CI, Atlassian Bambbo ⇒ CI/CD 솔루션을 제공함
- DevOps의 Basic Tools[CI/CD 프로세스]
- 구성 자동화
- Ansible, Chef, Puppet
- 컨테이너 런타임
- Docker, rkt, cri-o
- 컨테이너 오케스트레이션
- 쿠버네티스
- ⇒ CI/CD 워크플로우에 표시가 됩니다