CI & CD

kirin.log·2021년 7월 9일
0
post-custom-banner

🍎 CI

  • CI는 지속적 통합(Continuous Integration) 이라는 의미.
  • 모든 개발이 끝난 이후에 코드 품질을 관리하는 고전적 방식의 단점을 해소하기위해 나타난 개념
    (코드에 대한 통합을 지속적으로 진행함으로써 품질을 유지)

ex) 10명의 개발자가 참여하는 프로젝트가 있다. git에 기본 틀이 잡혀있는 코드가 올라와있고, 각 개발자는 자신의 로컬환경에 clone받아서 작업을 시작한다.
개발이 끝날 때까지 모든 개발자가 한 번도 중앙저장소에 코드를 올리지 않고, 개발이 끝난 후에 10명의 개발자의코드를 한 번에 통합해야 하는 상황이라면? 👉 error
따라서 지속적 통합을 이루기 위해 각 개발자는 단위별 또는 페이지별로 완성될 때마다 git에 코드를 올리고 문제가 없는지 테스트(test)하는 것이 좋다 👉 코드의 품질 유지

💡 test와 build
하나의 프로젝트를 완성하기 위해서는 컴파일 👉 빌드 👉 배포의 과정이 이루어져야한다. 하지만 이는 매우 반복적으로 일어나야 하기 때문에 자동화가 필요하다.

CI 자동화를 위해서 git의 사용이 권장되는 것이다.
git에 코드를 올려놓으면 중앙 코드와 통합되며 버그를 알려준다. 이를 해결함으로써 각 개발자는 작은 단위의 코드를 검증(test)하고 버그를 해결해 나가며 프로젝트를 완성해 나갈 수있다.


🍎 CD

  • CD란 지속적 배포(Continuous Deploy 또는 Delivery)를의미.
  • 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 지속적으로 관리하자는 개념
    (즉, CI의 연장선이다. 지속적 통합(CI)을 통해 지속적인 배포(CD)가 이루어 질 수 있기 때문 👉 CI 프로세스를 통해 개발중에 지속적으로 빌드테스트를 진행하고, 이를 통과한 코드에 대하여 테스트서버와 운영서버에 곧바로 그 내용을 배포해 반영하는 것)

CI = 빌드 및 테스트 자동화
CD = 배포 자동화


🍎 CI & CD 솔루션

  • CI/CD 를 자동화하기 위해서는 언제, 어떤 자동화 프로세스를, 어떻게 돌리고, 어떤 방식으로 결과를 리포트할지 등의 절차를 매우 엄밀하게 정의해야 하며 고려해야할 부분이 많다.
  • 대표적인 솔루션으로 CircleCI, Travis, Jenkins 등이 있다.
    • 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이다. CI(Continuous Integration) 툴 이라고 표현
    • 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해줌.
profile
boma91@gmail.com
post-custom-banner

0개의 댓글