AWS Lambda 알아보기

AWS Lambda란

AWS Lambda{: width=”100” height=”100”}
AWS에 Lambda를 검색해서 들어가면 이벤트에 대한 응답으로 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅 서비스입니다. 라고 나와있네요.
상당히 딱딱한 문장 구성이라 이 문장만으로는 이해가 잘 안됩니다.
우선 서버리스라는 말이 나오는데, 이에 대해 알아볼 필요가 있습니다.

서버리스(Serverless), 말 그대로 서버가 없다는 얘기입니다.
일반적으로 우리가 서비스를 만든다고 하면 서버가 필요하잖아요? 클라이언트에서 필요한 데이터 접근이나 기능적 처리를 해주는 백엔드의 서버가 필요하고, php, django, spring 등 많은 프레임워크로 이를 코딩해왔습니다.

LambdaFaaS(Function as a Service)입니다. 서버 없이 함수만 등록해서 해당 함수를 호출하는 방식으로 굴러 간다고 이해하면 될거 같습니다.
예시를 들어보면, 게시판에 사진을 유저가 업로드 한다고 생각해볼게요.
운영자는 이 사진을 원본과 썸네일 버전 둘 다 저장을 해야겠죠.
대체로 이런 경우 서버에서 사진을 S3(AWS 저장소 서비스)에 업로드 하고, 사진을 썸네일로 만들어서, 다시 S3에 저장을 합니다.
근데 사진을 올리는 기능이 여러 파트에 포함되어있다면(자유게시판, 공지게시판, 프로필 수정 등) 그 파트 구현하는 부분에 매번 썸네일 만드는 기능이 포함되어야겠죠.
이럴 때 Lambda는 어떤 식으로 해결해주냐면, 사진이 저장되는 S3Lambda가 계속 모니터링하도록 설정합니다.
어떻게든 S3에 사진이 저장이 되면(어느 경로든) Lambda는 이를 감지하고 미리 지정된 코드(함수)를 수행합니다. 이 경우에서는 썸네일을 만들어서 S3에 저장하는 기능이겠죠.
이러한 시스템을 직접 구현할 필요 없이, Lambda가 해당 작업만을 전담해서 처리해주게 됩니다.
AWS 서비스인만큼 이용한만큼만 요금을 지불합니다.

API Gateway란

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의 도구를 익혀보고, 이를 가장 적절히 쓸 수 있는 곳에서 적절히 쓰려고 노력하려 합니다.

Author

TaeBbong Kwon

Posted on

2019-07-12

Updated on

2022-08-06

Licensed under

Comments