Continuous Integration을 통하여 아래의 효익을 추구한다.
• Developers push the code to a code repository often (GitHub / CodeCommit / Bitbucket / etc…)
• A testing / build server checks the code as soon as it’s pushed (CodeBuild / Jenkins CI / etc…)
• The developer gets feedback about the tests and checks that have passed / failed
• Find bugs early, fix bugs
• Deliver faster as the code is tested
• Deploy often
• Happier developers, as they’re unblocked
Continuous Delivery를 통하여 아래의 효익을 추구한다.
• Ensure that the software can be released reliably whenever needed.
• Ensures deployments happen often and are quick
• Shift away from “one release every 3 months” to ”5 releases a day”
Continuous Delivery vs Continuous Deployment 의 차이는 무엇일까?
Continuous Delivery:
• Ability to deploy often using automation
• May involve a manual step to “approve” a deployment
• The deployment itself is still automated and repeated!
Continuous Deployment:
• Full automation, every code change is deployed all the way to production
• No manual intervention of approvals
과거의 개발 프로세스는 아래와 같은 문제들이 있었다
- 단일 개발단위가 무겁고, 생명주기 관리 빈도가 낮으면 단일 프로세스에도 개발본과 운영본의 코드차이가 커 개발생산성이 떨어진다.
- 개발완료시까지의 장시간으로 결과물을 사용자와 리뷰하는 빈도가 낮다. 개발이 완료된 후에 막상 사용자의 요구사항과 다를 수 있음
사실 위와 같은 체계가 잡힌건 문화적 요소도 영향을 끼쳤다.
- 잦은 미팅으로 요구사항이 계속 바뀌거나 범위가 늘어나는 요구사항이 발생
- 올바른 회의 문화가 정착되지 않음
- 본인 업무 완료를 공개하기 꺼림
그리고 기술과 프로세스적 요소도 있었다.
- 개발조직과 운영조직이 서로 경쟁관계에 있다.
- 업무의 결합도가 강해 에자일이 힘들다.
- 업무시간에 배포를 허락하지 않는다.
- 기술부채에 대한 관리가 없다.
DevOps를 이때쯤 고려하기 시작한다
- 배포가 무거워져 배포성공까지 3일, 1주, 2주 시간이 오래 걸리다보니 고객의 피드백 반영에 시간이 걸림
- 개발, 운영 조직의 뭔지모를 문제로 사업이 정체됨
- 시스템이 비대해져 하나를 수정하면 영향이 다른 곳까지 미침
DevOps가 생기기 이전에 ALM (Application LifeCycle Management) 은 있었고, 이러한 것이다.
요구사항 분석, 모델링, 개발, 빌드, 테스트를 비롯한 소프트웨어 개발의 수명주기 활동들을 다음을 통해 조율하는것
- 추적성(Traceability) : 산출물과 활동 간의 연관 관계를 추적할 수 있어야 함
- 프로세스 강요(Process Enactment) : 일관적이고 적합한 프로세스가 강요되어야 함
- 가시성(Visibility) : ALM 활동 전반에 대한 진행 상황을 볼 수 있어야 함
DevOps의 목표
- 소규모로 구성된 전담 팀 조직구성
- 기능을 독립적, 자율적으로 구현할 수 있는 프로세스
- 프로덕션과 유사한 환경에서 품질과 정확성을 검증 프로세스
- 프로덕션으로 빠르고 안전하게 배포하는 기술 및 프로세스
DevOps 필수요소
조직
개발팀 및 개발영역의 분할
프로세스
짧은 주기의 개발(애자일)
지속적인 빌드
지속적인 테스트
기술 부채 낮추기 : 버그캡
기업문화
피드백을 통한 학습 : 비난없는 포스트모템
Application 현대화(아키텍처)
마이크로 서비스
아키텍처 수직분할
시스템과 도구
'PaaS > CI CD' 카테고리의 다른 글
(JAVA-Jenkins) Java SpringFrameWork Jenkins 파이프라인 With Nexacro (0) | 2022.01.24 |
---|---|
CI/CD 배포 전략 설계시 고려사항 (0) | 2022.01.17 |
(Jira-Jenkins) Jira를 통한 Jenkins 자동빌드 유발 (0) | 2021.11.11 |
(Git) Master가 아닌 다른 Branch로 Pull, Push (0) | 2021.10.08 |
(Harbor) Harbor 재기동 그리고 config 수정 (0) | 2021.10.08 |