GN⁺: Hydro: Rust용 분산 프로그래밍 프레임워크
(hydro.run)-
소개
- Hydro는 Rust를 위한 고수준 분산 프로그래밍 프레임워크임.
- Hydro는 확장 가능한 분산 서비스를 빠르게 작성할 수 있도록 도와주며, Rust가 메모리 안전성을 보장하는 것처럼 분산 안전성을 보장함.
- 테스트 모드나 배포 모드에서 분산 프로그램을 쉽게 실행할 수 있도록 지원함.
-
Hydro의 특징
- Hydro는 고성능 단일 스레드 DFIR 런타임으로 구동되는 분산 데이터 흐름 언어임.
- 전통적인 아키텍처인 액터나 RPC와 달리, 여러 위치에 걸쳐 계산을 설명할 수 있는 코레오그래픽 API를 제공함.
- Hydro Deploy와 통합되어 로컬이나 클라우드에서 분산 Hydro 프로그램을 쉽게 배포하고 실행할 수 있음.
-
컴파일 및 배포
- Hydro는 두 단계의 컴파일 접근 방식을 사용함.
- Hydro 프로그램은 표준 Rust 프로그램으로, 개발자의 노트북에서 _배포 계획_을 생성함.
- 이 계획은 DFIR로 컴파일되어 분산 시스템의 각 기계에 대한 개별 바이너리를 생성함.
- 생성된 계획과 클라우드 자원 사양을 사용하여 클라우드에 배포됨.
-
활용 사례
- Hydro는 2단계 커밋 및 Paxos와 같은 고성능 분산 시스템 구현에 사용됨.
- 재사용 가능한 구성 요소로 이러한 프로토콜을 제공하는 분산 시스템 표준 라이브러리를 개발 중임.
-
주의사항
- Hydro의 문서는 아직 작업 중이며, 질문이나 버그가 있을 경우 Hydro GitHub 저장소에 이슈를 제기할 것을 권장함.
Hacker News 의견
- 유튜브에 Hydro 프로젝트에 대한 좋은 강연이 있음
- DFIR에 중점을 둔 내용임
- 실제 적용 사례가 있으면 이해하는 데 도움이 될 것 같음
- 중간 언어와 자체 런타임이 있다면 Rust의 장점을 잃는 것인지 궁금함
- Rust 바이너리를 일관되고 기능적인 분산 시스템으로 조정하는 언어를 기대했으나, DFIR을 작성하는 것처럼 보임
- 이 프로젝트가 정말 흥미로움
- 이 분야에 익숙한 사람이 이전 사례를 알려줄 수 있는지 궁금함
- 다른 언어로 유사한 프레임워크를 구축한 사람들이 있는지 궁금함
- 데이터 흐름에 대해 작업한 사람들이 있으며, Materialize가 매우 멋지다고 생각했음
- Kafka Streams를 사용한 경험이 있으며, 이를 통합하는 프레임워크가 필요하다고 생각했음
- 노력은 좋지만 Rust 생태계에 "akka.rs"가 들어오길 바람
- 데이터 흐름 측면에서 Timely와 비교했을 때 어떤지 궁금함
- IR에서 루프와 같은 제어 흐름을 표현할 수 있는지 궁금함
- 각 "프로세스"가 별도의 바이너리로 배포되며, 별도의 프로세스로 실행되는 것인지 궁금함
- 그렇다면 오버헤드가 증가하는 문제가 있을 것 같음
- 빠른 통신은 어떻게 이루어지는지 궁금함
- 빠른 공유 메모리 IPC 메커니즘이 있는지 궁금함
- 비동기와의 통합에 대한 언급이 없는 것 같음
- 네트워킹을 다루는 대부분의 코드는 비동기로 전환되었음
- 네트워킹이 필요한 많은 것들에 대해 좋은 비동기 라이브러리를 찾기 어려움
- 정말 멋져 보이며, 특히 배포 부분이 독특해 보임
- 더 자세한 문서화가 기대됨
- 특히 중요한 Streams, Singletons, Optionals 부분이 궁금함
- 프로그래밍 모델이 마음에 듦
- 애플리케이션을 다시 작성할 때 네트워크 최적화를 수행하는지 궁금함
- 네트워크 병목 현상 및 혼잡을 처리하는 방법이 궁금함
- 데이터 파이프라인에 Ballista를 사용하는 것과 비교했을 때 어떤지 궁금함
- 후자는 Apache Arrow와 Apache Datafusion을 기반으로 구축되어 많은 이점을 얻음