작성
·
380
0
답변 1
0
안녕하세요, 이도원입니다.
마이크로서비스 아키텍처를 이용한 애플리케이션에서의 핵심은 데이터베이스라고 생각합니다. 각각 분리된 서비스 들 간에 데이터의 공유를 어떻게 처리할 것인지에 따라 설계 및 개발 방법이 달라진다고 봅니다. 기존의 모놀리스 방식으로 마이크로서비스 방식으로 전환하는 데에 어려움이 있는 상당수의 이유가 여기에 있다고 생각됩니다.
질문에 답변을 드리면,
1. 카프카 커넥터의 주요 용도는 데이터의 이관이라기 보다는 데이터 소스를 토픽으로 이전하고, 토픽 데이터를 타켓 서비스 쪽으로 전달하는 데에 사용됩니다. 이러한 방식이 데이터 허브의 표준이라기 보다는 데이터 스트리밍을 하는 용도로 MQ가 많이 사용되며, 그중 카프카가 성능상으로도 좋다고 알려져 있습니다.
https://stackoverflow.com/questions/42151544/when-to-use-rabbitmq-over-kafka
https://www.upsolver.com/blog/kafka-versus-rabbitmq-architecture-performance-use-case
2. CQRS나 SAGA 패턴을 구현하는데 있어서 카프카는 필수는 아닙니다. 이벤트 소싱 처리를 위해 Axon Framework를 사용하실 수 있습니다. 다음 강의에서 다룰 예정입니다.
https://github.com/AxonFramework/AxonFramework
3. 저도 아래 사이트에서 많이 참조하고 공부하고 있습니다. 확인해 보시면 좋을 것 같습니다 .
https://www.baeldung.com/cs/saga-pattern-microservices
4. 데이터 동기화를 위해 고려해야 할 사항은 한두가지가 아닙니다. 기존 RDB에서 처리해 주었던 트랜잭션 문제나 보상에 대한 문제를 직접 구현하시거나, 시스템을 이용해야 합니다. 카프라를 이용한 본 예제는 간단한 부분만 다룬거라서, 데이터의 사용량이 많거나 트랜잭션이 빈번하게 발생하는 경우라면, 거기에 맞는 서비스 설계를 다시 하는게 필요할 거 같습니다. SAGA 패턴이나 이벤트 소싱 패턴도 한 예일 것 같습니다.
감사합니다.