Releases

Aspectran 9.2 릴리즈 노트

Aspectran 9.2는 프레임워크의 안정성, 정확성, 성능을 대폭 향상시키는 데 중점을 둔 중요한 릴리스입니다. 내부 아키텍처에 대한 광범위한 리팩토링과 여러 중대한 버그 수정을 통해 더욱 견고하고 신뢰할 수 있는 기반을 마련했습니다.

🚀 주요 개선 사항 (Key Enhancements)

  • 빈(Bean) 스코프 관리 및 동시성 성능 향상
    • FactoryBean을 통해 빈을 생성할 때의 락(Lock) 전략을 최적화하여, 불필요한 경합을 줄이고 동시성 환경에서의 성능을 크게 향상시켰습니다. 이는 다중 스레드 환경에서 더 나은 처리량을 보장합니다.
    • 세션 스코프(SessionScope)에서 특정 빈 인스턴스를 수동으로 제거할 수 있도록 API의 제약을 해제하여, 스티키 세션(sticky session)과 같은 시나리오에서 유용성을 높였습니다.
  • 핵심 컴포넌트 전반의 리팩토링
    • 세션 관리: Lettuce 기반 세션 저장소의 공통 로직을 추상화하여 코드 중복을 제거하고, “Master-Replica” 용어를 “Primary-Replica”로 현대화하는 등 전체적인 구조를 개선했습니다.
    • MyBatis 통합: MyBatis 연동 모듈의 내부 구조를 리팩토링하여 책임 분리를 명확히 하고 유지보수성을 높였습니다.
    • 내부 로직 개선: JsonParser를 도입하여 JSON 처리 로직을 분리하고, RestRequest의 오류 처리 방식을 개선하는 등 여러 유틸리티 클래스의 안정성을 강화했습니다.
  • 셸(Shell) 및 데몬(Daemon) 환경 안정성 강화
    • 셸 재시작(restart) 시 발생하던 여러 치명적인 버그를 해결하여, 개발 환경에서의 안정성을 크게 향상시켰습니다.
    • 스크립트 환경에서 quit 명령이 확인 프롬프트 없이 즉시 종료되도록 개선하고, 대화형 모드 감지 로직에 캐싱을 도입하여 성능을 최적화했습니다.
  • 코드 품질 및 문서 개선
    • 프로젝트 전반에 걸쳐 Javadoc 주석을 대대적으로 보강하고, 내부 로깅 및 사용자 메시지를 명확하고 일관성 있게 다듬어 개발자 경험을 향상시켰습니다.
    • EmbeddedAspectran의 자원 해제 메서드 이름을 release()에서 destroy()로 변경하여 API의 역할을 명확히 했습니다.

🐞 주요 버그 수정 (Key Bug Fixes)

  • 빈(Bean) 및 프로파일(Profile) 설정의 정확성 확보
    • @Component 어노테이션 없이 @Profile 등 다른 설정 어노테이션을 사용할 경우, 이를 무시하고 경고 메시지를 출력하도록 수정하여 설정 오류를 방지합니다.
    • SessionScope에서 ID가 아닌 클래스 이름으로 빈을 잘못 매칭하던 치명적인 버그를 수정하여, 특히 클러스터 환경에서 발생할 수 있는 예측 불가능한 문제를 해결했습니다.
    • 여러 프로파일 빈이 존재할 때 NoUniqueBeanException이 발생하던 문제를 해결하여 프로파일 기반의 빈 선택이 정확하게 동작하도록 수정했습니다.
  • 서비스 라이프사이클 관련 버그 수정
    • 셸 재시작 시 비정상 종료 문제: 임베디드 Jetty 서버의 비동기 종료 프로세스로 인해 restart 명령 후 셸이 예기치 않게 종료되던 문제를 해결했습니다.
    • Jetty/Logback 재시작 시 로깅 중단 문제: 셸 환경에서 restart 시 Logback 컨텍스트가 종료되어 모든 로깅이 중단되던 문제를 해결했습니다.
    • 서비스 시작 중 요청 처리: 서비스가 시작되는 동안 들어온 요청을 거부하는 대신, 시작이 완료될 때까지 대기하도록 수정하여 안정성을 높였습니다.
  • 기타 중요 버그 수정
    • ConcurrencyThrottleSupport 클래스에서 NotSerializableException이 발생하던 직렬화 문제를 해결했습니다.
    • 특정 조건에서 Quartz 스케줄러가 생성되지 않던 버그를 수정하고, 재초기화를 방지하는 로직을 추가했습니다.

NEWS
Release

Archive