기타

[MSA] 시간적 결합

Nhahan 2025. 5. 7. 17:20

시간적 결합은 한 모듈의 올바른 실행이 다른 모듈에 의해 수행되는 작업의 타이밍이나 순서에 의존하는 런타임 상황을 의미한다. 특히 분산 환경(ex. MSA)에서 동기식 호출을 사용할 때 주로 발생하는 문제이다.

 

동기식 통신 방식에서는 호출하는 서비스가 호출된 서비스로부터 응답을 받을 때까지 대기해야 하므로, 두 서비스는 시간적으로 강하게 묶이게 된다. 만약 호출된 서비스가 느리거나 사용할 수 없는 상태라면, 호출한 서비스도 영향을 받아 성능이 저하되거나 장애가 발생할 수 있다. 그리고 만약 응답이 오지 않는다면 호출한 서비스도 대기 상태에 빠지거나 타임아웃이 될 수 있어 시스템 취약성이 증가한다. 서비스 간의 동기적 대기는 전체 시스템의 응답 시간을 늘리고 처리량을 감소시킬 수 있으며, 시간적으로 강하게 경합된 서비스들은 독립적으로 변경하거나 배포하기 어렵다.

 

이를 완화하기 위해

1. 비동기 통신: 메시지 큐 등을 활용한 비동기 통신으로 서비스 간의 시간적 의존성을 낮추거나

2. 캐싱: 캐시를 활용하여 시간적 결합을 피하거나

3. 회복탄력성 설계: 서킷 브레이커, 타임아웃 설정 등으로 시간적 결합으로 인한 문제를 완화할 수 있다.