오늘은(사실 한 3주전...) 서버들간의 통신 유형이 다양할 때
쿠버네티스 구성을 어찌하면 좋을 지 고민해보는 시간을 가졌다
확실히 모르는 내용이 뭔지 확인할 수 있어 좋은 시간이었다.
| 가정 상황 정리!!
✨ API Gateway : Spring Cloud Gateway
✨인증 서버 : Spring Boot
✨서비스 서버
- Spring Boot : 일반적인 대부분 http 요청 (ex. 게시판, 버튼 기능 등등)
- Fast API : AI를 이용하는 동작 요청 (ex. 이미지 생성 등등)
- Node.js : 간혹 등장하는 채팅 서버 (ex. 임시로 개발 하다가 굳어 졌다는 컨셉임 WebSoket 통신이라는 점만 생각하자)
✨ 희망사항 : k8s 내부 동작임을 고려하고 싶음
❗❗ 고려 상황
1) 각 요청은 어떤 과정을 통해 최종 사용자에게 전달 될까?
2) Spring Boot에 요청하지만 해당 Spring Boot에서 다른 외부 API를 요청할 일이 있을 텐데, 이러한 흐름은 어떻게 잡지?
3) 채팅 하나하나 보낼 때마다 JWT 인증 해야하나.....?
🍀 설계 결과 🍀
: 공부하다 보니 요청 유형 별로 순서가 달라져 요청으로 구분해보았다
그리는데 애를 많이 썼다ㅠㅠ
💌 일반적인 HTTP 요청~!
- Ingress에 정의된 라우트 내용에 대해 Nginx를 통해 실질적 구현을 한다!
- Spring Boot에 만약 사용자 프로필 사진 생성을 요구했다면, 이는 DB와 AI 모델 모두가 영향을 끼친다.
1) 사용자 요청은 먼저 Spring Cloud Gateway에서 Spring에 구현된 JWT 인증 과정을 수행한다.
- Spring Cloud Gateway Fillter에 구현부를 옮기는 것이 적절해 보인다...
- 현재는 JWT 구현이 Spring Boot에 구현되어 있는 상황이기에 비효율 성이 1차적으로 발생했다.
2) Spring Boot에 사용자 프로필 이미지 생성 Controller에 요청이 들어간다.
- 이미지 이름을 랜덤난수로 지정하고 경로는 확정일테니 DB 업데이트를 진행
- kafka로 요청에 대해 publish 함
3) FastAPI에서 kfaka Topic 구독을 통해 요청 확인
- 실질적으로 이미지를 생성하여 저장
💌 Web Socekt 요청~!
- 인증 과정에서 채팅 하나하나 JWT인증이 아니라,
- Socket 통신 연결을 위한 인증 당시에만!! JWT 인증을 진행한다
- 여기서 kafka까지 나와서 복잡성을 키운 느낌이다.
- 채팅 연결 요청도 Spring Cloud Gateway를 거치고 넘겨주어야 할 지 고민이다
- 실제 구현에서는 kafka가 제외되고 JWT를 믿고 각 서버에 요청을 보내고 있다.
'기술 단어장 > Cloud' 카테고리의 다른 글
[Cloud] SKT의 유심교체 사태로 보는 AWS S3 보안 (0) | 2025.04.28 |
---|---|
[Azure] Blob Storage의 구조 및 보안 설정 분석 (0) | 2025.03.27 |
[Azure] 포트 개방 과정에서의 소소한 실수 (0) | 2024.08.21 |
[Cloud] Genesys Cloud의 CX 개선 및 확장을 위한 방안 (0) | 2024.08.12 |
[AWS] AWS에서 하는 간단한 쿠버네티스 환경 설정, EKS (0) | 2024.03.09 |
댓글