Show GN: durable-streams-java - Durable Streams 의 Java 구현체
(github.com/Clickin)Durable Streams 를 보고 좋은 프로젝트라고 생각해서 제 주력 언어인 java 의 구현체도 만들어봤습니다.
주요 특징
- 특정 라이브러리 종속성 최소화: 최대한 특정 프레임워크나 특정 라이브러리에 종속되지 않는 구조로 가능한 한 커스터마이즈 가능하면서도 기본 구현을 제공하는 형태로 만들었습니다.
- Virtual thread 최적화: 자바 17 이상에서 사용가능하지만 Java 21 이상에서 Virtual thread와 함께 사용하시는걸 추천드립니다.
- 주요 JVM 프레임워크 통합: Spring MVC, Spring WebFlux, Micronaut, Quarkus, Ktor 용 어댑터를 제공합니다. 각 프레임워크에 맞는 요청/응답 변환과 SSE 처리를 내장하고 있어서 단 몇줄의 설정만으로 바로 사용할 수 있습니다.
- 프로토콜 적합성 테스트 통과: durable-streams 리포지토리에서 제공하는 131개의 적합성 테스트를 모두 통과했습니다.
주의사항
파일시스템 기반 스토리지는 메타데이터 보관용으로 Rocksdb를 사용합니다. Rocksdb는 최근 모든 주요 OS의 바이너리를 포함한 fat jar를 제공하는 방식에서 각 OS별 최적화된 jar를 classifier를 통해 직접 선택하는 방식으로 바뀌었습니다.
이에 따라 파일시스템 기반 스토리지를 사용하시려면 rocksdb를 직접 의존성에 추가하셔야합니다.
예시
gradle
dependencies {
implementation("io.durablestreams:durable-streams-server-core:<version>")
runtimeOnly("org.rocksdb:rocksdbjni:10.4.2:linux64") // or win64/osx
}
maven
<dependency>
<groupId>org.rocksdb</groupId>
<artifactId>rocksdbjni</artifactId>
<version>10.4.2</version>
<classifier>linux64</classifier>
<scope>runtime</scope>
</dependency>