AWS 이용기, Serverless 서비스
API Gateway와 Lambda 살짝

 

api_gateway_1

 

겸사겸사 이런저런 개인적인 많은 이유로 AWS 서비스 사용기를 작성 할려고 한다. 강산이 한번쯤은 변한다는 10여년 전과 비교하면 정말 다른 세상에 있는것 같다. 처음 입사한 곳에서 시작한 홈네트워크 사업 그때는 아파트마다 서버랙을 설치하고 랜선 잘 연결 되었나 확인하곤 했는데 :) 사실 서버 개발자가 아닌 임베디드 개발자로 댁내 월패드랑, 출입 통제기등 디바이스가 서버랑 잘 연동되나 확인하러 가곤 했는데 서버랙의 그 윙윙 거리는 소리 지금 생각하면 눈물난다. 가끔 스위치 셋팅이 잘못되어 있어 네트워크가 느리거나 안되면 더 짜증을 내곤 했는데 ^^

 

API Gateway

AWS의 API Gateway는 서버 기반의 API 서비를 손쉽게 퍼블리싱 할 수 있는 서비스이다. API Gateway는 14년에 AWS re:Invent에서 발표되었는데 처음 서비스를 듣고 과연 누가 비용 지불하면서 사용할까 했다. 혹시 그런 생각을 가진 이들에게 나름 얼마나 편한지 조금이나만 이 글이 도움이 되었으면 한다. 오늘의 목표는 간단히 Http(GET) 요청을 하고 Echo 형태로 답을 받아보자. AWS 서비스 목록에서 API Gateway를 선택한 후 Create API부터 시작해 보자.

 

api_gateway_2

 

여기서 가장 중요한것이 API name이다. 혼자서 하든 협업을 하든 작명은 언제나 중요한것 같다. 여러 좋은 분들의 작명에 관한 많은 글들이 있으니 구글링 해보시길.

 

api_gateway_3

 

연습을 위해 HelloEcho라는 API name로 작성을 하였는데 관리 차원에서 프로젝트 단위나 API 그룹 등으로 지정 하는것도 나쁘지 않을것 같다. 나의 사견일 뿐이니 욕을 해도 상관없다. API가 많아 지면 관리 차원에 좋을것 같기도 하다. Resource, Method 순으로 RESTful URL을 구성하면 된다. BaseUrl / API / Resource (Method별) 또는 BaseUrl / 과제명 / API / Resource(Method별).
여기서 잠깐! 우리는 Lambda와 연결을 하기로 했다. API Gateway는 많은 장점이 있지만 단순(?) Public한 URL을 얻는것이 가장 큰 이점이고 실질적인 로직은 Lambda를 통해 완성이 된다. Lambda와 API Gateway를 연결을 지금 단계에서 할 수도 있고, 아니면 Lambda를 생성하는 과정에서도 할 수 있다.
여기서 또 잠깐! 개인적으로 이 연결 부분이 아쉽다.

 

api_gateway_4

 

Resource를 생성 후 Method를 선택 쉽게 만들 수 있는데 Lambda를 사용시 Lambda가 생성이 되어 있어야 한다. 이후에 언급하겠지만 Lambda를 만들때에도 API Gateway를 연결 할 수 있지만 역시 API가 만들어진 후 선택이 가능하다. 한번에 할 수 있었으면 하는 아쉬움이다. 아래 그림과 같이 이제 API Gateway와 Lambda의 연결은 되었다.

 

api_gateway_5

 

RESTful API의 Method 선택은 구글링을 통해 참고 하면 좋겠다. 많은 분들이 역시 좋은 글들은 남겼으니 쉽게 찾을 수 있을것 같다. 데이터 조회를 할때 Resource만을 사용 할 수 있지만 쿼리 파라메터를 많이 사용하고 있다. 이제 그 설정 방법을 살펴보자. 간단하게 파라메터 하나 던지고 응답을 받아 보자. API Gateway, Lambda가 연결된 Flow에서 “Method Request”, “Integration Request” 가 API 호출 시의 설정을 담당하고 아래 “Integration Response”, “Method Response”가 에러 처리 등 응답을 처리 한다.

 

api_gateway_6

 

위에서는 RESTful API의 GET Method의 Query Param을 설정한다. 그리고 다음 과정에서는 Lambda에 전달 할 수 있는 형식으로 정의를 하게 된다

 

api_gateway_7

 

그리고 Lambda에서 아래와 같이 값을 받아 필요한 로직을 수행하면 된다

 

api_gateway_8

 

이제 거의 다 왔다. Deploy 버튼 클릭으로 마무리 하면 된다. 그리고 HelloEcho – Stages로 이동을 해보면 짜잔 Endpoint가 나와 있다.

 

api_gateway_9

 

기본적인 사용은 여기서 끝이다. 정말 간단히 API를 만들지 않았나? 정말 기본적인것만 기술한것 같다. 실제 상품화 라인에 올리려면 추가적으로 해야 할것이 많다. API보안 설정, Biz Logic 성능을 고려한 API 호출 허용량, Http Error Response, API 버전 관리 등등 ㅠ.ㅠ 사실 OpenAPI 형태로 가지 않으면 즉 회사내에서만 사용한다면 API 보안 설정은 글쎄이다. API 버전 관리는 결국 endpoints를 늘려 가거나 파라메터를 활용하면 되지 않을까 한다.

 


banner_bluelens

About Author

신승영

신승영

블루핵의 CSO 신승영입니다. 전략을 중심으로 개발을 포함한 다양한것을 약간씩 하고 있습니다. 습관상 잘 되는것 보다는 위험 요소를 먼저 생각하는 성격입니다. yes-butter에 가깝지만 why-notter가 되고 싶습니다.


« Previous Post
Next Post »