Skip to content

Latest commit

ย 

History

History
398 lines (239 loc) ยท 24.3 KB

README.md

File metadata and controls

398 lines (239 loc) ยท 24.3 KB

์„ค์น˜ apk ๊ฒฝ๋กœ(app-release.apk ์ž…๋‹ˆ๋‹ค.)

https://github.com/Team-ReMind/Android/tree/dev/app/release

Firebase console apk ๋ฐฐํฌ ๋งํฌ

https://appdistribution.firebase.google.com/testerapps/1:165854968361:android:7b1bd6b07f7037b2ad7a38/releases/7cp8gkr2j8jcg?utm_source=firebase-console

โค๏ธโ€๐Ÿฉน Re:Mind

1

์„œ๋น„์Šค ํ•œ ์ค„ ์†Œ๊ฐœ


์ •์‹  ์งˆํ™˜ ํ™˜์ž์˜ ์ผ์ƒ์ ์ธ ๋ฌด๋“œ ์ฐจํŠธ์™€ ์•ฝ ๋ณต์šฉ ๊ธฐ๋ก์ด ํ™˜์ž ๋‹ด๋‹น์ž์—๊ฒŒ ๊ณต์œ ๋˜์–ด ์ง€์†์  ๊ด€๋ฆฌ๋ฅผ ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค, RE:MIND

2

๐Ÿ•Š๏ธ ํŒ€๋ช…


ํŒ€๋ช… : ๋ง๋ž‘๋ง๋ž‘

R&R

3


๋ถ„์•ผ ์ด๋ฆ„ ํฌ์ง€์…˜
๊ธฐํš ๋ฐฐ์˜ˆ์ง„ ๐Ÿ“ˆ์„œ๋น„์Šค ๊ธฐํš - PM, ๋ฐ์Šคํฌ๋ฆฌ์„œ์น˜, ์œ ์ € ๋ฆฌ์„œ์น˜, ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ ๊ตฌ์ถ•, ์™€์ด์–ดํ”„๋ ˆ์ž„ ์ž‘์„ฑ
๊ธฐํš ๊น€์„œ์—ฐ ๐Ÿ“Š์„œ๋น„์Šค ๊ธฐํš - ์œ ์ € ๋ฆฌ์„œ์น˜, ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ ๊ตฌ์ถ•, ์™€์ด์–ดํ”„๋ ˆ์ž„ ์ž‘์„ฑ
๊ธฐํš ๊น€์ฑ„์ง„ ๐Ÿ“‹ ์„œ๋น„์Šค ๊ธฐํš - ์œ ์ € ๋ฆฌ์„œ์น˜, ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ ๊ตฌ์ถ•, ์™€์ด์–ดํ”„๋ ˆ์ž„ ์ž‘์„ฑ
๋””์ž์ธ ๊น€๊ทœ๋ฆฌ ๐Ÿ” ์„œ๋น„์Šค ๋””์ž์ธ - ๋กœ๊ณ  ์ œ์ž‘, ์„œ๋น„์Šค ์„ธ๋ถ€ ๋””์ž์ธ
๋””์ž์ธ ๋ฐ•์ •ํ™˜ ๐Ÿ“ข ์„œ๋น„์Šค ๋””์ž์ธ-ํฌ์Šคํ„ฐ ์ œ์ž‘, ์„œ๋น„์Šค ์„ธ๋ถ€ ๋””์ž์ธ
๊ฐœ๋ฐœ ์†ก์Šนํฌ ๐Ÿ”ฆ AOS ๊ฐœ๋ฐœ UI ๊ตฌํ˜„, ์„œ๋ฒ„ ์—ฐ๋™
๊ฐœ๋ฐœ ์ด์ƒ๋ฏผ ๐Ÿ’ป ๋ฐฑ์—”๋“œ ๋ฆฌ๋“œ, DB ๋ฐ API ๊ตฌ์ถ•, ์„œ๋ฒ„ ๋ฐฐํฌ
๊ฐœ๋ฐœ ๋ฐ•์ง„์šฐ ๐Ÿ–ฅ๏ธ DB ๋ฐ API ๊ตฌ์ถ•, ์„œ๋ฒ„ ๋ฐฐํฌ

๐Ÿ”Žย ๋ชฉ์  ๋ฐ ํ•„์š”์„ฑ


์–ด๋ฆด ๋•Œ๋ถ€ํ„ฐ ์„ฑ์ธ์ด ๋œ ์ง€๊ธˆ๊นŒ์ง€ ํ•ญ์ƒ ์–ธ๊ธ‰๋˜๋Š” ๋Œ€ํ•œ๋ฏผ๊ตญ์˜ ๋Œ€ํ‘œ์ ์ธ ์‚ฌํšŒ์  ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์šฐ๋ฆฌ๋‚˜๋ผ์˜ ๋†’์€ ์ž์‚ด๋ฅ  ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

ํ•œ๊ตญ์€ OECD ๊ตญ๊ฐ€ ์ค‘ ์ž์‚ด๋ฅ ์ด 10๋งŒ๋ช…๋‹น 22๋ช…์œผ๋กœ ๊ฐ€์žฅ ๋†’์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž์‚ด์ž๋“ค์˜ 95% ๊ฐ€ ์‹คํ–‰ ๋‹น์‹œ ์ •์‹  ์งˆํ™˜ ์ด ์žˆ์—ˆ์„ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋˜์–ด์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •์‹  ์งˆํ™˜์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์น˜๋ฃŒ๊ฐ€ ์ž์‚ด๋ฅ ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿค” ๋ฌธ์ œ ์ƒํ™ฉ ํŒŒ์•… ๋ฐ ํ•„์š”๊ธฐ๋Šฅ ๋„์ถœ

์ €ํฌ๋Š” ๋”์šฑ ํšจ๊ณผ์ ์œผ๋กœ ์ •์‹  ์งˆํ™˜ ์น˜๋ฃŒ๊ฐ€ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ๋•๊ณ ์ž ํ•˜์˜€๊ณ , ์ด๋ฅผ ์œ„ํ•ด ์ „๋ฌธ๊ฐ€ ์‹ฌ์ธต ์ธํ„ฐ๋ทฐ์™€ ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


1๏ธโƒฃย ์ „๋ฌธ๊ฐ€ ์‹ฌ์ธต ์ธํ„ฐ๋ทฐ

  • ์ •์‹ ๊ฑด๊ฐ•์˜ํ•™๊ณผ ์˜์‚ฌ์™€์˜ ์ธํ„ฐ๋ทฐ 4

[Pain Point & Solution]

  1. ์งง์€ ์ง„๋ฃŒ์‹œ๊ฐ„์œผ๋กœ ์ธํ•œ ์ง„๋ฃŒ์™œ๊ณกํ˜„์ƒ ๋ฐœ์ƒ

โ‡’ ์ง„๋ฃŒ ์™ธ ์‹œ๊ฐ„์˜ ํ™˜์ž ๊ธฐ๋ก์„ ์š”์•ฝํ•˜์—ฌ ์ง„๋ฃŒ ์‹œ ์ฐธ๊ณ 

  1. ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์ด๋Š” ํšŒ๋ณต๋„์˜ ๋ถ€์žฌ

โ‡’ ๋ฌด๋“œ ์ฐจํŠธ๋ฅผ ํ†ตํ•œ ํ™˜์ž์˜ ๊ฐ์ • ๋ณ€ํ™” ๋ฐ ํšŒ๋ณต ์ถ”์ด ์‹œ๊ฐํ™”

  1. ํ™˜์ž์˜ ์•ฝ ๋ณต์šฉ์„ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ฑฐ๋‚˜ ์ง€์›ํ•˜๊ธฐ ์–ด๋ ค์›€

โ‡’ ์•ฝ ๋ณต์šฉ ์—ฌ๋ถ€ ์ž…๋ ฅ์„ ํ†ตํ•œ ํ™˜์ž์˜ ์น˜๋ฃŒ ์ˆœ์‘๋„ ํŒŒ์•…


  • ์ •์‹ ๊ฑด๊ฐ•๋ณต์ง€์„ผํ„ฐ์™€์˜ ์ธํ„ฐ๋ทฐ 5

[Pain Point & Solution]

  1. ํ™˜์ž์˜ ์ด์šฉ๋ฅ ์ด ๋‚ฎ์€ ์ž๊ธฐ ๊ด€๋ฆฌ ์ˆ˜์ฒฉ์„ ์‚ฌ๋ก€ ๊ด€๋ฆฌ์— ํ™œ์šฉํ•˜๊ธฐ ์–ด๋ ค์›€

โ‡’ ํ™˜์ž์˜ ์ž‘์—…์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ์„œ๋น„์Šค ์ด์šฉ๋ฅ ์„ ๋†’์ด๊ณ , ์„ผํ„ฐ๊ฐ€ ์ˆ˜์ง‘๋œ ๊ธฐ๋ก์„ ํ™œ์šฉํ•˜๋„๋ก ์ง€์›ํ•จ

  1. ์‚ฌ๋ก€๊ด€๋ฆฌ ๋Œ€์ƒ์˜ ์ƒํƒœ๋ฅผ ๋น„๋Œ€๋ฉด์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์–ด๋ ค์›€

โ‡’ ๋ฌด๋“œ์ฐจํŠธ ์›”๋ณ„ ๊ธฐ๋ก์„ ํ†ตํ•ด ํ™˜์ž์˜ ๊ธฐ๋ถ„ ๋ณ€ํ™” ์ถ”์ด๋ฅผ ์ œ๊ณต

  1. ๋น„ํšจ์œจ์ ์ธ ์•ฝ ๋ณต์šฉ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ

โ‡’ ํ™˜์ž์˜ ์•ฝ ๋ณต์šฉ ์—ฌ๋ถ€๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋น„๋Œ€๋ฉด ์กฐํšŒ ์ง€์›


2๏ธโƒฃ ์„ค๋ฌธ- ์ •์‹ ๊ณผ ์ง„๋ฃŒ ์œ ๊ฒฝํ—˜์ž ๋Œ€์ƒ

  • ์ง„๋ฃŒ


โ‡’ ์งง์€ ์ง„๋ฃŒ ๋ฐ ์ƒ๋‹ด ์‹œ๊ฐ„์œผ๋กœ ์ธํ•ด ๊นŠ์ด ์žˆ๋Š” ์ƒ๋‹ด์ด ์–ด๋ ต๊ณ  ์˜์‚ฌ์—๊ฒŒ ์ž์‹ ์˜ ์ด์•ผ๊ธฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์— ์–ด๋ ค์›€์„ ๋Š๋ผ๊ณ  ์žˆ๋‹ค.


  • ์•ฝ๋ณต์šฉ

โ‡’ ์•ฝ ๋ณต์šฉ ์‹œ๊ฐ„์„ ์ž์ฃผ ์žŠ์–ด ์ œ์‹œ๊ฐ„ ๋ณต์šฉ์ด ์–ด๋ ต๊ณ  ๋ณต์šฉ ์‹œ ๋‚˜ํƒ€๋‚˜๋Š” ๋ถ€์ž‘์šฉ์œผ๋กœ ์ธํ•ด ์–ด๋ ค์›€์„ ๋Š๋ผ๊ณ  ์žˆ๋‹ค.


๐Ÿšจ Pain Point

์œ„์™€ ๊ฐ™์€ ์กฐ์‚ฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ •์‹ ์งˆํ™˜์˜ ํšจ๊ณผ์ ์ธ ์น˜๋ฃŒ ๋ฐ ํšŒ๋ณต์˜ Pain Point๊ฐ€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์กด์žฌํ•œ๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€์Šต๋‹ˆ๋‹ค

1๏ธโƒฃ ์ •์‹ ๊ณผ ์™ธ๋ž˜ ์ง„๋ฃŒ ์‹œ๊ฐ„์ด ์งง๋‹ค.

ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์˜ ์ •์‹ ๊ณผ ์ง„๋ฃŒ ์‹œ๊ฐ„์€ ํ•œ ํ™˜์ž ๋‹น ์•ฝ 5~10๋ถ„ ์‚ฌ์ด์ž…๋‹ˆ๋‹ค(์ดˆ์ง„ ์ œ์™ธ). ์ €ํฌ๋Š” ์•ž์„œ ์ง„ํ–‰ํ•œ ์œ ์ € ๋ฆฌ์„œ์น˜์—์„œ ์ด๋Ÿฌํ•œ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ ํšจ๊ณผ์ ์ธ ์ง„๋ฃŒ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ์ ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ž˜ ํ™˜์ž์˜ ๊ฒฝ์šฐ ์ž์‹ ์ด ๊ฒช์€ ๊ฐ์ •๊ณผ ์ƒํ™ฉ์„ ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ์˜์‚ฌ์—๊ฒŒ ์ „๋‹ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง„๋ฃŒ ๋ฐ ์ƒ๋‹ด์˜ ์–ด๋ ค์›€์„ ๋Š๋ผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜์‚ฌ ์—ญ์‹œ ํ™˜์ž์˜ ๊ธฐ์–ต์— ์˜์กดํ•œ ์ง„๋ฃŒ ๊ณผ์ •์—์„œ ์ง„๋ฃŒ ์™œ๊ณก์„ ๊ฒฝํ—˜ํ•œ๋‹ค๋Š” ๊ณ ๋ฏผ ์ง€์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ์น˜๋ฃŒ ์ค‘๋‹จ ์ดํ›„ ํšŒ๋ณต๊ธฐ์— ๊ทน๋‹จ์  ์„ ํƒ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋‚˜, ํšจ๊ณผ์ ์ธ ์‚ฌ๋ก€๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต๋‹ค.

์ •์‹  ์งˆํ™˜์œผ๋กœ ์ž…์› ์น˜๋ฃŒ๋ฅผ ๋ฐ›๊ณ  ํ‡ด์›ํ•œ ํ›„ 30์ผ ๋‚ด ์ž์‚ด๋ฅ ์€ ํ‡ด์› ํ™˜์ž 10๋งŒ ๋ช…๋‹น ์šฐ์šธ์ฆ 364๋ช…, ์กฐํ˜„๋ณ‘ 168๋ช…, ์–‘๊ทน์„ฑ ์ •๋™์žฅ์•  158๋ช…์œผ๋กœ ์ผ๋ฐ˜ ์ธ๊ตฌ ์ง‘๋‹จ์—์„œ ์ž์‚ดํ•œ ์‚ฌ๋žŒ์˜ 66.8๋ฐฐ ๋งŽ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ •์‹ ๊ฑด๊ฐ•๋ณต์ง€์„ผํ„ฐ๋Š” ํ™˜์ž๋“ค์—๊ฒŒ ํ‡ด์› ์ดํ›„ ์ง€์†์  ๊ด€๋ฆฌ๋ฅผ ๋„์™€์ฃผ๋Š” ์‚ฌ๋ก€ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ๋ช…์˜ ์‚ฌ๋ก€๊ด€๋ฆฌ์ž๊ฐ€ 35-40๋ช…์˜ ํ™˜์ž๋ฅผ ๋‹ด๋‹นํ•˜์—ฌ ๋Œ€์ƒ์ž์˜ ์ง‘์— ์ง์ ‘ ์ฐพ์•„๊ฐ€ ์•ฝ ๋ด‰ํˆฌ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ํ™˜์ž์˜ ์ƒํƒœ๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ฐฉ์‹์˜ ์‚ฌ๋ก€ ๊ด€๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ์—…๋ฌด ๋ถ€๋‹ด์ด ์ƒ๋‹นํ•œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ๊ฐ„ ๋ฐ ๋น„์šฉ์  ์ œ์•ฝ์œผ๋กœ ์ธํ•ด ์‚ฌ๋ก€๊ด€๋ฆฌ์ž๊ฐ€ ํ™˜์ž์˜ ์ผ์ƒ์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๊ธด๊ธ‰ ์ƒํ™ฉ์— ๋Œ€์ฒ˜ํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค๋Š” ํŽ˜์ธ ํฌ์ธํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํŒ€ ๋ง๋ž‘๋ง๋ž‘์€ ํ™˜์ž๊ฐ€ ์ง„๋ฃŒ ์™ธ ์‹œ๊ฐ„์— ์ž…๋ ฅํ•œ ์ƒํƒœ ์ •๋ณด๋ฅผ ์˜์‚ฌ์™€ ์‚ฌ๋ก€๊ด€๋ฆฌ์ž๊ฐ€ ์ฐธ๊ณ ํ•˜์—ฌ ์ง„๋ฃŒ ์™œ๊ณก ํ˜„์ƒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์‚ฌ๋ก€ ๊ด€๋ฆฌ ์—…๋ฌด์˜ ํšจ์œจ์„ฑ๊ณผ ํšจ๊ณผ์„ฑ์„ ๊ฐ•ํ™”ํ•˜๋Š” ์„œ๋น„์Šค, RE:MIND๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Š ๋ฆฌ์„œ์น˜ ๋ฐ ์‹œ์žฅ์กฐ์‚ฌ


1๏ธโƒฃ ๊ฒฝ์Ÿ์‚ฌ ๋ถ„์„

์ €ํฌ ์„œ๋น„์Šค์˜ โ€˜์ „์ฒด์ ์œผ๋กœ ์œ ์‚ฌํ•œโ€™ ๊ฒฝ์Ÿ ์„œ๋น„์Šค๋“ค์„ ์กฐ์‚ฌํ•˜์˜€๊ณ ,

์„œ๋น„์Šค์˜ ์ฃผ์š” ๊ธฐ๋Šฅ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” โ€˜๊ธฐ๋Šฅ๋ณ„โ€™ ๊ฒฝ์Ÿ ์„œ๋น„์Šค๋“ค์„ ์‹ฌ์ธต์ ์œผ๋กœ ๋ถ„์„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. 12 13 14

๐Ÿ’กย ์„œ๋น„์Šค ์ฐจ๋ณ„์„ฑ

  • ํ™˜์ž์˜ ์„œ๋น„์Šค ์ด์šฉ ๋‚ด์—ญ์ด ์˜์‚ฌ ๋ฐ ์‚ฌ๋ก€๊ด€๋ฆฌ์ž์˜ ์˜์‚ฌ ๊ฒฐ์ • ์ง€์›์— ํ™œ์šฉ๋œ๋‹ค
  • ๋ฌด๋“œ ์ฐจํŠธ ๊ธฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ๊ด€๋ จ ์ง„๋ฃŒ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค
  • ์•ฝ ๋ณต์šฉ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋Œ€์ฒ˜๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค

2๏ธโƒฃ ๋ชฉํ‘œ ์‹œ์žฅ

  • Tam-Sam-Som

15

TAM SAM SOM
์ •์‹ ๊ณผ ์งˆํ™˜ ์น˜๋ฃŒ ์„ผํ„ฐ ์ •์‹ ๊ณผ ์งˆํ™˜ ํ™˜์ž์˜ ์ง„๋ฃŒ ๋งŒ์กฑ๋„๋ฅผ ๋†’์ด๊ธฐ์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ณณ ํ™˜์ž ๊ด€๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•˜์—ฌ ํ™˜์ž์˜ ์งˆํ™˜์„ ์ ๊ทน์ ์œผ๋กœ ์น˜๋ฃŒํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณณ
9,802 ๋ช… 239๊ฐœ์†Œ 131๊ฐœ์†Œ

๐Ÿ‘€ ์„œ๋น„์Šค ํƒ€๊ฒŸ์ธต ์ •์˜


1๏ธโƒฃ ํƒ€๊ฒŸ ์„ค์ •

์ €ํฌ ์„œ๋น„์Šค ํƒ€๊ฒŸ์ธต์€ โ€˜์ •์‹  ์งˆํ™˜ ์น˜๋ฃŒ ์„ผํ„ฐโ€™์™€ โ€˜์ •์‹ ์งˆํ™˜์žโ€™์ž…๋‹ˆ๋‹ค.

๊ทธ ์ค‘, ์ƒ์„ธํ•œ ํƒ€๊ฒŸ์ธต์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋Œ€์ƒ์œผ๋กœ ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  1. ํ™˜์ž ๊ด€๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•˜์—ฌ ํ™˜์ž์˜ ์งˆํ™˜์„ ์ ๊ทน์ ์œผ๋กœ ์น˜๋ฃŒํ•˜๊ณ ์ž ํ•˜๋Š” ์ •์‹ ์งˆํ™˜ ์„ผํ„ฐ/๋ณ‘์› (์‚ฌ๋ก€ ๊ด€๋ฆฌ์ž/์˜์‚ฌ)

  2. ์ผ์ƒ์— ์น˜๋ฃŒ ํ–‰์œ„์— ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์น˜๋ฃŒ ๊ธฐ๋ก์— ์ ๊ทน์ ์œผ๋กœ ์ฐธ์—ฌํ•˜๋Š” ์ •์‹ ์งˆํ™˜์ž

๋ถ„๋ฅ˜ 1์ฐจ ํƒ€๊ฒŸ ์œ ์ € ๐Ÿฅ 2์ฐจ ํƒ€๊ฒŸ ์œ ์ € ๐Ÿ’Š
ํƒ€๊ฒŸ ์„ค์ • 1. ๋‚ด์›ํ•˜๋Š” ๋Œ€์ƒ์ž๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์ ์ ˆํ•œ ๋Œ€์ฒ˜๋ฅผ ์ฆ‰๊ฐ์ ์œผ๋กœ ํ•˜๊ณ ์ž ํ•˜๋Š” ์ •์‹ ๋ณต์ง€์„ผํ„ฐ (์‚ฌ๋ก€๊ด€๋ฆฌ์ž)
2. ๋‚ด์›ํ•˜๋Š” ํ™˜์ž๋“ค์˜ ์ง„๋ฃŒ๋ฅผ ์œ ์šฉํ•œ ์ •๋ณด๋“ค์„ ๊ทผ๊ฑฐ๋กœ ํšจ์œจ์ ์ด๊ฒŒ ๋‚ด๋ฆฌ๊ณ ์ž ํ•˜๋Š” ์ •์‹ ๊ณผ ๋ณ‘์› (์ •์‹ ๊ฑด๊ฐ•์˜ํ•™๊ณผ ์˜์‚ฌ)
1. ์•“๊ณ  ์žˆ๋Š” ์ •์‹  ์งˆํ™˜์„ ๊ทน๋ณตํ•ด๋‚ด๊ธฐ ์œ„ํ•ด ์ •์‹ ๊ณผ ์ง„๋ฃŒ ๋ฐ ์•ฝ ๋ณต์šฉ์„ ๊พธ์ค€ํžˆ ํ•˜๋Š” ์ •์‹ ์งˆํ™˜์ž
2. ์ •์‹  ์งˆํ™˜ ๊ทน๋ณต์— ์œ„ํ•ด ์ •์‹ ๋ณต์ง€์„ผํ„ฐ ์‚ฌ๋ก€๊ด€๋ฆฌ์ž์˜ ๋„์›€์„ ๋ฐ›๊ณ  ์žˆ๋Š” ์ •์‹ ์งˆํ™˜์ž
๊ด€๋ จ ๊ธฐ๋Šฅ ๊ด€๋ฆฌ ์ค‘์ธ ํ™˜์ž์˜ ์ฆ์ƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” โ€˜๋ฌด๋“œ ์ฐจํŠธโ€™์™€ โ€˜์•ฝ๋ณต์šฉ ์—ฌ๋ถ€โ€™๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฌ์šด โ€˜๋Œ€์‹œ๋ณด๋“œ ํ˜•ํƒœโ€™๋กœ ์ œ๊ณต
โ†’ ํŠน์ • ๊ธฐ๊ฐ„์˜ ํ™˜์ž ์ƒํƒœ์™€ ์ฃผ์š” ์ด์Šˆ ํŒŒ์•… ์ง€์›
โ†’ ํšจ์œจ์ ์ธ ํ™˜์ž ๊ด€๋ฆฌ ๋ฐ ์˜์‚ฌ ๊ฒฐ์ •
์ž์‹ ์˜ ์ฆ์ƒ์„ โ€˜๋ฌด๋“œ ์ฐจํŠธโ€™์™€ โ€˜์•ฝ๋ณต์šฉ ์—ฌ๋ถ€โ€™๋กœ ๋งค์ผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
โ†’ ์ฆ์ƒ์„ ์ฆ‰๊ฐ์ ์œผ๋กœ ๋‹ด๋‹น ์„ผํ„ฐ/๋ณ‘์›(์‚ฌ๋ก€๊ด€๋ฆฌ์ž/์˜์‚ฌ)์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ ํ™˜์ž๊ฐ€ ํšจ์œจ์ ์ธ ์ง„๋‹จ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋„์›€
โ†’ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ๋ฅผ ์ฆ‰๊ฐ์ ์œผ๋กœ ์ „๋‹ฌํ•˜์—ฌ ์‚ฌ๋ก€ ๊ด€๋ฆฌ์ž์˜ ๋น ๋ฅธ ๋Œ€์ฒ˜ ํ–‰๋™์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋„์›€

2๏ธโƒฃํƒ€๊ฒŸ ํŽ˜๋ฅด์†Œ๋‚˜ ์„ค์ •

per1 per2 per3

๐Ÿ’ก ์„œ๋น„์Šค ์†Œ๊ฐœ


๊ฐœ์š”

"Re:Mind"์„œ๋น„์Šค๋Š” ํ™˜์ž ๋‹ด๋‹น ์ „๋ฌธ์˜ ๋ฐ ์‚ฌ๋ก€๊ด€๋ฆฌ์ž์—๊ฒŒ ํ™˜์ž์˜ ๋ฌด๋“œ ์ฐจํŠธ ๊ธฐ๋ก๊ณผ ์•ฝ ๋ณต์šฉ๋ฅ  ๋“ฑ์˜ ๋ฐ์ผ๋ฆฌ ๋ผ์ดํ”„ ์ •๋ณด๋ฅผ ์••์ถ•์ ์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ™˜์ž์˜ ์ƒํƒœ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ณ  ๋”์šฑ ํšจ๊ณผ์ ์ธ ๊ด€๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ธฐ๋Šฅ

ํƒ€๊ฒŸ์ธต ์„ค๋ช… ์˜ˆ์ƒ ํšจ๊ณผ
์ •์‹ ์งˆํ™˜์ž โœ…๋ฌด๋“œ ์ฐจํŠธ ๊ธฐ๋ก ) ํ™˜์ž๊ฐ€ ๋ณธ์ธ์˜ ๊ฐ์ •์„ ํšŒ๊ณ ํ•˜๊ณ  ์น˜๋ฃŒ ์‹œ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฃจ์˜ ์ „์ฒด ํ‰๊ท  ๊ธฐ๋ถ„ ์ ์ˆ˜์™€ ํ™œ๋™ ๋ณ„ ๊ธฐ๋ถ„, ์ถ”๊ฐ€ ๋ฉ”๋ชจ ๋“ฑ์„ ๊ธฐ๋กํ•จ.
โœ… ์•ฝ ๋ณต์šฉ ๊ธฐ๋ก) ํ™˜์ž๊ฐ€ ์•ฝ ๋ณต์šฉ ์ •๋ณด ์ถ”์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ์น˜๋ฃŒ ์‹œ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฐฉ๋œ ์•ฝ์˜ ๋ณต์šฉ ์—ฌ๋ถ€๋ฅผ ๊ธฐ๋กํ•จ. ๋ฆฌ๋งˆ์ธ๋“œ ์•Œ๋ฆผ ์„ค์ •์œผ๋กœ ์ง€์†์ ์ธ ๋ณต์šฉ์„ ์ง€์›ํ•จ.
โœ… ๋ฌด๋“œ์ฐจํŠธ ๋ฐ ์•ฝ ๋ณต์šฉ ๋Œ€์‹œ๋ณด๋“œ) ํ™˜์ž์˜ ์ƒํƒœ ์ถ”์ด๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๋“œ์ฐจํŠธ์™€ ์•ฝ ๋ณต์šฉ ๋Œ€์‹œ๋ณด๋“œ ์กฐํšŒ ๊ธฐ๋Šฅ. ๋ฌด๋“œ ์ฐจํŠธ ์ ์ˆ˜ ๊ทธ๋ž˜ํ”„์™€ ์•ฝ ๋ณต์šฉ๋ฅ  ํ†ต๊ณ„, ์„ ํƒ์ผ ์ƒ์„ธ ๊ธฐ๋ก ๋“ฑ์˜ ๋‚ด์šฉ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Œ.
โœ… ๊ธด๊ธ‰ ๋„์›€ ์š”์ฒญ ) ์ž์‚ด์˜ˆ๋ฐฉ์ƒ๋‹ด์„ผํ„ฐ ์ „ํ™” ์—ฐ๊ฒฐ ๋ฐ ํ™˜์ž์˜ ๋‹ด๋‹น ์˜์‚ฌ์™€ ์‚ฌ๋ก€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์•Œ๋ฆผ ์ „๋‹ฌ
1. ์ง€์†์ ์ธ ์ƒํƒœ ๊ธฐ๋ก์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ์น˜๋ฃŒ ๋ฐ ์˜ˆ๋ฐฉ์„ ์ง€์›*ํ•œ๋‹ค.
2. ์•Œ๋ฆผ ๋“ฑ์˜ ๊ธฐ๋Šฅ์œผ๋กœ ๊พธ์ค€ํ•œ ์•ฝ ๋ณต์šฉ์„ ์ง€์›ํ•œ๋‹ค
์ •์‹ ๊ฑด๊ฐ•์˜ํ•™๊ณผ ์˜์‚ฌ
& ์ •์‹ ๊ฑด๊ฐ•๋ณต์ง€์„ผํ„ฐ ์‚ฌ๋ก€๊ด€๋ฆฌ์ž
โœ… ๋‹ด๋‹น ํ™˜์ž ๊ด€๋ฆฌ) ๋“ฑ๋ก๋œ ๋‹ด๋‹น ํ™˜์ž์˜ ๊ธฐ๋ก์„ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ ์น˜๋ฃŒ ์ง€์› ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ. ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ด๋‹น ํ™˜์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Œ.
โœ…๋ฌด๋“œ์ฐจํŠธ ๋ฐ ์•ฝ ๋ณต์šฉ ๋Œ€์‹œ๋ณด๋“œ) ๋‹จ์‹œ๊ฐ„ ๋‚ด ๋‹ด๋‹น ํ™˜์ž์˜ ์ƒํƒœ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™˜์ž์˜ ๊ธฐ๋ก์„ ์••์ถ•์ ์œผ๋กœ ์ œ์‹œํ•จ. ํ™˜์ž์˜ ์ƒํƒœ ์ถ”์ด๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๋“œ ์ฐจํŠธ์™€ ์•ฝ ๋ณต์šฉ ๋Œ€์‹œ ๋ณด๋“œ ์กฐํšŒ ๊ธฐ๋Šฅ. ์š”์•ฝ๋œ ์ •๋ณด๋ฅผ ์šฐ์„  ์ œ๊ณตํ•˜๋˜, ๋ณ„๋„์˜ ์ƒ์„ธ ๊ธฐ๋ก๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ. ๋ฌด๋“œ ์ฐจํŠธ ์ ์ˆ˜๋กœ ํšŒ๋ณต ์ถ”์ด๋ฅผ ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์•ฝ ์ฒ˜๋ฐฉ ํ†ต๊ณ„๋กœ ์น˜๋ฃŒ ์ˆœ์‘๋„๋ฅผ ํŒŒ์•…ํ•˜๋Š” ์—…๋ฌด๋ฅผ ์ง€์›ํ•จ
โœ…๊ธด๊ธ‰ ๋„์›€ ์š”์ฒญ์— ๋Œ€ํ•œ ๋Œ€์ฒ˜ ) ๊ธด๊ธ‰ ๋„์›€์„ ์š”์ฒญํ•œ ๋‹ด๋‹น ํ™˜์ž์— ๋Œ€ํ•œ ์ฆ‰๊ฐ์  ๋Œ€์‘์„ ์ง€์›ํ•จ. ์š”์ฒญ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ํ™˜์ž ๊ธฐ๋ก ์กฐํšŒ๋‚˜ ์ „ํ™” ์—ฐ๊ฒฐ ๋“ฑ. (ํ–ฅํ›„ ๋ณดํ˜ธ์ž ์—ฐ๋ฝ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์˜ˆ์ •)
1. ์งง์€ ์ง„๋ฃŒ ์‹œ๊ฐ„ ๋‚ด ํ™˜์ž์˜ ์ƒํƒœ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ  ์ •ํ™•ํ•œ ์˜์‚ฌ ๊ฒฐ์ •์„ ๋‚ด๋ฆฐ๋‹ค.
2. ํ™˜์ž์˜ ์ƒํƒœ์— ๋”ฐ๋ฅธ ์ฆ‰๊ฐ์ ์ธ ๋Œ€์ฒ˜๋ฅผ ์ง€์›ํ•œ๋‹ค.
์ •์‹ ๊ฑด๊ฐ•์˜ํ•™๊ณผ ์˜์‚ฌ โœ… ํ™˜์ž ์•ฝ ์ฒ˜๋ฐฉ ์ •๋ณด ์—…๋ฐ์ดํŠธ ) ํ™˜์ž์—๊ฒŒ ์•ฝ์„ ์ฒ˜๋ฐฉํ•  ์‹œ๊ฐ„๋Œ€์™€ ์ค‘์š”๋„๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Œ. 1. ํ™˜์ž์˜ ์•ฝ ๋ณต์šฉ๋ฅ ๊ณผ ๋ฏธ๋ณต์šฉ ์‚ฌ์œ  ๋“ฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ง„๋ฃŒ ์‹œ๊ฐ„์— ๋ถ€์ž‘์šฉ ์œ ๋ฌด ๋“ฑ์„ ์ƒ์˜ํ•˜๊ณ  ๋‹ค์Œ ์ฒ˜๋ฐฉ์„ ์ง„ํ–‰ํ•œ๋‹ค.
์ •์‹ ๊ฑด๊ฐ•๋ณต์ง€์„ผํ„ฐ ์‚ฌ๋ก€๊ด€๋ฆฌ์ž โœ… ์œ„ํ—˜๋„ ๋†’์€ ํ™˜์ž ๊ด€๋ฆฌ ) ํŠนํžˆ ์ฃผ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ํ™˜์ž ๋ฆฌ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ด€๋ฆฌ ํŽธ์˜์„ฑ์„ ๊ฐ•ํ™”ํ•จ. ์•ฝ ๋ณต์šฉ๊ณผ ๋ฌด๋“œ ์ฐจํŠธ ์ ์ˆ˜์— ๋”ฐ๋ผ ์œ„ํ—˜๋„์— ์ฐจ๋“ฑ์„ ๋‘์–ด ์‚ฌ๋ก€ ๊ด€๋ฆฌ์ž์˜ ์˜์‚ฌ ๊ฒฐ์ •์„ ์ง€์›ํ•จ. 1. ์‚ฌ๋ก€๊ด€๋ฆฌ์ž์˜ ์šฐ์„ ์ˆœ์œ„ ์˜์‚ฌ ๊ฒฐ์ •๊ณผ ์ •๋ณด ์กฐํšŒ๋ฅผ ์ง€์›ํ•œ๋‹ค.

*์†ก๊ฐ€์˜, ์ด์„ธ์ •, ์œค์šด, ๊น€์ฐฝ์œค, ์ „๋ช…์šฑ, ์ฃผ์—ฐํ˜ธ, ์ด์ค‘์„ . (2018). ์–‘๊ทน์„ฑ์žฅ์•  ํ™˜์ž์šฉ ํ•œ๊ตญ์–ดํŒ ๊ธฐ๋ถ„ ๊ธฐ๋ก ์Šค๋งˆํŠธํฐ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐœ๋ฐœ ๋ฐ ์ž„์ƒ์  ์ ์šฉ. ์‹ ๊ฒฝ์ •์‹ ์˜ํ•™, 57(3), 244-251.


์‚ฌ์šฉ์ž ์—ฌ์ • ์ง€๋„

j1 j2 j3

ํ•ต์‹ฌ๊ธฐ๋Šฅ - IA (์ •์‹ ์งˆํ™˜์ž)

17

ํ•ต์‹ฌ ๊ธฐ๋Šฅ - IA (์˜์‚ฌ ๋ฐ ์‚ฌ๋ก€๊ด€๋ฆฌ์ž)

18

๐Ÿ“Š ์„œ๋น„์Šค ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ


19

mb


๐ŸŽจย ๋””์ž์ธ ๋ฌด๋“œ๋ณด๋“œ


20


21

๐Ÿ”ย System Architecture


IํŒ€_์„œ๋น„์Šค์•„ํ‚คํ…์ฒ˜

๐Ÿ“œย ERD ์„ค๊ณ„๋„


reminderd

๐Ÿ’ป Technology

๐Ÿ“˜Android ์Šคํƒ ์„ ์ • ์ด์œ 

๊ฐœ๋ฐœ ํ™˜๊ฒฝ/ ๊ธฐ์ˆ ์Šคํƒ ์‚ฌ์šฉ ์ด์œ 
Android OS ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋ฐ”์ผ ์šด์˜์ฒด์ œ ์ค‘ ํ•˜๋‚˜๋กœ ๋ณด๋‹ค ๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽธ๋ฆฌํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ ์ž ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
Clean Architecture โ€ข App: ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ง„์ž…์ ์„ ํฌํ•จํ•˜๋ฉฐ ์ข…์†์„ฑ ์ฃผ์ž…, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ, ์ „์—ญ ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. โ€ข Core: ์•ฑ์˜ ์ค‘์‹ฌ์  ๊ธฐ๋Šฅ๊ณผ ๋กœ์ง์„ ํฌํ•จํ•˜์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. โ€ข Domain Layer: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด์— ํ•„์š”ํ•œ ์™€ Usecase, Repository ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.โ€ข Data Layer: Data Layer๋Š” Domain Layer์— ์˜์กด์„ฑ์„ ์ง€๋‹ˆ๊ณ , Repository์˜ ๊ตฌํ˜„์ฒด, ๋ฐ์ดํ„ฐ์˜ ์ž…์ถœ๋ ฅ์„ ์ง„ํ–‰ํ•˜๋Š” Data Source, Entity๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.โ€ข Presentation Layer: ๋‚ด๋ถ€์ ์œผ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ ์˜์กด์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด MVI ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. MVI ํŒจํ„ด์—์„œ ์ด ๋ ˆ์ด์–ด๋Š” ์‚ฌ์šฉ์ž์˜ ์˜๋„(Intent)๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ด๋ฅผ ๋ชจ๋ธ๋กœ ์ „๋‹ฌํ•˜์—ฌ ํ•„์š”ํ•œ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋ณ€ํ™”๋œ ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. โ€ข ui: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํ™”๋ฉด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
Jetpack Compose Android ui๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ui๋ฅผ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ compose์— ์ ํ•ฉํ•œ MVI ํŒจํ„ด์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Dagger-Hilt Clean Architecture์˜ ๊ฐ ๊ณ„์ธต์—์„œ ํ•„์š”ํ•œ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๋‹ค๋ฅธ ๊ณ„์ธต์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์˜์กด์„ฑ ์ฃผ์ž…์— Dagger Hilt๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Android Jetpack Android Application ๊ฐœ๋ฐœ ์‹œ ๊ตฌ๊ธ€์—์„œ ๊ถŒ์žฅํ•˜๋Š” Jetpack ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ viewmodel, flow, datastore๋ฅผ ์ ๊ทน ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
Retrofit Restful API ํ˜ธ์ถœ์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ ์ž ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
CICD Github Action์„ ํ™œ์šฉํ•œ CI/CD๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด dev ๋ธŒ๋žœ์น˜์— push๋ ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ํ…Œ์ŠคํŠธ ๋˜๊ฒŒํ•˜์—ฌ ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜์˜€๊ณ  ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํŒ€ Slack์— apk ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ์—…๋กœ๋“œ ํ•˜์—ฌ ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ“˜Backend ๊ธฐ์ˆ  ์Šคํƒ ์„ ์ • ์ด์œ 

๊ฐœ๋ฐœ ํ™˜๊ฒฝ/ ๊ธฐ์ˆ ์Šคํƒ ์‚ฌ์šฉ ์ด์œ 
Spring Boot ๋ฐฑ์—”๋“œ ํŒ€์› 2๋ช…์˜ ์ดํ•ด๋„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฐœ๋ฐœ ์–ธ์–ด๋Š” ์ž๋ฐ”์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ์•ˆ์ •์ ์ด๊ณ  ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์ž˜ ๋˜์–ด ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ €ํฌ๋Š” ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Spring Security ํ† ํฐ๊ณผ ํ•จ๊ป˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ๋Œ€ํ•ด ๋น ๋ฅด๊ณ  ์†์‰ฝ๊ฒŒ ์ธ์ฆ / ์ธ๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด Spring Security๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ SecurityFilterChain์„ ๋งŒ๋“ค์–ด API๋งˆ๋‹ค ์ธ์ฆ / ์ธ๊ฐ€๋ฅผ ์ปค์Šคํ…€๋งˆ์ด์ง• ํ•  ์ˆ˜ ์žˆ๊ณ  ํ™•์žฅ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
JWT JWTํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ† ํฐ ๋‚ด์— ์‚ฌ์šฉ์ž ์•„์ด๋””, ๊ถŒํ•œ, ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ์ €์žฅํ•˜๊ณ  ์‰ฝ๊ฒŒ ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Spring-Data-JPA ์ €ํฌ ํŒ€์€ ๊ฐœ๋ฐœ ์–ธ์–ด๋กœ ์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•จ์— ๋”ฐ๋ผ ์ž๋ฐ” ๊ธฐ๋ฐ˜ orm ์ธํ„ฐํŽ˜์ด์Šค์ธ JPA๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ํ™˜๊ฒฝ์—์„œ Spring-Data-JPA๋Š” JPA๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ JPA๋ฅผ ์กฐ๊ธˆ ๋” ์‰ฝ๊ณ  ๊ฐ„๋‹จํžˆ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์œผ๋กœ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์–ด ํ•ด๋‹น ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Github-Actions Github Actions์— ๊ด€ํ•ด ํ’๋ถ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์žˆ์–ด ์†์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ CICD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ public์œผ๋กœ ํ•˜๋ฉด ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ด์šฉ ์š”๊ธˆ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ธฐ์ˆ ์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
Swagger ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•œ ๋ช…์ด๋ผ๋Š” ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด, API๋ฌธ์„œํ™”๋ฅผ ์ž์„ธํžˆ ํ•˜๊ธฐ๋กœ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์งง์€ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ ๋™์•ˆ Rest API ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ์—†์ด springdoc-openapi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ API ๋ฌธ์„œํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ ํ•ด๋‹น ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ apiํ…Œ์ŠคํŒ…์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค.
Redis ํœ˜๋ฐœ์„ฑ ๋ฐ์ดํ„ฐ์ธ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒํ•œ Redis๋Š” ๋น ๋ฅธ I/O ์ฒ˜๋ฆฌ์™€ TTL(Time-To-Live) ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์˜€๊ณ  TTL ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ํŒ€์›๋“ค์˜ Redis์— ๋Œ€ํ•œ ์ดํ•ด๋„๊ฐ€ ๊ฐ€์žฅ ๋†’์•˜๊ธฐ์— ํ•ด๋‹น ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
NCP Server NCP์™€์˜ ํ˜‘์—…์„ ํ†ตํ•ด ํฌ๋ ˆ๋”ง์„ ์ œ๊ณต๋ฐ›์•„์„œ ์ข‹์€ ์‚ฌ์–‘์˜ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒ€์› ๋ชจ๋‘ AWS EC2 ์„œ๋ฒ„๋งŒ ๊ตฌ์ถ• ํ•ด ๋ณด์•˜์–ด์„œ, ํƒ€ ํ”Œ๋žซํผ์˜ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ๊ฒฝํ—˜์ด ๋  ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
NCP Container Registry NCP Server์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜์—ฌ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GIthub-Action๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ CI/CD๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
NCP Object Storage NCP Container Register์˜ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ํฌํ•จํ•˜์—ฌ, ๊ฐ์ข… ํŒŒ์ผ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
AWS RDS NCP์—์„œ ์ œ๊ณตํ•˜๋Š” NCP CloudDB๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, ๋‹ค์†Œ ๋น„์‹ผ ๊ฐ€๊ฒฉ์œผ๋กœ ์ธํ•ด ํฌ๋ ˆ๋”ง์„ ์ ˆ์•ฝํ•˜๊ณ ์ž ํ”„๋ฆฌํ‹ฐ์–ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” AWS RDS๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
MySQL ๋ฐฑ์—”๋“œ ํŒ€์› 2๋ช…์˜ ์ดํ•ด๋„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ RDBMS๋Š” MySQL์ž…๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท์— MySQL ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ํ’๋ถ€ํ•˜๊ณ  Aws RDS์—์„œ MySQL๋ฅผ ์ง€์›ํ•ด์ฃผ๋Š” ๊ฒƒ๋„ ํ•ด๋‹น ๊ธฐ์ˆ ์˜ ์„ ํƒ ์ด์œ ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€์˜ ์›Œํฌํ”Œ๋กœ์šฐ

  1. ๊นƒํ—ˆ๋ธŒ์˜ master branch์— ์ฝ”๋“œ๋ฅผ pushํ•œ๋‹ค.
  2. github secret์— ๋“ฑ๋ก๋œ ๋ณ€์ˆ˜๋ฅผ ์„œ๋ฒ„ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ .env ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•œ๋‹ค.
  3. ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ๋นŒ๋“œํ•˜์—ฌ .jarํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
  4. NCP Container Registry์— ๋กœ๊ทธ์ธํ•œ๋‹ค.
  5. docker image๋กœ ๋นŒ๋“œํ•œ๋‹ค.
  6. NCP Container Registry์— pushํ•œ๋‹ค.
  7. docker-compose.yml ํŒŒ์ผ์„ ์„œ๋ฒ„ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์˜ฎ๊ธด๋‹ค.
  8. NCP Container Registry์—์„œ ์ด๋ฏธ์ง€๋ฅผ pullํ•œ๋‹ค.
  9. ๋„์ปค ์ปดํฌ์ฆˆ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์Šคํ”„๋ง๋ถ€ํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋„์šด๋‹ค.

๐Ÿ”–ย Naming Rules


๐Ÿ–ฅ๏ธFrontend

  • ํŒŒ์ผ : CamelCase + SnakeCase
  • ํด๋ž˜์Šค๋ช… : PascalCase
  • ํ•จ์ˆ˜/๋ณ€์ˆ˜๋ช… : CamelCase

๐Ÿ’ปBackend

  • Packages
    • ํ•ญ์ƒ ์†Œ๋ฌธ์ž๋กœ ์ƒ์„ฑํ•˜๊ธฐ
  • Classes
    • ๋ช…์‚ฌ์—ฌ์•ผ ํ•œ๋‹ค.
    • ๋ณตํ•ฉ ๋‹จ์–ด์˜ ๊ฒฝ์šฐ ๊ฐ ๋‹จ์–ด์˜ ์ฒซ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž.
    • ์™„์ „ํ•œ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋‘ ๋ฌธ์ž์–ด์™€ ์•ฝ์–ด๋Š” ํ”ผํ•œ๋‹ค.
  • Interfaces
    • ์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„๋„ ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๊ฐ™์€ ๋Œ€๋ฌธ์ž ๊ทœ์น™์„ ์ ์šฉํ•œ๋‹ค.
  • Methods
    • ๋™์‚ฌ์—ฌ์•ผ ํ•œ๋‹ค.
    • ๋ณตํ•ฉ ๋‹จ์–ด์˜ ๊ฒฝ์šฐ ์ฒซ ๋‹จ์–ด๋Š” ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  • Constants
    • ํด๋ž˜์Šค ์ƒ์ˆ˜๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋“ค๊ณผ ์ƒ์ˆ˜๋“ค์˜ ์ด๋ฆ„์€ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๊ณ  ๊ฐ ๋‹จ์–ด๋Š” ์–ธ๋”๋ฐ” ("_")๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค. -** Variables**
    • ๋ณ€์ˆ˜ ์ด๋ฆ„์˜ ์ฒซ๋ฒˆ์งธ ๋ฌธ์ž๋Š” ์†Œ๋ฌธ์ž์—ฌ์•ผ ํ•œ๋‹ค.
    • ์–ธ๋”๋ฐ” ๋˜๋Š” ๋‹ฌ๋Ÿฌ ํ‘œ์‹œ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ ๋˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž.
    • ์งง์ง€๋งŒ ์˜๋ฏธ์žˆ๊ฒŒ ์ง“๋Š”๋‹ค.
    • ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ ์˜๋„๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ์˜๋ฏธ์ ์œผ๋กœ ์ง“๋Š”๋‹ค.
    • ํ•œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ณ€์ˆ˜๋Š” ์•”์‹œ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ๋ฒ„๋ฆด ๋ณ€์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ํ”ผํ•œ๋‹ค.
    • ์ž„์‹œ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์€ integer๋Š” i,j,k,m,n ์„ ์‚ฌ์šฉํ•˜๊ณ  character๋Š” c,d,e๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ETC
    • DB ํ…Œ์ด๋ธ”:ย lower_snake_case
    • ENUM, ์ƒ์ˆ˜:ย Upper_snake_case
    • ์ปฌ๋ ‰์…˜(Collection):ย ๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ย ์ปฌ๋ ‰์…˜์„ ๋ช…์‹œํ•œ๋‹ค. (Ex. userList, users, userMap)
    • LocalDateTime: ์ ‘๋ฏธ์‚ฌ์—ย Date๋ฅผ ๋ถ™์ธ๋‹ค.

๐Ÿ—‚๏ธย Commit Convention


git commit -m "feat(#8) : ์•ฑ ์„ค์น˜ ํ”Œ๋กœํŒ… ๋ฐฐ๋„ˆ ์ถ”๊ฐ€"

  • featย : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  • fixย : ๋ฒ„๊ทธ ์ˆ˜์ •
  • choreย : ๋นŒ๋“œ ์—…๋ฌด, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, dependencies ์„ค์ •
  • docsย : ๋ฌธ์„œ ์ˆ˜์ • -ย README.md, .github, ..etc
  • designย : ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ -ย CSS
  • styleย : ๊ธฐ๋Šฅ ์ˆ˜์ • ์—†๋Š” ์ฝ”๋“œ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ
  • refactorย : ์ฝ”๋“œ ๋ฆฌํŒฉํ„ฐ๋ง
  • testย : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŽ™ํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
  • ciย : ci ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •
  • perfย : ์„ฑ๋Šฅ ๊ฐœ์„ 
  • renameย : ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช… ๋ณ€๊ฒฝ

๐Ÿฌย Git Flow


  • masterย : ์ถœ์‹œ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ์˜ ๋ธŒ๋žœ์น˜

  • featureย : ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜

  • hotfixย : ์ถœ์‹œ ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ธŒ๋žœ์น˜

    ๋ธŒ๋žœ์น˜ ๋„ค์ด๋ฐ :ย feat/์ด์Šˆ๋ฒˆํ˜ธ