피드로 돌아가기
Standing on shoulders: the stack that makes Floci start in ~24ms
Dev.toDev.to
Infrastructure

GraalVM 및 Quarkus 기반으로 24ms 기동과 13MiB 메모리를 달성한 AWS 에뮬레이터

Standing on shoulders: the stack that makes Floci start in ~24ms

Hector Ventura2026년 5월 21일3advanced

Context

JVM 기반 애플리케이션의 고질적인 JIT Warmup 및 Runtime Classpath Scanning으로 인한 느린 기동 속도와 높은 메모리 점유율 해결 필요. 45개 AWS 서비스의 다양한 Wire Protocol을 효율적으로 처리하면서도 초경량 런타임 환경을 구축해야 하는 제약 조건 존재.

Technical Solution

  • Netty 기반 Async I/O Substrate 채택을 통한 안정적인 TCP/UDP 프로토콜 처리 및 GraalVM Native Image 호환성 확보
  • Vert.x Reactive Toolkit 활용으로 HTTP, DNS, TCP 프로토콜 간 단일 Event Loop 공유 및 리소스 효율 극대화
  • Quarkus Framework의 Compile-time Bean Discovery 및 DI Wiring 적용을 통해 Runtime Reflection 오버헤드 제거
  • GraalVM Mandrel AOT Compilation 기반의 Dead Code Elimination으로 JVM 없는 정적 링크 네이티브 실행 파일 생성
  • 자체 권한 DNS 서버를 UDP/53 포트에 구현하여 Docker 네트워크 내 Virtual-hosted S3 도메인 해석 자동화

Impact

  • Startup Time: 일반 JVM(2,000~6,000ms) 대비 약 99% 단축된 24ms 달성
  • Idle RAM: 일반 JVM(200~400MiB) 대비 약 96% 감소한 13MiB 유지

Key Takeaway

Runtime의 동적 분석을 Compile-time의 정적 분석으로 전환하는 Closed-world Analysis 전략을 통해 인프라 비용 절감과 기동 성능의 비약적 향상 가능.


- Serverless 환경이나 사이드카 컨테이너 설계 시 GraalVM AOT 컴파일 검토 - Runtime Reflection 의존성을 낮추는 Quarkus 스타일의 Build-time 최적화 적용 여부 확인 - 다종 프로토콜 처리 시 개별 스레드 모델이 아닌 단일 Event Loop 기반의 Reactive Stack 고려

원문 읽기