[Devops] Tools

언교동·2025년 5월 3일

DevOps

목록 보기
1/1
post-thumbnail

DevOps 도구 소개: 아이디어에서 실행까지

1️⃣ 아이디어의 시작

바로 화성 여행 티켓을 예약할 수 있는 웹사이트를 만들어 보자!

2️⃣ 개발 환경 설정

당장 코딩을 시작하여 첫 버전 완성 🎉
근데 문제는…
localhost:8080에서만 열려 있다는 것.
오직 내 컴퓨터에서만 접속 가능합니다.

이제 이 앱을 항상 실행할 수 있는 시스템에 호스팅해야 합니다.
👉 즉, 서버에 올려야 함

3️⃣ 서버에 애플리케이션 배포

서버에 앱을 복사해서 실행합니다.
하지만 서버에도 이 앱을 실행하려면 조건이 필요해요:

  • 코드가 실행될 수 있는 환경(Python, Node.js 등)
  • 필요한 라이브러리 설치 (예: Flask, pandas 등)

✅ 이렇게 해서 로컬(개발환경)서버(프로덕션) 환경이 준비됩니다.

4️⃣ 도메인 이름 연결하기

서버에는 IP 주소가 있지만, 그걸 외우는 건 불편하죠.
그래서 mars-ticket.com 같은 도메인을 사서 연결합니다.

203.0.113.12 → mars-ticket.com

이제 누구나 웹 브라우저에 도메인만 입력하면 사이트에 접속할 수 있어요.

5️⃣ Git으로 협업하기

사용자가 증가하고 여러 개발자가 함께 작업하게 되었습니다!
여러 개발자들과 함께 일하다 보면 코드 충돌이나 버전관리 문제가 생길 수 있어요.
그래서 Git을 씁니다:

Git: 코드 변경 사항을 추적
GitHub: 중앙 저장소로서 협업을 지원

6️⃣ CI/CD 파이프라인 구축

CI/CD란?
CI (지속적 통합): 여러 개발자의 코드를 자주 병합하고 자동으로 테스트
CD (지속적 배포): 테스트된 코드를 자동으로 서버에 배포

💡 어떤 도구를 사용할까?
Jenkins

👉 코드를 Github에 푸시하면 자동으로 빌드 → 테스트 → 배포
이제 개발자는 코드만 잘 짜면, 나머지는 자동으로 처리됩니다.

7️⃣ Docker로 컨테이너 만들기

서버 환경이 매번 다르면 문제가 생겨요.
그래서 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"]

이렇게 만든 이미지를 기반으로 컨테이너를 실행하면 어떤 서버에서든 똑같이 작동!

8️⃣ Kubernetes로 컨테이너 관리하기

이제 사용자도 많아지고, 서버도 여러 대 필요해요.
여기서 등장하는 것이 바로 Kubernetes (k8s)!

자동으로 컨테이너를 배포하고, 늘리고, 복구해주는 똑똑한 친구입니다.

⚙️ Kubernetes 기능

기능설명
배포컨테이너를 자동으로 여러 서버에 배포함
스케일링사용량에 따라 컨테이너 수 자동 조절
복구컨테이너가 죽으면 자동으로 재시작
로드밸런싱사용자 요청을 여러 컨테이너에 자동 분산
롤링 업데이트 / 롤백새 버전 배포 시 점진적 적용, 문제 시 원상 복구

9️⃣ Terraform & Ansible로 인프라 자동화

서버를 매번 수동으로 설정하는 것은 시간이 많이 소요되고 오류를 유발할 수 있습니다.

그래서!

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로 모니터링

이제 앱이 잘 돌아가는지 확인할 차례!
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

0개의 댓글