๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ—บ๏ธ Roadmap

Sprout์˜ ๊ฐœ๋ฐœ์€ ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋Šฅ ์™„์„ฑ๊ณผ ์‹œ์Šคํ…œ ๋‚ด๋ถ€ ๋™์ž‘ ์‹คํ—˜์— ์ค‘์ ์„ ๋‘๊ณ  ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

Version Historyโ€‹

ReleaseStatusHighlightsNotes
v0.2โœ… ReleasedAOP Core Delivered@Before/@After/@Around, AspectJ pointcuts
v0.3โœ… ReleasedMiddleware & Global InterceptorsFilters + Interceptors chain
v0.4โœ… ReleasedData Access & Security CoreJdbcTemplate, @Transactional, AuthN/AuthZ
v0.5โœ… ReleasedNIO & Hybrid Server, Async WebSocketSelector loop, OP_WRITE management, graceful close

Current Status: v1.0 ๐ŸŽฏโ€‹

Goal: ์•ˆ์ •์ ์ธ API์™€ ํ”„๋ ˆ์ž„์›Œํฌ ์„ฑ์ˆ™๋„ ํ™•๋ณด โ€“ ๋ช…ํ™•ํ•œ ๋ฌธ์„œํ™”์™€ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜ ์ œ๊ณต

v1.0 Features (In Progress)โ€‹

Core Stabilityโ€‹

  • โœ… API Stabilization - ์ตœ์ข… ๊ณต๊ฐœ API ์„ค๊ณ„
  • โœ… Comprehensive Documentation - ๊ฐ€์ด๋“œ์™€ ๋ ˆํผ๋Ÿฐ์Šค ์™„๋น„
  • ๐Ÿ”„ Performance Optimization - ๋ฒค์น˜๋งˆํ‚น๊ณผ ํŠœ๋‹
  • ๐Ÿ”„ Error Handling Improvements - ๋””๋ฒ„๊น…๊ณผ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๊ฐœ์„ 

Developer Experienceโ€‹

  • โœ… Clear Documentation - ์•„ํ‚คํ…์ฒ˜ ๊ฐ€์ด๋“œ ๋ฐ ํŠœํ† ๋ฆฌ์–ผ
  • โœ… Quick Start Experience - ๋ช‡ ๋ถ„ ๋งŒ์— ์‹œ์ž‘ ๊ฐ€๋Šฅ
  • ๐Ÿ”„ IDE Support - IDE ํ†ตํ•ฉ ๊ฐœ์„ 

Post v1.0 Roadmapโ€‹

Lightweight ORM (v1.1-v1.2)โ€‹

Status: ๐Ÿ”„ Planned

Sprout๋Š” v1.0๊นŒ์ง€๋Š” ORM์„ ๋ฐฐ์ œํ–ˆ์ง€๋งŒ, ์ดํ›„์—๋Š” ํ•™์Šต์šฉ/์‹คํ—˜์šฉ ORM์„ ๊ฐ€๋ณ๊ฒŒ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

  • Entity Mapping: JPA ์Šคํƒ€์ผ ์–ด๋…ธํ…Œ์ด์…˜
  • Query DSL: ํƒ€์ž… ์„ธ์ดํ”„ ์ฟผ๋ฆฌ ์ž‘์„ฑ
  • Relationship Mapping: ์ผ๋Œ€๋‹ค, ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„
  • Migration Support: ์Šคํ‚ค๋งˆ ์ง„ํ™” ์ง€์›
  • Connection Pooling: ๊ธฐ๋ณธ์ ์ธ ์ปค๋„ฅ์…˜ ํ’€ ๊ด€๋ฆฌ

Thread Scheduling Tool (v1.3+)โ€‹

Status: ๐Ÿ”„ Planned

Sprout๋Š” ์„œ๋ฒ„ ์„ฑ๋Šฅ๊ณผ ๋™์‹œ์„ฑ์„ ํƒ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง ํˆด์„ ์‹คํ—˜์ ์œผ๋กœ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Netty์˜ ์ด๋ฒคํŠธ ๋ฃจํ”„ ๋ชจ๋ธ์—์„œ ์•„์ด๋””์–ด๋ฅผ ์ฐจ์šฉํ•˜๋˜, ํ”Œ๋žซํผ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์Šค๋ ˆ๋“œํ’€์—์„œ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

  • ํ”Œ๋žซํผ ์Šค๋ ˆ๋“œ ๋ชจ๋“œ: ๊ธฐ์กด ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๊ฐ€ ์•„๋‹Œ, ์ „ํ†ต์ ์ธ ํ”Œ๋žซํผ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜
  • ์ด๋ฒคํŠธ ๋ฃจํ”„ ์œ ์‚ฌ ๊ตฌ์กฐ: Netty์˜ ์ด๋ฒคํŠธ ๋ฃจํ”„์ฒ˜๋Ÿผ Task๋ฅผ ํ์— ๋‹ด๊ณ  ์„ ํƒ์ ์œผ๋กœ ๋ถ„๋ฐฐ
  • ์Šค์ผ€์ค„๋ง ์ •์ฑ…: ๋ผ์šด๋“œ ๋กœ๋นˆ, ์›Œํฌ ์Šคํ‹ธ๋ง ๋“ฑ ๋‹ค์–‘ํ•œ ์ •์ฑ… ์‹คํ—˜
  • ์ถ”์ƒํ™” API: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ง์ ‘ ์Šค์ผ€์ค„๋ง ์ „๋žต์„ ์„ ํƒ ๊ฐ€๋Šฅ
// Future scheduling tool example
SproutScheduler scheduler = SproutSchedulers.newEventLoopStyle(threads = 4);

scheduler.submit(() -> {
System.out.println("Task executed by " + Thread.currentThread().getName());
});

์ด ๊ธฐ๋Šฅ์€ ํ•™์Šต ๋ชฉ์ ์ด ๊ฐ•ํ•˜๋ฉฐ, ์šด์˜์ฒด์ œ ์ˆ˜์ค€์˜ ์Šค์ผ€์ค„๋ง ์ดํ•ด์™€ ์„œ๋ฒ„ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ง์ ‘ ๋‹ค๋ค„๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


Design Principlesโ€‹

Sprout์˜ ๋กœ๋“œ๋งต์€ ๋‹ค์Œ ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:

๐ŸŽฏ Clarity Over Complexityโ€‹

์„ค๋ช…์ด ์–ด๋ ค์šด ๊ธฐ๋Šฅ์€ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹จ์ˆœํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ.

๐Ÿ”ง Hackabilityโ€‹

ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ชจ๋“  ๋ถ€๋ถ„์€ ํ™•์žฅ/์ˆ˜์ •/๊ต์ฒด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ“ˆ Extensibilityโ€‹

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ๊ธฐ์กด ๊ธฐ๋Šฅ๊ณผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•œ๋‹ค.

๐Ÿš€ Performanceโ€‹

ํ”„๋ ˆ์ž„์›Œํฌ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ์ตœ์†Œํ™”. ์ธก์ •ํ•˜๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ตœ์ ํ™”ํ•œ๋‹ค.

๐Ÿ›ก๏ธ Stabilityโ€‹

๋ฉ”์ด์ € ๋ฒ„์ „์—์„œ๋งŒ ํ˜ธํ™˜์„ฑ ๊นจ๋œจ๋ฆผ. ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ํ…Œ์ŠคํŠธ๋กœ ๋’ท๋ฐ›์นจํ•œ๋‹ค.


Timelineโ€‹

Aspirational Roadmap

์ด ๋กœ๋“œ๋งต์€ ๋ชฉํ‘œ ์ง€ํ–ฅ์ ์ด๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”ผ๋“œ๋ฐฑ๊ณผ ๊ธฐ์ˆ ์  ๋„์ „, ๋ฆฌ์†Œ์Šค ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2025 Q4: v1.0 ๋ฆด๋ฆฌ์Šค โ€“ ์•ˆ์ •๋œ API์™€ ๋ฌธ์„œํ™”

2026 Q1-Q2: Lightweight ORM ๊ฐœ๋ฐœ (v1.1-v1.2)

2026 ์ดํ›„: Thread Scheduling Tool (v1.3+)