brunch

상태 관리에 대한 이해가 필요한 비대칭 분산 시스템

어떻게 하면 모델링을 잘할 수 있을까?

by 안영회 습작

UML의 꽃은 상태도라고 생각합니다만 실전에서 사용하는 분은 매우 드문 현실입니다.


아마 그 이유는 관계형 데이터베이스를 만들어 전 세계에 납품한 거대 기업이 상태 관리의 대부분을 지배했기 때문이 아닐까 싶습니다. 개발자들은 그저 트랜젝션 관리만 잘하면 될 뿐, 상태 관리는 굳이 신경 쓸 필요가 없던 것이었죠.


상태 관리에 대한 이해가 필요한 경우

예를 들어 MSA를 도입할 경우 복수의 데이터베이스 사이에서 데이터 일관성을 맞추는 경우가 하나의 예가 될 수 있습니다. ByteByteGo의 잘 정리된 문서를 보면 다음 세 가지 경우에 대해 질문을 던지면 상태도를 그려 보는 일이 유익할 듯합니다. (해 보지는 않았지만)

Duplicate or Lost Data

Network Delays

Concurrency Issues

그리고 도식화된 솔루션을 제시하는데, 한번 살펴볼까요? 동기와 비동기는 개발자 다수에게 익숙한 이분법입니다. 하지만, 어떤 방식을 택하든 두 서비스 사이에 데이터가 일치하거나 불일치하는 상태를 관리할 수 있는 방법과 주체는 필요하죠.


Choreography 패턴 vs. Orchestration 패턴

이어서 마이크로서비스 아키텍처에서 두 가지 핵심 패턴인 Choreography(코레오그래피)Orchestration(오케스트레이션) 대비가 있습니다.

이들의 차이에 대해서는 퍼플렉시티에 물어서 얻은 표를 인용하는 것으로 설명을 대신합니다.


CQRS 패턴과 CDC 구현체

한편, 수정과 조회의 비대칭적인 특성을 반영해 명령(Command)조회(Query)로 메시지 유형을 대별하여 처리하는 패턴을 CQRS라고 합니다. 이와 다르게 서로 다른 데이터베이스 사이에서 규칙에 의해 데이터 복제를 조밀하게 처리해 주는 CDC 기술도 있습니다.

CDC는 쓰임새 관저에서 보면 과거부터 알음알이 방식으로 데이터를 복제하는 이른바 '배치 프로그램'을 대체하는 기술이라고 볼 수도 있습니다.


지난 어떻게 하면 모델링을 잘할 수 있을까? 연재

(14회 이후 링크만 표시합니다.)

14. 상태가 꽃이라면 왜 Stateless를 권하는가?

15. 모델링 초보자의 그림과 기능이 형식을 정한다는 FFF

16. 현상을 개념으로 포착한다

17. 그때그때 그려서 쓰는 모델링

18. 모델링을 계속하려면 어떻게 직무 환경을 설계해야 할까

19. 나는 프로그래밍에 인공 지능 역할을 이렇게 보고 있어요

20. 다른 맥락에서 글을 보다가 생각을 정제하여 문제 찾기

21. 모델링과 인터페이스의 상관관계

22. 인터페이스는 왜 모델링의 핵심 개념인가?

23. 인터페이스 기반 프로그래밍과 역할로 추려 보기

24. 관계(關係)라는 말과 연관(聯關)이라는 말의 차이

25. 의존Dependency와 연관을 잘 쓰기

26. 모듈화: 다시 쓰는 동시에 유연성을 줄 수 있나?

27. 자기 조직화를 소프트웨어에 구현할 수 있는가?

28. UML 혹은 객체지향 관계 중 합성과 집합의 차이

keyword
작가의 이전글생각대로 되지 않아도 생명현상은 아무런 문제가 없다