MSA 설계와 구현 - 01

업데이트:

시스템 구성

내가 목표로 하는 시스템 구성도를 그려봤다.

k8s 구성도

structure

총 3개의 노드로 구성되고, 실제 app이 동작하는 곳은 worker 2대이다.
app, api의 구성은 명확하지만 DB서버 구성이 불명확했는데, 그 이유는 stateless서비스를 제공하는데 특화된 k8s에 stateful 해야하는 DB 서버를 올리는게 맞을까? 하는 생각이었다.

따라서 k8s 장애 복구나 스케쥴링을 적용받지 않도록 taint를 설정하고, mongo에서 제공하는 replica 기능을 이용해 백업 및 HA 구성하게 될 예정이다.

인입에 따른 구성

structure

사용자는 nginx-ingress에 의해 /app, /api 의 경로로 ingress되고, app, api는 각 2개의 replica가 생성되어 HA구성될 예정이다.
이 때 특이한 점은 app 이라고 표현된 WAS에서 DB 조회나 비즈니스 로직 처리 시, 항상 api 서버에 요청한다는 것이다.
이런 구성은, 3rd party app에 api 제공이 가능하게 구성되고, 추후 new-app이 생기더라도 기존 old-app에 의존하지 않는 확장성 있는 구성을 도와줄 것이다.

앞으로 할 일

  1. k8s 공부를 병행하며 express로 app, api 서버를 구현할 것이다.
  2. mongo replication에 대한 개념과 구현을 명확히 하자.

appendix. 기회가 된다면 app을 개발하며 react와 같은 프론트 라이브러리도 적용해보고 싶다.

댓글남기기