Open Feign과 Apache Kafka 간의 특징과 장단점을 소개시켜드리기 위해 이 글을 작성합니다.
두 기술의 공통점
1. MSA 환경에서 서비스간의 통신이 가능하게 한다.
2. 1번에 의하여 테스트를 하기 매우 까다롭다.
Open Feign만의 특징
Kafka와 비교하여 가장 뚜렷한 특징은 Response가 있는겁니다.
A서비스가 B서비스로 통신을 보낼때, B서비스에서 다시 Response가 날아옵니다.
이 특징으로부터 오는 장단점이 있습니다.
장점: Response가 오기 때문에 검증적으로 확실하다
이유 : 응답이 성공적이면 로직을 처리하고, 응답이 오류가 오면 재시도나 에러처리를 유도 할 수 있음.
단점: 코스트 (비용)이 많이든다.
이유: 여기서 말하는 코스트는 개발자의 노력,시간 비용과, 서버 비용 모두 포함하는 말입니다.
Open Feign은 하나의 서비스에서 다른 하나의 서비스만 처리해주기 때문에,
다 대 다 서비스인 MSA환경에서 관리해줘야하는 OpenFeign의 수는 기하급수적으로 늘어날 가능성이 있습니다.
Apache kafka만의 특징
Kafka는 Open Feign과 다르게 Response가 없습니다.즉, 내가 요청을 보냈는데, 제대로 보내졌는지는 본인이 확인할 방도가 없습니다.
Kafka는 Producer서비스 에서 발행한 정보를 Consumer 서비스가 (Listen) 듣는 형식으로
일방적으로 데이터를 줍니다.
이 특징으로부터 오는 장단점 역시 소개해 드리겠습니다.
장점: OpenFeign과 달리 코스트가 쌉니다.
이유 : 양방향 통신보다 단방향 통신이 훨씬 서버측에 부담이 덜합니다.
게다가, 카프카는 Producer와 Consumer관계를 잘 설정하면, 1대 다 데이터 통신도 가능하게 합니다.
단점: Kafka를 너무 신뢰한다.
이유: Kafka 가 만약 요청을 보냈을때 서버가 죽어버리면??
이럴경우 DLT (Dead Letter Topic)으로 어느정도 에러처리가 가능하지만
역시 Kafka 에게 통신을 모두 일임하고 의존해야 합니다.
마무리
OpenFeign은 확실한 검증작업이 필요한곳을 적용,
그 외엔 Kafka로 데이터 통신을 적용 하는것이 바람직하다고 봅니다.