·조회수 181

한 대의 서버에서 다중 서비스 운영하는 법

들어가며

인디해커로 여러 개의 서비스를 운영하며 수익화를 시도하고 있지만, AWS 서버 이용 요금이 부담이 됐다. 더 저렴한 대안을 찾던 중, 집에서 사용하지 않던 게임용 PC를 서버로 활용해보기로 했다.

이 PC는 약 5년 전, 200만 원 정도 들여 맞춘 장비인데, 같은 사양을 AWS에서 사용하려면 최소 월 60만 원 이상이 필요하다. 게다가 내가 운영하는 서비스들은 대부분 유저가 없어 트래픽을 거의 사용하지 않는다. 그렇다면 이 서버에서 Docker를 활용해 여러 서비스를 효율적으로 운영할 수 있지 않을까?

구성

단계별로 접근하면 이해하기 쉽다. 우선 가장 기본적인 구성을 살펴보자.

1. Ubuntu 서버에 Docker로 여러 서비스 실행

  • Ubuntu 서버에서 각 서비스를 Docker 컨테이너로 실행한다.

  • Nginx를 이용해 트래픽을 적절하게 분배한다.

  • 이렇게만 해도 외부 접속 없이 사내 네트워크 수준의 서비스 운영이 가능하다.

2. Nginx를 활용한 서비스 구분

  • Nginx 설정 파일에서 server_name을 사용해 각 서비스를 분리하면, 트래픽을 적절한 Docker 컨테이너로 라우팅할 수 있다.

  • 예제 설정:

3. 외부에서 IP로 접속 가능하도록 설정

  • 외부에서 직접 서버에 접근하려면 공인 IP를 서버에 연결해야 한다.
  • 공유기를 사용하는 경우, 포트 포워딩을 설정해 외부 트래픽을 서버로 유도한다.
  • 설정 예제: 공유기에서 80, 443 포트를 서버로 포워딩

4. 도메인 연결 (AWS Route 53 등 활용)

  • AWS Route 53 같은 서비스를 이용하면 IP 대신 도메인 주소를 사용할 수 있다.
  • DNS 설정에서 A 레코드를 집 네트워크의 공인 IP로 설정하면 된다.

5. CNAME을 활용한 IP 변경 대응

  • 고정 IP가 없는 경우, CNAME 레코드를 활용하면 IP 변경 시에도 손쉽게 대응할 수 있다.
  • 예를 들어, api.example.commyserver.example.com(고정 도메인)으로 연결하면, 실제 IP 변경 시 myserver.example.com의 A 레코드만 수정하면 된다.

6. HTTPS 적용 (Let’s Encrypt 활용)

  • Let’s Encrypt를 사용하면 무료로 SSL 인증서를 발급받을 수 있다.

  • Certbot을 이용해 자동 갱신을 설정하면, 별도 비용 없이 안전한 HTTPS 환경을 유지할 수 있다.

  • 기본적인 SSL 설정 예제:

    server {
        listen 443 ssl;
        server_name example.com;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    }
    

결론

여기서 모든 세부 설정을 다루진 않았지만, 비용 절감을 위해 로컬 PC를 서버로 활용하는 방법이 충분히 가능함을 보여주고 싶었다.

AWS는 확장성과 안정성이 뛰어나지만, 초기 비용 부담이 크다. 반면 로컬 PC를 활용하면 비용을 아끼면서도 여러 개의 서비스를 직접 운영할 수 있다.

이 방식은 개인 프로젝트나 소규모 서비스 운영에 적합하다. 처음에는 이렇게 운영하다가, 트래픽이 증가하고 수익이 보장되면 AWS 같은 클라우드 환경으로 확장하는 것이 좋은 전략인 것 같다.

김지식
김지식
웹, 앱 개발자입니다.

댓글

댓글을 불러오는 중...