파비의 매일매일 공부기록

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

Study/Python

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

fabichoi 2021. 10. 27. 23:30

11.2 분산 시스템에서 오류 처리하기
- '모든 것이 망가진다'는 소프트웨어 엔지니어링에서 일반적인 규칙. 
- 두 가지를 함께 바꿔야 하는 경우를 결합됐다고 함.
- 시스템의 모든 부분이 동시에 제대로 작동할 때만 정상으로 작동하는 경우를 시간적 결합이라고 함.
- 시스템이 커지면 시스템 부품 중 일부의 성능이 나빠질 확률이 지수적으로 높아짐.

11.3 대안: 비동기 메시징을 사용한 시간적 결합
- 적절한 결합을 얻기 위해서는 명사가 아닌 동사로 생각해야 함.
- 도메인 모델은 비즈니스 프로세스를 모델링하기 위함이며 어떤 물건에 대한 정적인 데이터 모델이 아닌 동사에 대한 모델임.
- 사물을 각 행위에 대해 구분하면 어떤 시스템이 어떤 일을 하는지에 대해 생각하기가 쉬움.
- 애그리게이트와 비슷하게 마이크로 서비스도 일관성 경계여야 함.
- 두 서비스 사이에는 최종 일관성을 받아들일 수 있고, 동기화된 호출에 의존하지 않아도 됨.
- 각 서비스는 외부 세계에서 커맨드를 받고 결과를 저장하기 위해 이벤트를 발생시킴.
- 이런 이벤트를 리슨 하는 다른 서비스는 워크플로의 다음 단계를 촉발함.
- 각 부분이 서로 독립적으로 실패할 수 있으면 잘못된 동작이 발생했을 때 처리하기가 더 쉬움.
- 시스템 사이의 결합 강도를 감소시키면 처리 과정을 이루는 연산 순서를 바꾸거나 새로운 단계를 도입하고 싶을 때 이를 지역적으로 할 수 있음.

반응형
Comments