Google Cloud Platform(GCP)에서는 퍼블릭 IP 주소만으로 서비스 배포가 가능하지만, 더 깔끔한 주소를 사용하고 싶다면 GCP에서 기본 제공하는 도메인을 활용할 수 있습니다.

이번 글에서는 Cloud Run, App Engine, Compute Engine(GCE)에서 무료 도메인을 활용하는 방법을 소개합니다.

Cloud Run, App Engine을 사용하면 무료 도메인 자동 제공
Compute Engine(VM)에서는 DuckDNS 같은 DDNS 활용 가능
GCP의 Static IP를 설정하면 변경되지 않는 주소 확보 가능


1. Cloud Run / App Engine의 기본 도메인 활용하기

GCP에서 Cloud Run 또는 App Engine을 사용하면, 자동으로 무료 도메인이 생성됩니다.

Cloud Run 기본 도메인

https://your-service-name.run.app

App Engine 기본 도메인

https://your-project-id.appspot.com

(*)Cloud Run, App Engine 기본 도메인은 이미 HTTPS를 지원하므로 별도 설정이 필요 없습니다.


2. GCP VM (Compute Engine)에서 무료 도메인 활용하기

Azure에서는 VM을 생성하면 .cloudapp.azure.com 같은 기본 도메인이 자동 할당됩니다.
하지만 GCP에서는 VM에 기본 제공 도메인이 없기 때문에, FQDN(정규화된 도메인 이름)을 직접 설정해야 합니다.

 

Azure처럼 VM에 직접 도메인을 할당하려면,
GCP의 [Cloud DNS 서비스와 무료 도메인(Freenom 등)]을 연동하면 됩니다.

설정 방법:
1) 무료 도메인(Freenom, Namecheap 등) 등록
2) GCP Cloud DNS에서 도메인 레코드 생성
3) VM의 퍼블릭 IP와 A 레코드 연결
4)  이제 example.tk 같은 도메인으로 GCP VM에 접속 가능!

장점:

  • Azure처럼 VM에 FQDN을 설정하는 효과
  • Cloud DNS 사용 시 빠른 네임서버 응답 속도 제공
  • Let's Encrypt를 활용해 HTTPS 적용 가능

단점:

  • Cloud DNS는 일부 비용이 발생할 수 있음
  • 설정 과정이 Azure보다 복잡함

3. GCP + 무료 도메인 + HTTPS 적용하기

만약 GCP VM에서 Azure처럼 HTTPS까지 적용하려면, Freenom이나 DuckDNS 같은 무료 도메인을 활용할 수 있습니다.

🔹 DuckDNS 활용 (동적 IP 업데이트 자동화)
🔹 Freenom을 사용하여 고정된 도메인 확보(현재 사용 불가)
🔹 Let's Encrypt로 HTTPS 적용 가능

 

 


4. 결론

개인 테스트나 소규모 프로젝트라면 DuckDNS나 Azure를, 운영 서비스라면 유료 도메인을 쓰는 게 가장 현실적인 선택으로 보임  

1️⃣ GCP에서 Ubuntu VM 생성하기

GCP(Google Cloud Platform)에서 Ubuntu VM을 생성하고, Docker를 설치한 후 Nginx를 배포하는 과정을 소개합니다. 클라우드 환경에서 손쉽게 웹 서버를 운영해보고 싶다면 따라 해보세요!

🖼️ 이미지 1: GCP Console에서 Compute Engine VM 인스턴스 생성 화면

✅ 1.1 GCP에서 VM 인스턴스 만들기

  1. Google Cloud Console에 로그인합니다.
  2. 왼쪽 메뉴에서 Compute EngineVM 인스턴스로 이동합니다.
  3. 인스턴스 만들기 버튼을 클릭한 후 아래 설정을 적용합니다.
    • 이름: ubuntu-docker-vm
    • 머신 유형: e2-medium (2 vCPU, 4GB RAM)
    • 부팅 디스크: Ubuntu 22.04 LTS 선택
    • 방화벽 설정: HTTP 및 HTTPS 트래픽 허용 체크
  4. 만들기 버튼을 눌러 인스턴스를 생성합니다.

🖼️ 이미지 2: VM 생성 완료 후 리스트에서 확인하는 화면

✅ 1.2 VM에 SSH 접속하기

VM이 생성되면 SSH 버튼을 클릭하여 접속합니다.
혹은 로컬 환경에서 gcloud 명령어를 사용해 접속할 수도 있습니다.


2️⃣ Ubuntu에 Docker 설치하기

✅ 2.1 패키지 업데이트 및 Docker 설치

1)sudo apt update 
2)sudo apt upgrade -y
3)sudo apt install -y docker.io

✅ 2.2 Docker 서비스 활성화 및 실행 확인

sudo systemctl enable docker
sudo systemctl start docker
docker --version # Docker 버전 확인

🖼️ 이미지 3: 터미널에서 docker --version 실행 후 출력 결과

✅ 2.3 현재 사용자를 Docker 그룹에 추가 (선택 사항)

sudo usermod -aG docker $USER newgrp docker # 변경 적용 docker ps # Docker 실행 확인

3️⃣ Docker로 Nginx 실행하기

✅ 3.1 Nginx 컨테이너 실행

docker pull nginx
docker run -d --name nginx-container -p 80:80 nginx
 
 

✅ 3.2 컨테이너 실행 확인

docker ps

🖼️ 이미지 4: docker ps 실행 후 Nginx 컨테이너가 정상적으로 실행된 화면


4️⃣ GCP 방화벽 설정하여 외부 접근 허용하기

GCP에서는 기본적으로 외부에서 VM의 80번 포트로 접근할 수 없습니다. 따라서 방화벽 규칙을 추가해야 합니다.

✅ 4.1 방화벽 규칙 추가

  1. VPC 네트워크방화벽 규칙으로 이동합니다.
  2. 방화벽 규칙 만들기 버튼을 클릭하고 아래 내용을 입력합니다.
    • 이름: allow-nginx
    • 트래픽 방향: Ingress
    • 소스 IP 범위: 0.0.0.0/0
    • 대상 태그: http-server
    • 허용할 포트: 80
  3. 만들기 버튼을 클릭하여 방화벽 규칙을 적용합니다.

🖼️ 이미지 5: GCP 방화벽 규칙 

  1. VM 인스턴스 설정으로 이동하여 http-server 태그를 추가합니다.

5️⃣ Nginx 웹 페이지 테스트하기

✅ 5.1 VM의 외부 IP 확인

curl ifconfig.me

✅ 5.2 브라우저에서 접속

  • <VM_EXTERNAL_IP> 로 접속합니다.
  • 아래와 같은 Nginx 기본 페이지가 나타나면 성공적으로 배포된 것입니다.
  •  

🖼️ 이미지 6: 브라우저에서 Nginx 기본 페이지가 열리는 화면


6️⃣ 추가 설정 (선택)

✅ 6.1 컨테이너 자동 재시작 설정

VM이 재부팅되더라도 컨테이너가 자동으로 실행되도록 설정할 수 있습니다.

docker update --restart always nginx-container

✅ 6.2 커스텀 Nginx 설정 적용

기본 Nginx 페이지가 아닌, 커스텀 HTML 페이지를 적용할 수도 있습니다.

mkdir ~/nginx-custom echo "<h1>Welcome to GCP Nginx</h1>" > ~/nginx-custom/index.html docker run -d --name nginx-custom -p 80:80 -v ~/nginx-custom:/usr/share/nginx/html nginx

 

클라우드 환경에서 개발 및 운영을 하다 보면 예상치 못한 네트워크 문제를 자주 마주하게 된다. 최근 Azure에 VM을 배포한 후 SSH로 접속을 시도했는데, telnet은 정상적으로 연결되지만 SSH는 kex_exchange_identification 오류가 발생하며 실패하는 문제가 있었다.


1. 문제 상황 분석

Azure VM에 SSH로 접속하려고 했으나 다음과 같은 문제가 발생했다.

  • Telnet(포트 22, 2222)은 정상 작동하지만, SSH 접속은 실패
  • SSH 접속 시 kex_exchange_identification: Connection closed by remote host 오류 발생
  • SSH 키 관련 오류 메시지가 출력됨

2. 원인 분석 및 해결 과정

(1) SSH 포트 변경 확인

먼저, Azure VM의 SSH 설정을 확인했다. 기본적으로 SSH는 포트 22를 사용하지만, 보안 강화를 위해 관리자가 2222로 변경했을 가능성이 있었다.
Azure에서 SSH 포트를 변경했는지 확인하려면 다음 명령어를 실행하면 된다.

 
sudo netstat -tuln | grep ssh

🔹 결과: 2222 포트에서 SSH가 실행 중이었다.

해결 방법:
SSH 접속 시 -p 옵션을 추가하여 올바른 포트로 연결해야 한다.

 
ssh -i ~/.ssh/mykey.pem -p 2222 사용자명@공용IP

(2) SSH 키 파일 문제 해결

Azure VM은 기본적으로 비밀번호 인증을 비활성화하고 SSH 키 인증 방식을 사용한다. 하지만, SSH 키를 생성하지 않았거나, 개인 키 파일이 로컬에 없을 경우 접근이 불가능하다.

Azure VM을 만들 때 생성된 SSH 키를 찾을 수 없다면, 다음 방법으로 새로운 SSH 키를 생성해야 한다.

🔹 로컬에서 새로운 SSH 키 생성

 
ssh-keygen -t rsa -b 2048 -f ~/.ssh/new_azure_key

🔹 Azure VM에 새로운 SSH 공개 키 등록

  1. Azure Portal → VM → Run CommandRunShellScript 실행
  2. 명령어 입력
    echo "새 SSH 공개 키" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys

이제 새로운 키를 사용해 SSH 접속을 시도할 수 있다.

ssh -i ~/.ssh/new_azure_key -p 2222 사용자명@공용IP

(3) Azure NSG 및 방화벽 설정 확인

Azure VM은 기본적으로 **네트워크 보안 그룹(NSG)**을 통해 인바운드 및 아웃바운드 트래픽을 제어한다. telnet은 정상적으로 작동하지만 SSH 접속이 되지 않는다면, NSG에서 2222 포트가 차단되었을 가능성이 있다.

🔹 NSG 규칙 확인 및 수정 방법

  1. Azure Portal → VM → 네트워킹 → 인바운드 규칙 확인
  2. 2222 포트가 허용(Allow) 으로 설정되어 있는지 확인
  3. 다음과 같은 규칙을 추가
    • 소스: Any
    • 대상 포트: 2222
    • 프로토콜: TCP
    • 작업: Allow

🔹 리눅스 방화벽(UFW) 설정 확인

sudo ufw status sudo ufw allow 2222/tcp

3. 해결 및 정리

이 문제는 SSH 포트 변경, SSH 키 파일 문제, NSG 및 방화벽 설정이 원인이었다.

🔹 정리하면 다음과 같은 방식으로 해결 가능하다.

  1. SSH 포트 확인: sudo netstat -tuln | grep ssh
  2. 올바른 SSH 키 사용하여 접속: ssh -i ~/.ssh/mykey.pem -p 2222 사용자명@공용IP
  3. SSH 키가 없다면 새로 생성하여 등록
  4. Azure NSG 및 리눅스 방화벽에서 2222 포트가 허용되었는지 확인

실제 클라우드 운영 환경에서는 이런 문제가 자주 발생할 수 있다. 단순한 연결 문제로 보일 수도 있지만, 보안 설정과 운영 정책에 따라 원인이 달라질 수 있으므로 하나씩 확인하며 해결하는 것이 중요하다.

클라우드 사용이 점점 필수가 되어가고 있다. 하지만 처음부터 비용을 지불하고 쓰기에는 부담이 될 수 있다. 다행히도 AWS, Azure, GCP, Oracle과 같은 주요 클라우드들은 무료 사용 혜택을 제공한다. 그렇다면, 가장 오래, 가장 많은 리소스를 무료로 쓸 수 있는 클라우드는 어디일까?

나는 개인 프로젝트를 하면서 클라우드를 선택해야 했고, 무료 크레딧과 항상 무료(Tier) 혜택을 중심으로 비교해봤다. 그 결과를 공유해보겠다.


1. 주요 클라우드의 무료 혜택 비교

각 클라우드는 신규 사용자에게 일정 금액의 크레딧을 제공하고, 일부 서비스는 항상 무료(Tier)로 운영할 수 있도록 한다. 아래 표를 보면 한눈에 비교할 수 있다.

클라우드무료 크레딧항상 무료(Tier) 서비스특징

AWS $300 (12개월) EC2 750시간, S3 5GB, RDS 750시간 등 무료 리소스가 많지만 1년 후 종료
Azure $200 (30일) B1s VM 750시간, Blob Storage 5GB 등 크레딧 소진 후 일부 무료 사용 가능
GCP $300 (90일) F1-micro VM, Cloud Storage 5GB, BigQuery 1TB 일부 서비스는 평생 무료
Oracle Cloud $300 (30일) 2개 VM (Ampere A1), 블록 스토리지 200GB, DB 2개 등 무료 자원이 가장 강력, 일부 영구 무료

2. 클라우드별 무료 혜택 자세히 살펴보기

✅ AWS – 전반적으로 무료 혜택이 많지만, 1년 후 종료

AWS는 가장 대중적인 클라우드답게 무료로 제공하는 서비스가 많다. 하지만 대부분 12개월 후 종료된다는 점이 단점이다.

  • 무료 크레딧: $300 (12개월 유효)
  • 주요 무료 서비스:
    • EC2 t2.micro or t3.micro (750시간/월)
    • RDS (MySQL, PostgreSQL) 750시간/월
    • S3 스토리지 5GB
    • Lambda 100만 요청/월

🔹 추천 대상: 처음 클라우드를 배우거나, 단기 프로젝트를 운영하는 경우 유용함.


✅ Azure – 30일 후 크레딧 소진되지만, 일부 서비스 계속 무료

Azure는 무료 크레딧이 30일로 짧지만, 일부 서비스는 지속적으로 무료다. 특히 Windows 기반 프로젝트에 강점이 있다.

  • 무료 크레딧: $200 (30일 유효)
  • 주요 무료 서비스:
    • B1s VM (750시간/월)
    • Blob Storage 5GB
    • SQL Database 250GB (단, 12개월 한정)

🔹 추천 대상: Microsoft 환경을 활용하는 기업이나 Windows 서버를 운영하려는 경우.


✅ GCP – 크레딧 유효기간이 길고, 일부 서비스 평생 무료

GCP는 $300 크레딧을 90일 동안 사용할 수 있고, 일부 서비스는 항상 무료다. 특히 머신러닝, 데이터 분석에 강점이 있다.

  • 무료 크레딧: $300 (90일 유효)
  • 주요 무료 서비스:
    • F1-micro VM (매월 1개 무료)
    • Cloud Storage 5GB
    • BigQuery 1TB (매월 무료 쿼리)

🔹 추천 대상: 머신러닝, 데이터 분석을 주로 활용하려는 사용자.


✅ Oracle Cloud – 영구 무료 리소스가 가장 많음!

Oracle Cloud는 무료 크레딧($300, 30일 유효)과 별개로 영구 무료 리소스가 많다.
특히 무료로 제공되는 VM이 2개라서, 개인 서버를 운영하려는 사람들에게 매력적이다.

  • 무료 크레딧: $300 (30일 유효)
  • 주요 무료 서비스 (영구 제공)
    • Ampere A1 VM (ARM 기반, 2개 인스턴스 제공)
    • 블록 스토리지 200GB
    • Autonomus Database 2개 (각 20GB)

🔹 추천 대상: 장기적으로 무료 클라우드를 사용하고 싶은 사람!


3. 어떤 클라우드를 선택해야 할까?

무료 혜택만 고려했을 때 각 클라우드별 추천 대상을 정리해보면 다음과 같다.

  • AWS → 1년 동안 여러 서비스를 무료로 테스트하고 싶은 경우
  • Azure → Windows 환경이 필요하거나, 엔터프라이즈 환경과 연계하려는 경우
  • GCP → 머신러닝, 데이터 분석 관련 프로젝트를 진행하려는 경우
  • Oracle Cloud장기적으로 무료 리소스를 유지하며 개인 서버를 운영하려는 경우

💡 내 선택: 나는 개인 프로젝트를 꾸준히 운영하고 싶었기 때문에 Oracle Cloud를 메인으로, AWS와 GCP를 보조로 활용하기로 했다.
특히 Oracle의 무료 VM 2개를 활용하면 장기간 부담 없이 사용할 수 있다.

무료 크레딧을 전략적으로 활용하면 비용을 아끼면서도 강력한 클라우드를 사용할 수 있다.
클라우드 선택에 고민이 된다면, 우선 무료 혜택부터 최대한 활용해보자! 🚀

요즘 클라우드 사용이 거의 필수처럼 되어버렸다. 개인 프로젝트든, 회사에서든 클라우드를 고려하지 않을 수 없는 시대다. 하지만 GCP, Azure, AWS 중에서 어떤 걸 선택해야 할지 고민이 된다. 나도 클라우드 도입을 고민하면서 세 가지 플랫폼을 비교해봤다.

비교 기준은 사용 편의성비용이다. 각 클라우드마다 장점과 단점이 명확하게 갈리는 부분이 있으니, 나와 비슷한 고민을 하는 사람들에게 도움이 되었으면 좋겠다.


1. 사용 편의성 비교

AWS – 가장 대중적인 클라우드, 하지만 배워야 할 것이 많다

AWS는 클라우드 시장 점유율 1위다. 많은 기업이 사용하고 있어서 자료도 많고, 커뮤니티도 활발하다. 그러나 처음 접하면 서비스가 너무 많아서 압도될 수 있다. 콘솔 UI도 직관적이지 않은 부분이 있어서, 처음 시작할 때는 학습이 필요하다.

장점

  • 사용자가 많아 자료가 풍부하고, 문제가 생겼을 때 해결책을 찾기 쉽다.
  • 다양한 기능과 서비스가 준비되어 있어 확장성이 뛰어나다.
  • 기업에서 많이 사용하므로 이력서에 AWS 경험이 있으면 가점이 될 가능성이 크다.

단점

  • UI/UX가 직관적이지 않아 초보자가 적응하기 어렵다.
  • 서비스 종류가 많아서 처음 시작할 때 학습 부담이 크다.
  • 비용이 복잡하게 계산되기 때문에 예상보다 요금이 더 나올 수 있다.

Azure – Microsoft 환경에 최적화, 하지만 IT 엔지니어 입장에서 아쉬운 점도

Azure는 Microsoft 제품과의 연동이 강점이다. 특히 Windows 서버, Active Directory, Office 365를 사용하는 기업이라면 Azure가 좋은 선택이 될 수 있다. 콘솔도 비교적 직관적이라 학습 부담이 적은 편이다. 하지만 IT 인프라 쪽에서 세부적인 설정을 조정할 때, AWS나 GCP보다 아쉬운 부분이 있다.

장점

  • Microsoft 제품과의 연동이 강력하다.
  • 콘솔이 AWS보다 직관적이라 초보자가 접근하기 쉽다.
  • 기업 고객을 대상으로 한 서비스가 많아 엔터프라이즈 환경에서 유리하다.

단점

  • IT 엔지니어 관점에서 세부 설정이 제한적인 경우가 있다.
  • 문서화가 부족한 경우가 있어, 특정 문제 해결이 어려울 수 있다.
  • 다른 클라우드에 비해 오픈소스 생태계와의 연계가 약한 편이다.

 


GCP – 개발자 친화적이지만, 국내에서 인지도가 낮

GCP는 Google이 만든 클라우드답게, 개발자 친화적인 서비스가 많다. 특히 AI/ML 관련 기능이 강력하다. 콘솔 UI도 깔끔해서 AWS보다는 쉽게 익숙해질 수 있다. 하지만 국내에서는 AWS나 Azure보다 사용자가 적어, 정보를 찾기가 어렵다.

장점

  • 깔끔한 UI로 AWS보다 접근성이 좋다.
  • AI/ML 관련 기능이 뛰어나고, Kubernetes(GKE)와 같은 컨테이너 기술 지원이 강력하다.
  • 비용이 상대적으로 투명하게 계산되어 예측이 쉽다.

단점

  • 국내 사용자 기반이 적어, 정보를 찾기 어려울 수 있다.
  • 글로벌 리전은 잘 갖춰져 있지만, 국내에서의 서비스 최적화가 부족한 경우가 있다.
  • 엔터프라이즈보다는 스타트업이나 개발자 중심의 서비스가 강점이라, 기업 환경에서 적합하지 않을 수도 있다.

 

2. 비용 비교

클라우드 비용은 단순 비교가 어렵다. 사용하는 서비스와 트래픽에 따라 비용이 천차만별로 달라지기 때문이다. 하지만 대략적인 경향을 보면 다음과 같다.

항목 AWS Azure GCP
VM 인스턴스 비용 중간 가장 비쌈 가장 저렴
데이터 전송 비용 높은 편 중간 비교적 저렴
스토리지 비용 다양한 옵션 중간 저렴한 편
할인 정책 Reserved Instance, Savings Plan Reserved Instance Sustained Use Discounts
  • AWS: 기본 가격은 적당하지만, 데이터 전송 비용이 비싸다. 장기 예약 할인(Reserved Instance) 활용하면 비용 절감 가능.
  • Azure: VM 비용이 가장 비싼 편이지만, Microsoft 제품과의 라이선스 비용을 고려하면 유리할 수도 있다.
  • GCP: VM과 데이터 전송 비용이 가장 저렴한 편. "Sustained Use Discounts"라는 자동 할인 정책이 있어서 장기 사용 시 유리하다.

 

결론: 어떤 클라우드를 선택해야 할까?

AWS는 시장 점유율이 높고 다양한 기능을 제공하지만, 비용이 복잡하고 학습 부담이 있다.
Azure는 Microsoft 환경에 최적화되어 있지만, IT 엔지니어링 측면에서 아쉬운 부분이 있을 수 있다.
GCP는 개발자 친화적이고 저렴하지만, 국내 인지도가 낮아 정보 찾기가 어렵다.

내 결론?

  • 기업에서 Microsoft 제품을 많이 쓴다면 Azure
  • 개발 중심이라면 GCP
  • 가장 대중적인 선택을 원한다면 AWS

내가 클라우드를 선택하는 과정에서 고민했던 내용을 정리해봤다. 결국 어떤 클라우드를 선택할지는 사용 목적과 환경에 따라 달라질 것이다. 선택에 도움이 되었기를!

+ Recent posts