서버리스(Serverless)란?

yeahcold·2025년 2월 25일
0

Data Engineering

목록 보기
4/20

서버리스(Serverless)란 서버를 직접 관리하지 않고 클라우드 제공자가 자동으로 인프라를 운영 및 확장하는 컴퓨팅 모델입니다. 개발자는 코드 작성과 배포에 집중할 수 있으며, 인프라 운영 부담이 줄어듭니다.

GCP(Google Cloud Platform)에서는 여러 가지 서버리스 서비스가 제공되며, 대표적으로 Cloud Functions, Cloud Run, App Engine, Cloud Workflows 등이 있습니다.


1️⃣ GCP의 주요 서버리스 서비스

1.1 Cloud Functions

📌 특징

  • 이벤트 기반 서버리스 함수(Function as a Service, FaaS).
  • HTTP 요청, Pub/Sub, Firestore, Cloud Storage 등의 이벤트를 트리거(trigger)로 실행.
  • 코드 실행 시간 동안만 비용이 부과됨(100ms 단위 청구).

📌 사용 사례
✅ 이미지 업로드 시 자동 리사이징
✅ 실시간 데이터 처리
✅ 웹훅(Webhook) 처리

💡 예제: Pub/Sub 메시지를 처리하는 Cloud Function

def hello_pubsub(event, context):
    print(f"Received message: {event}")

1.2 Cloud Run

📌 특징

  • 컨테이너 기반 서버리스 플랫폼.
  • HTTP 요청을 기반으로 컨테이너를 실행하며, 자동 확장 가능.
  • Kubernetes 기반이지만 서버 관리 없이 사용 가능.
  • CPU 사용 시에만 비용이 부과됨.

📌 사용 사례
✅ REST API 또는 웹 애플리케이션 배포
✅ 머신러닝 모델 서빙
✅ CI/CD 배포 파이프라인

💡 예제: Cloud Run에 배포할 간단한 Flask 애플리케이션

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello Cloud Run!"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8080)

1.3 App Engine

📌 특징

  • 애플리케이션을 실행할 수 있는 PaaS(Platform as a Service).
  • 서버 설정 없이 코드만 배포하면 자동으로 확장됨.
  • 표준(Standard) 환경과 플렉스(Flexible) 환경 제공.

📌 사용 사례
✅ 웹 애플리케이션 및 API 서버 배포
✅ 모바일 백엔드 서비스
✅ 빠른 프로토타이핑

💡 예제: App Engine에서 실행할 간단한 Flask 앱

runtime: python39
entrypoint: gunicorn -b :$PORT main:app

1.4 Cloud Workflows

📌 특징

  • 여러 개의 GCP 서비스 및 API 호출을 자동으로 오케스트레이션.
  • YAML 기반으로 워크플로우 정의.

📌 사용 사례
✅ Cloud Run, Cloud Functions, Pub/Sub을 연계한 데이터 파이프라인 구축
✅ API 호출 자동화

💡 예제: Cloud Run 서비스 실행 후 응답을 받아오는 Workflow

main:
  steps:
    - call_cloud_run:
        call: http.get
        args:
          url: "https://your-cloud-run-url"

2️⃣ GCP 서버리스 서비스 비교

서비스사용 방식주요 트리거사용 사례
Cloud Functions이벤트 기반 함수 실행HTTP, Pub/Sub, Firestore 등데이터 처리, 웹훅 처리
Cloud Run컨테이너 기반 실행HTTP 요청REST API, ML 모델 배포
App EnginePaaS 기반 애플리케이션 실행HTTP 요청웹 애플리케이션 배포
Cloud Workflows서비스 오케스트레이션API 호출, Cloud Run 연계자동화, 워크플로우 실행

3️⃣ GCP 서버리스의 장점과 단점

✅ 장점

✔️ 자동 확장: 트래픽에 따라 자동으로 확장 및 축소됨.
✔️ 비용 최적화: 사용한 만큼만 비용을 지불(Pay-as-you-go).
✔️ 빠른 배포: 인프라 설정 없이 코드 배포만으로 서비스 운영 가능.

❌ 단점

⚠️ 콜드 스타트: 초기 실행 시 지연 시간이 발생할 수 있음(Cloud Functions, Cloud Run).
⚠️ 벤더 락인: GCP 환경에 종속될 가능성이 있음.
⚠️ 상대적으로 제한적인 제어권: VM이나 Kubernetes와 달리 세부적인 설정이 어려움.


4️⃣ 언제 어떤 서비스를 선택할까?

GCP의 서버리스 플랫폼은 개발자가 인프라 관리 부담 없이 빠르게 애플리케이션을 배포할 수 있도록 돕습니다.

  • 이벤트 기반 처리가 필요하면 → Cloud Functions
  • 컨테이너 기반 애플리케이션을 실행하려면 → Cloud Run
  • 웹 애플리케이션을 배포하려면 → App Engine
  • 여러 서비스 간 워크플로우를 구성하려면 → Cloud Workflows

각 서비스의 특성을 잘 활용하면 비용 절감개발 속도 향상을 동시에 달성할 수 있습니다.

profile
Software Engineer

0개의 댓글