프로젝트 더 설정할께 없는지 알아보다가 aws Lambda라는 것에 대해 알게되었습니다.
그래서 이번에는 Lambda에 대해서 알아보겠습니다.
AWS 람다는 서버리스 컴퓨팅 FaaS
상품입니다.
Serverless는 서버를 직접관리 할 필요가 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델을 말합니다.
aws는 서버에 하드웨어를 일일히 설치하는게 귀찮으니, 클라우드 형태로 이를 제공하는 서비스입니다.
serverless는 이제 소프트웨어적 부분을 제공하는 서비스입니다
콜드 스타트(Cold-Start) : 빠른 응답이 필요한 제품의 경우 서버리스로의 전환은 부적합할 수 있습니다. 함수를 호출하기위해 컨테이너가 실행되는 대기시간이 존재하기 떄문입니다.
무상태적 기능 구현 불가 : 함수들은 요청마다 새로 기동하도록 호출하기 떄문에 기동 전후의 상태를 공유할 수 없습니다. 또한 변수와 데이터의 공유가 불가능합니다.
벤터 종속의 문제 : 함수가 사용할 수 있는 최대 메모리, 최대 처리 가능 시간 제약등의 제약을 서버리스 서비스 벤더가 설정하며 서버리스 사용자 및 서버리스 기반의 서비스는 이에 종속됩니다.
Serverless모델
BaaS 시스템은 앱 개발에 있어서 필요한 기능들을 API로 제공해서 개발자들이 필요한 기능을 쉽고 빠르게 구현할 수 있게 도와줍니다.
서버의 이용자가 급격하게 늘어났다면 이전에는 개발자를 불러서 추가확충해야됬다면, 알아서 확충이 됩니다. 클라우드 공급자가 백엔드 개발 환경까지 제공해주는 것입니다
그럼으로서 서버 구축기간과 비용, 관리 및 유지보수 비용을 줄일 수 있는 것입니다.
FaaS는 프로젝트를 여러개의 함수로 쪼개서, 컴퓨팅 자원에 함수를 등록하고 이 함수들이 실행되는 횟수만큼 비용을 내는 방식을 말합니다.
대표적 서비스로 AWS Lambda, MS Azure Function을 말합니다.
IaaS는 시스템에 필요한 모든 인프라 자원까지(네트워크, 스토리지, 서버) 가상화한 방식입니다.
대표적으로 AWS ec2, S3, VPC등이 있습니다.
aws lambda 입장
- 새로 작성 : 처음부터 함수를 구현
- 블루 프린트 : AWS에서 제공하는 기능을 템플릿처럼 사용할 수 있습니다.
- 컨테이너 이미지 : docker 컨테이너용
- 서버리스 앱 리포지토리 찾아보기 : 공유되는 서비스 아키텍쳐를 내 환경에 가져다 사용할 수 있습니다.
- 런타임 : 람다를 어느 프로그래밍언어로 작성할지에 대한 옵션입니다.
노드, 파이썬등 런타임 언어를 재공합니다,
권한
람다에 어떤 권한을 부여할지 대한 옵션입니다. S3에 접근해서 파일을 가져오고 싶다면, s3에 접근할 수 있는 권한을 가지고 있어야합니다. 이는 IAM에서 역할을 부여해서 사용할 수 있습니다.
함수 생성
exports.handler 디폴트 함수를 볼 수 있습니다. 람다를 실행했을 떄 exports.handler가 실행됩니다.
https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-%EC%84%9C%EB%B2%84%EB%A6%AC%EC%8A%A4ServerLess-%EA%B0%9C%EB%85%90-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC-BaaS-FaaS
https://tkdev.tistory.com/57
https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-%EB%9E%8C%EB%8B%A4Lambda-%EC%8B%A4%EC%A0%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0
https://ukayzm.github.io/aws-lambda/