Lambda as Web Server

·2022년 6월 1일
0
post-thumbnail

Lambda 개요

서버리스 컴퓨팅 서비스

  • Lambda는 AWS의 서버리스 함수 실행 서비스이다.
    • Azure는 Functions, GCP의 Google Cloud Functions와 유사
  • 사용자가 서버를 프로비저닝하거나 관리할 필요가 없음
  • 코드를 업로드하면 바로 실행할 수 있는 Runtime 환경을 제공
  • 파일 처리, 스트림 처리, 간단한 모바일 백엔드, IOT 백엔드 서비스 구성에 유용

Pay as you go

  • 기존 VM, Container 형태의 컴퓨팅 서비스는 항상 가동시간을 기준으로 1초 단위로 요금을 계산
  • Runtime이 제공되는 Lambda는 ms 단위로 함수 실행 시간을 요금으로 계산
  • 웹 서비스의 경우, 대부분의 트래픽 및 컴퓨팅은 클라이언트가 서버에게 정보를 요청할 때
    • VM, Container와 달리 runtime 환경은 클라이언트에게 동적 파일을 서빙하는 경우에만 작동하도록 할 수 있고, Idle 상태를 피할 수 있음.
  • Idle 상태를 최소한으로 유지한 채 ms 단위의 과금체계를 가질 수 있으므로 더욱 유연한 billing이 가능

스타트업에 유리

  • 서버 인프라를 관리할 인력이 따로 없음
  • 서비스 출시/변경이 빠르게 반영되어야 함
  • 트래픽이 적고 예측이 불가능해 유연한 billing 시스템이 필요함

Lambda를 Web Server로

만약 LambdaWeb Server를 구현하고 안정적인 서비스를 운영하고자 한다면 고려해야할 점이 한 두가지가 아님.

  • 기존의 웹서버 구조는 웹서버(Apache, Nginx) - WAS(Apach Tomcat + Web Framework) - DB와 같은 형태로 구성
  • Lambda를 쓰기로 한 이상, 웹서버가 제공해주었던 기능을 코드나 다른 서비스를 이용해 구현해야 함.

Web Server구성을 위해 고려해야할 점

  • 클라이언트와 Lambda와의 연결 방법
  • 로드밸런싱의 구현
  • 정적 파일의 서빙
  • SSL 인증
  • 해커들의 공격에 대한 방어
  • BI툴 연결
  • 스토리지와 RDB 연결
  • Cron Job의 구현

Web Server 구성을 위해 필요한 서비스

기능대체 방법
API 호출AWS API Gateway 이용
정적파일 서빙CDN 서비스
- AWS CloudFront와 API Gateway를 연결
- CDN 서비스를 이용해서 프레임워크에서 정적파일을 서빙하도록 구조를 변경 (e.g. whitenoise)
DDoS 방어AWS Web Application Firewall
AWS CloudFront
로드밸런싱AWS CloudFront + API Gateway
인터넷 연결Internet Gateway
리소스 연결Endpoint Gateway(for S3, DynamoDB)
Cron JobAWS EventBridge
고정 IPNAT Gateway + Elstic IP
SSL 인증CloudFront나 API Gateway에 SSL 인증서 설치

구조

  • 여기에 cron job을 위한 EventBridge 와 다른 서비스와 결합을 위한 SNS , SQS 까지 추가하면 서비스를 위한 구조
  • 테스트 서버의 경우, Route53CloudFront 는 꼭 필요하지는 않음

Lambda의 Network 세팅

Lambda의 위치

  • Lambda 관리용 VPC
  • 개인 VPC
    • public subnet
    • private subnet

Lambda outbound 고정 IP 할당

  • 사용 이유
    • inbound traffic에 대해 ip 인증을 요구하는 리소스에 연결
  • NAT Gateway를 연결하고 EIP를 부여

Lambda에서 다른 리소스를 연결

  • VPC endpoints
    • 권장하는 방법
    • 외부망을 타지 않고 곧장 AWS 내부망을 이용하므로 더 빠르고 비용도 절약
  • Internet Gateway
    • 연결하는 리소스의 보안 규칙 요구사항에 따라 (IP로 인증을 하는 경우) 고정 IP를 요구할 수도 있음.
profile
Ben

0개의 댓글