https://indistract.tistory.com/28
[AWS] Other Compute
Docker Docker는 앱배포를 위한 소프트웨어 개발 플랫폼이다. Docker는 컨테이너에 앱을 패키징하는데, 컨테이너를 이용하면 앱을 모든 O/S에서 쉽게 실행할 수 있다는 장점이 있다. 도커를 이용하면
indistract.tistory.com
AWS Labmda
Lambda는 EC2 와 비교하며 이해할 수 있다. Lambda는 스케일링이 자동화 되어있는, 짧은 함수기반 on-demand 서비스라고 할 수 있다. 반면, EC2는 RAM과 CPU에 제한되어있고, 계속 실행되며, 그리고 직접 서버에 개입해야지만이 스케일링이 가능하다.
Lambda는 Event-Driven, 즉 필요할때만 반응하는 특징이 큰 장점이다. 더불어 가격 정책이 쉬우며, AWS의 많은 서비스와 통합되며, 여러 프로그래밍 언어와 통합되고, 모니터링이 쉬우며, 그리고 함수당 많은 자원 (함수당 10GB의 RAM)을 이용할수 있다는 장점이있다.
AWS Lambda Pricing
람다는 가격을 지불하는 두가지 방식, 1) Pay per calls 그리고 2) Pay per duration이있다.
1) Pay per calls
요청마다 지불하는 형태이다. 매달 백만건의 요청은 무료이며, 이후에는 백만건의 요청당 $0.20달러를 지불하면 된다. 다시말해, 요청당 $0.0000002 로 매우 저렴하다.
2) Pay per duration
컴퓨팅 시간만큼 지불하는 형태이다. 매달 400,000 GB-seconds 의 컴퓨팅 시간은 무료(함수가 1GB RAM을 사용할 때)이다. 만약 함수가 128MB RAM을 이용한다면, 3,200,000 GB-seconds가 매달 무료이다. 그 이후에는 600,000 GB-seconds당 $1.00를 지불한다.
이렇게 람다는 매우 저렴하게 가격책정이 되어있기 때문에, 서버리스 어플리케이션과 웹사이트를 실행할때 인기있는 서비스이다. 아래는 AWS에서 간단하게 시뮬레이션 해볼수 있는 창인데, 280만여건의 호출을 했음에도 $0.37 정도의 가격만 부과되는 것을 확인할 수 있다.
Amazon API Gateway
시험에서 API Gateway는 serverless HTTP API를 구축하는 사용 사례가 된다. 예시를 하나 들어보자.
우리는 Lambda를 이용해 DynamoDB로부터 데이터를 읽고, 만들고, 업데이트하고 삭제하는 것이 가능하다. 이때, 외부의 클라이언트가 람다 함수에 접근하게 하고싶다고 하자. 이때 API Gateway를 사용한다.
그러나, 람다함수는 API로 바로 노출되지는 않는다. 때문에, API Gateway를 이용해서 API를 노출시켜야 한다. 클라이언트는 API Gateway에 통신하고, API Gateway는 요청을 람다 함수에 proxy한다. API Gateway 또한 서버리스 기술이기때문에 스케일링이 가능하다.
AWS Batch
AWS Batch를 이용하면 어떤 규모에서든 Batch처리가 가능하다. Batch 서비스를 통해 수백, 수천 개의 컴퓨팅 배치 작업을 AWS에서 쉽고 효율적으로 처리할 수 있다.
'Batch'라는 말은 시작과 끝이 존재 (예를들어 오전 12시에 시작해서 오전 6시에 끝나는 작업) 한다는 의미이며, 스트리밍 작업과 반대되는 개념이다.
배치 작업은 특정시점에 일어나고, EC2 instances와 Spot Instances를 동적으로 실행해서 해당 배치작업을 실행하는 load를 받아들인다. AWS가 적절한 compute와 memory를 준비해주며, 사용자는 단지 스케줄된 batch jobs을 제출하면된다. 나머지는 AWS가 알아서 한다. AWS가 이런식으로 적절한 자원을 할당하므로, 비용 최적화가 이루어진다. 더불어, 인프라 관리에 대한 비용의 소모가 감소된다. Batch job은 Docker images로 정의되며 ECS에서 실행된다. 즉, ECS에서 실행될 수 있는 어떤 것이든 Batch에서 실행될 수 있다는 의미이다.
Batch vs. Lambda
Batch와 Lambda는 비슷해보이지만 다르다. 먼저 Lambda는 15분이라는 함수실행 시간 제한이 있다. 프로그래밍 언어의 종류 제한도 있으며 임시 디스크의 용량 제한도 존재한다. 그리고 작업을 실행하려면 Serverless 이어야한다.
반면, Batch는 EC2 instace에 의존하기 때문에 시간 제약이 없다. 그리고 Docker image로 패키징 하기만 하면 runtime을 원하는만큼 쓸수 있다. 또한, Storage는 EC2 instance storage에 의존한다 (EBS와 instance store을 사용할 수 있기때문에 디스크 용량이 Lambda보다 더 많다). 그리고 Batch는 Serverless는 아니다. 그러나 AWS가 관리하는 서비스이기 때문에 auto-scailing은 이루어진다.
'aws' 카테고리의 다른 글
[AWS] Other Compute (0) | 2023.01.02 |
---|---|
[AWS] Databases2 (0) | 2022.12.28 |
[AWS] Databases (0) | 2022.12.26 |
[AWS] S3 - Storage class (0) | 2022.12.26 |
[AWS] Snow Family (0) | 2022.12.26 |