[DevOps] DevOps 란 무엇인가?
DevOps 란?
기술과 시장의 빠른 변화에 대응하기 위한 최신 개발/운영 트렌드
- DevOps = Development(개발) + Operations(운영) 의 합성어
- 역할을 나누고 경계를 나누는 것 보다 소통, 협업, 통합을 중시하는 사상 ( 기술, 도구, 프로세스, 문화, 조직 등)
DevOps 목적
DevOps의 목적은 전반적인 배포 파이프라인에 걸쳐있다.
- 제품 출시까지 걸리는 시간 단축
- 더 빠르고, 잦은 배포 ( fix 간 짧아진 리드 타임)
- 더 낮은 실패율, 빠른 복구 속도
- 높은 품질, 안정성 증가
DevOps 수명주기
크게 계획, 개발, 빌드, 테스트 까지를 개발 단계라고 하고 개발단계 이후의 릴리즈, 배포, 운영, 모니터링은 운영단계로 나뉜다. DevOps는 이 개발 단계와 운영 단계를 반복적으로 수행하는 방식으로 진행된다.
DevOps 계획/개발 단계
계획 - 서비스 개선을 계획하고 추적
- 변경 요구 검토 및 개선 작업 계획수립
- 우선 순위에 따른 요구사항(제품 백로그) 관리
- 작업 상황을 가시화하고 추적
- 애자일 Practice (스크럼, 칸반)
개발 - 소프트웨어를 설계하고 코드를 작성
- 소스코드 저장소를 통한 버전 관리 필수
- 테스트 자동화를 위한 테스트 코드 작성
- 소스코드 인스펙션, 동료 검토 및 리팩토링 수행
- SaaS(Software as a Service) 개발을 위한 필수 요건 반영
DevOps 빌드/테스트 단계
빌드/테스트 - 개발 생산성 향상과 변경사항을 최신화 통합
- 개발자들의 작업 단위가 크고, 반영주기가 길면 "통합의 지옥" 발생 가능
- 통합된 최신 코드 지속적 업데이트, 작은 단위로 작업
- 완벽하게 빌드하고 테스트 한 후 즉각적 변경 반영
- 단위 테스트, 코드 인스펙션 및 품질 점검 자동화 수행
- 지속적으로 개발팀의 소스코드와 상태를 최신화 통합 유지 (지속적 통합)
DevOps 릴리즈/배포 단계
릴리즈/배포 - 언제나 배포 실행 가능한 상태를 유지
- 릴리즈는 가장 큰 문제를 일으키는 병목 구간, 많은 자원과 시간 소요
- 운영 환경 준비와 문제 발생 시 롤백(Rollback) 대응
- UI 테스트, 부하 테스트, 통합 테스트, API 테스트 등 다양한 테스트 수행
- 지속적 전달의 경우 테스트가 성공하면 스테이징 환경까지 배포
- 지속적 배포의 경우 자동으로 프로덕션 환경까지 배포
DevOps 운영/모니터링 단계
운영/모니터링 - 사용자에게 중단 없는 서비스를 제공
- 장애, 성능, 보안, 용량, 가용성 관리
- 애플리케이션 및 인프라 구성 및 변경 관리
- 이벤트 및 로그, 성능 및 품질 지표 모니터링/분석
- 자동화된 모니터링 및 로깅 도구 활용
- 성과 영역 별 최소/최대 목표 수준 도달하도록 서비스 수준 관리