상세 컨텐츠

본문 제목

쿠버네티스, 도커, AWS - 현대 개발 환경의 핵심 도구들

IT용어,금융

by 우뇽킴 2026. 1. 24. 14:44

본문

728x90

요즘 개발 관련 글을 읽다 보면 도커, 쿠버네티스, AWS 같은 단어가 빠지지 않고 등장한다.

막상 알고 나니 왜 모두가 이 도구들을 사용하는지 이해가 갔다.

오늘은 이 세 가지가 무엇이고, 어떻게 연결되는지 정리해보려 한다.

도커 - 모든 것의 시작

"내 컴퓨터에선 되는데요?"

개발자라면 한 번쯤 들어봤을 말이다. 분명 내 노트북에선 잘 돌아가던 프로그램이 서버에 올리니까 안 돌아간다. Python 버전이 다르거나, 라이브러리가 없거나, 설정 파일 경로가 달라서 생기는 문제들.

도커는 이런 환경 차이 문제를 해결하기 위해 만들어졌다.

컨테이너라는 개념

도커의 핵심은 컨테이너다. 쉽게 말해서, 프로그램과 그 프로그램이 돌아가는 데 필요한 모든 것을 하나의 박스에 담는 것이다.

박스 안에 들어가는 것들:

  • 프로그램 자체
  • Python이나 Node.js 같은 실행 환경
  • 필요한 라이브러리들
  • 설정 파일들

이 박스를 만들어두면, 내 컴퓨터에서든 회사 서버에서든 AWS에서든 똑같이 돌아간다.

가상머신과 뭐가 다른데?

예전엔 VMware나 VirtualBox 같은 가상머신을 썼다. 하지만 가상머신은 무겁다. 운영체제를 통째로 복사해야 하니까.

도커 컨테이너는 훨씬 가볍다:

  • 몇 초 만에 실행됨
  • 메모리도 적게 먹음
  • 필요한 것만 담아서 배포

도커를 쓰면 좋은 점

개발할 때:

  • 팀원 모두가 동일한 환경에서 작업
  • 새로운 팀원이 와도 환경 세팅이 간단함
  • "내 컴퓨터에선 되는데요" 문제 해결

배포할 때:

  • 한 번 만든 이미지를 어디든 똑같이 배포
  • 빠른 배포와 롤백
  • 서버 여러 대에 쉽게 복제

 

 

쿠버네티스 - 컨테이너가 많아지면?

문제의 시작

서비스가 작을 땐 도커만으로도 충분하다. 컨테이너 몇 개 손으로 관리하면 된다.

하지만 서비스가 커지면 이야기가 달라진다:

  • 회원 관리 컨테이너 10개
  • 상품 조회 컨테이너 20개
  • 결제 처리 컨테이너 5개
  • 알림 발송 컨테이너 3개

이걸 어떻게 관리하지?

쿠버네티스가 하는 일

쿠버네티스(줄여서 K8s)는 이런 수많은 컨테이너를 자동으로 관리해주는 시스템이다.

자동 복구 컨테이너 하나가 갑자기 죽었다? 쿠버네티스가 알아서 새로 하나 띄워준다. 사람이 모니터링하다가 수동으로 재시작할 필요가 없다.

자동 확장 갑자기 사용자가 몰려서 서버가 느려진다? CPU 사용률이 높아지면 쿠버네티스가 자동으로 컨테이너를 더 띄워준다. 한가해지면 다시 줄여준다.

부하 분산 똑같은 기능을 하는 컨테이너가 10개 있다면, 들어오는 요청을 골고루 나눠준다. 특정 컨테이너만 과부하 걸리는 일이 없다.

무중단 배포 새 버전을 배포할 때 서비스를 중단할 필요가 없다. 하나씩 천천히 바꿔가면서 배포한다. 문제가 생기면 자동으로 이전 버전으로 돌아간다.

실제로 어떻게 쓰나?

쿠버네티스를 쓰려면 설정 파일을 작성해야 한다. "이 프로그램을 3개 실행해줘", "CPU가 80% 넘으면 하나 더 띄워줘" 같은 규칙들을 정의하는 것이다.

그러면 쿠버네티스가 알아서:

  • 서버에 적절히 배치하고
  • 모니터링하고
  • 문제 생기면 복구하고
  • 필요하면 늘리고 줄이고

모든 걸 자동으로 처리한다.

AWS - 서버는 어디에?

클라우드가 뭔데?

예전엔 서버를 직접 사야 했다. 물리적인 서버를 사서 회사 한쪽에 두고, 인터넷 연결하고, 관리하고.

이젠 그럴 필요가 없다. AWS 같은 클라우드 서비스가 서버를 빌려준다.

필요한 만큼만:

  • 작게 시작해서 크게 키울 수 있음
  • 안 쓸 때는 끄면 됨
  • 사용한 만큼만 돈 냄

관리도 편함:

  • 서버 고장? AWS가 알아서 해결
  • 보안? AWS가 신경 씀
  • 백업? 클릭 몇 번이면 됨

도커, 쿠버네티스와 AWS의 관계

여기서 세 가지가 연결된다.

도커로 프로그램을 컨테이너로 만들고, 쿠버네티스로 그 컨테이너들을 관리하고, AWS에서 실제 서버를 빌린다.

AWS에서 쿠버네티스 사용하기

AWS는 쿠버네티스를 쉽게 쓸 수 있게 **EKS(Elastic Kubernetes Service)**라는 서비스를 제공한다.

  • 쿠버네티스 설치를 대신 해줌
  • 관리도 AWS가 함
  • 업데이트도 자동
  • 보안도 신경 써줌

개발자는 그냥 "이런 프로그램을 이렇게 돌려줘"라고만 하면 된다.

다른 선택지도 있어

EC2에 직접 설치 AWS의 가상 서버(EC2)에 쿠버네티스를 직접 설치할 수도 있다. 비용은 좀 더 저렴하지만, 모든 걸 직접 관리해야 한다.

Fargate 서버 자체를 신경 쓰기 싫다면 Fargate를 쓸 수 있다. 컨테이너만 정의하면 AWS가 알아서 서버를 띄우고 관리해준다.

실제 사용 흐름

실제로 이 도구들을 어떻게 사용하는지 간단히 정리하면:

1단계: 개발

  • 내 컴퓨터에서 프로그램 개발
  • 도커로 컨테이너 이미지 만들기
  • Docker Hub나 AWS ECR에 업로드

2단계: 배포 설정

  • 쿠버네티스 설정 파일 작성
  • "컨테이너 3개 실행", "포트는 8080" 같은 규칙 정의

3단계: 배포

  • AWS EKS 클러스터에 배포
  • 쿠버네티스가 자동으로 관리 시작

4단계: 운영

  • 모니터링은 자동
  • 문제 생기면 자동 복구
  • 트래픽 늘면 자동 확장

끝. 나머지는 시스템이 알아서 한다.

언제 이런 걸 써야 할까?

작은 프로젝트 (개인, 소규모 팀)

  • 도커만 써도 충분
  • AWS EC2 하나면 됨
  • 쿠버네티스는 오버엔지니어링

중간 규모 프로젝트

  • 트래픽이 들쭉날쭉함
  • 여러 서비스가 연동됨
  • 쿠버네티스 도입 고려 시점

대규모 프로젝트

  • 서비스가 수십 개로 쪼개짐
  • 사용자가 많고 트래픽 변동이 큼
  • 쿠버네티스 거의 필수

 

마치며

처음엔 "이게 다 뭐야" 싶었는데, 하나씩 알고 나니 왜 모두가 이 도구들을 쓰는지 이해가 됐다.

도커는 환경 문제를 해결해주고, 쿠버네티스는 관리를 자동화해주고, AWS는 서버 걱정을 덜어준다.

규모가 작을 땐 필요 없을 수도 있다.

관련글 더보기

댓글 영역