Event-Bus패턴이란?(Client-Server패턴과 비교)
Event-Bus패턴이란 이벤트를 비동기식 호출을 사용해 전달하고 처리하는 패턴이다.
MSA에서 Event-Bus패턴을 사용하는 이유
탄력성이 높은 클라우드 플랫폼 환경에서 서비스가 다운되거나 시스템을 더 확장해야 할 때 사용할 수 있는 효과적인 방법들을 Event-Bus패턴이 제공하기 때문이다.
Event-Bus패턴과 Client-Server패턴의 비교
- 장점
- 비동기 처리 방식으로 인해 많은 요청이 발생할 경우 동기 방식에 비해 병목현상이 줄어든다.
- 클라이언트-서버 패턴에서 동기식 방식으로 구현했을 경우, 서버에서 응답이 올 때 까지 클라이언트가 대기하기 때문에 많은 요청이 들어올 경우 병목현상으로 인해 응답이 지연될 수 있지만, Event-Bus패턴은 큐에 넣어놓고 어느 시점에 가져가서 처리하는지 보장하지 않으며 언젠가는 큐에 넣은 메시지가 처리될 것이라고 생각하는 방식이다. 따라서, 그 시간 동안 다른 일을 할 수 있으므로 자원을 효율적으로 사용해 성능이 좋아질 수 있다.
- Component간 느슨한 결합으로 인해 개발복잡도가 감소하고 변경이 쉽다.
- Event-Bus 패턴에서 Component간 Event를 전달할 때 Event를 전달하는 Component는 응답 메시지의 규약을 알 필요가 없다. 이는, 응답 메시지의 규약을 알아야 하는 클라이언트-서버 패턴과의 차이점이다.
- 단점
- Component간 느슨한 결합으로 인해 클라이언트가 오류를 알 수 없다.(완결성 보장X)
- Event-Bus 패턴에서 Component간 Event를 전달할 때 Event를 전달하는 Component는 응답 메시지의 규약을 알 필요가 없음을 확인할 수 있었다. 이는 앞에서 알아봤던 장점이 될 수 있지만, 단점이 될 수도 있다. 예를 들어 클라이언트-서버 패턴에서는 서버에서 오류가 나면 클라이언트로 오류가 전달되지만 Event-Bus 패턴에서는 Component가 Event를 전달하고 끝이기 때문에 클라이언트가 오류를 알 수 없다.