본문 바로가기

MSA (MicroServiceArchitecture)/MSA 개요 및 설계 관련

MSA에서 비동기 통신을 해야 하는 이유?

반응형

질문. 왜 비동기 통신을 통해서 의존성을 줄여야 하는가? 동기 통신 으로으로는 의존성을 줄일수 없나?

비동기 통신을 통해 의존성을 줄이는 이유는 다음과 같다.

  1. 성능 향상: 비동기 통신은 서비스가 응답을 기다리지 않고 다른 작업을 계속 수행할 수 있게 한다.
    이는 시스템의 전체 처리량을 증가시킨다.
  2. 확장성: 비동기 통신은 서비스 간의 결합도를 낮추어 각 서비스가 독립적으로 확장될 수 있게 한다.
  3. 내결함성: 비동기 메시징 시스템을 사용하면 한 서비스가 다운되더라도 메시지가 큐에 남아 있어 나중에 처리될 수 있다.
  4. 유연성: 비동기 통신은 서비스 간의 직접적인 호출을 줄여, 서비스의 변경이 다른 서비스에 미치는 영향을 최소화 한다.

동기 통신은 서비스 간의 강한 결합을 초래할 수 있으며, 한 서비스의 지연이 다른 서비스의 성능에 직접적인 영향을 미칠 수 있다.

동기 통신이 강한 결합을 초래하는 이유?

동기 통신은 요청을 보내고 응답을 받을 때까지 기다리는 방식이다. 이 방식은 다음과 같은 이유로 강한 결합을 초래할 수 있다:

  1. 시간적 결합: 요청을 보낸 후 응답을 받을 때까지 기다려야 하므로, 요청과 응답 사이에 시간적 결합이 발생한다. 이는 응답 시간이 길어질 경우 전체 시스템의 성능에 영향을 미칠 수 있다.
  2. 블로킹: 요청을 보내는 스레드가 응답을 받을 때까지 블로킹되므로, 다른 작업을 수행할 수 없다. 이는 시스템의 유연성을 저하시킨다.
  3. 에러 처리: 동기 통신에서 에러가 발생하면 즉시 처리해야 하므로, 에러 처리 로직이 복잡해질 수 있다.

동기 통신의 장단점

장점:

  • 코드가 직관적이고 이해하기 쉽다.
  • 디버깅이 상대적으로 간단 하다.

단점:

  • 요청을 기다리는 동안 다른 작업을 할 수 없다.
  • 응답 시간이 길어지면 전체 프로그램의 성능이 저하될 수 있다.
  • 강한 결합을 초래할 수 있다.

비동기 통신의 장단점

장점:

  • 요청을 기다리는 동안 다른 작업을 계속할 수 있어 효율적 이다.
  • 응답 시간이 길어져도 전체 프로그램의 성능에 큰 영향을 주지 않는다.
  • 느슨한 결합을 유지할 수 있다.

단점:

  • 코드가 복잡해질 수 있다.
  • 디버깅이 상대적으로 어렵다.

- 끝 -

반응형