AWS Lambda 알아보기
AWS Lambda란
{: width=”100” height=”100”}
AWS에 Lambda
를 검색해서 들어가면 이벤트에 대한 응답으로 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스
컴퓨팅 서비스입니다. 라고 나와있네요.
상당히 딱딱한 문장 구성이라 이 문장만으로는 이해가 잘 안됩니다.
우선 서버리스라는 말이 나오는데, 이에 대해 알아볼 필요가 있습니다.
서버리스(Serverless)
, 말 그대로 서버가 없다는 얘기입니다.
일반적으로 우리가 서비스를 만든다고 하면 서버가 필요하잖아요? 클라이언트에서 필요한 데이터 접근이나 기능적 처리를 해주는 백엔드의 서버가 필요하고, php
, django
, spring
등 많은 프레임워크로 이를 코딩해왔습니다.
Lambda
는 FaaS
(Function as a Service)입니다. 서버 없이 함수만 등록해서 해당 함수를 호출하는 방식으로 굴러 간다고 이해하면 될거 같습니다.
예시를 들어보면, 게시판에 사진을 유저가 업로드 한다고 생각해볼게요.
운영자는 이 사진을 원본과 썸네일 버전 둘 다 저장을 해야겠죠.
대체로 이런 경우 서버에서 사진을 S3
(AWS 저장소 서비스)에 업로드 하고, 사진을 썸네일로 만들어서, 다시 S3에 저장을 합니다.
근데 사진을 올리는 기능이 여러 파트에 포함되어있다면(자유게시판, 공지게시판, 프로필 수정 등) 그 파트 구현하는 부분에 매번 썸네일 만드는 기능이 포함되어야겠죠.
이럴 때 Lambda
는 어떤 식으로 해결해주냐면, 사진이 저장되는 S3
를 Lambda
가 계속 모니터링하도록 설정합니다.
어떻게든 S3
에 사진이 저장이 되면(어느 경로든) Lambda
는 이를 감지하고 미리 지정된 코드(함수)를 수행합니다. 이 경우에서는 썸네일을 만들어서 S3에 저장하는 기능이겠죠.
이러한 시스템을 직접 구현할 필요 없이, Lambda
가 해당 작업만을 전담해서 처리해주게 됩니다.
AWS 서비스인만큼 이용한만큼만 요금을 지불합니다.
API Gateway란
{: width=”100” height=”100”}API Gateway
는 라우터 정도로 이해하고 있습니다.
/user라는 API 요청이 왔을 때 이를 어디로 보낼지 제어하고, 요청을 바꿔서 연결할 수도 있는 등 다양한 활용법이 있는 AWS 서비스라고 합니다.
뜬금없이 API Gateway
가 나온 이유는 Lambda
랑 함께 활용하면 서버 구현 없이 Restful API
를 만들 수 있기 때문입니다!
자세한 방법은 저보단 이 글을 참고하시는게 나을거 같습니다.
간단하게 아키텍처만 첨부하자면 이런 느낌인거 같아요.
어떻게든 이해해보자면, API Gateway
에 전달된 API 요청들은 Gateway에서 라우팅되어 각각의 기능들이 매칭되어있는 Lambda
로 전달되고, Lambda
는 지정된 기능을 수행하여 그 결과를 반환하게 될겁니다.
정리하며
서버를 직접 구현하는게 때때로 어렵고, 복잡하며 신경써야할게 많습니다.
그런 대체 방안으로 *aaS가 존재하고, 이들은 복잡하고 귀찮은 작업들을 대신 해주기로 유명합니다. 나름 GUI이기도 하구요.
허나 AWS를 몇 번 써보면, 이것도 공부할 일이고 충분히 할일이 많다는 것을 알 수 있습니다.
개인적으로는 코드를 쓰는게 AWS 서비스 이용보다 쉬운 거 같다는 생각이 듭니다.
하지만 적절히 활용할 수 있도록 많은 시도를 해보고, 익숙해진다면 최대한의 효율을 낼 수 있는 말그대로 도구가 되지 않을까 싶습니다.
도구라는게 원래 적절한 곳에 써야 편하지, 소잡는 칼로 닭잡으려하면 얼마나 무겁고 힘들겠습니까.
최대한 저도 AWS의 도구를 익혀보고, 이를 가장 적절히 쓸 수 있는 곳에서 적절히 쓰려고 노력하려 합니다.