๐Ÿฐ [flowbit] #10. ๋ฐฐํฌ๋ฅผ ๋ฉˆ์ถ”๊ณ , ์™„์„ฑ๋„ ๋Œ์–ด์˜ฌ๋ฆฌ๋‹ค

bean8080๐Ÿซ›ยท2026๋…„ 5์›” 5์ผ

flowbit ๐Ÿฐโ˜˜๏ธ

๋ชฉ๋ก ๋ณด๊ธฐ
11/15

โ˜˜๏ธ 1. ์˜ค๋Š˜ ์ƒํ™ฉ

์›๋ž˜ ์˜ค๋Š˜์€ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜ ์ƒ๊ฒผ๋‹ค.

๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ AWS ๊ณ„์ •์ด
90์ผ์ด ์ง€๋‚˜๋ฉด์„œ ๋™์ผํ•œ ์ด๋ฉ”์ผ๋กœ ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์˜€๋‹ค.

์ฆ‰, ๊ธฐ์กด ์ด๋ฉ”์ผ๋กœ๋Š” ๊ณ„์ •์„ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์—†์–ด์„œ
๋‹ค๋ฅธ ์ด๋ฉ”์ผ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋˜์—ˆ๋‹ค.

๊ฒฐ๊ตญ ๊ณ„์ • ๋ฌธ์ œ๋กœ ์ธํ•ด
๋ฐฐํฌ๋Š” ์ž ์‹œ ๋ฏธ๋ฃจ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ํ๋ฆ„์ด ๋Š๊ธด ๋А๋‚Œ์ด ๋“ค์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ณง ์ƒ๊ฐ์„ ๋ฐ”๊ฟจ๋‹ค.

์ง€๊ธˆ์€ ๋ฐฐํฌ๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ฒŒ ์žˆ๋‹ค


โ˜˜๏ธ 2. ๋ฐฉํ–ฅ ์ „ํ™˜

์ง€๊ธˆ Flowbit์€

๊ธฐ๋Šฅ ๊ตฌํ˜„ ์™„๋ฃŒ
API ๋™์ž‘ ์™„๋ฃŒ
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ตœ์†Œ ๊ตฌ์„ฑ ์™„๋ฃŒ

์ด๋ฏธ ๋™์ž‘ํ•˜๋Š” ์ƒํƒœ์— ๊ฐ€๊นŒ์›Œ์กŒ๋‹ค.

๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ๋ฐฉํ–ฅ์„ ๋ฐ”๊ฟจ๋‹ค.

๋ฐฐํฌ๋ฅผ ๋ฏธ๋ฃจ๊ณ , ํ”„๋กœ์ ํŠธ๋ฅผ ์ •๋ฆฌํ•˜์ž


โ˜˜๏ธ 3. README ์ž‘์„ฑ

์˜ค๋Š˜ ํ•œ ์ž‘์—…์€ ํ•˜๋‚˜์˜€๋‹ค.

โ†’ README ์ž‘์„ฑ

ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜์Œ ๋ณด๋Š” ์‚ฌ๋žŒ์ด
์ด ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •๋ฆฌํ•˜๋Š” ์ž‘์—…์ด์—ˆ๋‹ค.

๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์žก์•˜๋‹ค.

Overview
Problem
Solution
Architecture
Core Features
API Design
Key Design Decisions

ํŠนํžˆ ๊ฐ€์žฅ ์‹ ๊ฒฝ ์“ด ๋ถ€๋ถ„์€ ์ด๊ฒƒ์ด์—ˆ๋‹ค.

์™œ ์ด ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ–ˆ๋Š”๊ฐ€

๋‹จ์ˆœํžˆ ๋ฌด์—‡์„ ๋งŒ๋“ค์—ˆ๋Š”์ง€๊ฐ€ ์•„๋‹ˆ๋ผ
์™œ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ–ˆ๋‹ค.

README.md

๋“œ๋””์–ด ๋ฆฌ๋“œ๋ฏธ๊ฐ€ ์ƒ๊ฒผ๋‹ค!


โ˜˜๏ธ 4. ์˜ค๋Š˜ ์ž‘์—…์˜ ์˜๋ฏธ

์˜ค๋Š˜์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ๋‚ ์€ ์•„๋‹ˆ์—ˆ๋‹ค.

๋Œ€์‹ 

ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋งŒ๋“  ๋‚ ์ด์—ˆ๋‹ค

์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ
๊ทธ ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ์˜์—ญ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜์€ ๊ทธ ์ฐจ์ด๋ฅผ ๋А๋‚€ ๋‚ ์ด์—ˆ๋‹ค.


โ˜˜๏ธ 5. ํ˜„์žฌ ์ƒํƒœ

Flowbit์€ ์ด์ œ

๋™์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๊ณ 
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ
README๋ฅผ ํ†ตํ•ด ๊ตฌ์กฐ ์„ค๋ช…์ด ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ€ ๋˜์—ˆ๋‹ค


โ˜˜๏ธ 6. ๋‹ค์Œ ๋ชฉํ‘œ (์‹ฌํ™” ๊ฐœ๋ฐœ ๋ฐฉํ–ฅ)

๋ฐฐํฌ๋Š” ์ด๋ฒˆ ์ฃผ๋ง์— ํ•œ ๋ฒˆ์— ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

๊ทธ ์ดํ›„์—๋Š” ๋‹จ์ˆœํžˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,
์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ ๋‹จ๊ณ„ ๋” ํ™•์žฅํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

์•ž์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ์‹ฌํ™” ๊ฐœ๋ฐœ์„ ์ด์–ด๊ฐˆ ์˜ˆ์ •์ด๋‹ค.

์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ ํ™•์žฅ

ํŠน์ • ์‹œ์  ๊ธฐ์ค€ ์ƒํƒœ ์žฌ๊ตฌ์„ฑ ๊ธฐ๋Šฅ
์ด๋ฒคํŠธ ํƒ€์ž… ํ™•์žฅ (์ƒํƒœ ๋ณ€๊ฒฝ ์™ธ ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ)

โ†’ ๋‹จ์ˆœ ๊ธฐ๋ก์„ ๋„˜์–ด ์ด๋ฒคํŠธ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ตฌ์กฐ๋กœ ํ™•์žฅ

ํƒ€์ž„๋ผ์ธ/๋ถ„์„ ๋กœ์ง ๊ณ ๋„ํ™”

์ƒํƒœ๋ณ„ ์ฒด๋ฅ˜ ์‹œ๊ฐ„ ๊ณ„์‚ฐ
์ด๋ฒคํŠธ ํ๋ฆ„ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋ถ„์„

โ†’ ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ ์˜๋ฏธ ์žˆ๋Š” ์ •๋ณด๋กœ ๋ณ€ํ™˜

์บ์‹ฑ ๋ฐ ์„ฑ๋Šฅ ๊ตฌ์กฐ ์„ค๊ณ„

ํ˜„์žฌ Spring Cache ๊ตฌ์กฐ ๊ฒ€์ฆ
Redis ๊ธฐ๋ฐ˜ ์บ์‹ฑ ๊ตฌ์กฐ๋กœ ํ™•์žฅ

โ†’ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ€ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•œ ์„ฑ๋Šฅ ์„ค๊ณ„

๋„๋ฉ”์ธ ๋ฐ ํ™•์žฅ์„ฑ ์„ค๊ณ„

User / ํ˜‘์—… ๊ตฌ์กฐ ํ™•์žฅ ๊ณ ๋ ค
Task์™€ ์‚ฌ์šฉ์ž ๊ด€๊ณ„ ์„ค๊ณ„

โ†’ ๋‹จ์ผ ์‚ฌ์šฉ์ž ๋„๊ตฌ โ†’ ํ˜‘์—… ์‹œ์Šคํ…œ์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ ํ™•๋ณด

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ์„ 

์ƒํƒœ๋ณ„ ์‹œ๊ฐ์  ๊ตฌ๋ถ„ (์ƒ‰์ƒ, UI ๊ตฌ์กฐ)
ํƒ€์ž„๋ผ์ธ UI ์ •๋ฆฌ
๋ถ„์„ ํ™”๋ฉด ๊ตฌ์„ฑ ๊ฐœ์„ 
๋กœ๋”ฉ/๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ UX ๊ฐœ์„ 

โ†’ ๋™์ž‘ํ•˜๋Š” ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI๋กœ ๊ฐœ์„ 

์ด ์ž‘์—…๋“ค์€ ๋‹จ๊ธฐ๊ฐ„์— ๋๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ
์•ž์œผ๋กœ ํ•œ ๋‹ฌ ๋™์•ˆ ์ง€์†์ ์œผ๋กœ ๋ฐœ์ „์‹œ์ผœ ๋‚˜๊ฐˆ ํ•ต์‹ฌ ์˜์—ญ์ด๋‹ค


โ˜˜๏ธ 7. ๋‹ค์Œ ์ž‘์—…

๋‹ค์Œ ์ž‘์—…๋ถ€ํ„ฐ๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋ณด๋‹ค ๋ฐฑ์—”๋“œ ๊ตฌ์กฐ๋ฅผ ๋” ๋‹จ๋‹จํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค.

๋จผ์ € ํŠธ๋žœ์žญ์…˜ ๊ฒฝ๊ณ„๋ฅผ ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๋‹ค.

Flowbit์—์„œ๋Š” Task ์ƒ์„ฑ๊ณผ ๋™์‹œ์— TaskEvent๊ฐ€ ์ƒ์„ฑ๋˜๊ณ ,
์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ์—๋„ Task์™€ TaskEvent๊ฐ€ ํ•จ๊ป˜ ๋ณ€๊ฒฝ๋œ๋‹ค.

์ด๋Ÿฐ ์ž‘์—…์€ ํ•˜๋‚˜์˜ ํ๋ฆ„์œผ๋กœ ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—
@Transactional์„ ์ ์šฉํ•ด ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๊ฐœ์„ ํ•  ์˜ˆ์ •์ด๋‹ค.

์ดํ›„์—๋Š” ํ˜„์žฌ Spring Cache ๊ธฐ๋ฐ˜์œผ๋กœ ์žก์•„๋‘” ์บ์‹ฑ ๊ตฌ์กฐ๋ฅผ
Redis์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์‹ค์ œ ์บ์‹œ ์ €์žฅ์†Œ๋กœ ํ™•์žฅํ•  ๊ณ„ํš์ด๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€