Skip to content

Latest commit

ย 

History

History
53 lines (38 loc) ยท 5.05 KB

File metadata and controls

53 lines (38 loc) ยท 5.05 KB

๋ชจ๋“ˆํ™” ์ „๋žต

Orbit ๋ชจ๋“ˆ ์ง€๋„

  • app์€ ์ „์—ญ ๋‚ด๋น„๊ฒŒ์ด์…˜ ๊ทธ๋ž˜ํ”„์™€ Hilt ์—”ํŠธ๋ฆฌํฌ์ธํŠธ๋ฅผ ์ •์˜ํ•˜๊ณ , ๋‚˜๋จธ์ง€ ๋ชจ๋“ˆ์„ wiring ํ•ฉ๋‹ˆ๋‹ค.
  • feature:* ๋ชจ๋“ˆ์€ ํ™”๋ฉด/ํ”Œ๋กœ์šฐ ๋‹จ์œ„(์˜ˆ: feature:mission, feature:fortune)๋กœ ๋ถ„๋ฆฌ๋˜์–ด UI, ViewModel, ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ผ์šฐํŠธ๋ฅผ ์ž์ฒด ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • core:* ๋ชจ๋“ˆ์€ ๋””์ž์ธ ์‹œ์Šคํ…œ, ๋„คํŠธ์›Œํฌ, ์•Œ๋žŒ, ๋ถ„์„ ๋“ฑ ๊ณตํ†ต ์ธํ”„๋ผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • domain์€ ์ˆœ์ˆ˜ Kotlin ๋ชจ๋“ˆ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ๊ณผ Repository/Scheduler ๊ณ„์•ฝ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • data๋Š” ๋„คํŠธ์›Œํฌ/๋กœ์ปฌ ์†Œ์Šค๋ฅผ ์กฐํ•ฉํ•˜๊ณ  Domain ๊ณ„์•ฝ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ์œ ํ˜•๊ณผ ์ฑ…์ž„

์œ ํ˜• ๋Œ€ํ‘œ ๋ชจ๋“ˆ ์ฑ…์ž„
Entry app Compose Navigation, Hilt component ๊ทธ๋ž˜ํ”„, deeplink ์ฒ˜๋ฆฌ, build variant ์„ค์ •
Feature feature:fortune, feature:mission, feature:onboarding, feature:home, feature:setting, feature:splash, feature:webview, feature:alarm-interaction ๊ฐœ๋ณ„ ํ™”๋ฉด/๊ธฐ๋Šฅ ๋‹จ์œ„ ๋ชจ๋“ˆ
Domain domain ๋ชจ๋ธ(Fortune, Alarm, โ€ฆ), Repository/Scheduler ์ธํ„ฐํŽ˜์ด์Šค, ์ˆœ์ˆ˜ ๋กœ์ง
Data data Retrofit/Room/Datastore ๋“ฑ ์™ธ๋ถ€ ์—ฐ๋™, ์บ์‹œ ์ •์ฑ…, Repository ๊ตฌํ˜„์ฒด. OS ์˜์กด ์•Œ๋žŒ ์Šค์ผ€์ค„๋ง์€ core:alarm์— ์œ„์ž„
Core core:designsystem, core:network, core:analytics, core:alarm, core:datastore, core:remoteconfig, core:media, core:ui, core:common, core:database, core:buildconfig ์žฌ์‚ฌ์šฉ UI ์ปดํฌ๋„ŒํŠธ, ๋„คํŠธ์›Œํฌ/DB ํด๋ผ์ด์–ธํŠธ, ์•Œ๋žŒ ์Šค์ผ€์ค„๋Ÿฌ, Analytics wrapper ๋“ฑ cross-cutting concern

์˜์กด์„ฑ ๊ทœ์น™

app
โ”œโ”€โ”€ data
โ”œโ”€โ”€ core/*
โ””โ”€โ”€ feature/*
    โ”œโ”€โ”€ domain
    โ””โ”€โ”€ core/*

data
โ”œโ”€โ”€ domain
โ””โ”€โ”€ core/*

core ๋ชจ๋“ˆ ๊ฐ„์—๋Š” ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๋ฐฉํ–ฅ(์˜ˆ: designsystem โ† ui)๋งŒ ํ—ˆ์šฉํ•˜๊ณ , feature โ†” feature ๊ฐ„ ์˜์กด์€ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • feature/* ๋ชจ๋“ˆ์€ :app์—๋งŒ ๋“ฑ๋ก๋˜๋ฉฐ, ๊ณตํ†ต ๋ผ์šฐํŒ…์€ ๊ฐ feature๊ฐ€ ์ œ๊ณตํ•˜๋Š” Destination๋ฅผ app ๋ชจ๋“ˆ์ด ์กฐ๋ฆฝํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ์‹œ๊ฐ„ ์ตœ์ ํ™”

  1. ์ฆ๋ถ„ ๋นŒ๋“œ: ๋ชจ๋“ˆ ๊ฐ„ ๊ฒฝ๊ณ„๊ฐ€ ๋šœ๋ ทํ•ด ./gradlew :feature:fortune:assembleDebug์ฒ˜๋Ÿผ ๋ถ€๋ถ„ ๋นŒ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๋œ ๋ชจ๋“ˆ๊ณผ ๊ทธ ์ƒ์œ„ ๋ชจ๋“ˆ๋งŒ ์žฌ๋นŒ๋“œ๋˜๋ฉฐ, ๋‚˜๋จธ์ง€๋Š” Gradle Build Cache ์‚ฐ์ถœ๋ฌผ์„ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    Incremental build dependency ์˜ˆ์‹œ
    ์œ„์™€ ๊ฐ™์ด feature:fortune๋งŒ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ, data, domain, core ๋ชจ๋“ˆ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ , ์—ฐ๊ด€๋œ app๊ณผ feature:fortune๋งŒ ์žฌ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.
  2. Configuration Cache & Version Catalog: gradle.properties์— org.gradle.configuration-cache=true๋ฅผ ๊ณ ์ •์œผ๋กœ ์„ ์–ธํ•ด ๋ชจ๋“  ๊ฐœ๋ฐœ์ž/CI ๋นŒ๋“œ๊ฐ€ ๋™์ผํ•˜๊ฒŒ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    settings.gradle.kts์—์„œ includeBuild("build-logic")๋กœ ๋Œ์–ด์˜ค๋Š” convention plugin์ด Hilt/Compose/ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ์„ ํ•œ๊ณณ์—์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    ๊ณตํ†ต ์˜์กด์„ฑ์€ gradle/libs.versions.toml์— ๋ชจ์•„ ์„ค์ • ๋‹จ๊ณ„ ์ค‘๋ณต ์กฐํšŒ๋ฅผ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

ํ˜‘์—… ์ด์ 

  1. ์ž‘์—… ๋ฒ”์œ„ ๋ช…ํ™•ํ™”: ๋ฏธ์…˜ ํ™”๋ฉด ๋‹ด๋‹น์ž๋Š” feature:mission, ์•Œ๋žŒ ์„ค์ • ๋‹ด๋‹น์ž๋Š” feature:home์—๋งŒ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. feature ๊ฐ„ ์˜์กด์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Git ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ๋„ ๋‚ฎ์Šต๋‹ˆ๋‹ค.

    ๋ถ„๋ฆฌ๋œ ํ˜‘์—… ์›Œํฌํ”Œ๋กœ

  2. PR ํ๋ฆ„ ๋‹จ์ˆœํ™”: Domain/Data/Core์—์„œ ๊ณ„์•ฝ(์ธํ„ฐํŽ˜์ด์Šค, DTO)์„ ๋จผ์ € ํ™•์ •ํ•˜๊ณ  Feature ๋ชจ๋“ˆ์ด ์ด๋ฅผ ์†Œ๋น„ํ•˜๋Š” ์ˆœ์„œ๋กœ PR์„ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ์ด ์ˆœ์„œ ๋•๋ถ„์— ๋ฆฌ๋ทฐ์–ด๋Š” ์ŠคํŽ™๊ณผ ํ™”๋ฉด ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•ด ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.