파비의 매일매일 공부기록

파이썬으로 살펴보는 아키텍처 패턴 - 12장 #3 본문

Study/Python

파이썬으로 살펴보는 아키텍처 패턴 - 12장 #3

fabichoi 2021. 10. 31. 23:30

12.7 읽기 연산에 최적화되지 않은 도메인 모델
- 도메인 모델을 만드는 데 든 노력은 주로 쓰기 연산임.
- 읽기를 위한 요구 사항은 개념적으로 도메인 모델에 대한 요구사항과 상당히 다름.

12.8 '명확한' 대안 2: ORM 사용하기
- SQL을 그냥 사용하는 코드보다 실제로 더 쉽게 이해하고 작성 가능.
- ORM을 사용하려면 연습 및 문서를 많이 살펴봐야 하며 몇 가지 성능상의 문제를 야기함.

12.9 SELECT N+1과 다른 고려 사항
- ORM에서 일반적인 성능 문제라고 할 수 있는 SELECT N+1 문제.
- 객체 리스트를 가져올 때 ORM은 보통 필요한 모든 객체의 ID를 가져오는 질의를 먼저 수행.
- 그 후 각 객체의 애트리뷰트를 얻기 위한 개별 질의를 수행.
- 특히 객체에 외래 키 관계가 많은 경우 이런 일이 더 자주 발생.
- 정규화되지 않은 뷰를 추가하거나, 읽기 전용 복사본을 만들거나 캐시 계층을 추가하여 연산의 속도를 최적화.

12.10 이제는 상어를 완전히 뛰어넘을 때이다
- 여러 클라이언트가 동시에 데이터를 변경하면 이상한 경합 조건이 발생.
- 데이터를 읽을 때는 동시에 연산을 실행하는 클라이언트 수에 제한이 없음. 따라서 읽기 전용 저장소는 수평 규모 확장 가능.
- DB 기능을 활용하는 대신 이벤트 기반 아키텍처를 재사용하는 방법에 대해 안내.

12.11 읽기 모델 구현을 변경하기 쉽다
- 완전히 다른 저장소 엔진인 레디스를 사용해 읽기 모델을 구축하기로 결정했을 때 발생하는 예제를 소개.

 

반응형
Comments