본문 바로가기
🏛️ Architecture

마이크로서비스 아키텍처 구축 CH.4 마이크로서비스 통신 방식

by GroovyArea 2023. 11. 4.

4.1.1 성능

  • 프로세스 내 호출
    • 기본 컴파일러와 런타임은 호출에 있어서 전체 호스트 최적화를 수행 가능
  • 프로세스 간 호출
    • 패킷을 전송하기 때문에 최적화가 불가
    • 프로세스 내 호출에 비해 오버헤드가 클 것으로 예상되지만, 확실히 측정 가능
      • 데이터 센터 안에서 단일 패킷 왕복 시간 측정
    • API 호출은 다시
  • API 설계는 신중해야 한다.
    • 프로세스 내부 호출
      • 이를 테면, 매개변수 전달 시 포인터를 전달
      • 전달 시 데이터를 복사하려고 더 많은 메모리 할당이 필요 없음
    • 프로세스 간 호출 (네트워크)
      • 데이터 전송을 위해 특정 형태로 직렬화 및 역직렬화 수행
      • 페이로드 크기에 대해 주의해야
        • 데이터 송수신양을 최대한 줄이기
        • 파일 시스템으로 내려 파일 위치에 대한 참조 대신 전달
  • 추상화, But 내부 사정을 충분히 고려하자
    • 항상 서비스 간 상호작용에 의해 발생하는 병목 현상을 고려해야

4.1.2 인터페이스 변경

  • 프로세스 내부
    • 내부 인터페이스 수정은 간단함.
  • 프로세스 외부
    • 하위 호환성을 충분히 고려, 깨트릴 경우 둘 다 새 인터페이스로 업데이트
    • Lockstep Deployment

4.1.3 에러 처리

  • 프로세스 내부
    • 에러 처리는 매우 직관적
    • 전반적으로 에러는 결정적
  • 분산 시스템
    • 통제 불가능한 에러에 취약
      • 네트워크 시간 초과
      • 네트워크 연결 끊김
      • 과도한 메모리 사용
      • 자연재해
    • 적절한 조치를 취할 수 있으려면 에러를 반환하기 위해 더 풍부한 의미 체계를 갖추어야
    • HTTP : 이를 적절히 적용한 프로토콜

4.2 프로세스간통신을위한기술: 다양한선택

  • 프로세스 간 통신에 사용하는 기술의 범위는 방대하다
  • 해결하고자 하는 문제에 적합한 기술을 선택하라
  • 먼저 통신 방식을 정리 후, 적합한 기술을 선택

4.3 마이크로서비스 통신방식

  • 운영하는 팀의 문맥을 충분히 이해하고 많은 시간을 할애한 후 통신 방식을 결정하라
    • 고려해야 할 목록
      • 신뢰 가능한 통신
      • 허용 가능한 지연 시간
      • 통신량에 대한 요구 사항
    • 요청 및 응답 방식
      • 동기 및 비동기 구현 모두 가용 시 비동기로 구현
    • 이벤트 기반 협업 방식
      • 비동기 논블로킹 방식으로 구현
  • 상호 작용에 따라 다양한 협업 형태가 있다.
반응형