박상권의 삽질블로그

[AWS]서버없이 Lambda와 API Gateway로 서버API 만들기 본문

IT/AWS

[AWS]서버없이 Lambda와 API Gateway로 서버API 만들기

박상권 2016. 5. 30. 08:55

안드로이드 개발자들이 모여있는 오픈채팅방에 참여해보세요 .
Q&A 및 팁을 공유하는 방입니다..
오픈채팅방 참여



블로그를 Medium으로 옮겨서 운영하고 있습니다.
앞으로 새로운 글은 모두 미디엄 블로그를 통해서 올릴 예정입니다.
미디엄에서 다양하고 유익한 포스팅을 살펴보세요
미디엄 블로그 보기



서버없이 서버기능을 만든다고?

이 개념에 대해서 처음 접해보시는분은 언뜻 잘 이해가 되지 않으실겁니다.

붕어없는 붕어빵은 이해가 되는데, 서버없이 서버기능을 만든다니?!

하지만 이 글을 끝까지 읽어보시면 이 말이 이해가 가시게 될겁니다.





우리는 먼저 AWS에서 제공하는 LambdaAPI Gateway에 대해서 알고 시작해야 합니다.







Lambda란?


AWS Lambda를 사용하면 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있습니다. 

사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되지 않습니다. 

Lambda에서는 사실상 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행할 수 있습니다. 

코드를 업로드하기만 하면, Lambda에서 높은 가용성으로 코드를 실행 및 확장하는 데 필요한 모든 것을 처리합니다. 

다른 AWS 서비스에서 코드를 자동으로 트리거하도록 설정하거나 웹 또는 모바일 앱에서 직접 코드를 호출할 수 있습니다.


AWS Lambda 소개내용


네, 그런데 제가 읽어도 무슨말인지 정확히 이해가 되지 않습니다...





이해하기 쉽게 예를 들어보겠습니다.


저는 페이스북의 운영자입니다. (사실 아닙니다)


사용자가 사진을 페이스북에 올리는경우 원본사진과 함께 원본에 해당하는 썸네일 사진도 저장하고 싶은경우가 생겼습니다.

이럴경우 보통 서버에서 사진을 S3에 업로드 한뒤 따로 해당 이미지의 썸네일을 만드는 작업을 수행하고 다시 S3에 저장을 합니다.

그런데 만약 여러군데에서 사진을 업로드하는경우가 생긴다면 썸네일 만드는 작업을 수행하는걸 여러군데에서 수행하도록 코드를 짜야합니다.

썸네일을 만드는 공통함수로 만들어서 해당 함수만 호출하는 방법도 있지만 이럴때 Lambda를 이용하면 간편합니다.



Lambda가 이미지가 저장되는 S3를 계속 모니터링 하도록 설정합니다.

어느경로를 통해서든지 S3에 새로운 이미지가 추가되는경우 Lambda가 이를 감지하고 미리 지정된 코드를 수행합니다.

미리 지정된코드에는 이미지를 썸네일로 만들고 S3에 저장하는 코드가 들어 있을겁니다.


(출처: http://www.slideshare.net/awskorea/serverless-architecture-lambda-api-gateway)



Lambda는 이 작업만 수행합니다.

별다른 서버가 필요 없습니다.

요금도 매월 일정수준까지 무료로 이용할수있고 요청수,시간만큼만 내면 됩니다.


현재 Lambda는 Node.js, Python, Java 언어를 지원합니다.










API Gateway란?


쉽게 생각하면 '라우터'개념으로도 볼수있습니다.

AWS의 설명에 따르자면 '현관문' 역할을 하기도 합니다.

/user 라는 API의 요청이 왔을때 이를 A서버의 /aaa 로 보낼수도 있고 B서버의 /bbb로 보낼수도 있습니다.

심지어 GET요청을 POST요청으로 바꿔서 연결해줄수도 있고 사용방법은 무궁무진 합니다.

여기에 더불어 위에서 알아봤던 Lambda로 코드를 작성한뒤 API Gateway에서 이 Lambda코드가 실행회도록 연결해줄 수도 있습니다.


(출처: http://www.slideshare.net/AmazonWebServices/build-and-manage-your-apis-with-amazon-api-gateway)











아몰랑, 어떻게하는지 알려줘



역시 개발자는 코드로 대화해야 제맛이죠

Lambda와 API Gateway를 이용해서 서버없이 Restful API구성을 해보도록 하겠습니다.

Lambda와 API Gateway를 설정하는 방법에 대해 각각 아래 포스팅을 참고하시면 좋습니다.


Lambda

[IT/AWS] - [AWS]Lambda의 시작 - 'Hello World' 출력하기



API Gateway

[AWS]API Gateway - RESTful API만들기




2개의 블로그 글을 잘 따라오시면서 만드셨다면 여러분은 이미 서버없이 서버구성을 마치셨을겁니다.



그리고 이제 우리는 아래와 같은 아키텍처를 이해하고 직접 구성해볼 수 있을것입니다.










어때요 참 쉽죠?

( 물론 전 어려웠습니다 )



AWS로 서버없이(serverless) 서버구성하기 어렵지 않아요






위와같은 개념에 대해 제 블로그 하나만으로는 충분히 이해하기 힘들수 있습니다.

아래 링크들을 통해서 좀더 많은 도움이 되시길 바랍니다.

http://www.slideshare.net/awskorea/serverless-architecture-powered-by-lambda-kiwoan-kim

https://blog.outsider.ne.kr/1205

https://aws.amazon.com/ko/blogs/korea/serverless-architecture-by-korean-developers/




감사합니다.

Comments