분산 시스템의 안정성을 위한 핵심 요소인 서킷 브레이커와 동시성 제한기는 서비스 부하와 용량 변화에 따라 지속적인 설정 조정이 필요합니다. 하지만 이러한 수동 튜닝은 비효율적이고 오류를 유발할 수 있는데, 최근 Go 언어용으로 공개된 'Levee'는 이러한 문제를 해결하기 위해 스스로 최적화되는 기능을 제공합니다. Levee는 서비스의 성공률 목표와 타임아웃만 설정하면, 실시간으로 워크로드 성능을 모니터링하며 최적의 운영 매개변수를 자동으로 조정합니다.
Levee는 넷플릭스의 Hystrix에서 영감을 받아 개발되었으며, 인메모리(in-process) 방식으로 작동하여 외부 의존성 없이 독립적으로 운영됩니다. 초당 수백만 건의 요청을 처리할 수 있는 고성능을 자랑하면서도, 메모리 오버헤드는 304바이트에 불과해 고성능·저지연 서비스에 적합합니다. 특히, 요청(Requests per Second), 오류율(Error Rate), 응답 시간(Duration) 등 이른바 RED 지표와 동시 처리량(in-flight concurrents)을 지속적으로 감시하여 통계적 분석을 통해 최적의 설정을 찾아냅니다.
이러한 자율 튜닝 기능은 서비스 운영자가 수동으로 매개변수를 조정하는 데 드는 시간과 노력을 크게 줄여줍니다. 또한, 과도하게 보수적이거나 너무 느슨한 설정으로 인해 발생할 수 있는 불필요한 서비스 거부나 연쇄 장애를 방지하여 시스템의 전반적인 복원력(resiliency)을 향상시킵니다. Levee는 분산 서비스 메시(service mesh) 환경에서 각 노드에 개별적으로 적용되어, 중앙 집중식 설정 없이도 분산된 안정성 이점을 제공하며, 복잡한 YAML 설정 관리의 부담을 덜어주는 효과도 기대할 수 있습니다.