K-MOOC/DevOps

[DevOps] DevOps 란 무엇인가?

h982 2021. 4. 12. 22:56

DevOps 란?

기술과 시장의 빠른 변화에 대응하기 위한 최신 개발/운영 트렌드

- DevOps = Development(개발) + Operations(운영) 의 합성어

- 역할을 나누고 경계를 나누는 것 보다 소통, 협업, 통합중시하는 사상 ( 기술, 도구, 프로세스, 문화, 조직 등)

 

DevOps = 개발, 오퍼레이션, 품질 보증 (출쳐:위키백과)

 

DevOps 목적

DevOps의 목적은 전반적인 배포 파이프라인에 걸쳐있다. 

 

- 제품 출시까지 걸리는 시간 단축 

 

- 더 빠르고, 잦은 배포 ( fix 간 짧아진 리드 타임)

 

- 더 낮은 실패율, 빠른 복구 속도

 

- 높은 품질, 안정성 증가

 

DevOps 수명주기

DevOps 수명주기 요약 이미지

크게 계획, 개발, 빌드, 테스트 까지를 개발 단계라고 하고 개발단계 이후의 릴리즈, 배포, 운영, 모니터링운영단계로 나뉜다. DevOps는 이 개발 단계와 운영 단계를 반복적으로 수행하는 방식으로 진행된다.

 

DevOps 계획/개발 단계

계획 - 서비스 개선을 계획하고 추적

- 변경 요구 검토 및 개선 작업 계획수립

- 우선 순위에 따른 요구사항(제품 백로그) 관리

- 작업 상황을 가시화하고 추적

- 애자일 Practice (스크럼, 칸반)

 

개발 - 소프트웨어를 설계하고 코드를 작성

- 소스코드 저장소를 통한 버전 관리 필수

- 테스트 자동화를 위한 테스트 코드 작성

- 소스코드 인스펙션, 동료 검토 및 리팩토링 수행

- SaaS(Software as a Service) 개발을 위한 필수 요건 반영

 

DevOps 빌드/테스트 단계

빌드/테스트 - 개발 생산성 향상과 변경사항을 최신화 통합

- 개발자들의 작업 단위가 크고, 반영주기가 길면 "통합의 지옥" 발생 가능

- 통합된 최신 코드 지속적 업데이트, 작은 단위로 작업

- 완벽하게 빌드하고 테스트 한 후 즉각적 변경 반영

- 단위 테스트, 코드 인스펙션 및 품질 점검 자동화 수행

- 지속적으로 개발팀의 소스코드와 상태를 최신화 통합 유지 (지속적 통합)

 

DevOps 릴리즈/배포 단계

릴리즈/배포 - 언제나 배포 실행 가능한 상태를 유지

- 릴리즈는 가장 큰 문제를 일으키는 병목 구간, 많은 자원과 시간 소요

- 운영 환경 준비와 문제 발생 시 롤백(Rollback) 대응

- UI 테스트, 부하 테스트, 통합 테스트, API 테스트 등 다양한 테스트 수행

- 지속적 전달의 경우 테스트가 성공하면 스테이징 환경까지 배포

- 지속적 배포의 경우 자동으로 프로덕션 환경까지 배포

 

DevOps 운영/모니터링 단계

운영/모니터링 - 사용자에게 중단 없는 서비스를 제공

- 장애, 성능, 보안, 용량, 가용성 관리

- 애플리케이션 및 인프라 구성 및 변경 관리

- 이벤트 및 로그, 성능 및 품질 지표 모니터링/분석

- 자동화된 모니터링 및 로깅 도구 활용

- 성과 영역 별 최소/최대 목표 수준 도달하도록 서비스 수준 관리