Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- python
- 금융소득
- Kubernetes
- 임업후계자
- 산지연금
- S3
- 공매
- lambda
- 정책자금
- Resolver
- 리소스
- serverless
- command
- 성능개선
- boto3
- kubectl
- AWS
- 신탁공매
- pod
- Filter
- node
- 세금계산서
- OpenSearch
- 인덱싱
- 매입불공제
- 농지연금
- 외국납부세액공제
- 양도소득세
- 경매
- route53
Archives
- Today
- Total
진지한 개발자
Lambda 본문
728x90
AWS Lambda
- 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스
- Go, Java, JavaScript, Python, Ruby 등 다수의 언어로 람다함수 만들수 있음
Serverless
- 람다는 서버리스 컴퓨팅 서비스
- 서버리스는 개발자가 서버를 관리하지 않을 뿐 결국 클라우드 서비스가 처리하는 서버를 관리함
- 서버리스 컴퓨팅 기술은 클라우드가 어떤 방식으로 관리를 하는지를 기준으로 BaaS와 FaaS로 나눌 수 있음
1. BaaS (Backend as a Service)
- 보통의 서버 개발을 할때 서버뿐만이 아니라 데이터 저장을 위한 데이터베이스, 유저인증기술, 이미지를 저장할 공간 등도 함께 구성해야 함
- BaaS는 위처럼 서버 개발에 필요한 데이터베이스, SNS로그인 연동, 객체 저장소 등을 자체 API로 제공을 해주는 서비스임. 대표적으로 Firebase와 같은 서비스가 있음
- Lambda 는 FaaS 서버리스 기술 임
주요 사용사례
- S3 + Lambda : AWS S3의 특정이벤트(이미지 업로드 등)에 대응
- CloudWatch + Lambda : AWS CloudWatch에 로그이벤트(특정 패턴 등록 가능) 에 대응
- API Gateway + Lambda : API Gateway로 들어오는 HTTP 요청을 람다 함수를 사용해 응답처리
- SQS + Lambda : AWS SQS 등으로 들어온 이벤트를 확인 후 비동기로 람다 함수를 이용해 작업처리
장점
- 실행횟수에 비례하여 비용을 청구 (100만번 실행당 0.2$)
- 자동 스케일업, 높은 가용성 : 요청이 들어올 때 동적으로 자원을 할당하고 스케일링을 지원함
- 빠른 제품 출시 : 서버관리에 신경 쓸 필요없이 코드에만 집중할 수 있음 (서버 트래픽, 사양, 프로비저닝, 스케일링 고려할 필요 없음)
단점
- cold start (Lambda가 깰때 걸리는 시간)
- 람다는 처음 호출한다면 Cold Start를 하게 됨. 이 경우 초기 지연시간이 발생하고 이후 Warm 상태를 유지하며 이때의 경우는 람다를 다시 호출해도 지연시간이 발생하지 않고 빠르게 응답하게 됨. 그러다 약 5분여 이상 호출이 되지 않는다면 Cold상태로 바뀌어 사용자는 다시 지연시간을 경험하게 됨
- CloudWatch 를 통해 Lambda를 5분마다 한번씩 지속적으로 호출하거나 Route53에서 Health Check를 람다함수 API Gateway Endpoint 로 설정해 둘수도 있음
- 5분마다 함수 실행시 프리티어를 고려하지 않고 메모리 1024로 람다가 약 10초간 실행되는 함수를 10개 warm 상태 유지시 대략적인 비용은
- 함수호출비용 = $ 0.18
- 함수에 사용한 컴퓨팅 비용 = $ 14.4
- 실행시간 제한
- AWS Lambda 함수의 실행시간은 최대 900초 (15분) 로 제한
- 최대시간을 초과하면 예외가 발생하기 때문에 함수를 분할하여 작성하고 메모리의 사용량도 효율적으로 관리해야 함
- 제한된 환경변수 크기
- AWS Lambda는 환경 변수를 사용하여 함수에 설정 정보를 제공하는데 이러한 변수에 저장할수 있는 데이터의 크기는 제한적 (환경변수의 크기 : 4 KB로 제한)
- 메모리 제한
- 실행 중 사용할 수 있는 메모리 양에 대한 제한이 있음 (기본 128 MB ~ 최대 3008 MB)
- 함수에 많은 메모리를 할당하는 함수의 연산은 더 빠르게 실행 될 수 있음
- 제한적인 로깅 및 디버깅 기능
- 디버깅 및 문제해결을 위해 일부 로깅 및 모니터링 기능을 제공. 기능은 좀 제한적
- 지역성 제한
- Lambda 함수에서 사용 가능한 리소스 유형이 지역에 따라 다를 수 있음
Lambda의 효율을 위한 확장 기능
Lambda Layer
- 코드 재사용이 어려웠으나, 공통부분을 레이어로 만들고 람다 함수들이 이를 공유해서 사용할 수 있음
- 이는 같은 계정 뿐만 아니라 다른 계정들 사이에서도 서로 공유가 가능
provisioned Concurrency
- Lambda의 cold start 문제점을 해소하기 위한 기술
- 함수를 지속적으로 초기화하고 아주 빠르게 준비하여 두 자리 수 밀리초로 응답하는 기능. 이 기능은 웹 및 모바일 백엔드, 지연 시간에 민감한 마이크로서비스 또는 동기식 API와 같은 대화형 서비스를 구현하기에 적합
step function
- 람다 함수들을 조합해서 하나의 워크플로우를 구성할 수 있는 기술
- SNS, SQS, 다이나모 DB 등 여러 서비스와 통합해서 사용할 수 있음
RDS 프록시
- RDS 데이터베이스 사이에서 커넥션을 관리해 줌
- 서버의 경우 커넥션의 수를 자체적으로 관리하지만 람다의 경우는 그렇지 않음
- 이를 위해 RDS와 람다 사이에 RDS 프로시를 두고 RDS 프록시로 커넥션을 관리함
Serverless Framework
- 람다 설정, 배포 등의 작업을 할때 일일이 AWS 콘솔로 업로드하기에는 힘듬
- 코드로 명시하고 명령어로 작업할 수 있도록 도와주는 IaC(Infrastructure as Code) 도구
람다 엣지
- 람다 엣지는 AWS CloudFront에서 제공해주는 기능
- CloudFront는 파일을 전송해주는 캐시 서버
728x90
'IT > AWS' 카테고리의 다른 글
NLB load balancing (0) | 2024.02.17 |
---|---|
AWS VPN (0) | 2024.02.17 |
Lambda (1) | 2024.02.08 |
ElastiCache Redis (1) | 2024.01.24 |
Route53 (1) | 2024.01.24 |