GreenTrust
์ค๋งํธํ ์ด์ปค๋จธ์ค
Next.js 15 + Spring Boot 3.5 ๊ธฐ๋ฐ์ ํ์คํ ์ค๋งํธํ ๋์ฐ๋ฌผ ์ง๊ฑฐ๋ ํ๋ซํผ์
๋๋ค.
3๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค์ Kafka ์ด๋ฒคํธ ๋๋ฆฌ๋ธ ์ํคํ
์ฒ๋ก ์ ์ฒด ์ปค๋จธ์ค ์ฌ์ดํด์ ๊ตฌํํ์ต๋๋ค.
์ฌ์ฉ ๊ธฐ์
์ต์ ํ๋ก ํธ์๋ ๊ธฐ์ ๊ณผ ์์ ์ ์ธ ๋ฐฑ์๋ ํต์ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณํ์ต๋๋ค.
ํต์ฌ ๊ธฐ๋ฅ
์ฌ์ฉ์ ๊ฒฝํ ์ค์ฌ์ ์ปค๋จธ์ค ํ๋ก์ฐ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค.
Hero ์น์ & ์ฟ ํฐ ๋ฐฐ๋
GSAP๊ณผ Framer Motion์ผ๋ก ๊ตฌํํ ์ธํฐ๋ํฐ๋ธ Hero ์น์ ๊ณผ, ์ง์ ์ ์๋ ํ์๋๋ ์ฌ๋ผ์ด๋ฉ ์ฟ ํฐ ์บ๋ฌ์ ๋ชจ๋ฌ์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์ ์ฐธ์ฌ๋ฅผ ์ ๋ํ๋ ํ๋ก๋ชจ์ ์์คํ ์ ๋๋ค.
์ํ ๋ชฉ๋ก & ์์ธ ํ์ด์ง
์นดํ ๊ณ ๋ฆฌ ํํฐ๋ง, ํค์๋ ๊ฒ์, ๋ฌดํ ์คํฌ๋กค์ ์ง์ํ๋ ์ํ ํ์ ์์คํ ์ ๋๋ค. ์์ธ ํ์ด์ง์์๋ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ, ์ต์ ์ ํ, B2B ํ ๊ธ, ๋ฆฌ๋ทฐ๊น์ง ์๋ฒฝํ ๊ตฌ๋งค ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํตํฉ ๊ฒ์ ์์คํ
ํค์๋ ๊ธฐ๋ฐ ์ค์๊ฐ ๊ฒ์์ผ๋ก ์ฌ์ฉ์๊ฐ ์ํ๋ ์ํ์ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. URL ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ๊ธฐ๋ฐ์ผ๋ก ๊ฒ์ ์ํ๊ฐ ๊ณต์ ๊ฐ๋ฅํฉ๋๋ค.
์ฅ๋ฐ๊ตฌ๋ & Toss Payments ๊ฒฐ์
Zustand ๊ธฐ๋ฐ ์ฅ๋ฐ๊ตฌ๋ ์ํ ๊ด๋ฆฌ, Toss Payments SDK ์ฐ๋ ๊ฒฐ์ , ์ฃผ๋ฌธ ์ฑ๊ณต/์คํจ ๋ถ๊ธฐ ์ฒ๋ฆฌ๊น์ง ์์ ํ ๊ฒฐ์ ํ๋ฆ์ ๊ตฌํํ์ต๋๋ค. ๋ฐฐ์ก์ง ๊ด๋ฆฌ์ ์ฃผ๋ฌธ ์ถ์ ์ ํฌํจํฉ๋๋ค.
๊ฒฐ์ ์ฑ๊ณต & ๋ฐฐ์ก ํ์๋ผ์ธ
๊ฒฐ์ ์๋ฃ ํ ๋ฐฐ์ก ํ์๋ผ์ธ ํ๋ก์ธ์ค๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค. ์ฃผ๋ฌธ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ถ์ ํ ์ ์๋ UX๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ก๊ทธ์ธ & ๋ง์ดํ์ด์ง
JWT ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ (Access/Refresh Token)์ผ๋ก ์์ ํ ๋ก๊ทธ์ธ์ ๊ตฌํํ์ต๋๋ค. ๋ง์ดํ์ด์ง์์ ์ฃผ๋ฌธ๋ด์ญ, ๋ฐฐ์ก์ง ๊ด๋ฆฌ, ๋ฆฌ๋ทฐ ๊ด๋ฆฌ๋ฅผ ํญ ๊ธฐ๋ฐ UI๋ก ์ ๊ณตํฉ๋๋ค.
๊ด๋ฆฌ์ ๋์๋ณด๋
๋งค์ถ ๋ถ์, ์ํ CRUD, ์ฟ ํฐ ๋ฐ๊ธ๊น์ง โ ์ด์์ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ด๋ฆฌ์ ํจ๋์์ ์ ๊ณตํฉ๋๋ค.
๋งค์ถ ๋ฉํธ๋ฆญ & ์ฐจํธ
Recharts๋ฅผ ํ์ฉํ ๋งค์ถ/์ฃผ๋ฌธ ํํฉ ์ฐจํธ์ ํต์ฌ KPI ๋ฉํธ๋ฆญ์ ํ ํ๋ฉด์์ ํ์ธํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์์ฌ๊ฒฐ์ ์ ์ง์ํ๋ ๊ด๋ฆฌ์ ๋ทฐ์ ๋๋ค.
์ํ CRUD & ์ฟ ํฐ ๊ด๋ฆฌ
์ํ ๋ฑ๋ก/์์ /์ญ์ , ์ด๋ฏธ์ง ์ ๋ก๋, ์นดํ ๊ณ ๋ฆฌ ๊ด๋ฆฌ๋ฅผ react-hook-form ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ์ต๋๋ค. ์ฟ ํฐ ์์ฑ/๋ฐ๊ธ/๊ด๋ฆฌ๋ก ํ๋ก๋ชจ์ ์ด์์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค ๋ฐฑ์๋
Spring Boot 3.5 + Kotlin ๊ธฐ๋ฐ 3๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๊ตฌ์ฑ๋ ์ด๋ฒคํธ ๋๋ฆฌ๋ธ ์ํคํ ์ฒ์ ๋๋ค.
JPA + QueryDSL
Hexagonal ยท R2DBC
Hexagonal ยท JPA
Hexagonal Architecture
Payment/Inventory ์๋น์ค์ Port & Adapter ํจํด์ ์ ์ฉํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ธํ๋ผ์์ ์์ ํ ๋ถ๋ฆฌํ์ต๋๋ค.
Transactional Outbox
๊ฒฐ์ ์ด๋ฒคํธ๋ฅผ DB ํธ๋์ญ์ ๊ณผ ํจ๊ป Outbox ํ ์ด๋ธ์ ์ ์ฅ ํ Kafka๋ก ๋ฐํํ์ฌ ๋ฉ์์ง ์ ์ค์ ๋ฐฉ์งํฉ๋๋ค.
Event-Driven + DLQ
Kafka ๊ธฐ๋ฐ ๋น๋๊ธฐ ํต์ ์ผ๋ก ์๋น์ค ๊ฐ ๋์จํ ๊ฒฐํฉ์ ์คํํ๊ณ , Dead Letter Queue๋ก ์คํจ ์ด๋ฒคํธ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
Toss Payments ์ฐ๋
50+ ์๋ฌ ์ฝ๋ ๋งคํ, ๋ฉฑ๋ฑ์ฑ ํค, ์๋ ๋ณต๊ตฌ ์ค์ผ์ค๋ฌ(3๋ถ ์ฃผ๊ธฐ)๋ก ๊ฒฐ์ ์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
Pessimistic Locking
์ฌ๊ณ ์๋น์ค์์ ๋์ ์ฃผ๋ฌธ ์ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋น๊ด์ ์ ๊ธ์ ์ ์ฉํ์ต๋๋ค.
Reactive Stack
Payment ์๋น์ค๋ Spring WebFlux + R2DBC ๊ธฐ๋ฐ ์์ ๋น๋๊ธฐ ๋ ผ๋ธ๋กํน์ผ๋ก ๋์ ์ฒ๋ฆฌ๋์ ๋ฌ์ฑํฉ๋๋ค.
๋ชจ๋ฐ์ผ ๋ฐ์ํ
375px๋ถํฐ 1920px๊น์ง ๋ชจ๋ ๋ทฐํฌํธ์์ ์ต์ ํ๋ ๋ ์ด์์์ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ฐ์ผ ๋ค๋น๊ฒ์ด์
๋ชจ๋ฐ์ผ ์ํ ๋ชฉ๋ก