확장을 위한 설계
EDDI는 Java 25와 Quarkus에서 실행되며, 대규모 I/O 바운드 동시성을 위해 가상 스레드(Project Loom)를 활용합니다.
AI 에이전트에 가상 스레드가 중요한 이유
최신 AI 에이전트는 근본적으로 I/O 바운드입니다.
Java 가상 스레드는 이를 우아하게 해결합니다.
성능 하이라이트
- 가상 스레드, 동시 LLM 호출을 위한 수백만 개의 경량 스레드
- Quarkus 런타임, 개발 모드 핫 리로드를 갖춘 클라우드 네이티브 Java, 컨테이너 최적화. 기존 JVM 스택 대비 훨씬 높은 처리량과 더 빠른 시작 속도, 더 작은 메모리 풋프린트 제공
- Loom 호환 커넥션 풀, Agroal 커넥션 풀링은 가상 스레드 워크로드에서 기존 풀에 영향을 줄 수 있는 ThreadLocal 병목 현상을 방지
- NATS JetStream, 이벤트 기반 아키텍처로 수평 확장
- 듀얼 데이터베이스, MongoDB 또는 PostgreSQL, 환경 변수 하나로 전환. 두 DB 모두 단일 Docker 이미지
- SSE 스트리밍, Server-Sent Events를 통한 실시간 채팅 응답, 그룹 토론 피드, 라이브 로그 스트리밍
- 원커맨드 설치, Docker Compose로 EDDI + 데이터베이스 + 스타터 에이전트를 배포하는 인터랙티브 위저드
- Red Hat 인증, CI/CD에서 자동 프리플라이트 체크를 통한 컨테이너 인증
맥락에서의 성능
모든 시나리오에서 이기는 런타임은 없습니다. 순수 I/O 라우팅에 한정된 매우 특수한 시나리오에서는 Node.js가 Java를 앞설 수 있지만, CPU 집약적 작업이 포함된 워크로드에서는 Java가 일관되게 우위를 보입니다. 그리고 이것이 바로 AI 에이전트가 요구하는 워크로드입니다. 최신 에이전트는 대규모 I/O(LLM API 호출, 벡터 쿼리)와 집약적 연산(데이터 변환, 라우팅 로직, 임베딩 처리, 신뢰도 평가)이 뒤섞인 복합 작업을 수행합니다. 이러한 혼합 워크로드 프로파일이야말로 Quarkus의 가상 스레드가 가장 큰 강점을 발휘하는 지점입니다.
EDDI의 아키텍처는 혼합 I/O + CPU 워크로드를 위해 의도적으로 최적화되어 있습니다: 가상 스레드를 가진 Quarkus와 Loom 호환 커넥션 풀(Agroal)을 결합합니다.