Project – API Gateway


Purpose

  • 서버를 효과적으로 관리하기 위한 여러 툴을 개발하게 되면서 권한의 필요성을 느낌
  • 실제 개발자와 서버 관리자의 접근 권한 체계가 달라야 하기 때문
  • 권한 체계를 개발하기 위해서는 session 인증 방식을 통해서 이루어지는 것이 가장 바람직한 구성이라고 생각하며 개발을 하기 시작

Skill

Node.js, Express, Passport
MongoDB
Python, FastAPI


Role

  • API Gateway 필요성 인지 후, 자발적으로 기획 및 개발

Period

8.2019 – 2.2020


Detail

Node.js

  • 사용자가 로그인을 하면 passport middleware를 통해서 session key를MongoDB에 저장
  • 이후 해당 사용자가 특정 api 요청 시, session key로 DB에서 사용자 정보를 탐색
  • 뒷단의 api에서 사용자의 정보가 필요할 경우를 대비하여 넘겨줄 때 header에 특정 정보들을 부착

Python

  • Node.js에서 접근할 collection의 정보를 업데이트 하기 위하여 사용
  • 향후에 프로젝트가 커질 경우 사용자들이 직접 수정을 하기 위하여 front framework로 wrapping 예정

MongoDB

  • /api/<code>와 같이 요청이 왔을 때 해당 code에 mapping된 URI 값을 담고 있음

Benefit

  • 여러 애플리케이션에서 호출하는 api의 정보들을 전부 가지고 있기 때문에 log를 통하여, 특정 사용자가 어떤 데이터를 많이 필요로 하는지 파악이 가능
  • Single sign-on을 통하여 인증이나 권한 부여에 대한 추가적인 개발이 필요하지 않음