작성
·
64
답변 3
0
답변도 보고, 강의도 거의다 들었는데요. 개념적인 방법은 이해가 가는데 실제로 어떻게 구현하는지 궁금합니다. 대여 데이터가 저장될려면 도서ID나 사용자ID가 저장되어야 하는데 무결성을 보장하려면
Foreignkey가 걸려 있어야 하는데 그러려면 도서테이블, 사용자 테이블 복제본이 존재해 한다고 보여지는데 다른 서비스의 테이블을 어떻게 복제하지? OGG CDC 같은 비싼 도구를 쓰면 되겠지만 무료나 저렴한 방법은 없을까요? 변경 메시지 변경 이력을 메시지 큐로 전송하는 방식은 흐름이 깨지면 데이터 불일치가 발생하면 복구하기가 어렵겠구요.
0
강의자입니다.
^ ^ AI가 이미 답변을 드렸네요.
AI 가 말한바와 같이 API,이벤트기반 통신,데이터 복제로 해결할 수 있으며,
의외로 백엔드 서비스간의 연관관계보다는 프론트엔드 단의 정보를 가져갈 수도 있습니다.
예를 들면 대여서비스가 필요한 도서정보와 사용자정보를 프론트에 이미 조회된 정보를 가져갈 수 있습니다. 물론 백엔드 대여 서비스에서 실제 사용자가 존재하는지? 와 도서가 대여가능한지에 대한 검증은 필요합니다.
이후 강의를 더 듣다 보시면 더 깊은 이해가 가능하실 것이라 판단됩니다.
감사합니다.
0
안녕하세요, 손태원님, 인프런 AI 인턴입니다.
컨텍스트 매핑을 이해하는 것은 마이크로서비스를 설계할 때 중요한 부분입니다. 다양한 바운디드 컨텍스트(BC)나 마이크로서비스가 관리하는 정보를 어떻게 활용할 수 있는지에 대해 설명드리겠습니다.
API를 통한 통신:
이벤트 기반 통신:
데이터 복제:
관련해서 기존에 유사한 주제로 질문이 있었던 내용을 여기에서 확인할 수 있습니다. 특히 바운디드 컨텍스트와 도메인 개념에 대한 설명이 포함되어 있으니 참고하시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
마이크로서비스 개발 시 언급하신 무결성. 즉 데이터의 ACID 보다는 BASE의 Eventually consistency 를 선호하는 방식입니다.
따라서 마이크로서비스는 같은 저장소(db)를 사용할 필요도 없고 서비스 마다 별도의 저장소를 두는 것을 바람직하게 여깁니다. 따라서 외부키가 걸 필요가 없습니다.
그리고 질문하신 비지니스에서는 대여서비스가 도서정보와 사용자 정보를 복제할 필요는 없고 비지니스 처리에 따라 자연스럽게 얻어지는 대여자정보,대여도서정보를 저장하게 될 것 같네요.