DevOps
기본 정보
- 명칭: DevOps
- 분류: 소프트웨어 개발 문화 및 운영 방법론
- 의미: Development + Operations
- 주요 목적: 개발과 운영의 협업을 통한 빠르고 안정적인 서비스 제공
- 관련 주제: #DevOps #CICD #Docker #Kubernetes #Cloud
개요
DevOps는 개발(Development)과 운영(Operations)을 하나의 프로세스로 연결하여 소프트웨어를 더 빠르고 안정적으로 개발·배포·운영하는 문화와 방법론이다.
과거에는 개발팀이 프로그램을 만들고 운영팀이 배포를 담당하는 경우가 많았지만, DevOps에서는 개발부터 테스트, 배포, 모니터링까지 하나의 흐름으로 관리한다.
최근에는 CI/CD, Docker, Kubernetes, 클라우드 환경과 함께 사용되는 것이 일반적이다.
DevOps 구조
기획
↓
개발
↓
테스트
↓
빌드
↓
배포
↓
운영
↓
모니터링
↓
개선
이 과정을 반복적으로 수행한다.
DevOps 라이프사이클
Plan
↓
Code
↓
Build
↓
Test
↓
Release
↓
Deploy
↓
Operate
↓
Monitor
DevOps 핵심 요소
Planning
- 요구사항 분석
- 일정 관리
- 프로젝트 설계
도구
- Jira
- Trello
- GitHub Projects
Development
코드를 작성하는 단계
사용 기술
Version Control
소스 코드 관리
대표 도구
Build
프로그램을 실행 가능한 형태로 만드는 과정
예시
Source Code
↓
Compiler
↓
Executable
Test
자동 테스트
대표 종류
- Unit Test
- Integration Test
- E2E Test
CI (Continuous Integration)
지속적 통합
Git Push
↓
자동 빌드
↓
자동 테스트
↓
결과 확인
코드 변경 사항을 자주 통합하여 오류를 빠르게 발견한다.
CD (Continuous Delivery / Deployment)
지속적 전달 및 배포
Build
↓
Test
↓
Deploy
↓
Production
운영 환경까지 자동으로 배포하는 과정을 의미한다.
CI/CD 구조
Developer
↓
GitHub
↓
GitHub Actions
↓
Docker Build
↓
Server
↓
Production
Container
대표 기술
- Docker
- Kubernetes
컨테이너를 통해 개발 환경과 운영 환경의 차이를 줄인다.
Docker
Application
↓
Docker Image
↓
Container
↓
Server
Kubernetes
Container
↓
Kubernetes
↓
Scaling
↓
Load Balancing
대규모 서비스 운영에 많이 사용된다.
Infrastructure as Code (IaC)
코드로 서버를 관리하는 방식
대표 도구
- Terraform
- Ansible
- Pulumi
Monitoring
서비스 상태를 확인한다.
대표 도구
- Prometheus
- Grafana
- ELK Stack
Logging
로그 수집
Application
↓
Log
↓
Monitoring
대표 DevOps 도구
| 분야 | 대표 도구 |
|---|---|
| 형상관리 | Git, GitHub |
| CI/CD | GitHub Actions, Jenkins |
| 컨테이너 | Docker |
| 오케스트레이션 | Kubernetes |
| 클라우드 | AWS, Azure, GCP |
| 모니터링 | Prometheus, Grafana |
| 로그 | ELK Stack |
DevOps와 Agile
Agile
↓
빠른 개발
↓
DevOps
↓
빠른 배포
두 방법론은 함께 사용하는 경우가 많다.
DevOps와 SRE 비교
| DevOps | SRE |
|---|---|
| 개발 문화 | 운영 엔지니어링 |
| 협업 중심 | 안정성 중심 |
| 빠른 배포 | 장애 예방 |
| 전체 프로세스 | 운영 자동화 |
DevOps 장점
- 빠른 배포
- 자동화
- 높은 품질
- 협업 향상
- 장애 대응 속도 향상
- 운영 비용 절감
DevOps 단점
- 초기 구축 비용
- 학습 난이도
- 도구가 많음
- 조직 문화 변화 필요
실제 예시
개발자 코드 작성
↓
Git Push
↓
GitHub Actions
↓
자동 테스트
↓
Docker Build
↓
AWS 배포
↓
모니터링
구름님의 프로젝트에 적용
현재까지의 프로젝트 기준으로 추천 DevOps 구조
GitHub
↓
GitHub Actions
↓
Docker
↓
EC2
↓
Nginx
↓
PHP
↓
MySQL
또는 React/Next.js 프로젝트는
GitHub
↓
Vercel
↓
Production
처럼 간단하게 자동 배포할 수 있다.
학습 순서 추천
Git
↓
GitHub
↓
GitHub Actions
↓
Docker
↓
Linux
↓
Nginx
↓
AWS
↓
Kubernetes
↓
Terraform
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
- Git 브랜치 전략 수립
- CI/CD 자동화 구축
- Docker 기반 개발 환경 통일
- 환경 변수 분리
- IaC 도입 검토
- 로그 및 모니터링 구축
- 테스트 자동화
- 롤백 전략 마련
- 백업 자동화
- 보안 점검 자동화
DevOps와 함께 사용하는 기술
대표 활용 사례
- SaaS 서비스
- 쇼핑몰
- 게임 서버
- ERP
- AI 서비스
- 모바일 백엔드
- CMS
- 클라우드 플랫폼
관련 문서
출처
- AWS DevOps Guide
- Microsoft Learn - DevOps
- Google Cloud DevOps Documentation