CONTENTS
DevOps 란?
개념
•
Development(개발) + Operations(운영)의 합성어
•
소프트웨어 개발자(개발 측)와 정보기술 전문가(운영 측) 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 말한다.
•
조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 한다.
탄생 배경
•
초기 애자일의 문제를 해결하고자 탄생한다.
1.
기존 폭포수 방법론 대신 빠르게 개발하는 접근 방식으로 애자일이 탄생한다.
2.
애자일 소프트웨어 개발은 시스템 규모가 커지고 복잡해지면서 빠르고 새로운 변화를 시도하는 개발 조직과 장애없고 안정적인 운영을 해야하는 운영조직간의 갈등이 깊어졌다.
3.
개발조직과 운영조직간의 협업이 어려워졌다.
4.
개발 조직과 운영 조직간의 갈등을 해소하고자 DevOps가 탄생
DevOps개념이 애자일로 부터 탄생하기는 하였으나, 이제는 오히려 온전한 DevOps 실현을 위한 요소 중 하나로써 애자일 방법이 필요한 것으로 본다.
개발조직과 운영조직의 갈등을 해소하는 방법
•
개발조직은 잦은 배포로 더 많은 기능들을 추가하여 더 좋은 서비스를 제공하고 싶어한다.
•
운영조직은 잦은 배포는 그만큼 많은 버그와 오류에 대한 걱정과 스트레스가 커지고 새로운 배포는 기존 서비스를 잠시 중단해야하는 상황이 올 수 있다.
•
개발에서부터 운영까지의 절차를 하나의 프로세스로 합치고 자동화하여 해결
CI/CD
Continuous Integration (CI, 지속적 통합)
•
애플리케이션의 버그 수정이나 새로운 코드 변경이 주기적으로 빌드 및 테스트 되면서 공유되는 레포지토리에 통합되는 것을 의미한다.
•
많은 양의 코드를 한꺼번에 통합하지않고, 적은 양의 코드를 자주 통합하여 발생하는 오류를 줄인다.
•
CI 흐름
1.
Github 등의 원격 레포지토리에 코드를 통합한다.
2.
통합된 코드가 제대로 동작하는지 빌드 및 테스트를 진행한다.
3.
문제 발생시, TODO 작성 후 다음 날 처리
Continuous Delivery (CD, 지속적 전달)
•
CI를 통해 통합된 결과물이 서비스로서 제공되어도 된다고 판단이 됐을 경우 수동으로 배포한다.
•
CI를 통해 통합된 결과물이 자동화 되어 바로 배포된다면 Continuous Deployment(지속적 배포)라고 한다.
Automation
•
CI의 경우 테스트와 빌드 과정은 반복적이므로 자동화 될 수 있다.
•
CD에서 배포하는 과정도 테스트가 통과 됐을 시에는 반복적인 작업이므로 자동화 될 수 있다.