목표 : 동시 사용자 수 100명, 실패 요청 없이 응답 시간 : 24초 → 1초
개발 계획
메인
- DB 서버 도커로 감싸고, K8S 도입해서 동적으로 관리하기 (DB 서버, 커넥션 관리를 개선하기)
- k8s로 db서버 오토스케일링(승훈)
- 로드 밸런싱은 어떻게 할지? → 자체 알고리즘 구현
- db 스키마 수(세션 수)로 관리
- 자체 활성화 유저 수(마지막 쿼리 실행 기준 ~분) 기준으로 관리
- 현재 connection 수로 관리
- 쿠버네티스를 어떻게 활용할 것인가? 하나의 서버에서 쿠버네티스를 활용할 지, NKS 를 활용할 지
- 서버 분리하기(API, LB, db-conncector)
- API 서버 : 사용자의 접속, 사용자의 쉘 정보 MySQL에 저장
- LoadBalancer 서버 : 처음으로 접속하는 경우 어떤 컨테이너로 접속할지 결정
- DB-Connector 서버 : 컨테이너 내부에서 DB 서버의 응답 값을 제공
- api 서버에서 ip를 어떻게 인지할지?
- k8s에서 다이렉트로 알림
- db-connector서버에서 생성과 삭제시 api서버에 알림
- CD는 어떻게 할지?
- 서버각각 배포 변경 사항에 따라
- 한번에 배포하기
서브
- DB 서버 스토리지 용량 오토스케일링
- DB 서버 사양 낮추고 오토스케일링(?)
- 쿼리 실행 api Rate limit
- 사용자 마다 쿼리 실행시간 제한? 1분에 쿼리실행시간 합산 ~초로 제한
- DB 스키마 ERD 로 만들기
- S3(NCloud Object) → Dumping 파일 저장
- 로그인
- 페이지 공유 (동시 편집) → 소켓
- 쿼리 플랜 시각화로 보여주기
- 로깅 ELK 스택으로 구축
AI
- 사이드 바 예시 쿼리 : 현재 DB 스키마 기준으로, 예시 쿼리를 자동 추천해서 생성해주는 서비스