4.1.1 성능
- 프로세스 내 호출
- 기본 컴파일러와 런타임은 호출에 있어서 전체 호스트 최적화를 수행 가능
- 프로세스 간 호출
- 패킷을 전송하기 때문에 최적화가 불가
- 프로세스 내 호출에 비해 오버헤드가 클 것으로 예상되지만, 확실히 측정 가능
- 데이터 센터 안에서 단일 패킷 왕복 시간 측정
- API 호출은 다시
- API 설계는 신중해야 한다.
- 프로세스 내부 호출
- 이를 테면, 매개변수 전달 시 포인터를 전달
- 전달 시 데이터를 복사하려고 더 많은 메모리 할당이 필요 없음
- 프로세스 간 호출 (네트워크)
- 데이터 전송을 위해 특정 형태로 직렬화 및 역직렬화 수행
- 페이로드 크기에 대해 주의해야
- 데이터 송수신양을 최대한 줄이기
- 파일 시스템으로 내려 파일 위치에 대한 참조 대신 전달
- 프로세스 내부 호출
- 추상화, But 내부 사정을 충분히 고려하자
- 항상 서비스 간 상호작용에 의해 발생하는 병목 현상을 고려해야
4.1.2 인터페이스 변경
- 프로세스 내부
- 내부 인터페이스 수정은 간단함.
- 프로세스 외부
- 하위 호환성을 충분히 고려, 깨트릴 경우 둘 다 새 인터페이스로 업데이트
- Lockstep Deployment
4.1.3 에러 처리
- 프로세스 내부
- 에러 처리는 매우 직관적
- 전반적으로 에러는 결정적
- 분산 시스템
- 통제 불가능한 에러에 취약
- 네트워크 시간 초과
- 네트워크 연결 끊김
- 과도한 메모리 사용
- 자연재해
- 적절한 조치를 취할 수 있으려면 에러를 반환하기 위해 더 풍부한 의미 체계를 갖추어야
- HTTP : 이를 적절히 적용한 프로토콜
- 통제 불가능한 에러에 취약
4.2 프로세스간통신을위한기술: 다양한선택
- 프로세스 간 통신에 사용하는 기술의 범위는 방대하다
- 해결하고자 하는 문제에 적합한 기술을 선택하라
- 먼저 통신 방식을 정리 후, 적합한 기술을 선택
4.3 마이크로서비스 통신방식
- 운영하는 팀의 문맥을 충분히 이해하고 많은 시간을 할애한 후 통신 방식을 결정하라
- 고려해야 할 목록
- 신뢰 가능한 통신
- 허용 가능한 지연 시간
- 통신량에 대한 요구 사항
- 요청 및 응답 방식
- 동기 및 비동기 구현 모두 가용 시 비동기로 구현
- 이벤트 기반 협업 방식
- 비동기 논블로킹 방식으로 구현
- 고려해야 할 목록
- 상호 작용에 따라 다양한 협업 형태가 있다.
반응형
'🏛️ Architecture' 카테고리의 다른 글
마이크로서비스 아키텍처 구축 CH.5 마이크로서비스의 통신 구현 (0) | 2023.12.16 |
---|---|
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 11장 뉴스 피드 시스템 설계 (0) | 2023.03.19 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 10장 알림 시스템 설계 (0) | 2023.03.18 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 9장 웹 크롤러 설계 (3) | 2023.03.12 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] Chapter 8 URL 단축기 설계 (2) | 2023.03.07 |