분산 시스템은 근본적으로 다르다
언제나 문제는 분산 시스템에 익숙하지 않은 개발자가 내재하는 복잡성을 얼버무리고 넘어갈 때 발생한다. 이는 특히 RPC를 사용할 때 그런데, 분산 경험이 미숙한 사람들은 보통 모든 원격 호출이 인프로세스 호출처럼 쉽다고 생각하기 때문이다. 이런 가정은 단 하나의 시스템이나 그 컴포넌트가 단지 일시적으로라도 사용이 불가능해질 때 많은 수의 시스템이 걸쳐서 연쇄적인 실패를 야기할 수 있다. 그러므로 분산 시스템 내에서 작업하는 모든 개발자는 다음과 같은 분산 컴퓨팅 원칙을 따르는지에 성공 여부가 결정된다.
• 네트워크는 신뢰할 수 없다
• 언제나 지연이 있을 수 있고, 많을 수도 있다
• 대역폭은 무한하지 않다
• 네트워크가 안전하다고 가정하지 말라
• 네트워크의 위상(Topology)은 변환한다
• 정보와 정책은 다수의 관리자에 걸쳐 퍼져 있다
• 네트워크 전송은 비용이 든다
• 네트워크는 다양성을 갖고 있다
이를 원칙이라고 부른 이유는 반드시 해결해야하는 문제점이고 계획해야 하는 복잡성이지, 초보가 일반적으로 저지르는 실수는 아님을 강조하기 위해서다
- Implementing Domain-Driven Design, 반버논, p573~574
그러면 위의 분산 컴퓨팅의 위험을 회피하려면?
-> Event Driven Architecture
'MSA해설 > EDA' 카테고리의 다른 글
EDA로 가라 (0) | 2022.12.06 |
---|---|
Event Driven Architecture 정의 (0) | 2022.12.02 |
Batch? Event? (0) | 2022.11.10 |
실시간도 아니라는데 굳이 비동기 통신을 해야하나요? (0) | 2022.07.22 |
Domain Event, CQRS 적용 예 (배민) (0) | 2022.04.02 |