[Daily morning study] Serverless 아키텍처와 AWS Lambda (또는 Google Cloud Functions)

#daily morning study

Image


Serverless 아키텍처와 AWS Lambda / Google Cloud Functions

서버리스 아키텍처는 클라우드 서비스 제공업체가 서버 관리의 대부분을 처리하여 개발자가 비즈니스 로직에 더 집중할 수 있게 해주는 방식을 의미한다. 여기서는 AWS Lambda와 Google Cloud Functions를 중심으로 서버리스 아키텍처의 개념과 이점, 사용 시나리오에 대해 알아볼 것이다.

1. 서버리스 아키텍처란?

서버리스 아키텍처는 사용자가 서버를 직접 프로비저닝 및 관리하지 않도록 해준다. 대신, 클라우드 서비스 제공업체가 인프라를 관리한다. 개발자는 애플리케이션 코드와 비즈니스 로직에만 중점을 두면 된다.

장점:

  • 자동 확장: 수요에 따라 자동으로 리소스를 할당해준다.
  • 비용 효율성: 사용한 만큼 비용을 지불하고, 서버 유지 관리 비용을 절감할 수 있다.
  • 빠른 개발: 복잡한 인프라 설정이 필요 없기 때문에 빠른 배포가 가능하다.

2. AWS Lambda

AWS Lambda는 아마존 웹 서비스에서 제공하는 서버리스 컴퓨팅 플랫폼이다. 코드를 업로드하면 Lambda가 자동으로 실행되고, 필요할 때만 비용을 지불하면 된다.

주요 특징:

  • 이벤트 기반: S3, DynamoDB, API Gateway와 같은 다양한 AWS 서비스에서 이벤트를 통해 트리거된다.
  • 언어 지원: Java, Python, Node.js, C# 등 여러 언어를 지원한다.
  • 컨테이너 지원: Docker 컨테이너를 이용한 배포도 지원된다.

코드 예제 (AWS Lambda)

import json

def lambda_handler(event, context):
    # 이벤트에서 값 가져오기
    name = event.get("name", "World")
    return {
        'statusCode': 200,
        'body': json.dumps(f"Hello, {name}!")
    }

3. Google Cloud Functions

Google Cloud Functions는 구글 클라우드에서 제공하는 서버리스 환경이다. 간단한 코드 스니펫으로 다양한 클라우드 기반 서비스를 구축할 수 있다.

주요 특징:

  • 자동 확장: 필요에 따라 자동으로 인스턴스가 생성되고 제거된다.
  • RESTful API: HTTP 요청에 응답하는 웹 후크를 쉽게 만들 수 있다.
  • 다양한 언어 지원: Node.js, Python, Go, Java 등 다양한 언어를 지원한다.

코드 예제 (Google Cloud Functions)

def hello_world(request):
    request_json = request.get_json()
    name = request_json.get("name", "World")
    
    return f"Hello, {name}!"

4. 사용 시나리오

서버리스 아키텍처는 여러 상황에서 유용하게 사용될 수 있다.

웹 애플리케이션

API 백엔드를 서버리스로 구현하여 요청마다 필요한 리소스만 사용하게 할 수 있다.

데이터 처리

파일 업로드 시 Lambda 또는 Cloud Functions를 사용하여 데이터를 처리하고 변환할 수 있다.

IoT 솔루션

IoT 기기의 데이터를 수집하고 분석하기 위해 이벤트 처리기로서 서버리스를 활용할 수 있다.

5. 한계와 고려사항

서버리스 아키텍처는 분명 많은 이점을 갖고 있지만, 몇 가지 한계도 존재한다.

  • 콜드 스타트: 처음 호출 시 지연이 발생할 수 있다.
  • 제한된 실행 시간: Lambda는 최대 15분, Cloud Functions는 9분으로 실행 시간이 제한된다.
  • 복잡한 배포 관리: 여러 개의 함수와 서비스를 관리하게 되어 복잡해질 수 있다.

6. 결론

서버리스 아키텍처는 현대 웹 애플리케이션 개발에 있어 강력한 옵션이 될 수 있다. AWS Lambda와 Google Cloud Functions 모두 쉽게 사용 가능한 플랫폼이므로, 각자의 필요에 맞게 선택하여 활용할 수 있다. 필요한 로직을 작성하고 클라우드에 배포하는 과정에서 인프라 관리를 단순화하고, 비즈니스 로직에 더욱 집중할 수 있는 환경을 제공한다.