pile·
백엔드·데브시스터즈devsisters·

고성능을 위한 ZIO 튜닝

문제ZIO 기반 애플리케이션을 프로덕션에 올렸을 때 기본 설정만으로는 충분한 성능을 내기 어렵고, 어떤 옵션이 병목으로 작용하는지 가늠하기 까다롭다.

접근런타임 플래그에서 `FiberRoots`를 끄고 `RuntimeMetrics`로 측정 지표를 확보한다. `withParallelism`으로 fiber 수를 제한하고, executor의 자동 블로킹과 `EagerShiftBack` 플래그를 다듬어 블로킹 작업 뒤 기본 executor로 복귀시킨다.

결과극단적인 케이스에서 `FiberRoots` 비활성화만으로 약 2.5배의 처리량 개선을 얻었고, 리소스 낭비를 줄여 운영 환경의 성능 저하를 막을 수 있었다.

데브시스터즈
데브시스터즈 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 백엔드·stackoverflow-blogstackoverflow-blog·

    Compile-Time Map and Compile-Time Mutable Variable with C++26 Reflection

    문제C++ 컴파일 타임에는 상태를 수정할 수 없어 mutable 변수나 키-값 맵을 표현하기 어렵다.

    접근C++26 리플렉션의 substitute, is_complete_type, define_aggregate 세 함수로 incomplete template specialization 을 저장소로 사용한다. 조건부로 type 을 complete 시켜 타입 시스템에 상태를 인코딩한다. compile-time ticket counter, immutable map, mutable variable 세 구현을 보인다.

    결과meta::info 를 키와 값으로 모두 쓰는 다형적 저장 구조를 얻고, 전처리기로는 불가능했던 stateful metaprogramming 이 가능해진다. 단일 pair 는 불변이며 mutable 은 여러 기법 조합으로 달성한다.

    #cpp#reflection#metaprogramming+1
  2. 백엔드·네이버페이네이버페이·

    Composite PK에서 시작된 Spring Boot 4 / Spring Batch 6 업그레이드 기록

    문제Spring Data JDBC 의 Composite ID 적용을 위해 Spring Boot 3.5 → 4.0.1 업그레이드 시 Spring Batch, Kotlin, Jackson 등 전체 스택 메이저 전환 필요.

    접근Spring Boot 4 / Spring Batch 6 / Spring Framework 7 / Kotlin 2.3 / Jackson 3 / Kotest 6 / Gradle 9 / ojdbc11 순차 업그레이드. Composite ID 는 Persistable 인터페이스로 구현, JdbcDefaultBatchConfiguration 상속으로 메타데이터 저장.

    결과기술 부채 해결 + 장기 유지보수성 개선. 운영 DB 접근 정책 충돌을 사전 식별해 안정적 배포 달성.

    #kotlin#spring#spring-boot+3