여러 개의 마이크로서비스로 분리하면서 각 서비스 사이의 네트워크 연동 필요성이 증가했다.

Runnerly 애플리케이션은 달리기 정보와 대회 목록을 데이터베이스에서 가져와 메인 웹 뷰에 보여준다. 이 목록은 즉시 보여주는 것이 좋으므로 동기 방식으로 호출하는 반면, 일부 기능은 Celery 워커로 백그라운드에서 작업을 처리하며 Redis 브로커를 통해 비동기로 명령을 받아 처리한다.

동기와 비동기를 같이 사용하는 것이 유용할 때도 있다. 가령, 기존 훈련 계획 정보를 보여주는 동안 사용자가 새 훈련 계획을 선택하면 백그라운드에서 새로운 달리기 목록을 만들 수 있다.

향후 버전에서는 어떤 서비스와 이벤트가 다른 서비스들의 연쇄적인 반응을 유발하면서 서비스 간 연동이 더 빈번해질 수 있다. 따라서 비동기 메시지를 통해 시스템을 느슨하게 연결하는 것은 이러한 상호 의존성을 방지하는 데 매우 유용하다.

종합하면 서비스 간의 연동은 동기식, 비동기식 방법 모두 필요하다. 이러한 연동은 효과적으로 이루어저야 하며, 문제가 생겼을 때를 대비한 계획 역시 필요하다.

네트워크 연동이 늘어나면서 비롯되는 또 다른 문제는 테스트다. 이렇게 격리된 환경의 마이크로서비스를 테스트할 수 있을까?

5장에서 다루는 내용은 다음과 같다.

동기식 호출