일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 비관적 락
- 낙관적 락
- Kotlin
- 자바
- gatway
- 삽입 이상
- 삭제 이상
- HTTP
- 네트워크
- 자료구조
- ocp
- MSA
- Spring
- null
- 3-way handshaking
- 갱신 이상
- DB
- java
- 페이지네이션
- 스레드 풀
- Kafka
- buildSrc
- JPA
- Dirty Checking
- AWS
- Redis
- well-know port
- 데이터베이스
- 캐시 오염
- 정규화
- Today
- Total
어 나 갱수.
[MSA] API Gateway란? 😊 본문
API Gateway를 MSA에서 많이 도입하는 이유는 MSA와 같이 각각 다른 마이크로 서비스 다양을 요청을 하는 프로젝트에서
API Gateway로 요청을 하게 되면 요청을 중앙 집중화하여 처리함으로써 마이크로간 통신을 단순화 시킬 수 있기 때문입니다.
API Gateway
간단하게 설명하자면 모든 API 요청에 대한 통로라는 개념으로 생각하면 됩니다.
MSA 프로젝트의 경우 많은 서비스가 존재할 건데 이 많은 서비스를 클라이언트에서 직접 요청하는 것이 아니라 API Gateway로 호출하면 됩니다.
API Gateway를 고속도로의 톨게이트에 빗대어 생각해 보겠습니다.
자동차는 어느 지역을 가던지 고속도로를 이용하기 위해서는 톨게이트를 지나쳐야 합니다.
이걸 MSA 프로젝트에 빗대어 보면 어떤 클라이언트에서 요청을 하던지 API Gateway를 지나쳐야 합니다.
차량의 출입을 통제하는 톨게이트와 클라이언트의 요청을 통제하는 API Gateway를 비교해 보면 간단하게 이해될 거라 생각합니다.
API Gateway를 사용하는 이유
저는 처음에 왜 굳이 요청에 대한 필터 처리를 각각 서비스에서 안 하고 API Gateway에서 해야 하는지 의문을 품었습니다.
하지만 생각을 해보니 MSA는 많은 서비스로 분리되어 있습니다. 그래서 클라이언트에서 바로 서비스로 직접 요청을 하려면 모든 서비스에 대한 서버 주소를 알고 있어야 합니다. 근데 클라이언트에서 이 모든 주소를 알고 있기는 어렵습니다.
클라이언트에서 Request를 보낼 때 인증을 거쳐야 하는데 MSA 프로젝트 특성상 마이크로서비스가 늘어날수록 서비스의 수만큼 인증을 받아야 하는 번거로움이 있습니다. API Gateway는 이러한 반복되는 작업을 줄여줍니다. 한 번의 인증으로 여러 개의 서비스를 이용할 수 있도록 해줍니다.
그리고 또 MSA에서는 서비스가 아주 잘게 나눠져 있습니다. 그래서 클라이언트가 요청을 보낼 때 어떤 서비스로 호출해야 할지 고민을 해야 하는데 API Gateway가 있다면 그냥 모든 요청을 API Gateway로 보내면 되기 때문에 클라이언트 입장에서 어떤 서비스로 호출해야 할지에 대한 고민을 덜 수 있습니다.
결론적으로 API Gateway의 큰 장점 중 하나는 모든 요청과 응답에 대한 것이 모두 중앙 처리가 가능해진다는 점입니다.
내부의 문제가 외부에 노출되는 것을 막아줌
API Gateway는 외부 공용 API를 내부 마이크로서비스 API에서 분리해서 외부 클라이언트에게 영향을 주지 않고 마이크로 서비스를 리팩터링 하고 조정할 수 있습니다.
추가적인 보안 제공
API Gateway에서 추가적인 보안등을 제공해 줍니다. SQL Injection, XML Parser Injection, DEnial-of-Service(Dos) 공격 등에서 서비스를 보호해 줍니다.
다양한 통신 프로토콜을 사용가능
외부 클라이언트와는 통신을 HTTP 혹은 REST API를 사용하지만 내부에서의 통신은 각 서비스에 최적화된 다양한 통신 프로토콜을 사용할 수 있습니다.
API Gateway 기능
인증/인가
모든 요청에 대해 클라이언트의 신분을 인증하고, 요청에 대한 권한이 있는지 확인해 주는 기능이 있습니다.
요청 절차의 단순화
여러 마이크로서비스가 있는 MSA 프로젝트일 경우 클라이언트에서 서비스로 요청할때 여러 서비스로 요청을 해야 하는데
API Gateway는 여러 클라이언트의 요청을 단일 클라이언트의 요청으로 대체 가능하도록 합니다.
라우팅 및 로드밸런싱
API Gateway는 클라이언트로부터 접수된 메시지에 따라, API 호출을 적절한 서비스에 라우팅 할 수 있는 기능이 있습니다.
서비스 디스커버리
API Gateway는 각 서비스를 호출하기 위해, 서비스마다 IP주소와 포트번호를 알고 있어야 합니다.
이러한 서비스의 위치(IP 주소와 포트번호)를 찾는 것을 서비스 디스커버리라고 합니다.
API Gateway의 문제점
- 모든 요청이 API Gateway를 거치기 때문에 응답시간이 늘어날 수 있다.
- API Gateway 장애 시 모든 서비스가 작동하지 않는 SPOF(Single Point Of Failure) 문제가 발생할 수 있다.
Reference
'MSA' 카테고리의 다른 글
[MSA] Message Queue를 알아보자 🤗 (2) | 2023.11.25 |
---|---|
Oracle Ace 님의 MSA 발표 정리 (2) | 2023.07.27 |