• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

ECS Launch Type 고민 : EC2 vs Fargate

24.02.25 00:33 작성 조회수 521

1

안녕하세요, 강사님,

ECS 의 [배포 속도]와 [가격],

이 2가지 측면에서 어느 Launch Type 이 적절할지 고민하고 있습니다.

  1. 속도 측면 : EC2 Launch Type 으로 하고, 노드공간을 여유 있게 운영하면, Task 의 배포 및 업데이트 속도가 몇 초안에 완료될 정도로 빠른 것으로 알고 있습니다. 반면, Fargate 의 배포 및 업데이트 속도는 3분 이상.

  2. 비용 측면 : vCPU 당, Fargate 가 EC2 보다 약 3배 정도가 비싼 것으로 알고 있습니다.

전략 :

  • EC2 Launch Type 으로 결정

  • 평시의 노드 사용률(vCPU 기준)을 전체 노드 vCPU 의 50% 정도로 운영 ( auto scale 규모 2배 이하 전제)

위 전략으로 하면, 비용은 평시 운영 vCPU 양의 2배가 부과됩니다. ( 평시 운영중인 vCPU 50% 와 놀고 있는 vCPU 50%비용 )

반면, Fargate 사용시 비용은 3배가 부과됩니다. (vCPU 당 3배 비싸기 때문)

3배 요금(Fargate)보다는 2배 요금(EC2)이 더 저렴합니다.

그러므로, EC2 Launch Type 이 속도와 가격 모든 면에서 유리하다. (Node 의 Auto Scale 없다는 전제)

라는 저의 전략이 맞는지, 현업에는 적용할 수 없는 전략인지 강사님께서 조언을 주시면 감사하겠습니다.

답변 2

·

답변을 작성해보세요.

2

정말 감사합니다. 강의 내용도 좋았지만, 현업에서의 노하우를 말씀하여 주시는 이번 답변과 같은 내용들이 아주 큰 도움이 됩니다. 특히 백엔드 비용보다 DB 비용이 10배 넘게 나온다는 말씀이 백엔드 비용 조금 아끼는 것은 중요하지 않구나 라는 깨달음을 주시네요. 그리고 서버 비용이 백만원 넘어가면 회사에 돈이 넘치게 된다 라는 말씀에 희망으로 가슴이 벅차오릅니다.

방향성을 잡게 해주셔서 매우매우 감사합니다.

1

그렇게 하는게 더 좋을 수도 있습니다. 하지만 전에 답변드렸듯이 3초 vs 3분은 배포 과정에서 큰 의미가 없습니다. 수십분이 걸리는게 아닌 이상 성공적으로 CICD 파이프라인이 정상적으로만 가동되면 됩니다.

그리고 task 배포가 3분까지 걸리지 않을거에요.
npm install, test, docker build, docker push 이 가정들이 보통 더 걸릴거에요.

그리고 가격면에서 그런 차이가 있지만 그것도 단순 1:1 비교는 어려워요. 저도 구체적으로 측정을 해보지는 않아서 확실하게 말 할 수는 없지만 EC2 1vCPU 가 Fargate 1vCPU보다 성능이 떨어질 수도 있습니다. 제가 알기로 fargate에서 할당된 CPU, memory는 task가 온전하게 사용되는 리소스이고 EC2는 운영체제, ECS 데몬 등 기본으로 돌아가는걸 고려하면 실제 사용되는 리소스는 약간 줄어 들 수 있어요. 체감상 Fargate의 0.5vCPU가 Lightsail 1vCPU보다 더 성능이 좋았던적이 있었어요. (구체적인 벤치마킹은 해보거나 찾아보셔야 할듯 합니다.)

 

그리고 비율로 보면 가격 차이가 커 보일 수 있는데 절대적으로 보면 유의미한 차이가 아닐 수도 있어요! 일반적인 백엔드를 배포하시는거라면 서버 비용이 그냥 절대적으로 낮게 나올거거든요. 15만원 낼거 10만원 낼 수는 있어요. 하지만 보통 데이터베이스 비용이 훨씬 많이 나오거든요 (보통 10배 이상). 그래서 백엔드 비용 최적화가 큰 의미가 없을 수도 있어요. 다만 spike가 발생했을 때 autoscale로 대응할 수 있느냐는 중요하겠죠. 비용을 떠나서 서버거 죽으면 안되니깐요.

저는 개인적으로 ECS 비용이 백만원 단위를 넘어가지 않는다면 EC2 launch type은 고려하지 않을듯 해요. 그리고 백엔드 서버만으로 ECS 비용이 백만원 넘어가면 이미 회사는 돈이 넘쳐날겁니다 ㅎㅎ 서버는 그냥 최대한 신경 안써도 되는게 좋아요. 그런면에서 조금이라도 변수를 줄이기 약간의 비용이 추가되더라도 serverless를 쓰는게 좋다고 생각합니다.

즉, 상황에 따라서 선택하시면 됩니다! 서버 리소스를 많이 사용하는 서비스일 수도 있으니깐요