DevOps 개요
DevOps 소개
사일로 기반 개발 방식
- 소프트웨어 개발의 각 단계가 종료된 후 다음 단계로 진행
- 각 단계 간 상호작용 부재
DevOps
- 개발, 운영, 품질 보증 부서 및 서비스 제공자가 상호 협력하여 소프트웨어 시스템을 개발 배포하고, 시장 기회의 포착과 고객 피드백을 신속하게 수행함으로써, 서비스를 적시에 제공할 수 있는 린(Lean) 및 애자일(Agile) 원칙에 기반한 소프트웨어 개발 접근 방식
Agile
신속하게 소프트웨어 모듈을 개발하고 사용자에게 배포
XP(eXtreme Programming)의 5가지 가치
단순성, 의사소통, 피드백, 용기, 존중
린(Lean) 사고방식과 원리
린(Lean) 사고방식
- 낭비 요소를 제거하고 사회에 더 많은 혜택을 제공하며 개인이 일을 통한 가치를 얻을 수 있도록 인간 활동을 체계화 하는 방법
슬로건
크게 생각하고, 작게 행동하고, 빨리 실패하고, 빠르게 배워라
린(Lean) 소프트웨어 개발 7원칙
- 전체를 최적화하라
- 낭비를 제거하라
- 학습을 확대하라
- 통합체계를 구축하라
- 팀에 권한을 위임하라
- 최대한 빨리 배포하라
- 최대한 늦게 결정하라
DevOps 프로세스와 프랙티스
DevOps 성공 전략
- DevOps 필요성 평가
- 기존 사일로 방식의 타파
- 고객 중심의 만족도 향상
- 작은 시작과 점진적 확장
- 가능한 모든 곳의 자동화
- 호환성이 보장되는 도구
- 개인과 함께 팀 성과 검토
- 프로젝트 정보의 실시간 가시성 확보
- 지속적 통합 및 배포
- 모니터링 및 피드백을 통한 개선
DevOps 프로세스
계획 단계
- 애플리케이션에 대한 비즈니스 가치와 사용자 요구사항 정의
- 개발 및 척도 대상 결정, 피드백 존재 시 검토
- 요구사항 명세
- 비즈니스 지표 정렬
- 배포 척도 조정
- 배포 계획, 시기, 비즈니스 사례 정의
- 보안 정책 및 보안 요구사항 정의
코딩 단계
- 소프트웨어 설계(알고리즘 개발)
- 소프트웨어 제품 형상 설계
- 코드 품질과 개발 생산성을 고려한 소스 코드 작성
- 단위 테스트(개발자 입장) 수행
빌드
- 작성된 코드의 통합, 통합 테스트
- 제품 형상 구성
- 배포를 위한 개발 애플리케이션 준비
- 애플리케이션 버전 관리
테스트 단계
- 요구사항 만족도 테스트
- 변경, 개선 등이 포함 시: 회귀 테스트
- 애플리케이션에 대한 보안 및 취약성 분석 수행
- 성능 테스트
- 소프트웨어 형상 테스트
릴리즈 단계
- 배포승인
- 명세된 형상에 따른 패키징
- 애플리케이션 배포
설치 단계
- 배포된 애플리케이션: 사용자 환경에 설치
- 스토리지, 데이터베이스, 네트워크 등의 인프라 구축
- 설치 과정에서 발생한 문제 복구
- 설치된 애플리케이션 사용자 오픈
운영 및 모니터링 단계
- 인프라 구성요소 성능에 대한 지속적인 모니터링
- 사용자 반응 및 경험 추적, 모니터링
- 개발 척도의 달성 여부 확인
- 모니터링 결과 개발팀에 제공
DevOps 변형들
DevSecOps
Shift Left
보안 교육
상호 소통 문화
추적 가능성
개발 주기 전반에 걸쳐 요구사항이 구현되는 형상 항목 추적
감사 가능성
보안 제어 준수 보장
가시성
전체 프로젝트 수명 주기 동안 작업 역할과 책임을 제공하는 모니터링 시스템 역할을 수행
DevOps와 기술 부채
기술 부채 절감을 위한 DevOps 전략
- 동기 부여
- DevOps 자동화 활용
- 마이크로서비스 모델 채택
- 컨테이너화된 배포
- API 중심 모델 구축