| name | adr-log |
| description | Document architecture decisions with ADR (Architecture Decision Records). Use when making significant technical decisions, choosing between alternatives, or when onboarding needs context on past decisions. |
| allowed-tools | Read, Glob, Grep, Edit, Write, Bash |
| license | MIT |
| metadata | {"author":"antigravity-team","version":"1.0"} |
ADR (Architecture Decision Records)
์ํคํ
์ฒ ๊ฒฐ์ ์ ๋ฌธ์ํํ์ฌ "์ ๊ทธ๋ ๊ฒ ํ๋์ง"๋ฅผ ๊ธฐ๋กํ๋ ์คํฌ์
๋๋ค.
Core Principle
"๊ฒฐ์ ์ '๋ฌด์'๋ณด๋ค '์'๊ฐ ์ค์ํ๋ค."
"6๊ฐ์ ํ์ ๋๋ ์์๋ณผ ์ ์๊ฒ ๊ธฐ๋กํ๋ค."
ADR์ด ํ์ํ ๊ฒฝ์ฐ
| ์ํฉ | ์์ |
|---|
| ๊ธฐ์ ์ ํ | React vs Vue, PostgreSQL vs MongoDB |
| ์ํคํ
์ฒ ํจํด | Monolith vs Microservices |
| ์์กด์ฑ ์ถ๊ฐ | ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์
|
| ๋ณด์ ๊ฒฐ์ | ์ธ์ฆ ๋ฐฉ์ ์ ํ |
| ์ฑ๋ฅ ํธ๋ ์ด๋์คํ | ์บ์ฑ ์ ๋ต ๊ฒฐ์ |
| ํ์ค ๋ณ๊ฒฝ | ์ฝ๋ฉ ์ปจ๋ฒค์
๋ณ๊ฒฝ |
ADR ํด๋ ๊ตฌ์กฐ
docs/
โโโ adr/
โโโ 0000-adr-template.md
โโโ 0001-use-nextjs-app-router.md
โโโ 0002-choose-postgresql-over-mongodb.md
โโโ 0003-implement-jwt-authentication.md
โโโ README.md
ADR ํ
ํ๋ฆฟ
docs/adr/0000-adr-template.md
# [๋ฒํธ]. [๊ฒฐ์ ์ ๋ชฉ]
๋ ์ง: YYYY-MM-DD
## ์ํ
[Proposed | Accepted | Deprecated | Superseded by ADR-XXXX]
## ์ปจํ
์คํธ
์ด ๊ฒฐ์ ์ด ํ์ํ ๋ฐฐ๊ฒฝ/๋ฌธ์ ์ํฉ์ ์ค๋ช
ํฉ๋๋ค.
- ํ์ฌ ์ํฉ์ ๋ฌด์์ธ๊ฐ?
- ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค ํ๋๊ฐ?
- ์ด๋ค ์ ์ฝ ์กฐ๊ฑด์ด ์๋๊ฐ?
## ๊ฒฐ์
์ฐ๋ฆฌ๋ [X]๋ฅผ ์ ํํ๋ค.
### ๊ณ ๋ คํ ๋์๋ค
1. **๋์ A**: [์ค๋ช
]
- ์ฅ์ : ...
- ๋จ์ : ...
2. **๋์ B**: [์ค๋ช
]
- ์ฅ์ : ...
- ๋จ์ : ...
3. **์ ํ: ๋์ C**: [์ค๋ช
]
- ์ฅ์ : ...
- ๋จ์ : ...
## ๊ฒฐ๊ณผ
### ๊ธ์ ์ ์ํฅ
- ...
### ๋ถ์ ์ ์ํฅ
- ...
### ๋ฆฌ์คํฌ
- ...
## ์ฐธ๊ณ ์๋ฃ
- [๋งํฌ1]
- [๋งํฌ2]
์ค์ ADR ์์
docs/adr/0001-use-nextjs-app-router.md
# 1. Next.js App Router ์ฌ์ฉ
๋ ์ง: 2024-01-15
## ์ํ
Accepted
## ์ปจํ
์คํธ
์ ํ๋ก์ ํธ์ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๋ฅผ ์ ํํด์ผ ํ๋ค.
์๊ตฌ์ฌํญ:
- SEO ์ต์ ํ ํ์ (๋ง์ผํ
ํ์ด์ง)
- ๋น ๋ฅธ ์ด๊ธฐ ๋ก๋ฉ
- ํ์ React ๊ฒฝํ ํ์ฉ
- ์๋ฒ ์ฌ์ด๋ ๋ฐ์ดํฐ ํ์นญ
## ๊ฒฐ์
**Next.js 14 App Router**๋ฅผ ์ ํํ๋ค.
### ๊ณ ๋ คํ ๋์๋ค
1. **Next.js Pages Router**
- ์ฅ์ : ์์ ์ , ๋ ํผ๋ฐ์ค ๋ง์
- ๋จ์ : ๋ ๊ฑฐ์ํ ์งํ ์ค, ์ ๊ธฐ๋ฅ ์ ํ์
2. **Remix**
- ์ฅ์ : ๋ฐ์ด๋ ๋ฐ์ดํฐ ๋ก๋ฉ, ํ๋ก๊ทธ๋ ์๋ธ ํฅ์
- ๋จ์ : ํ ํ์ต ๋น์ฉ, ์๋์ ์ผ๋ก ์์ ์ํ๊ณ
3. **์ ํ: Next.js App Router**
- ์ฅ์ : React Server Components, ํฅ์๋ ์บ์ฑ, Vercel ์ต์ ํ
- ๋จ์ : ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธํ์ฑ ์ด์, ํ์ต ๊ณก์
## ๊ฒฐ๊ณผ
### ๊ธ์ ์ ์ํฅ
- React Server Components๋ก ๋ฒ๋ค ํฌ๊ธฐ ๊ฐ์
- ๋ ์ด์์ ์ค์ฒฉ์ผ๋ก ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ ํฅ์
- Vercel ๋ฐฐํฌ ์ต์ ํ
### ๋ถ์ ์ ์ํฅ
- ์ผ๋ถ ํด๋ผ์ด์ธํธ ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ์ 'use client' ํ์
- Pages Router ๊ฒฝํ์์ ํ์ต ํ์
### ๋ฆฌ์คํฌ
- App Router์ ์๋์ ์ธ ์ ๊ท์ฑ (์์ ์ฑ ํ์ธ ํ์)
- ์ผ๋ถ third-party ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธํ์ฑ
## ์ฐธ๊ณ ์๋ฃ
- [Next.js App Router Docs](https://nextjs.org/docs/app)
- [Server Components RFC](https://github.com/reactjs/rfcs/pull/188)
docs/adr/0002-choose-postgresql-over-mongodb.md
# 2. PostgreSQL ์ ํ (MongoDB ๋์ )
๋ ์ง: 2024-01-20
## ์ํ
Accepted
## ์ปจํ
์คํธ
ํ๋ก์ ํธ์ ์ฃผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํด์ผ ํ๋ค.
๋ฐ์ดํฐ ํน์ฑ:
- ์ฌ์ฉ์, ํ๋ก์ ํธ, ๋ฏธ๋์ด ๊ฐ ๊ด๊ณ ์กด์ฌ
- ํธ๋์ญ์
๋ฌด๊ฒฐ์ฑ ํ์ (๊ฒฐ์ ์ฐ๋ ์์ )
- ๋ณต์กํ ์ฟผ๋ฆฌ (ํํฐ๋ง, ์ ๋ ฌ, ์ง๊ณ)
## ๊ฒฐ์
**PostgreSQL**์ ์ ํํ๋ค.
### ๊ณ ๋ คํ ๋์๋ค
1. **MongoDB**
- ์ฅ์ : ์คํค๋ง ์ ์ฐ์ฑ, ์ํ ํ์ฅ ์ฉ์ด
- ๋จ์ : ๋ณต์กํ JOIN ์ด๋ ค์, ํธ๋์ญ์
์ ํ
2. **์ ํ: PostgreSQL**
- ์ฅ์ : ACID ๋ณด์ฅ, ๊ฐ๋ ฅํ JOIN, JSON ์ง์
- ๋จ์ : ์ํ ํ์ฅ ๋ณต์ก, ์คํค๋ง ๋ณ๊ฒฝ ๋ง์ด๊ทธ๋ ์ด์
ํ์
## ๊ฒฐ๊ณผ
### ๊ธ์ ์ ์ํฅ
- Prisma์ ์๋ฒฝํ ํธํ
- ๋ณต์กํ ๊ด๊ณ ์ฟผ๋ฆฌ ์ต์ ํ
- ๊ฒฐ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ
### ๋ถ์ ์ ์ํฅ
- ์คํค๋ง ๋ณ๊ฒฝ ์ ๋ง์ด๊ทธ๋ ์ด์
ํ์
- ์ด๊ธฐ ์คํค๋ง ์ค๊ณ ์ค์
### ๊ด๋ จ ๊ฒฐ์
- Prisma ORM ์ฌ์ฉ (ADR-003 ์์ )
- ๋ง์ด๊ทธ๋ ์ด์
์ ๋ต ์๋ฆฝ ํ์
ADR ์์ฑ ๊ฐ์ด๋
๋ฒํธ ์ฒด๊ณ
0001 ~ 0099: ๊ธฐ์ด ์ํคํ
์ฒ ๊ฒฐ์
0100 ~ 0199: ํ๋ก ํธ์๋ ๊ด๋ จ
0200 ~ 0299: ๋ฐฑ์๋ ๊ด๋ จ
0300 ~ 0399: ์ธํ๋ผ/DevOps ๊ด๋ จ
0400 ~ 0499: ๋ณด์ ๊ด๋ จ
์ํ ํ๋ฆ
Proposed โ Accepted โ [Deprecated | Superseded]
- Proposed: ๊ฒํ ์ค
- Accepted: ์น์ธ๋์ด ์ ์ฉ ์ค
- Deprecated: ๋ ์ด์ ์ ํจํ์ง ์์
- Superseded by ADR-XXXX: ์ ๊ฒฐ์ ์ผ๋ก ๋์ฒด๋จ
์์ฑ ํ
## ์ปจํ
์คํธ ์์ฑ ํ
- ๋ฐฐ๊ฒฝ ์ค๋ช
์ ์ ๊ท ํ์๋ ์ดํดํ ์ ์๊ฒ
- ์ ์ฝ ์กฐ๊ฑด(์๊ฐ, ์์ฐ, ๊ธฐ์ ์คํ) ๋ช
์
- ๋ฌธ์ ์ ๊ธด๊ธ์ฑ/์ค์๋ ์ธ๊ธ
## ๊ฒฐ์ ์์ฑ ํ
- ๊ฒฐ์ ๋ด์ฉ์ ํ ๋ฌธ์ฅ์ผ๋ก ์์ฝ
- ๋์๋ค์ ๊ณต์ ํ๊ฒ ๋น๊ต
- ์ ํ ์ด์ ๋ฅผ ๋ช
ํํ
## ๊ฒฐ๊ณผ ์์ฑ ํ
- ํธ๋ ์ด๋์คํ๋ฅผ ์์งํ๊ฒ
- ์์ ๋ฆฌ์คํฌ์ ๋์ ๋ฐฉ์
- ๊ด๋ จ๋ ํ์ ๊ฒฐ์ ์ธ๊ธ
ADR ๋๊ตฌ
adr-tools (CLI)
brew install adr-tools
adr init docs/adr
adr new "Use Next.js App Router"
adr list
adr new -s 1 "Switch to Remix"
README.md (ADR ์ธ๋ฑ์ค)
# Architecture Decision Records
| ๋ฒํธ | ์ ๋ชฉ | ์ํ | ๋ ์ง |
|------|------|------|------|
| [0001](0001-use-nextjs-app-router.md) | Next.js App Router ์ฌ์ฉ | Accepted | 2024-01-15 |
| [0002](0002-choose-postgresql-over-mongodb.md) | PostgreSQL ์ ํ | Accepted | 2024-01-20 |
| [0003](0003-jwt-authentication.md) | JWT ์ธ์ฆ ๊ตฌํ | Accepted | 2024-01-25 |
Workflow
ADR ์์ฑ ์์
1. ๊ธฐ์ ์ ํ/๋ณ๊ฒฝ ๋
ผ์ ์์
2. ๋์ ๊ฒํ ๋ฐ ๋น๊ต
3. ํ ๋
ผ์ (PR ๋๋ ๋ฏธํ
)
4. ๊ฒฐ์ ํ ADR ์์ฑ
5. PR๋ก ADR ์ถ๊ฐ
6. ๋ฆฌ๋ทฐ ํ ๋จธ์ง
์ฝ๋ ๋ฆฌ๋ทฐ์์
PR ๋ฆฌ๋ทฐ์ด:
"์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ์ ๋ํ ADR์ด ์๋์?"
์์ฑ์:
"ADR-0015์ ๊ทผ๊ฑฐ ์ ๋ฆฌ๋์ด ์์ต๋๋ค."
๋๋
"ADR ์ถ๊ฐํ๊ฒ ์ต๋๋ค."
Checklist
ํ๋ก์ ํธ ์ค์
ADR ์์ฑ ์
References