본문 바로가기

좋아하는 것_매직IT/10.microservice

9.마이크로서비스, 비동기 통신이란?

반응형

비동기 마이크로서비스

  •  동기 마이크로서비스 란?
    • 특정 마이크로서비스가 다른 마이크로서비스에 요청을 보내면, 요청이 처리돼 해당 요청에 대한 결과를 얻을 때까지 기다린다면 동기라함.
  • 비동기 마이크로서비스 란?
    • 특정 마이크로서비스는 A 요청을 처리하는 동안 다른 마이크로서비스에 요청하지 않거나 B 요청을 처리하는 동안 다른 마이크로서비스에 요청을 보내지만 결과를 기다리지 않으면 비동기라고 함.
  • 경우의 수
    • 1.특정 마이크로서비스는 요청을 처리하는 동안 다른 마이크로서비스와 전혀 통신 안함.
      • 즉, 다른 시점에 다른 시스템과 통신함.
    • 2.특정 마이크로서비스가 다른 마이크로서비스로 요청을 보냇지만, 응답을 기다리지 않음.

 

통신 프로토콜

  • 동기
    • 동기통신의 경우 요청받는 서버는 각 요청에 응답해야 함.
      • ex) REST, HTTP 
    • 요청은 상태 코드를 포함하고 추가 데이터를 포함할 수 있는 응답으로 연결됨.
    • 단, 동기 프로토콜을 사용해 비동기 통신을 구현할 수 도 있음.
  • 비동기
    • 비동기 통신 프로토콜을 사용해 비동기 통신을 구현하는 것이 더 자연스러움.
    • 비동기 통신 프로토콜은 메시지를 보내고 응답을 받지 않음.
    • 메시징 시스템은 비동기 통신 접근 방법을 구현함.
      • ex) 카프카 

      

REST 와 메시징의 차이점 

  • 참고페이지 : https://www.slideshare.net/ewolff/rest-vs-messaging-for-microservices
  • 두 기술 모두 요청 및 응답과 같은 동기 통신을 구현하기 위해 사용될 수 있음.
  • 그러나, 중요한점은,
    • 실행 후 무시(Fire-and-Forget)    
    • 이벤트와 같은 비동기 통신을 구현하는 데 사용될 수 있음. 

결론

  • 비동기 통신의 주요 장점
    • 복원력과 낮은 결합도
  • 위의 장점으로, 마이크로서비스간의 동기 통신보다 우선시해야 함. 
    • 비동기 통신은 마이크로서비스 아키텍처의 근본적인 문제를 우아하게 해결할 수 있는 잠재력을 가짐.
  • 비동기 통신을 사용하지 않는 유일한 이유는 비일관성임.
  • 기술적으로 올바른 결정을 내리기 위해서는 요구사항이 무엇인지 정확히 알아야함.
    • 동기와 비동기를 결정해야하기 때문에..   

 참고) Fire-and-Forget 이란?
   - 표적을 향해 미사일을 발사(Fire)하면 발사자는 미사일이 자동으로 목적을 향해 명중되는 것을 알고 있기에 망각(Forget)해도 된다는 뜻,
   - 즉, 이벤트를 한 번 전달하면 이후 과정을 신경쓰지 않아도 잘 전달됨을 의미함.   

728x90
300x250