-
Notifications
You must be signed in to change notification settings - Fork 1
MySQL 아키텍처 개선: DB 의존성 분리와 서버 역할 명확화
GWANGHYEON KIM edited this page Dec 1, 2024
·
1 revision
초기 구현 단계에서 API 서버와 Media 서버가 모두 MySQL에 직접 접근하는 구조를 채택했습니다. 이 과정에서 다음과 같은 문제점들이 발견되었습니다
-
데이터베이스 의존성 증가
- 두 서버 모두 DB 스키마에 강하게 결합됨
- DB 변경 시 양쪽 서버 모두 수정 필요
-
유지보수의 어려움
- 동일한 DB 관련 로직이 두 서버에 중복 존재
- 코드 수정 시 양쪽을 동시에 고려해야 함
-
장점
- 직접 DB 접근으로 인한 속도 향상
- API 서버 의존성 감소
-
단점
- DB 의존성 증가
- 데이터 일관성 관리의 어려움
- 코드 중복
-
장점
- DB 관련 로직 중앙화로 유지보수 용이
- 데이터 일관성 보장 용이
- 비즈니스 로직의 명확한 분리
-
단점
- API 서버에 대한 의존성 발생
- 추가적인 네트워크 홉(Network Hop) 발생
- DB 접근은 한 곳에서 관리하는 것이 일반적
- 같은 VPC 내에서는 성능 저하 미미
- 비즈니스 로직 중앙화의 이점이 더 큼
- API 서버의 부하는 크지 않을 것으로 예상
-
단일 책임 원칙 (SRP)
- API 서버만 DB 접근 권한 보유
- Media 서버는 미디어 처리에 집중
-
의존성 역전 원칙 (DIP)
- Media 서버와 API 서버 간의 결합도 감소
- 인터페이스를 통한 통신 구조 설계
- 기존 Media 서버의 서비스 로직을 API 서버로 이전
- 인터페이스 기반의 의존관계 설계
- API를 통한 데이터 접근 계층 구현
- Mediasoup 포트 매핑 문제
- swagger 같은 응답 코드에 다양한 응답 보여주기
- Sudo가 계속 비밀번호를 요청함
- Docker 이미지가 너무 크다
- Git action에서 도커 이미지 빌드 시간을 단축시켜보자
- Docker compose를 이용해서 메모리 사용률을 줄여보자
- 방송 녹화 시 CPU 과부하 문제를 해결해보자
- Release 브랜치? 너 필요해?
- 로딩이 너무 짧아…!
- NestJS ORM으로 무엇을 사용해야 할까?
- WebRTC를 이용한 1:N 스트리밍 서비스에서 시그널링 서버가 필요할까?
- 실시간 채팅 구현: 인메모리 방식을 선택한 이유
- MySQL 아키텍처 개선: DB 의존성 분리와 서버 역할 명확화
- 브라우저 창이 최소화되면 비디오 송출이 안된다…!
- Mediasoup 기본 개념
- DLTS와 Signaling
- Tell, Don't Ask (TDA) 원칙이란
- VPC(Virtual Private Cloud) 학습 정리
- 순환참조: A 서비스 ‐ B 서비스 vs. A 서비스 ‐ B 레포지토리
- Dto 메서드 전략
- WebRTC란?
- 자바스크립트 패키지 매니저(npm, yarn, pnpm)
- shadcn/ui을 이용해 UI 개발 생산성 높이기
- React 이벤트 핸들러 네이밍(on vs handle)
- React-router-dom의 createBrowserRouter을 사용해보기
- fetch vs axios