Tyk API Gateway 란
먼저 Tyk 를 알기전에 API Gateway 가 뭔지 개념을 알아보자.
API Gateway
API Gateway 란?
MSA 구조에서는 대부분 필수적으로 API Gateway 를 활용하고 있다. 왜냐하면 MSA 는 큰 서비스를 여러개로 쪼개어 각각 역할을 분리하므로 즉, 포트 주소 등을 포함한 모든 주소정보가 달라지게 되며 생기는 문제점은 아래와 같습니다.
- 수많은 API 호출의 기록 관리가 용이하지 않음 (Ex. 컨테이너)
- 내부 비즈니스로직, 인프라 등 주소가 선명하게 노출되어 보안에 취약
- 각 서비스 마다 인증 등의 공통 로직을 중복 구현 해야 하는 문제점 발생
그러므로 API Gateway 를 적용하여 서버 앞단에서 모든 엔드포인트를 일원화 해주는 다른 하나의 서버 역할을 해야한다. 즉,
리버스 프록시(Reverse Proxy)
기술과 비슷한 역할을 하는 존재이다. 또한인증
서비스를 추가로 가지고 있어 요청/응답에 따라 애플리케이션 내부에 있는 마이크로 서비스로 라우팅하는 역할도 포함하며 그 외에도 다양한 기능이 존재한다.
API Gateway 사용이점
- 단일 인터페이스 접근 방식을 통해 API 및 백엔드 시스템을 더욱 안전하게 보장
- 보안 및 액세스 제어, 조절, 라우팅, 서비스 디스커버리 등을 사용하여 API 실행 환경을 완전히 제어할 수 있습니다.
- 서비스와 애플리케이션 사용자 모두를 위한 간단한 코드 작성
- 더 적은 왕복 호출로 인해 시간이 지남에 따라 지연 시간 감소
- 모든 마이크로서비스에 더 빠르고 쉽게 액세스
- 각 개별 마이크로서비스 또는로드 밸런싱에 대한 워크로드 감소
- 포괄적인 메트릭 수집
API 게이트웨이의 다른 이점은 애플리케이션이 요청자 또는 클라이언트로부터 분할되는 방식을 숨기고, 클라이언트는 더 이상 모든 개별 서비스의 위치를 알 필요가 없으며, 사용된 코드에 관계없이 각 요청에 대해 최적의 API를 제공한다. 또한 애플리케이션의 성공 여부는 강력한 API 게이트웨이에 달려 있습니다. 게이트웨이는 서비스의 뛰어난 성능, 고 가용성 및 확장성을 보장한다.
Tyk API Gateway 란
Tyk 정의 및 구성
Tyk
는 2014년에 생성된 오픈 소스 API 게이트웨이
이다. Golang
으로 작성되었으며 Golang
의 자체 HTTP
서버를 사용한다.
또한 Tyk
를 사용하려면 클라우드, 하이브리드(자체 인프라의 GW) 및 온프레미스와 같은 다양한 유형을 선택할 수 있으며 현재 클라우드 버전에서는 50,000 개의 일일 요청을 무료로 처리할 수 있는 API 게이트웨이를 보유할 수 있으며 온프레미스 방식을 사용하면 인스턴스를 무료로 계속 실행할 수 있다.
공식 사이트: https://tyk.io
또한 Tyk 는 3가지 구성 요소가 존재하며 그 외 데이터 스토어의 역할은 아래와 같다.
- Gateway: 모든 앱 트래픽을 처리하는 프록시입니다. 즉, API 서비스 요청에 대한 Endpoint 중계 처리
- Dashboard: Tyk를 관리하고 지표를 표시하며 API를 구성할 수 있는 인터페이스입니다. (Endpoint 설계, Version 관리, Cache 등의 관리 기능 제공)
- Pump: 메트릭 데이터를 유지하고 내보내기를 담당하는 요소 입니다. (Redis 에 적재된 analysis data 를 MongoDB 로 전달)
- Redis: Cache 및 서비스 현황 기록
- MongoDB: analysis data 적재
Tyk 장점
- 태초에 클라우드 네이티브 아키텍처로 설계되었기 때문에 수직확장(scale-up)과 수평확장(scale-out)에 아무런 제약이 없다.
Tyk
는LDAP
,OAuth
등과 같은 다양한 인증 메커니즘과의 애드온 기반 통합을 지원한다. 또한 트래픽 할당량, 버전 관리, Swagger 에서 가져오기 등의 기능들도 제공한다.- API 게이트웨이, 분석 도구, 개발자 포털, 관리 대시보드 등 많은 기능을 기본 제공
- API를 공식 배포하기 전 시뮬레이션 하는 기능, 요청 캐싱 기능, 여러 HTTP 오류 코드에 대한 응답 템플릿 등을 제공
- 다양한 언어 지원
참고
- https://www.tibco.com/
- https://www.bbva.com/
- https://blog.neonkid.xyz
- https://www.ciokorea.com/