작성
·
304
2
kafka를 통한 호출과
마이크로 서비스간의 직접호출 이렇게 2개를 실습한다고 하셨는데
실무에서는 둘중 어느것을 사용하나요?
답변 2
8
안녕하세요, 이도원입니다.
마이크로서비스간의 호출은 RESTful API나 gRPC, GraphQL 등의 방식이 있습니다. 마이크로서비스의 구성은 독립적으로 실행가능하다는 것을 전제하는 경우가 많기 때문에, 서비스 간에는 일반적인 함수 호출이 아닌 위와 같은 방식으로 사용합니다.
그리고, 강의에서 말씀드렸던 Kafka에 대한 사용은 서비스간의 호출에도 사용될 수 있으며, 데이터 동기화를 위해 사용될 수 있습니다. 한쪽 서비스에서 업데이트 된 데이터를 다른 쪽 서비스와 동기화 하기 위한 목적이며, 데이터를 받는 측의 상태를 신경 쓰지 않고, 바로 자신의 업무를 이어야 할 수 있다는 장점을 가지고 있습니다. 물론 Kafka와 같은 메시지 큐잉 시스템을 데이터 공유의 목적이 외에, 서비스를 호출하기 위한 용도로 사용할 수도 있습니다. 서비스를 사용한다는 것은 특정한 데이터를 전달하여 사용할 수 있기 때문에, 필요한 데이터를 기본적인 서비스에서가 아닌 다른 인프라를 통해 전달하게 되면, 업무의 부하를 분산할 수 있고, Kafka를 통해 전달 받는 서비스 역시 같은 구조나 프로그래밍 언어로 되어 있지 않아도, 데이터를 전달 받도록 구현할 수 있습니다.
질문하셨던, 내용으로 돌아가서 실무에서 어떤한 방식으로 구현된다는 질문보다는 어떤 도메인에서 어떤 용도로 사용되는지에 따라 선택하시면 좋을 것 같습니다.
감사합니다.
7
강사님 답변은 아니지만 제가 실무에서 활용하고 있는 상황을 공유해드리면..
트랜잭션 보장이 매우 중요하지 않은 경우는 kafka를 통해 서비스간을 호출하고있구요.
결제와 같이 트랜잭션 보장이 매우 중요한 경우 feign client 를 통해 직접 호출하고 예외 발생 시
그에 따른 보상 api를 호출하고 있습니다.