3. DevOps의 라이프사이클과 CI/CD
DevOps의 라이프사이클의 각 단계에서의 역할과 자주 사용되는 툴에 대해 설명할 페이지입니다.
1. DevOps 라이프사이클
Devops는 개발의 기획부터 모니터링까지의 계획을 수립하고 이를 반복적으로 수행합니다. 이러한 일련의 과정의 반복을 DevOps라이프사이클이라고 부르며 하나의 라이프사이클이 끝나면 새로운 라이프사이클이 탄생합니다. 이번시간에는 DevOps 라이프사이클의 각 단계에 해야할 일과 자주사용되는 툴에 대해서 알아보도록 하겠습니다.
1) Plan
계획수립 단계에서는 다음 배포에 추가할 우선 순위가 높은 기능들을 우선적으로 탐색합니다. 탐색한 기능을 작업목록(백로그)에 추가합니다.
일반적으로 Gira, GitHub Issuee등을 활용하여 제품의 백로그를 작성합니다.
2) Code
코딩단계는 백로그에 작성된 작업항목들을 토대로 코딩하고 빌드하는 단계입니다. 작성한 코드를 자동화 배포 파이프라인을 통해 코드베이스로 통합하기 전, 로컬환경에서 작업하고 테스트를 먼저 진행합니다.
코드베이스로는 SVN, GitHub등이 사용됩니다.
3) Build
빌드 단계는 작성된 소스 코드를 실행 가능한 형태로 변환하는 과정입니다. 이 단계에서 코드는 컴파일되고, 필요한 라이브러리와 종속성이 포함되며, 최종 배포를 위한 패키지(JAR, WAR, Docker Image)가 생성됩니다
빌드도구로는 Maven, Gradle, Ant / Vite / Docker등이 사용됩니다.
4) Test & Analysis
테스트 및 분석 단계는 빌드된 코드의 품질과 안정성을 검증하는 과정입니다. 이 단계는 버그를 조기에 발견하고, 코드의 품질을 유지하는 데 매우 중요합니다. 단위 테스트, 통합 테스트, 성능 테스트 등 다양한 테스트가 자동으로 수행됩니다.
테스트 및 분석 도구로는 Junit(단위 테스트), SonarQube(정적 코드 분석) 등이 사용됩니다.
5) Release & Deploy
릴리스 및 배포 단계는 테스트가 완료되고 검증된 코드를 실제 운영 환경에 배포하는 과정입니다. DevOps에서는 이 과정을 자동화하여 사람의 실수를 줄이고 배포 속도를 높입니다.
배포 도구로는 Jenkins, Ansible, Terraform, Kubernetes 등이 사용됩니다.
6) Operate & Monitor
운영 및 모니터링 단계는 배포된 애플리케이션의 성능과 상태를 지속적으로 관찰하는 과정입니다. 시스템의 오류, 성능 저하, 자원 사용량 등을 실시간으로 모니터링하여 문제가 발생하면 신속하게 대응할 수 있습니다. 수집된 데이터는 다음 개발 사이클의 계획(Plan)단계에 피드백되어 개선 사항을 반영하는 데 사용됩니다.
모니터링 도구로는 Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana)
2. CI/CD(지속적 통합 및 지속적 배포)

CI/CD는 DevOps 문화의 핵심 원칙 중 하나로, 소프트웨어 개발 및 배포 과정을 자동화하여 개발 생산성을 높이고, 안정성을 확보하는 방법론입니다.
1) CI (Continuous Integration)
지속적 통합은 개발자들이 작성한 코드를 코드베이스에 자주 병합(Merge)하고, 병합될 때마다 자동화된 빌드 및 테스트를 수행하여 코드 충돌이나 버그를 조기에 발견하고 해결하는 프로세스입니다.
CI의 핵심 목표:
통합 문제 조기 발견: 개발자들이 각자 작업한 코드를 자주 통합하여 문제가 발생하면 빠르게 해결합니다.
코드 품질 향상: 자동화된 테스트를 통해 코드의 품질을 지속적으로 관리합니다.
지속적인 피드백: 테스트 결과에 대한 피드백을 즉시 받아, 개발자는 자신의 변경 사항이 전체 시스템에 어떤 영향을 미치는지 빠르게 확인할 수 있습니다.
2) CD (Continuous Delivery/Deployment)
CD는 CI 단계에서 성공적으로 빌드되고 테스트가 완료된 애플리케이션을 자동으로 배포 가능한 상태로 만들거나, 또는 자동으로 운영 환경에 배포하는 프로세스입니다.
Continuous Delivery (지속적 전달): 애플리케이션을 언제든지 배포할 수 있는 상태로 만드는 것을 목표로 합니다. 자동화된 테스트가 완료된 후, 실제 배포는 수동으로 트리거합니다.
Continuous Deployment (지속적 배포): 애플리케이션을 자동으로 운영 환경까지 배포하는 것을 목표로 합니다. 테스트를 통과한 모든 코드가 사용자에게 자동으로 배포되므로, 사람의 개입이 거의 없습니다. 이는 높은 수준의 자동화와 신뢰를 요구합니다.

3) CI/CD 파이프라인
CI/CD 파이프라인은 CI와 CD의 모든 단계를 통합한 자동화된 흐름을 의미합니다. 코드가 저장소에 푸시되는 순간부터 빌드, 테스트, 배포까지의 모든 과정이 연속적으로 자동화되어 실행됩니다.
이러한 파이프라인을 통해 개발자는 코드 작성에만 집중할 수 있고, 사용자에게 새로운 기능을 더 빠르고 안정적으로 제공할 수 있습니다.
Last updated

