DevOps란? CI/CD란?
DevOps
: 소프트웨어의 개발(Development)과 운영(Operations)의 합성어
: 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화
DevOps 목적
: 운영 프로세스의 예측 가능성, 효율성, 보안, 유지보수 가능성을 극대화하는 것
- 제품 출시까지 걸리는 기간(time to market) 단축 (CD)
- 새로운 판의 더 낮은 실패율
- 픽스 간 짧아진 리드 타임(상품 생산 시작부터 완성까지 걸리는 시간)
- 복구 시 더 빠른 평균 시간 (새로운 릴리스의 충돌 및 그 밖에 현재의 시스템를 비활성화하는 상황에서)
DevOps 툴체인
- 계획(Plan) - 목적을 수행하기 앞서 방법이나 절차 등을 미리 생각하여 계획.
- 코드(Create) - 코드 개발 및 검토, 버전 관리 도구, 코드 병합
- 빌드(Verify 1) - 지속적 통합(CI) 도구, 빌드 상태
- 테스트(Verify 2) - 테스트 및 결과가 성능을 결정
- 패키지(Package) - 애플리케이션 디플로이 이전 단계
- 릴리스(Release) - 변경사항 관리, 릴리스 승인, 릴리스 자동화
- 구성(Configure) - 인프라스트럭처 구성 및 관리, IaC(Infrastructure as Code) 도구
- 모니터링(Monitor) - 애플리케이션 성능 모니터링, 최종 사용자 경험.
DevOps 엔지니어의 역할
- CI/CD를 위한 파이프라인을 구성/자동화
- 중간 모니터링 지표를 구성하여 개발자들의 개발 방향 가이드
- 안정감 있는 개발 환경 서비스를 구축하고 운영
대표적인 DevOps 툴
- Jenkins
CI (Continuous Integration)
: 지속적인 통합
: 새로운 코드 변경 사항이 정기적으로 빌드, 테스트, 공유 레포지토리에 병합 되는 것
사용해야 하는 상황
- 다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경
- MSA(Micro Service Archietecture: 작은 기능별로 서비스를 잘게 쪼개어 개발하는 형태 - Agile 방법론 적용) 환경
CI의 목표
- 버그를 신속하게 찾아 해결
- 소프트웨어 품질 개선
- 새로운 업데이트 검증 및 릴리즈 시간을 단축
CD (Continuous Delivery & Continuous Deployment)
: 지속적인 서비스 제공 & 지속적인 배포
: Continuous Delivery - 공유 레포지토리로 자동으로 Release
: Continuous Deployment - Production 레벨까지 자동으로 deploy
: 변경 사항이 레포지토리를 넘어(to CI) 고객의 프로덕션(Production) 환경까지 릴리즈 되는 것
: 소프트웨어가 언제든지 신뢰 가능한 수준의 버전을 유지할 수 있도록 지원
: 개발팀과 비즈니스팀(영업, CS팀 등) 간의 커뮤니케이션 부족 문제를 해결하여 배포에 노력을 최소화
추가적인 정보
https://engineering.linecorp.com/ko/blog/build-a-continuous-cicd-environment-based-on-data/
데이터 기반으로 지속적인 CI/CD 개선 환경 만들기 - LINE ENGINEERING
저는 올해 6월에 LINE에 입사해 LINE 메신저 클라이언트와 관련된 CI(Continuous Integration)/CD(Continuous Delivery) 업무를 지속적으로 개선하고 자동화하는 DevOps 역할을 수행하고 있습니다. 이번 글에서는
engineering.linecorp.com