Google Cloud NEXT ’26와 함께 크게 승리하세요: 최고의 클라우드 스토리에게 $1,000 상금

발행: (2026년 4월 29일 AM 10:02 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

🎯 단계 1 – Google Cloud로 해결한 실제 문제 선택

최고의 이야기는 고통에서 시작됩니다. 생각해 보세요: “GCP 이전에 우리는 X 문제를 겪었습니다. GCP 이후에 우리는 Y를 달성했습니다.”

Examples

  • Cloud Run + Cloud SQL을 사용해 API 지연 시간을 2 s에서 200 ms로 감소시켰습니다
  • Cloud Functions와 BigQuery를 활용해 월간 보고서를 자동화했습니다
  • Cloud Storage + Pub/Sub + Cloud Functions로 이미지 처리 규모를 확장했습니다

Your Turn – 하나의 실제 프로젝트를 선택하세요. 이 가이드에서는 다음 예시를 사용합니다:

“Cloud Run, Firestore, 그리고 Firebase Hosting을 이용해 서버리스 URL 단축기를 구축했습니다 — EC2 대비 비용을 70 % 절감했습니다.”

💻 Step 2 – Build & Document Your Project (With Code)

1. Set Up Your Environment

# Install Google Cloud CLI
curl https://sdk.cloud.google.com | bash
gcloud init

# Enable required APIs
gcloud services enable run.googleapis.com
gcloud services enable firestore.googleapis.com
gcloud services enable cloudbuild.googleapis.com

2. Create the Flask App (main.py)

from flask import Flask, request, jsonify, redirect
from google.cloud import firestore
import string, random, os
import logging
import google.cloud.logging

app = Flask(__name__)
db = firestore.Client()

# Enable Cloud Logging
logging_client = google.cloud.logging.Client()
logging_client.setup_logging()

def generate_short_id(length=6):
    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))

@app.route('/shorten', methods=['POST'])
def shorten():
    logging.info("Shorten request received")
    data = request.get_json()
    long_url = data.get('url')
    if not long_url:
        return jsonify({'error': 'URL is required'}), 400

    short_id = generate_short_id()
    doc_ref = db.collection('urls').document(short_id)
    doc_ref.set({'long_url': long_url})

    logging.info(f"Generated short ID: {short_id}")
    return jsonify({'short_url': f"https://your-domain.com/{short_id}"}), 201

@app.route('/')
def redirect_url(short_id):
    doc_ref = db.collection('urls').document(short_id)
    doc = doc_ref.get()
    if doc.exists:
        return redirect(doc.to_dict()['long_url'])
    else:
        return "Not found", 404

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=int(os.getenv('PORT', 8080)))

3. Add requirements.txt

Flask==2.3.3
google-cloud-firestore==2.13.0
google-cloud-logging==3.5.0

4. Create Dockerfile

FROM python:3.11-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "main.py"]

🚀 Step 3 – Google Cloud Run에 배포

1. 빌드 및 배포

# Set your project ID
gcloud config set project YOUR_PROJECT_ID

# Build and deploy
gcloud run deploy url-shortener \
  --source . \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated

Output: https://url-shortener-abcd-uc.a.run.app와 같은 공개 URL을 받게 됩니다.

2. API 테스트

curl -X POST https://url-shortener-abcd-uc.a.run.app/shorten \
  -H "Content-Type: application/json" \
  -d '{"url": "https://dev.to"}'

예상 응답

{
  "short_url": "https://your-domain.com/aB3x9k"
}

반환된 short_url에 접속하면 원본 사이트로 리디렉션됩니다.

📊 Step 4 – 모니터링 추가 (보너스 포인트!)

관측성은 제출물을 강화합니다. 위 예제는 이미 Cloud Logging을 통합하고 있습니다. 배포 후에는 Cloud Console Logs Viewer에서 로그를 확인하세요.

🏆 Step 5 – Write Your Story (Template)

Title

GCP에서 서버리스 URL 단축기를 구축한 방법 — 월 $5

Problem

당신이 겪은 문제점을 설명하세요 (예: EC2 기반 솔루션의 높은 비용과 낮은 확장성).

Solution

아키텍처 (Cloud Run, Firestore, Firebase Hosting)를 설명하고, 왜 문제가 해결되었는지 기술하세요.

Implementation

코드 스니펫, 배포 단계, 사용한 CI/CD 파이프라인을 포함하세요.

Results

개선 효과를 수치화하세요 (비용 절감, 지연 시간, 확장성).

Lessons Learned & Best Practices

도전 과제, 최적화 방법, 다른 사람들을 위한 조언을 공유하세요.

0 조회
Back to Blog

관련 글

더 보기 »