AWS lambda 를 통한 저비용 코드조회 api 설계 ?!

aws lambda 를 이용하여 상수코드를 전달하는 api를 만들어볼까?

목적 :

api 조회시 코드가 조회를 위해 매번 db를 조회하지 않고, 코드의 변경시 조회용 api의 상수자체를 변경하여, db커넥션을 제거해본다.

! 실제 만들진 않고 구성방법에 대한 아이디어만 남긴다.

  • AWS Lambda는 매월 1백만회 request까지는 무료이다.
  • AWS API-Gateway 는 “수신된 API 호출 1백만 건당 3.50 USD에 기가바이트당 데이터 전송 비용이 추가됩니다. AWS PrivateLink 요금이 프라이빗 API 호출에 적용됩니다.” 라고 한다.

!! 이러한 aws 기능들이 있는데, 무언가 적용하면 좋을것 같다는 생각이다.

  • 자주 변경이 일어나지 않는 코드들에 대한 조회 api를 작성해볼까?
  • 코드들의 정보는 key=value 형식으로 property 파일이 좋을것 같다.
    -> 그렇다면 s3 적재?
  • aws lambda 를 보다가 환경변수를 주입할수 있다는것을 알게되었다.
    -> max 4kb
    (환경변수를 안쓰고 s3오브젝트 접근해서 읽으면 람다 호출시마다 s3 object Read 비용이 발생 해서 , 환경변수로 해본다.)
  • 코드정보들이 4kb 가 넘을때와 안넘을때가 기능이 달라질것 같다.
  • 코드 그룹을 그룹단위 4kb 가 넘지 않도록 잘게잘게 쪼갠다.
  • 쪼개진 파일당 하나의 조회용 lambda function 과 맵핑 된다고 생각하면 된다. ( s3의 create/update event 에 조회용 lambda 의 환경변수를 업데이트 해주는 lambda 가 추가적으로 필요하긴하다.)

!!! 그럼 시나리오!

  • 코드 그룹단위로 쪼개진 코드파일이 수정되어 s3에 적재
  • s3 create/update 이벤트 핸들러를 통해 조회용람다의 환경변수를 수정하는 람다를 호출
  • 환경변수 수정용 람다에서, 파일에 맵핑되는 조회용람다펑션을 찾아 파일내용으로 환경변수를 업데이트 처리
  • 조회용 람다펑션에서는 환경변수로 가지고 있는 코드 정보만 응답해주면 되겟다.
  • API-Gateway 에서는 코드그룹단위 path별로 람다펑션을 잘 맵핑해야겠다.

도식화 하면 아래와 같은데.
굳이 이렇게 해야되나 라는 생각도 든다. 하하..

Image for post
Image for post

Written by

엘디는 사랑입니다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store