Serverless

박상훈·2023년 2월 3일
0

서버리스

FaaS(Function as a Service)
서버는 있지만 관리할 서버가 없음을 뜻함
코드 또는 함수를 배치하여

  • Lambda
  • DynamoDB
  • Congnito
  • API Gateway
  • S3
  • SNS & SQS
  • Kinesis Data Firehose
  • Aurora Serverless
  • Step Functions
  • Fargate

Lambda

직접 서버를 실행하지 않기에 관리할 서버가 없고 프로비저닝한 함수만 실행
제한 시간이 있고 실행 시간이 짧음
on-demand 실행
오토 스케일링으로 프로비저닝하여 함수를 자동으로 늘리고 줄여줌
AWS 다양한 서비스 통합, 함수에 다양한 프로그래밍 언어 지원
함수당 최대 Maximum 10GB 램 프로비저닝 가능

비용

Lambda 실행 횟수, Lambda 실행 시간
프리티어에서 1,000,000 개의 요청, 400,000 GBs 컴퓨팅 시간 제공
1,000,000 건 요청마다 20센트 과금 (건 당 $0.0000002)
1ms 단위로 요금 부과로 600,000 GBs 당 $1

Lambda Container Image

런타임 API 를 구현한 이미지만 람다에서 실행 가능
모든 컨테이너 이미지가 Lambda 에서 실행 가능하지 않음
그러므로 런타임 API 를 구현하지 않은 이미지에 대해서 실행이 필요한 경우
ECS, Fargate 에서 컨테이너를 실행해야 함

서버리스를 이용한 썸네일 생성

1.사용자가 S3 에 썸네일을 생성하기 위해 이미지 객체를 업로드
2.trigger 를 통해 람다 함수가 실행
3.람다에서 이미지 객체를 호출하여 특정 사이즈로 줄이고 이미지의 정보를 생성
4.특정 사이즈의 이미지를 S3, 이미지 정보를 DynamoDB 에 저장

서버리스를 이용한 CRON Job

1.예시로 JAVA + Spring 을 이용한 스케쥴러 애플리케이션이 있다고 가정
2.스케쥴링에 적용한 작업 코드를 Lambda Function 에 설정
3.CloudWatch Events EventBridge 를 이용하여 특정 시간마다 트리거를 적용
4.람다는 CloudWatch 알람으로 함수를 실행
5.스케쥴링 서버를 이용하여 나오는 비용을 람다를 사용하여 대폭 줄일 수 있음

Limits

람다의 한도는 리전마다 구분됨

  • Excution
    • 메모리 128 MB - 10 GB
    • 실행 시간 최대 15분(900초)
    • 환경 변수 4KB
    • 함수 컨테이너의 디스크 용량은 (/tmp 폴더) 512 MB - 10 GB
    • 동시 실행은 1000개 까지
  • Deployment
    • 람다 함수 배포 최대 사이즈 50MB(compressd: .zip)
    • compressd 하지 않은 파일 최대 사이즈 250MB
    • 위 사이즈가 넘는 경우 /tmp 폴더를 이용
    • 환경 변수 4KB

Lambda 엣지, CloudFront Funtions

CloudFront 에서 지원하는 두 종류의 함수

애플리케이션에서 다른 애플리케이션에 접근하기 전에 엣지에서 로직 실행을 요구
이를 엣지 함수라 부르며 CloudFront 배포에 코드 연결함을 의미함
엣지 함수 사용시 서버 관리가 필요 없고 전역으로 배포됨
사용한 만큼의 비용 지불, 서버리스

Use Cases

웹 보안 및 프라이버시
엣지에서 동적 웹 애플리케이션에 사용
SEO(검색 엔진 최적화)
오리진 및 데이터 센터 간 지능형 경로
봇 완화
실시간 이미지 변환
... 많음

profile
엔지니어

0개의 댓글