Skip to content

Releases: NARUBROWN/spine

v0.3.9-alpha - Execution Reliability, Error Safety, Runtime Stability | 실행 신뢰성, 에러 안정성, 런타임 안정화

Choose a tag to compare

@NARUBROWN NARUBROWN released this 17 Feb 07:49
image_dbd618d3-f313-41fd-a093-d97d3493550d

🦴 Spine v0.3.5 ~ v0.3.9

Execution Reliability, Error Safety, Runtime Stability | 실행 신뢰성, 에러 안정성, 런타임 안정화

Spine v0.3.5부터 v0.3.9까지는 v0.3.4-alpha에서 정리한 명시적 실행 모델을 실제 운영 관점에서 더 단단하게 만든 구간입니다.
에러 응답 일관성, 바이너리 응답 지원, 404 처리 정확성, Recover 제어, Response 커밋 상태 추적까지 포함해 실행 안정성이 크게 강화되었습니다.

From v0.3.5 to v0.3.9, Spine hardens the explicit execution model introduced in v0.3.4-alpha.
This range focuses on production reliability: consistent error responses, binary serving, proper 404 behavior, configurable recovery, and response commit-state awareness.


✨ 주요 변경 사항 | Highlights

  • Pipeline 내부 httperr 처리 시 사용자 응답 보장
  • httpx.Binary 도입으로 바이너리 응답 공식 지원
  • 미등록 핸들러 요청에 대해 정확한 404 반환
  • Recover 동작을 옵션(DisableRecover)으로 명시 제어
  • ResponseWriter.IsCommitted() 도입으로 중복/충돌 응답 방지
  • 이벤트 컨슈머 시작/종료 상태 및 오류 채널 처리 개선
  • Ensured user-facing responses for internal pipeline httperr errors
  • Added official binary response support via httpx.Binary
  • Returns proper 404 for missing handlers
  • Made recover behavior explicitly configurable (DisableRecover)
  • Added ResponseWriter.IsCommitted() to prevent duplicate/conflicting writes
  • Improved event consumer lifecycle/error-channel handling

🚀 버전별 업데이트 | Version-by-Version

v0.3.5 (2026-02-03)

  • Pipeline 내부 컴포넌트에서 httperr 기반 error 반환 시에도 response_writer로 응답 전송
  • 내부 에러가 누락되지 않고 HTTP 응답으로 일관되게 표면화됨
  • Pipeline-internal httperr errors are now consistently written to clients via response_writer
  • Prevents silent/internal-only failures in HTTP flows

v0.3.6, v0.3.7 (2026-02-12)

  • httpx.Binary 타입 추가
  • 바이너리 콘텐츠(파일/바이트 스트림 등) 서빙 가능
  • Introduced httpx.Binary
  • Enables serving binary payloads from controllers

v0.3.8 (2026-02-16)

  • 없는 핸들러 요청 시 404 HTTP 코드 반환
  • 라우팅 실패 케이스의 HTTP 의미론 정확성 개선
  • Returns 404 for unmatched handlers
  • Improves correctness of routing-failure semantics

v0.3.9 (2026-02-17)

  • ResponseWriterIsCommitted() 추가 및 Echo 구현 반영
  • HTTP 메서드 대문자 정규화로 라우팅 대소문자 불일치 방지
  • 이벤트 버스 인터페이스 도입, 소비자 오류 채널 처리 개선
  • 파이프라인 에러 처리 보강 + JSON/String 핸들러 nil 체크 추가
  • 컨슈머 시작 상태 추적 및 HTTP 비활성 모드 종료 신호 대기 보완
  • panic 처리 경량화 (middleware.Recover() -> simpleRecover())
  • HTTPOptions.DisableRecover 추가 (NewServer recover 제어 가능)
  • Route Interceptor 로깅/중복 타입 처리 개선
  • Added IsCommitted() to ResponseWriter with Echo implementation
  • Normalized HTTP methods to uppercase for routing stability
  • Added event-bus interface and improved consumer error-channel flow
  • Strengthened pipeline error path + nil guards in JSON/String handlers
  • Improved consumer lifecycle tracking and shutdown waiting without HTTP runtime
  • Simplified panic recovery path (simpleRecover)
  • Added HTTPOptions.DisableRecover for explicit recover control
  • Improved route interceptor logging and duplicate-type handling

🧩 호환성/마이그레이션 메모 | Compatibility Notes

  • v0.3.7은 실질 코드 변경이 없으므로 v0.3.6 대비 마이그레이션 포인트 없음
  • Recover 정책을 커스터마이즈하는 경우 HTTPOptions.DisableRecover 설정 검토 필요
  • IsCommitted()는 프레임워크 내부 응답 커밋 상태 제어를 위한 변경이며, 일반 사용자 커스터마이징 포인트는 아님
  • v0.3.7 introduces no additional migration changes over v0.3.6
  • If you customize panic recovery, review HTTPOptions.DisableRecover
  • IsCommitted() is primarily an internal framework mechanism for response commit-state control, not a general user customization point

⚠️ Alpha 안내 | Alpha Notice

Spine v0.3.9-alpha는 알파 버전입니다.

  • API 및 내부 구조는 변경될 수 있습니다.
  • 문서 및 예제는 지속적으로 보완될 예정입니다.
  • 피드백과 이슈 제보를 적극 환영합니다.

Spine v0.3.4-alpha is an alpha release.

  • APIs and internal structures may change.
  • Documentation and examples will continue to evolve.
  • Feedback and issue reports are highly welcome.

v0.3.4-alpha — Explicit Runtimes, Explicit Execution | 명시적인 런타임, 명확한 실행

Choose a tag to compare

@NARUBROWN NARUBROWN released this 26 Jan 11:36
image_dbd618d3-f313-41fd-a093-d97d3493550d

🦴 Spine v0.3.4-alpha

Explicit Runtimes, Explicit Execution | 명시적인 런타임, 명확한 실행

Spine v0.3.4-alpha는 실행 모델을 더욱 명확히 다듬은 릴리즈입니다.
HTTP, Kafka, RabbitMQ Runtime을 옵션 단위로 명시적으로 활성화하도록 구조를 정리하고,
암묵적이었던 실행 확장 포인트를 제거해 코드만 보고 실행 흐름을 설명할 수 있는 상태를 완성했습니다.

Spine v0.3.4-alpha further refines the execution model.
This release introduces explicit runtime activation via options (HTTP, Kafka, RabbitMQ)
and removes implicit execution extensions, ensuring the execution flow is fully explainable by code alone.


✨ 주요 변경 사항 | Highlights

  • HTTP Runtime 전용 옵션(HTTPOptions) 도입
  • Runtime 조합 기반 실행 모델 확립 (HTTP / Kafka / RabbitMQ)
  • PostExecutionHook 및 EventDispatchHook 완전 제거
  • 이벤트 발행 모델을 publish.Event(ctx, event)로 단일화
  • 컨트롤러 반환값을 httpx.Response[T] 기반으로 전면 통합
  • Introduced HTTP-runtime-only options (HTTPOptions)
  • Established explicit runtime composition (HTTP / Kafka / RabbitMQ)
  • Completely removed PostExecutionHook and EventDispatchHook
  • Unified event publishing model using publish.Event(ctx, event)
  • Standardized controller return values with httpx.Response[T]

🚀 새로운 기능 | New Features

HTTP Runtime 전용 옵션 분리 | HTTP Runtime Options

  • boot.Options에 HTTPOptions 추가
  • HTTP Runtime 활성화 여부를 옵션으로 명시
  • HTTP를 사용하지 않는 Consumer-only / Event-only 앱 구성 가능
  • Added HTTPOptions to boot.Options
  • HTTP runtime is explicitly enabled via options
  • Enables Consumer-only or Event-only applications without HTTP

HTTP API 전역 Prefix 지원 | Global HTTP Prefix

  • HTTP Runtime에 한해 전역 Prefix 적용 가능
  • Event / Consumer Runtime에는 영향 없음
  • Prefix 검증 및 정규화는 boot-time에 수행
  • Supports global API prefix for HTTP runtime only
  • No impact on Event or Consumer runtimes
  • Prefix validation and normalization occur at boot time

이벤트 발행 모델 단일화 | Explicit Event Publishing

  • 암묵적인 실행 흐름 기반 이벤트 발행 제거
  • Controller에서 명시적으로 이벤트 발행
  • Removed implicit execution-flow-based event dispatching
  • Events are explicitly published inside controllers
publish.Event(ctx, StockCreated{ ... })
  • 실행 시점과 의도가 코드에 그대로 드러남
  • Execution-centric 설계 원칙 강화
  • Execution timing and intent are explicit in code
  • Strengthens execution-centric design principles

🔄 변경됨 | Changed

PostExecutionHook 제거 | Removal of PostExecutionHook

  • HTTP Pipeline의 후처리 훅(PostExecutionHook) 완전 제거
  • EventDispatchHook 및 EventExtractor 삭제
  • dead abstraction 정리로 실행 모델 단순화
  • Fully removed PostExecutionHook from HTTP pipeline
  • Deleted EventDispatchHook and EventExtractor
  • Simplified execution model by removing dead abstractions

통합 응답 모델 도입 | Unified HTTP Response Model

  • Controller 반환 타입을 httpx.Response[T]로 전면 교체
  • 기존 string, struct raw 반환 방식 제거
  • 상태 코드, 헤더, 쿠키를 명시적으로 제어 가능
  • Replaced controller return types with httpx.Response[T]
  • Removed raw string / struct return handling
  • Explicit control over status codes, headers, and cookies

🧹 구조 정리 | Cleanup

  • 사용되지 않는 Hook / 패키지 제거
  • HTTP / Event Runtime 책임 경계 명확화
  • 실행 흐름 추적이 어려웠던 암묵적 로직 제거
  • Removed unused hooks and packages
  • Clarified responsibility boundaries between HTTP and Event runtimes
  • Eliminated implicit logic that obscured execution flow

⚠️ Alpha 안내 | Alpha Notice

Spine v0.3.4-alpha는 알파 버전입니다.

  • API 및 내부 구조는 변경될 수 있습니다.
  • 문서 및 예제는 지속적으로 보완될 예정입니다.
  • 피드백과 이슈 제보를 적극 환영합니다.

Spine v0.3.4-alpha is an alpha release.

  • APIs and internal structures may change.
  • Documentation and examples will continue to evolve.
  • Feedback and issue reports are highly welcome.

v0.3.0-alpha - Execution Beyond HTTP | 이제 이벤트도 실행 흐름입니다 ⚙️

Choose a tag to compare

@NARUBROWN NARUBROWN released this 23 Jan 11:55
image_dbd618d3-f313-41fd-a093-d97d3493550d

🦴 Spine v0.3.0-alpha

Execution Beyond HTTP | 이제 이벤트도 실행 흐름입니다 ⚙️

Spine의 실행 모델이 HTTP 요청을 넘어 이벤트 기반 실행(Event-driven execution)까지 확장되었습니다.
Kafka와 RabbitMQ를 통해 들어오는 이벤트 역시 HTTP 요청과 동일한 Pipeline 기반 실행 흐름으로 처리됩니다.

Spine now extends its execution model beyond HTTP into event-driven execution.
Events from Kafka and RabbitMQ are executed through the same explicit Pipeline model as HTTP requests.


✨ 추가된 기능 | Added

Event Consumer Runtime 추가 | Event Consumer Runtime

  • Kafka / RabbitMQ 이벤트를 실행 단위로 처리하는 Consumer Runtime 도입
  • 이벤트 처리 역시 Pipeline 기반으로 실행되어 HTTP와 동일한 실행 모델 유지
  • 이벤트 핸들러를 Controller 스타일 메서드로 정의 가능
  • Introduces a Consumer Runtime for executing Kafka and RabbitMQ events
  • Event handling follows the same Pipeline-based execution model as HTTP
  • Event handlers can be defined as controller-style methods

Kafka Consumer / Producer 지원 | Kafka Read & Write Support

  • Kafka 이벤트 발행(Write) 및 소비(Read) 인프라 추가
  • EventName → Topic 매핑 기반 메시지 처리
  • 명시적인 BootOptions 설정을 통해 Kafka 활성화
  • Adds Kafka-based event publishing and consuming infrastructure
  • Messages are routed using EventName-to-Topic mapping
  • Kafka is enabled explicitly via BootOptions

RabbitMQ Consumer / Producer 지원 | RabbitMQ Read & Write Support

  • RabbitMQ 기반 이벤트 발행 및 소비 지원
  • Exchange / RoutingKey 기반 이벤트 라우팅
  • Kafka와 동일한 Consumer Runtime 구조를 공유
  • Adds RabbitMQ-based event publishing and consuming support
  • Event routing via Exchange and RoutingKey
  • Shares the same Consumer Runtime architecture as Kafka

Consumer 전용 Context & Resolver 분리 | Consumer-specific Context & Resolvers

  • HTTP Context와 분리된 ConsumerRequestContext 도입
  • EventName, Payload, DTO 전용 ArgumentResolver 제공
  • HTTP / Event 실행 간 컨텍스트 오염 방지
  • Introduces ConsumerRequestContext separated from HTTP context
  • Provides event-specific ArgumentResolvers (EventName, Payload, DTO)
  • Prevents context leakage between HTTP and event execution

🛠 변경됨 | Changed

ExecutionContext 기준 통합 | ExecutionContext Standardization

  • Resolver 계약을 ExecutionContext 기준으로 통합
  • HTTP / Event 모두 동일한 Resolver 인터페이스 사용
  • 실행 모델 중심 구조를 더욱 명확히 드러냄
  • Standardizes resolver contracts around ExecutionContext
  • Both HTTP and event execution share the same resolver interface
  • Further clarifies Spine’s execution-centric architecture

Consumer Runtime에 Pipeline 도입 | Pipeline Integration for Consumers

  • 이벤트 실행 시에도 Invoker + Resolver + Interceptor 체인 적용
  • HTTP 전용이 아닌 “실행 파이프라인”으로 Pipeline 재정의
  • Applies Invoker, Resolver, and Interceptor chains to event execution
  • Redefines Pipeline as an execution pipeline, not HTTP-specific

⚠️ Alpha 안내 | Alpha Notice

Spine v0.3.0-alpha는 알파 버전입니다.

  • API 및 내부 구조는 변경될 수 있습니다.
  • 문서 및 예제는 지속적으로 보완될 예정입니다.
  • 피드백과 이슈 제보를 적극 환영합니다.

Spine v0.3.0-alpha is an alpha release.

  • APIs and internal structures may change.
  • Documentation and examples will continue to evolve.
  • Feedback and issue reports are highly welcome.

v0.2.3-alpha — Ready for Real APIs | 실 서비스용 API 구현 가능!🚀

Choose a tag to compare

@NARUBROWN NARUBROWN released this 21 Jan 13:50
image_dbd618d3-f313-41fd-a093-d97d3493550d

🦴 Spine v0.2.3-alpha

Ready for Real APIs | 실 서비스용 API 구현 가능! 🚀

Spine v0.2.3-alpha는
실제 서비스용 API 서버를 구현할 수 있는 최소 실행 단위를 완성한 첫 알파 릴리즈입니다.

요청 실행 흐름을 명시적으로 모델링하는 Spine의 핵심 철학을 유지한 채,
CRUD API와 인증 흐름을 끝까지 책임질 수 있는 구조를 제공합니다.

Spine v0.2.3-alpha is the first alpha release that completes the minimum execution backbone required to build real-world API servers.

While preserving Spine’s core philosophy of explicitly modeling request execution,
this release provides a structure capable of fully supporting CRUD APIs and authentication flows.


✨ 추가된 기능 | Added

Route-level Interceptor 지원

  • 인터셉터를 전역뿐 아니라 라우트 단위로 명시적으로 등록할 수 있습니다.
  • 인증, 로깅, 트랜잭션 같은 횡단 관심사를
    실행 흐름의 일부로 정확히 제어할 수 있습니다.

Route-level Interceptors

  • Interceptors can now be registered explicitly at the route level, not only globally.
  • Cross-cutting concerns such as authentication, logging, and transactions
    are precisely controlled as part of the execution flow.

Graceful Shutdown 지원

  • SIGTERM / SIGINT 수신 시
    • 신규 요청 차단
    • 진행 중인 요청 정상 완료
    • 설정된 타임아웃 내 안전한 종료 보장
  • Kubernetes 환경의 Rolling Update, Blue/Green 배포를 고려한 종료 모델을 제공합니다.

Graceful Shutdown

  • On SIGTERM / SIGINT:
    • Stops accepting new requests
    • Allows in-flight requests to complete
    • Ensures safe shutdown within the configured timeout
  • Designed for Kubernetes environments, including Rolling Update and Blue/Green deployments.

🛠 고쳐짐 | Fixed

Pipeline 오류 발생 시 AfterCompletion 미호출 문제 수정

  • 요청 처리 중 Router 단계에서 오류가 발생하면
    Interceptor.afterCompletion 이 호출되지 않던 문제를 수정했습니다.
  • 이제 요청 성공/실패와 관계없이
    요청 생명주기의 종료가 항상 보장됩니다.

AfterCompletion not invoked on pipeline errors

  • Fixed an issue where Interceptor.afterCompletion was not executed
    when an error occurred during the Router phase.
  • The request lifecycle is now always completed, regardless of success or failure.

✅ 이 버전으로 만들 수 있는 프로젝트 | What you can build with this version

이 알파 버전으로 다음과 같은 프로젝트를 구현할 수 있습니다.

  • REST 기반 CRUD API 서버
  • JWT 기반 로그인 / 인증 시스템
  • 인터셉터 기반 인증·로깅·트랜잭션 분리 구조
  • 실행 흐름이 명확히 드러나는 테스트 가능한 서버 구조

With this alpha version, you can build:

  • REST-based CRUD API servers
  • JWT-based authentication and login systems
  • Interceptor-driven authentication, logging, and transaction separation
  • Testable server architectures with clearly visible execution flows

🔮 다음 | Next

다음 버전에서는 다음 기능을 준비 중입니다.

  • 파일 업로드 Path 타입 제공
  • multipart/form-data 업로드를 ArgumentResolver 기반 타입으로 지원
  • 컨트롤러 시그니처에 명시적으로 드러나는 업로드 모델 제공

Planned for the next release:

  • File upload Path type support
  • multipart/form-data handling via ArgumentResolver
  • File uploads explicitly expressed in controller method signatures

⚠️ Alpha 안내 | Alpha Notice

Spine v0.2.3-alpha는 알파 버전입니다.

  • API 및 내부 구조는 변경될 수 있습니다.
  • 문서 및 예제는 지속적으로 보완될 예정입니다.
  • 피드백과 이슈 제보를 적극 환영합니다.

Spine v0.2.3-alpha is an alpha release.

  • APIs and internal structures may change.
  • Documentation and examples will continue to evolve.
  • Feedback and issue reports are highly welcome.