아키텍처 - MSA에서 GW의 역할

1 minute read

Microservice-Architecture-API-Gateway-Consideration.pdf 에서 보고
https://www.globallogic.com/wp-content/uploads/2017/08/Microservice-Architecture-API-Gateway-Considerations.pdf
(링크깨짐)

구조

client가 oauth2로 auth server에서 accesstoken을 얻어서 gw에 접근.
gw에서는 auth server에 accesstoken 검증받고 jwt토큰발급
jwt토큰이용 내부 MS에 접근

내가 생각하고 있던 jwt의 용법과 조금 달라서… 잘못알고 있었다고 봐야될까
외부의 앱에서도 jwt토큰을 사용하려고 했는데.. 시간제한걸고 해서
생각 해보니 이렇게 하면 access token하고 다를게 없는 것 같다.
이 문서에 있는 방법이 더 좋아보인다. jwt는 신뢰할 수 있는 서버간 통신용
배포시점에서 api 버전별로 jwt 토큰 secret을 공유해줘야할 것 같다.

DDOS방어

  • 접근횟수 제어: 세번이상때리는놈 막아버린다던가

  • 커넥션 제한: 서비스 종류에따라 다르겠지만 api를 100개씩 호출하는거 금지

  • 느린커넥션 제한: 소켓 열어놓고 안닫고 도망가는 경우가 많은데 이런거 강제종류 30초

  • IPBlockList/WhiteList

  • 요청 거부: User-Agent 헤더 들고오는놈, referret 헤더 들고오는놈, header에 값 잔뜩 달고오는놈 

Secure Communication

내부 rest api도 https사용
private 서브넷 이용
안될경우 token인증??

서비스 등록과 서비스 찾기

Service Registry

MS instance가 실행될 때 자동등록. eureka

Service Discovery

api gateway에서 eureka에 접근해서 찾기
ribbon으로 부하조절

Orchestration

MS가 MS를 요청하는 경우를 말하는건가?
바로 요청할지 GW를 거칠지? 그림은 좀 다른데?

  1. Client - GW - MS - MS
    1. Client - GW- MS - GW - MS
  2. Client - GW -MS

1번은 내부에서 내부를 중복호출하는경우. 1-1도 같은구조로 봐야할 것 같다
2번은 1단계 호출만 존재

Monitoring

MSA는 모니터링이 없으면 오류가 어디서 났는지 알기 힘들다.
각 서비스별 로그수집, 헬스체크가 필수

Health Monitoring

서버 죽었나 살았나

Traffic and Data Monitoring

데이터 네트워크 사용량??

Load Balancing and Scaling

API GW로 L.B.를 달아준다. 끝?
롤링배포하라구?

High Availablility and Failover

stateless - nosession