개발 모델
Water fall
단계
- Requirement Analysis
3년 뒤의 상황을 예측
- Design
UI 디자인, 설계, PM, 시스템화
- Code
- Test
- Maintenance
단점
Agile
단계
- Individuals and Interactions
- Working Software
- Customer Collaboration
- Responding to Change
DevOps
- 운영의 개발자화
- 배포, 테스트, 모니터링 등 운영 자동화의 필요성
전통적 운영팀의 역할
시스템 안정성 중심의 역할 수행
- 주요 책임
- 서버 관리
- 프로비저닝
- 네트워크 설정
- 모니터링
- 배포작업 지원
- 장애 대응 및 복수
- 특징
- 수작업 중심
- 개발팀과 분리된 조직
- 변경을 신중하게 최소화
- 자동화보다는 체크리스트 기반 작업 방식
DevOps
전통적인 개발과 운영의 단절
- 개발팀은 소프트웨어를 빠르게 개발하고 배포하려 함
- 운영팀은 시스템의 안정성과 가용성을 중시하여 변경을 최소화하려 함.
- 충돌 및 병목 현상 발생
애자일 도입의 확산
- 개발 속도를 높였지만 배포 과정이 느리고 불안정한 경우가 많음.
- 자동화와 협업 기반의 접근 방식이 필요해짐
핵심 개념
- CI/CD: 지속적 통합 및 배포를 통해 빠른 릴리즈 실현
- 자동화: 테스트, 빌드, 배포 자동화로 품질 향상 및 시간 절약
- 협업: 개발팀과 운영팀 간 장벽을 허물고 공동 책임 문화 조성
- 모니터링: 실시간 시스템 상태 파악 및 빠른 문제 해결
주요 기술
- CI/CD 도구: jenkins, gitlab ci, github actions
- 인프라 자동화: terraform, ansible, chef
- 컨테이너/오케스트레이션: docker, kubernetes
- 모니터링/로깅: prometheus, grafana, ELK stack
DevOps가 가져온 변화
- 배포 주기가 몇 개월 -> 하루 단위로 단축.
- 장애 대응 시간이 단축되고, 롤백이 쉬워짐
- 개발-운영-보안팀 간 협업 강화, DevSecOps로 확장 중