서비스를 준비중인 상황에서, 가능한 서비스 기반을 검토해보았다. (Fargate, ECS Anywhere까지 몽땅 테스트는 해봤다. 🤗)
(기본적인 EC2, Lambda는 나중에 좀더 구체적으로 정리할 일이 있을 것 같다. )
ECS는 기본비용이 없다. 사용한 Resource에 대한 비용만 내면 된다.
사용가능한 Resource는 EC2 Instance, Fargate, External(외부 머신)
External은 ECS Anywhere라고 AWS 외부에 생성되어있는 서버들에 Agent를 설치해서 ECS 서비스를 배포할때 해당 위치들로 배포할 수 있게 해준다. 아직 ELB와 같이 연계된 서비스들은 지원하지 않는다. (지금은 걍 도커 명령 대신 날려주는 수준이다. 🤨)
Fargate는 얼핏 비교하면 Lambda와 비슷할 수 는 있지만, 궁극적인 목표가 다르다.
Lambda는 최대 15분의 Runtime을 제공하며 Code나 Image 사이즈 제한이 엄격한 편인데,
Fargate는 그런 제한은 없고 조금 더 비싸다. 어떻게 보면 그냥 EC2인스턴스를 코어 단위로 빌려쓰는 느낌이다.
(Provisioning하는 시간도 EC2랑 비슷비슷한 느낌.. 🤔)
다음과 같은 상황을 가정해보자.
단순 4vCPU 8GB RAM 정도의 스펙으로 약 30초간 작업이 진행된다고 해보자.
Lambda는 1GB/1ms가격기준에, 메모리 할당에 따라 코어가 할당되기 때문에 4코어 할당을 위해서는 5308~7076MB의 메모리로 할당해야하니, 6GB(6144MB)로 할당해서 실행했다고 가정하면,
0.0000167(1GB/1S) * 6GB * 30초 = 0.003006 (8기가로 맞추면 5코어가 할당된다. 가격은 0.004008)
Fargate는 4코어 할당을 위해서는 최소 8기가의 메모리를 사용해야하므로,
1시간당 0.04656(코어)*4 + 0.00511(메모리)*8 = 0.22712 / 0.06959788(Fargate Spot인 경우) 이 되고,
EC2 기준으로는 4코어, 16기가를 지원하는 인스턴스는 t3.xlarge정도의 크기이므로, 시간당 on-demand 0.208 / spot 0.0624 정도이다. (t3 unlimit credit은 잠시 논외로, 금액계산에서 제외)
위와 같은 금액기준만 고려하면, 24시간 꾸준히 시간당 30건 이상의 호출이 있는 경우에만 Fargate/Ec2 Spot이 유리하고, 그외의 경우는 Lambda가 유리하다.
'개발' 카테고리의 다른 글
| Cloudfront Serving. 그런데, CORS? (0) | 2021.08.29 |
|---|---|
| AWS에서 Serverless 배포 생각정리 (0) | 2021.07.25 |
| ECS with ALB (0) | 2021.07.15 |
| Gitlab CI/CD 사용하기 (0) | 2021.07.05 |
| AWS CDK - API Gateway, Lambda (1) (0) | 2021.06.06 |