|
| 1 | +## Chapter 06: 운영 데이터 분리 |
| 2 | + |
| 3 | +### 개요 |
| 4 | + |
| 5 | +- 애플리케이션보다 훨씬 분해가 어려운 것이 데이터베이스 |
| 6 | +- 데이터베이스를 분해해야 경계 구분이 명확해진다 |
| 7 | + |
| 8 | +### 데이터 분해인 |
| 9 | + |
| 10 | +- 데이터 분해 이유 (언제 분해해야할까?) |
| 11 | +- 변경 관리 |
| 12 | + - 테이블을 수정할 때 얼마나 많은 서비스에 영향을 끼치는지 |
| 13 | + - 영향 받은 서비스를 명확히 알 수 있으면 괜찮은데, 그걸 모른 채로 배포했더니 프로덕션이 오동작하는 일도 있음 |
| 14 | + - 데이터베이스를 적절히 분리하여 변경 관리에 이점을 얻을 수 있다 |
| 15 | + - 자신을 소유한 서비스에만 영향을 미치게끔 독립적으로 운용 |
| 16 | +- 커넥션 관리 |
| 17 | + - 여러 서비스가 동일한 데이터베이스를 공유할 경우, 서비스와 연결된 커넥션 풀이 많아지면서 데이터베이스에 부하를 일으킨다 |
| 18 | + - 커넥션이 너무 많으면 커넥션 대기가 걸림 |
| 19 | + - 추후 서비스를 확장하게 될 경우, 커넥션이 더 늘어남을 고려해야 함 |
| 20 | + - 데이터베이스를 분리함으로써 동시에 사용할 수 있는 커넥션 수를 늘릴 수 있다 |
| 21 | +- 확장성 |
| 22 | + - 서비스 응답 시간을 일정하게 유지하고, 요청량에 따라 서비스 규모를 늘리는 능력 |
| 23 | + - 하나의 데이터베이스를 여러 서비스가 바라볼 경우, 커넥션 뿐만 아니라 처리량 부하도 심각해진다 |
| 24 | + - 따라서 서비스 확장을 위해서는 데이터베이스 확장을 통해 처리량을 분산시키는것이 좋음 |
| 25 | +- 내고장성 |
| 26 | + - 여러 서비스가 하나의 데이터베이스를 공유할 경우, 장애가 해당 데이터베이스에만 발생하게 됨 |
| 27 | + - 내고장성: 하나의 서비스나 데이터베이스가 고장나도, 다른 부분은 중단없이 가동시킬 수 있는 능력 |
| 28 | + - 데이터베이스를 여러 개 두어 하나의 데이터베이스가 망가져도 다른 서비스가 문제없이 동작할수 있도록 하는게 좋다 |
| 29 | +- 아키텍처 퀀텀 |
| 30 | + - 어떤 경우에 데이터베이스를 분해하는 게 좋을지 알려주는 길잡이 |
| 31 | + - 퀀텀 단위로 데이터베이스를 쪼개면 독립적인 서비스로 분리가 가능 |
| 32 | +- 데이터베이스 타입 최적화 |
| 33 | + - 데이터 처리 방식에 따른 분리 |
| 34 | + |
| 35 | +### 데이터 통합인 |
| 36 | + |
| 37 | +- 데이터 통합 이유 (언제 합쳐야할까?) |
| 38 | +- 데이터 관계 |
| 39 | + - 데이터베이스 테이블간에도 커플링이 발생할 수 있음 |
| 40 | + - 외래 키를 통한 연결, 저장 프로시저 등 |
| 41 | + - 데이터베이스 분해를 통해 내고장성을 높일지, 통합을 통해 테이블 간 관계를 유지하는게 나을지 고민해야 함 |
| 42 | +- 데이터베이스 트랜잭션 |
| 43 | + - 서로 다른 테이블에서 발생한 에러는 같은 트랜잭션으로 묶을 수 없기 때문에 데이터의 일관성과 무결성을 보장할 수 없음 |
| 44 | + |
| 45 | +### 모놀리식 데이터 분해 |
0 commit comments