API Gateway
현재 회사 프로젝트는 Flask API Server와 React 화면으로 구성되어 있으며 여러 GET 요청을 간단히 처리하고 있다.
인증처리나 loadbalancing 기능을 구현하기 위해, API GATEWAY를 이용하여 본래의 api 로직을 해치지 않고 여러 부가 기능을 추가하는 것으로 결정했다!
이렇게 서비스를 독립적으로 마이크로하게 나누어, 서비스의 개선과 확장을 용이하게 하는 것을 MSA 아키텍처라고 부른다.
KONG
아래와 같이 KONG(킹콩🦍??) API GATEWAY를 사용하여 Client와 API 간 통신에 여러 부가 기능들을 대신 수행할 수 있다.
KONGA
Kong 관리를 쉽게 도와주는 GUI 툴, 즉 대시보드이다.
Kong 설치
나는 docker 를 이용하여 설치를 진행했으며 With a database 모드로 설치를 진행하였다.
database 는 postgresql 또는 Cassandra 형태로만 제공이 되는데 Kong entity configuration을 위해서 사용되는 것이므로 사용조건에 따라 DB-less 모드로 할지 말지 결정하면 된다! 아래 볼 수 있듯이 잘 모르겠으면 그냥 DB-있는 모드로 쓰자.
이후 열심히 설치를 진행한다. 설치 과정은 인터넷에 너무 잘 나와있으므로 생략한다. 👻
Kong을 이용하여 Router 설정해보기
우선 Router란 무엇인가?
네트워크에서 라우터의 역할은 데이터패킷을 전송하기 위한 경로를 지정해주는 역할을 한다. 데이터 패킷이 어디로 갈지 지정하고 라우팅 테이블에 표시하며, 또 이를 이용하여 다음 목적지로 전달한다.
Upstream API(비즈니스 로직 서버)로 가기 이전 단계에서 자체 인증 로직을 구현한 외부 서비스 KONG을 이용하여 라우터를 수행하도록 할 수 있다.
Client --> Kong Gateway --> Router --> Service --> Upstream API(비즈니스 로직 서버, 여러 개라면 Targets)
Kong에서는 여러 기본 포트들로 다양한 기본 기능들을 제공한다.
아래의 사진 내용과 같이 Service와 Router를 지정해두면
다음과 같은 과정으로 mockbin.org의 내용값을 받아온다.
KONG에서 정의한 라우트(admin → http://172.***.**.**:8000)로 요청을 받는다. → 프록시를 통해 백엔드 서비스로 전달한다. → 요청에 대한 인증 및 권한 부여를 제어한다. → 로드밸런싱을 수행한다. → 로깅, 트래픽 제어, 보안 및 변환 등 요청 및 응답을 처리한다. → 위의 전처리가 먼저 수행되면 이제 Kong이 라우트한 실 API 경로(mockbin.org:80)로 요청을 보낸다. → kong이 응답을 받고 클라이언트 에게 다시 반환한다.
이번에는 nginx로 띄운 react 80포트로 routing하는 것을 살펴보자!
위와 같은 방식으로 172.xx.xxx.xx:80/home 부분으로 routing을 설정하였다.
그러면 벌써 아래와 같이 react logo가 뜨는 것을 볼 수 있다.
그리고 아래와 같이 내가 원했던 url로 바로 routing 해준다!
다음에는 Kong을 이용하여 API GATEWAY의 여러 기능을 사용해보자!
'INFRA' 카테고리의 다른 글
[kubernetes] 쿠버네티스 기초 이론 (7) | 2023.11.01 |
---|---|
[API GATEWAY] KONG API Gateway -2 (0) | 2023.10.25 |
[Docker] 도커를 공부하며.. 🐳 (2) | 2023.10.23 |
[ELK] Elastic Search ILM 정책 (+추가 에러 핸들링) (2) | 2023.09.25 |
[ELK] GPU 성능 모니터링: Metricbeat와 ELK 스택 (2) | 2023.09.11 |