현재 채팅서버는 카프카를 통해 채팅을 구현하였다. 카프카를 통해 채팅 서버가 scale out 하더라도 여러 채팅 서버간 분산되어 있는 메시지를 관리하기 위해서 사용하게 되었다. 하지만 고려 못한 부분이 존재했다. 카프카의 큰 이점 중 하나는 여러 파티션으로 나누어 병렬처리할 수 있다는 점이다. 즉, 많은 메시지가 쌓였을 때, 시스템 리소스(CPU, RAM 등)또는 성능에 따라 Consumer 수를 조정하여 파티션별로 데이터를 읽어오는 병렬처리가 가능하다. 하지만, Kafka는 파티션 내에서만 순서 보장이 될 뿐, 여러 파티션에 대해 병렬 처리하는 경우 순서가 보장될 수 없다. 따라서 이에 대한 해결방법을 고민하였고, 결과적으로 파티션별로 특정 채팅방을 할당하는 방식을 사용하게 되었다. 접근 방법 파티션..
WebRTC 프로젝트에서 마이크로서비스 아키텍처 중 채팅 서비스 구현 중 문제가 발생했다. Kafka에 데이터를 넣었으나 직렬화 관련 에러였다. 문제 원인 파악 먼저, 아래 에러 로그에서 직렬화 중 Deserializer에서 문제가 발생했다. 카프카에 객체 클래스를 전송했고 org.springframework.kafka.support.serializer.JsonDeserializer 를 사용하여 역직렬화함을 확인했다. java.lang.IllegalStateException: This error handler cannot process 'SerializationException's directly; please consider configuring an 'ErrorHandlingDeserializer' ..