AWS Lambda
이는 기존의 실습보다 보다 쉬울 수 있습니다. 왜냐하면 Lambda자체가 MSA보다 실무에서 사용하기에 이점보다 던점이 더 많기 때문입니다. AWS Lambda는 어떤 일이 있어났을 때 트리거되는 함수(코드)라고 이전에도 말했습니다. 그리고 이는 API Gateway, S3,dDynamoDB, RDS로 인해서 Lambda가 트리거 되었다고 해 봅시다. 맨 처음에 함수가 실행되면 Lambda에서 컨테이너 라는 것을 만듭니다. 그냥 EC2라고 보시면 됩니다. EC2안에서 함수 실행에 필요한 환경 설정들을 다 해주고 ( 예를들어 numpy같은 것을 설치 ) 이런 작업들을 할 때, 대부분 0.8초 걸립니다. 이를 평균적으로 0.8초라는 딜레이가 나오게 됩니다.
또한 만약 함수가 호출되면 Lambda 컨테이너가 바로 삭제되는 것이 아닙니다. 이는 10분동안은 기다립니다. 10분 내에 다시 이 함수가 호출된다면 다시 활용하고, 10분뒤에는 바로 꺼집니다. 10분동안 유지되는 동안은 cold start가 진행되지 않으므로, 0.8초가 소요되지 않습니다.
Lambda에서는 이를 해결하기 위해, 컨테이너를 미리 준비해 두는 방법을 생각해 냈습니다. 하지만 이는 컨테이너를 이미 만들어 논것 이므로 서버를 만들어 논 것이라고 할 수 있습니다. 이는 서버를 그냥 켜놓고 항시 대기하는 것과 똑같은것이 됩니다. 이는 AWS Lambda의 정의와 어긋나게 되는 것입니다.
두번쨰 방법으로는 제가 위에서 10분안에 함수가 call되지 않으면 컨테이너가 꺼진다고 했었습니다. 따라서 이를 막기 위해 5분마다 함수를 call해서 컨테이너가 꺼지지 않게 막아두는 방법입니다. 하지만 이것도 특정 컨테이너를 대기 시키는 것과 별반 다를 바 없게 됩니다.
또한 람다의 컨테이너의 수에는 제한이 있습니다. 그래서 트래픽의 처리에 있어서 문제가 발생할 수 있습니다. 따라서 큰 서버의 각 기능을 함수로 구현하게 되면, 이를 초과할 수 있게 되는데, 이러면 매우 큰 문제가 될 수도 있습니다.
'DevOps > AWS Architecture' 카테고리의 다른 글
[ DevOps ] - (API 게이트웨이) API게이트웨이의 구성 요소들 (0) | 2022.07.18 |
---|---|
[ DevOps ] - (API 게이트웨이) API 게이트웨이란 (0) | 2022.07.18 |
[ DevOps ] - (개요) 서버리스 아키텍트 소개 (0) | 2022.07.18 |
[ DevOps ] - codepipeline 구성하기 (deploy + build) (0) | 2022.07.17 |
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) AWS Code Pipeline을 활용한 CD 파이프라인 구축 (0) | 2022.07.12 |