Lambda - Serverless
stateless 코드 실행을 위한 서비스
Last updated
stateless 코드 실행을 위한 서비스
Last updated
사실 실제 서버가 없을수는 없음
어디에서든 물리머신이 있고 그 위에 버츄얼머신이 있고 그 위에 컨테이너로 서버리스를제공하는게 실체
사용자 입장에서 "호스트레벨 신경쓰지 않고 필요한 로직과 코드만 가지고 배포해서 컴퓨팅 파워 필요한만큼 가져다써" 를 강조하기 위해 서버리스라는 표현을 함
대신 코드는 굉장히 가볍게 사용하길 권고함
서버리스는 지속적인 로직을 처리하기 위한 컴퓨팅파워가 아닌 단일 미션을 들고 빠르게 처리하기 위한 옵션
그래서 서비스를 펑션 서비스라고도 한다.
하나의 기능을 수행하기 위해서 Lambda를 보통 씀
이벤트 처리 방식의 컴퓨팅 서비스
웹 서비스에서 주로 백엔드의 특정 작업을 자동으로 처리하는 서버리스 함수로 활용
S3: 파일 업로드 시 이미지 리사이징, 데이터 변환
클라이언트 요청에 따라 데이터베이스 쿼리, 비즈니스 로직 처리
요청이 들어오면 필요한 작업만 수행하고 쉬는(죽는) 이벤트 함수
다양한 언어 지원
이벤트로 인해서 인보크가 된다?
이벤트가 람다를 인보크하면 람다내에 정의된 핸들러가 받아서 처리함
ex: 모니터링 시스템, 특정 이벤트를 받아 처리하고 어딘가에 저장한다는지,
이벤트가 람다를 인보크하면 새로운 람다가 수행되고 죽음 (반복)
그래서 람다는 stateless하게 사용됨
람다 내에 사용되는 저장소는 휘발성(임시) 메모리
결과물을 저장한다는 필요성이 있다면 외부 영구 저장소에 연결해서 관리해야함
람다의 비용은 메모리 리소스와 실행 시간 기준으로 과금됨
람다는 오래돌면 돌수록 EC2와 같은 일반 온디멘트 버츄얼 머신 서비스보다 훨씬 가파르게 비용이 증가함
오래 실행되고 세션이 유지되어야하는 워크로드는 람다는 맞지 않음
각 서비스가 가진 성격에 따라 호출방식을 지원함
람다함수를 실행하고, 람다가 완료될 때 까지 응답을 기다림
람다는 이벤트를 대기열 큐에 넣어 배치하고, 기다리지 않고 즉시 성공을 반환함
이메일/SMS 전송, 데이터 처리 작업, 알림 발송 등 결과가 즉시 필요하지 않은 비동기 워크로드에 적합
서버리스는 최대한 디커플링하고 이벤트 드리븐 아키텍처를 구현하기 위해 비동기식 방식의 코드를 지향함
엄밀히 말하자면 동기방식이지만, AWS 큐기반 서비스와 통합될 수 있도록 설계됨
스트림 기반으로 동작하는 애들을 편하게 처리할수 있도록 구성됨