티스토리 뷰

반응형

Serverless Architecture 방식으로 서버를 개발하고 구축하기로 결정했다면 어떤 클라우드를 기반으로 할지 정해야하는데, 저는 고민없이 AWS를 사용하고자 했습니다. 아무래도 GCP / Azure / AWS 이 3가지의 클라우드가 비교 대상이었으나 이미 소규모의 웹페이지를 lightsail 이라는 AWS 서비스 중 하나 이용하고 있기 때문이기도 하고 아마존 자체의 쇼핑몰 자체도 분석해보적이 있어 참 많은 서비스들을 지원하는 걸로 알고 있었고 좀더 친숙했기 때문인데요,

그럼 AWS에서 제공하는 굉장히 다양하고 많은 서비스 중에서 내가 하고자하는 서버의 개발에 필요한 것은 무엇일까요? 리서치해보면 API Gateway, Lambda, Amplify, Cognito, DynamoDB, Simple Noitifcation Service, S3, EC2, Event Bridge 등 많지만 굉장히 기능히 많기 때문에 꼭 모든 것을 다 알아야 할 수 있는 것은 아닙니다. 다만 많이 알 수록 더 잘 사용할 수 있는 것은 확실하기 때문에 AWS 서비스 하나씩 설명하면서 필요하다면 몇 개의 글에 나눠서 실습하는 부분까지 다뤄보도록 할 예정입니다. 오늘은 그 중 첫번째로 API Gateway에 대해서 다뤄보도록 하겠습니다.

API Gateway는?

REST 및 Websocket API를 생성, 게시, 유지, 모니터링 및 보호하기 위한 AWS 서비스

쉽게 생각하면 '라우터' 개념으로 볼 수 있습니다. /user 라는 API의 요청이 있을때 이를 A 서버의 /aaa로 보낼 수도 있고 B서버의 /bbb로도 보낼 수 있습니다. 심지어 GET 요청을 POST 요청으로 바꿔서 연결해 줄 수도 있고 사용방법은 무궁무진합니다.

https://docs.aws.amazon.com/apigateway/?icmpid=docs_homepage_serverless 

 

https://docs.aws.amazon.com/apigateway/?icmpid=docs_homepage_serverless

 

docs.aws.amazon.com

API Call Flow

API Gateway는 다음과 같은 RESTFul API 생성합니다.

  • HTTP 기반
  • 상태 비저장 클라이언트 - 서버 통신을 활성화 합니다.
  • 표준 HTTP 메서드 (예: GET, POST, PUT, PATCH, DELETE)를 구현합니다.

API Gateway는 다음과 같은 Websocket API를 생성합니다.

  • 클라이언트와 서버 간에 상태를 저장하는 전이중 통신을 지원하는 WebSocket 프로토콜 준수
  • 수신 메시지를 메시지 콘텐츠에 따라 라우팅

AWS에서 제공하는 Lambda 함수를 구성해서 Client로 부터 들어오는 요청을 Lambda function으로 실행해보면 굉장히 쉽고 빠르게 백엔드 서버를 구성하고 API를 클라이언트에게 제공할 수가 있게됩니다.

클라이언트는?

클라이언트는 포스트맨을 주로 사용하는데요, 앱이나 웹을 바로 만들기에는 시간이 필요하고 서버를 만드는 백엔드 개발자의 경우 굉장히 유용하게 사용하는 것이기 때문에 PC에 설치해서 사용하면 유용하게 쓰일 수 있습니다.

https://www.postman.com/downloads/

 

Download Postman | Get Started for Free

Try Postman for free! Join 20 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

위 경로에 접속해서 본인 PC 개발환경에 맞는 포스트맨을 미리 준비해 놓으시기 바랍니다. 서버가 일차적으로 왁구가 만들어 지면 포스트맨으로 테스트해 볼 것이고 그 때 포스트맨 관련해서도 간략히 설명하도록 하겠습니다.

REST API 설계하기 

가장 간단하고 일반적인 REST API 형태로 책은 등록하고, 대여하고, 반납하는 서버 기능을 위해 REST API를 정의해 보도록 하겠습니다. 우선 아래와 같이 정의해 보았습니다.

Method URI Description Path Param Query Param Body
Param
Return Body (200OK)
POST /books 신규 책 등록하기     {
"name": "3분 딥러닝 텐서플로맛", "type": "개발"
}
{ "message" : "success"}
GET /books/{bookId} 책 리스트 가져오기 bookId isBorrow   [
 {
   "bookId" : 1,
   "IsBorrow : false,
 }
]
GET /books/{bookId}/history 책 대여 기록 가져오기 bookId from
to
  [
 {
  "borrowedDate" : XXXX,
  "borrower" : ""
 }
]
PUT /books/{bookId}/borrow 책 대여하기 bookId     { "message" : "success"}
PUT /books/{bookId}/return 책 반납하기 bookId     { "message" : "success"}

API의 Return의 경우에는 200 OK만 정의했지만, 400, 404, 401 등에 대한 기본정의 및 리턴에 대해서도 API Gateway에서 설정 가능하니 만들면서 하나씩 살펴보도록 할텐데요 다음 글에서 API Gateway를 통해 API를 실제로 생성해 보도록 하겠습니다.

반응형
댓글