본문 바로가기

개발/개발 관련 Contents

돈을 아끼기 위한 무료 서버 배포 전략 (2편)

반응형

 

Docker가 리소스를 절약해줄까?

 

서버를 운영할 때 가장 중요한 건 리소스 관리다.

Docker를 쓰면 뭔가 가볍고, 최적화가 잘 될 것 같은 느낌이 드는데… 과연 Docker를 사용하면 리소스를 절약할 수 있을까?

이번 글에서는 Docker의 실제 리소스 사용량과 효율성에 대해 다뤄보자.


1️⃣ Docker를 쓰면 진짜 리소스가 줄어들까?

 

Docker를 처음 접하면 흔히 “Docker를 사용하면 리소스를 줄일 수 있다” 라고 생각하기 쉽다.

하지만 결론부터 말하자면, Docker 자체가 리소스를 줄여주지는 않는다.

 

🚨 Docker는 VM이 아니다!

 

많이들 오해하는 게 Docker가 가상머신(VM)처럼 동작한다고 생각하는 건데, 사실 Docker는 가상화가 아니다.

VM (Virtual Machine): 하드웨어를 가상화해서 완전히 독립된 OS 환경을 실행 (ex: AWS EC2)

Docker (Container): OS 위에서 프로세스를 격리해서 실행

 

즉, Docker는 OS 자체를 가상화하는 게 아니라 기존 OS에서 애플리케이션을 격리해서 실행하는 방식이다.

👉 Docker를 쓴다고 해서 메모리 사용량이 확 줄어드는 건 아니다.

 

2️⃣ 그럼, Docker를 쓰면 뭐가 좋은 걸까?

 

Docker 자체가 리소스를 줄여주진 않지만, 잘 활용하면 리소스를 더 효율적으로 쓸 수 있는 방법이 있다.

 

✅ 방법 1: 불필요한 프로세스 줄이기

 

Docker를 쓰면 필요한 서비스만 컨테이너로 실행하고, 나머지는 제거할 수 있다.

예를 들어, MongoDB를 로컬에서 직접 실행하는 대신, 클라우드 DB (MongoDB Atlas)로 옮기면 로컬 서버 리소스를 확 줄일 수 있다.

 

📌 예시: MongoDB를 클라우드로 옮기기

 

environment:
  MONGO_URI: "mongodb+srv://<atlas-uri>"

👉 이렇게 하면 로컬 서버에서 MongoDB를 실행할 필요가 없어지고, 메모리 사용량이 줄어든다.

 

✅ 방법 2: 컨테이너별 리소스 제한 설정

 

Docker는 기본적으로 각 컨테이너가 최대한의 리소스를 사용할 수 있도록 설계되어 있다.

즉, 특별한 설정 없이 실행하면 CPU나 RAM을 과하게 사용할 수도 있다.

 

이를 방지하려면, docker-compose.yml에서 각 컨테이너별 리소스 제한을 설정하면 된다.

 

📌 예시: 컨테이너별 CPU & RAM 제한

deploy:
  resources:
    limits:
      cpus: "0.5"
      memory: "256MB"

👉 이렇게 설정하면 컨테이너가 과도한 리소스를 사용하지 못하게 막을 수 있다.

 

✅ 방법 3: 필요할 때만 컨테이너 실행하기

 

모든 컨테이너를 계속 실행할 필요는 없다.

필요 없는 컨테이너는 중지하고, 필요할 때만 실행하면 리소스를 아낄 수 있다.

 

📌 예시: 필요할 때만 컨테이너 실행 & 중지

 

docker-compose stop client  # 클라이언트 컨테이너 중지
docker-compose start client  # 클라이언트 컨테이너 다시 실행

 

3️⃣ EC2 Free Tier vs. MacBook, Docker로 리소스 절약이 가능할까?

 

이제 실제 환경에서 Docker를 사용하면 리소스를 얼마나 절약할 수 있는지 비교해보자.

 

 

MacBook에서 Docker를 활용하면 리소스를 좀 더 효율적으로 사용할 수 있다.

하지만, AWS Free Tier에서는 Docker를 써도 리소스가 부족할 가능성이 크다.

 

결론적으로, Docker가 리소스를 줄여주지는 않지만, 설정을 잘하면 더 효율적으로 사용할 수 있다.

특히 EC2 Free Tier처럼 리소스가 부족한 환경에서는 효과가 크지 않으므로, MacBook에서 실행하는 것이 더 낫다.

 

4️⃣ 결론: Docker로 리소스를 절약할 수 있을까?

 

정리해보면, Docker 자체가 메모리 사용량을 줄여주지는 않는다. 하지만 컨테이너별 리소스 제한을 설정하거나, 불필요한 프로세스를 줄이면 효과적으로 운영할 수 있다.

 

✔ Docker는 가상머신이 아니라, 프로세스를 격리해서 실행하는 기술이다.

✔ Docker 자체는 리소스를 줄여주지 않지만, 컨테이너 리소스 제한을 설정하면 효율적으로 운영할 수 있다.

AWS Free Tier에서는 Docker를 써도 한계가 있지만, MacBook에서는 효과적으로 활용 가능하다.

반응형