바로 화성 여행 티켓을 예약할 수 있는 웹사이트를 만들어 보자!
당장 코딩을 시작하여 첫 버전 완성 🎉
근데 문제는…
localhost:8080에서만 열려 있다는 것.
오직 내 컴퓨터에서만 접속 가능합니다.
이제 이 앱을 항상 실행할 수 있는 시스템에 호스팅해야 합니다.
👉 즉, 서버에 올려야 함
서버에 앱을 복사해서 실행합니다.
하지만 서버에도 이 앱을 실행하려면 조건이 필요해요:
✅ 이렇게 해서 로컬(개발환경)과 서버(프로덕션) 환경이 준비됩니다.
서버에는 IP 주소가 있지만, 그걸 외우는 건 불편하죠.
그래서 mars-ticket.com 같은 도메인을 사서 연결합니다.
203.0.113.12 → mars-ticket.com
이제 누구나 웹 브라우저에 도메인만 입력하면 사이트에 접속할 수 있어요.
사용자가 증가하고 여러 개발자가 함께 작업하게 되었습니다!
여러 개발자들과 함께 일하다 보면 코드 충돌이나 버전관리 문제가 생길 수 있어요.
그래서 Git을 씁니다:
Git: 코드 변경 사항을 추적
GitHub: 중앙 저장소로서 협업을 지원
CI/CD란?
CI (지속적 통합): 여러 개발자의 코드를 자주 병합하고 자동으로 테스트
CD (지속적 배포): 테스트된 코드를 자동으로 서버에 배포
💡 어떤 도구를 사용할까?
Jenkins
👉 코드를 Github에 푸시하면 자동으로 빌드 → 테스트 → 배포
이제 개발자는 코드만 잘 짜면, 나머지는 자동으로 처리됩니다.
서버 환경이 매번 다르면 문제가 생겨요.
그래서 Docker로 어디서든 똑같이 실행되는 앱을 만듭니다.
Docker 를 사용하여 애플리케이션의 의존성을 관리하고 일관된 실행 환경을 제공하기 위해 애플리케이션을 컨테이너화합니다. 결론적으로 애플리케이션과 그 의존성을 하나의 이미지로 패키징하여, 다양한 환경에서 일관되게 실행할 수 있도록 해줘요.
🍱 Docker를 도시락에 비유하면?
🥘 애플리케이션 = 요리 (예: Python 웹 서버)
🧂 의존성 = 재료들 (python, flask 등)
🍱 컨테이너 = 요리 + 재료 + 도구가 다 들어있는 도시락
📸 이미지 = 그 도시락을 만드는 레시피
# 예시 Dockerfile
FROM python:3.10
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "main.py"]
이렇게 만든 이미지를 기반으로 컨테이너를 실행하면 어떤 서버에서든 똑같이 작동!
이제 사용자도 많아지고, 서버도 여러 대 필요해요.
여기서 등장하는 것이 바로 Kubernetes (k8s)!
자동으로 컨테이너를 배포하고, 늘리고, 복구해주는 똑똑한 친구입니다.
⚙️ Kubernetes 기능
| 기능 | 설명 |
|---|---|
| 배포 | 컨테이너를 자동으로 여러 서버에 배포함 |
| 스케일링 | 사용량에 따라 컨테이너 수 자동 조절 |
| 복구 | 컨테이너가 죽으면 자동으로 재시작 |
| 로드밸런싱 | 사용자 요청을 여러 컨테이너에 자동 분산 |
| 롤링 업데이트 / 롤백 | 새 버전 배포 시 점진적 적용, 문제 시 원상 복구 |
서버를 매번 수동으로 설정하는 것은 시간이 많이 소요되고 오류를 유발할 수 있습니다.
그래서!
Terraform: 서버 자체를 코드로 정의
Ansible: 서버에 필요한 소프트웨어를 자동 설치
Terraform 코드예시)
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Ansible 코드예시)
- hosts: webservers
tasks:
- name: Nginx 설치
apt:
name: nginx
state: present
이제 앱이 잘 돌아가는지 확인할 차례!
Prometheus는 시스템의 상태를 수집하고
Grafana는 이를 대시보드 형태로 시각화하여 실시간으로 모니터링할 수 있도록 합니다.
📊 예시 메트릭
| 메트릭 예시 | 의미 |
|---|---|
| CPU 사용률 85% | 서버가 열심히 일하고 있음 |
| 메모리 사용량 3.2GB | 앱이 사용하는 RAM 용량 |
| 응답 시간 800ms | 요청에 대한 응답이 느림 |
| 에러 수 17개 | 문제가 발생한 요청 개수 |
| DB 쿼리 속도 | 데이터베이스의 성능 |

💡 즉, 데브옵스란 아이디어를 실행으로 옮기고 고품질 소프트웨어를 지속적으로 제공하기 위해 사람, 프로세스, 도구가 함께 협력하는 방식 !
참고자료
https://www.udemy.com/course/the-complete-devops-bootcamp/learn/lecture/35714080?start=1#content