138
1
부
기초
이러한 몇 가지 차이점을 살펴보고, 이를 통해 마이크로서비스 간 상호작용에 대한 생각을 어
떻게 바꿀 수 있는지 알아본다.
4.1.14.1.1
성능 성능
프로세스 내 호출의 성능은 프로세스 간 호출의 성능과 기본적으로 차이가 있다. 프로세스 내
호출을 할 때, 기본 컴파일러와 런타임은 호출의 영향을 줄이려고 마치 처음에 호출이 없었던
것처럼 전체 호스트 최적화를 수행할 수 있다. 하지만 프로세스 간 호출에서는 이러한 최적화
가 불가능하며, 패킷을 전송해야 한다. 프로세스 간 호출의 오버헤드는 프로세스 내 호출의 오
버헤드에 비해 클 것으로 예상된다. 프로세스 간 호출의 오버헤드는 확실히 측정할 수 있는데,
예를 들면 데이터 센터 안에서 단일 패킷이 왕복하는 데 걸리는 시간을 밀리초 단위로 측정할
수 있지만 메서드 호출의 오버헤드는 걱정하지 않아도 될 만큼 작기 때문이다.
이 점은
API
를 다시 생각하도록 할 때가 많다. 프로세스 내부에서 적합한
API
가 프로세스 간
상황에서는 적합하지 않을 수 있다. 프로세스 내부의
API
경계 사이에서는 걱정 없이
1
,
000
번
의 호출을 할 수 있다. 두 마이크로서비스 사이에도
1
,
000
번의 네트워크 호출을 하는 게 좋을
까? 아마도 그렇지 않을 것이다.
메서드에 매개변수를 전달할 때 보통 전달할 데이터 구조체는 이동되지 않는다. 대신 메모리
위치에 대한 포인터를 전달할 가능성이 높다. 객체나 데이터 구조를 다른 메서드에 전달할 때
데이터를 복사하려고 더 많은 메모리를 할당할 필요는 ...