[WIL] ๐Ÿ’ซ์˜์А๋žญ, ์ฃผ๊ฐ„ ํ•™์Šต๋Ÿ‰ ์ด์ •๋ฆฌ

๊น€์˜๊ด‘ยท2026๋…„ 2์›” 20์ผ

์ด๋ฒˆ์ฃผ๋Š” ์„ค ์ดํ›„ ํŒ€ํ”„๋กœ์ ํŠธ ๋ฐœํ‘œ๋„ ํ•˜๊ณ , ๋ฐฐํฌ์ง์ „ ์•ฑ ๊ณ ๋„ํ™” ์ž‘์—…๋„ ํ•˜๋‹ค๋ณด๋‹ˆ ์‹œ๊ฐ„์ด ์ •๋ง ๋นจ๋ฆฌ ํ˜๋ €๋‹ค.
์ตœ์ข… ํ”„๋กœ์ ํŠธ ์ง์ „, ์•ž์œผ๋กœ์˜ ํ•™์Šต ๋ฐฉํ–ฅ์„ ๋‹ค์‹œ ์žก๊ณ  ๊ฐ€๊ณ  ์‹ถ๋‹ค.
๋ญ”๊ฐ€ ์–ด์งˆ์–ด์งˆํ•˜๋‹ค.

1๏ธโƒฃ Architecture

ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ•™์Šตํ•˜๋ฉฐ, ์˜์กด์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์— ๋Œ€ํ•ด ๊นŠ์€ ๊ณ ๋ฏผ์„ ํ–ˆ๋‹ค.
compose์—์„œ๋Š” MVVM์œผ๋กœ๋งŒ ์ž‘์„ฑํ•˜๋˜ ์ฝ”๋“œ๋“ค์„ ์ข€ ๋” ๋ฒ”์šฉ์„ฑ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•˜๋ ค๋‹ค ๋ณด๋‹ˆ ๊นจ์ง€๊ณ  ํž˜๋“  ๋ถ€๋ถ„์ด ํ•œ๋‘˜์ด ์•„๋‹ˆ์—ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋ฒ•์€ "์žฌ์‚ฌ์šฉ์„ฑ"๊ณผ "์—ญํ•  ๋ถ„๋ฆฌ"๊ฐ€ ์ตœ์ข… ๋ชฉ์ ์ง€์ธ๊ฒƒ ๊ฐ™๋‹ค.

์•ž์œผ๋กœ clean architecture๋ฅผ ์“ธ ์ผ์ด ์žˆ๊ฒ ๋А๋ƒ๋งŒ, ์ž…์‚ฌํ•ด์„œ ์“ฐ๊ฒŒ ๋œ๋‹ค๋ฉด ์ž˜ ์ ์‘ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ์ฃผ์š” ํฌ์ธํŠธ๋Š” ์™ธ๋ถ€์™€ ๋‚ด๋ถ€, ์ฆ‰ ์—ฌ๊ธฐ์„œ๋„ ์—ญํ•  ๋ถ„๋ฆฌ์ด๋‹ค.
ํŒ€์›๋“ค๊ณผ ์†Œํ†ต์ด ์ž˜ ๋˜์ง€ ์•Š์•„ usecase์—์„œ ์ƒ๋‹นํžˆ ๋ณต์žกํ•จ์„ ๋А๋ผ๊ณ  ์žˆ์ง€๋งŒ ๋กœ์ง์˜ ํ๋ฆ„์„ ์ •ํ•ด์ฃผ๋Š” ๊ตฌ๊ฐ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋„˜์–ด๊ฐ€์•ผ๊ฒ ๋‹ค.

์‚ฌ์‹ค MVVM์ด ๊ทธ๋ฆฝ๋‹ค.
๋‹จ์ˆœํžˆ 3๊ฐœ์˜ Layer๋กœ ๋ถ„๋ฆฌํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋˜ ๊ทธ ์‹œ์ ˆ์ด...

2๏ธโƒฃ Entity, VM State

Entity์— ๋Œ€ํ•ด์„œ๋„ ๊นŠ์€ ๊ณ ๋ฏผ์„ ํ–ˆ๋‹ค.
์ด ๋†ˆ์„ ํŽ˜์ด์ง€๋ณ„๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ์–ด๋ณด๋Š” ๋ฐฉ๋ฒ•๋„, Entity ์ž์ฒด๋ฅผ DTO์™€ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ๊ฑฐ๋ฉด ๊ทธ๋ƒฅ Entity๋งŒ ์ •์˜ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€ ๋“ฑ๋“ฑ..

๊ฒฐ๋ก ์€ ๋˜๋‹ค์‹œ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์™ธ๋ถ€์™€์˜ ์—ญํ•  ๋ถ„๋ฆฌ๋กœ ์ •ํ•ด์ง„๋‹ค.
๋งŒ์•ฝ, DB๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋˜๋”๋ผ๋„ Entity๋Š” ์ˆœ์ˆ˜ Dart ์ฝ”๋“œ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง€๊ธฐ์— repo์˜ ๊ฐ„๋‹จํ•œ ๋ณ€ํ™˜ ์ดํ›„ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ViewModel, View ์ „์šฉ Model์„ ์˜๋ฏธํ•œ๋‹ค.
๋‹จ์ˆœํžˆ ๋กœ์ง์„ ๋‹ด๊ณ  ์žˆ์„ ๋ฟ ์•„๋‹ˆ๋ผ View์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ๋‹ค.
์ด๋ฅผ state๋ผ๊ณ  ์ •์˜ํ•˜๋Š”๋ฐ state๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ƒํƒœ๊ฐ’์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

3๏ธโƒฃ Global Notifier

Global Notifier๋Š” ์ „์—ญ์ ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์ƒํƒœ๊ฐ’์ด ์žˆ์„๋•Œ, ์ด๋ฅผ Provider๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.
riverpod ์„ธ์ƒ์—์„œ๋Š” ๋‚ด๋ถ€์™€ ์™ธ๋ถ€์˜ ๊ฒฝ๊ณ„๊ฐ€ ์—„๊ฒฉํ•œ๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ์ƒ์ธ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋“ค๋„ ์—ฌ๋Ÿฟ ์žˆ๋‹ค๊ณ  ๋“ฃ๊ธฐ๋งŒ ํ–ˆ๋Š”๋ฐ, ์ฐจ๊ทผ์ฐจ๊ทผ ํ•™์Šตํ•ด๋ด์•ผ๊ฒ ๋‹ค.

profile
์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž

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