๐Ÿ™Œ 2024๋…„ 5์›”ํšŒ๊ณ 

@Troy ยท June 01, 2024 ยท 14 min read

5์›”์€ ๋ฏธ๋ฆฌ ๋ณด๋Š” ์ฃผ 4์ผ์ œ์ฒ˜๋Ÿผ ํœด์ผ์ด ๋งŽ์•˜๊ณ  ๊ฐœ์ธ์ ์ธ ์ผ์ •์ด ๋งŽ์•˜๋˜ ๋‹ฌ์ด์—ˆ๋‹ค. ์—…๋ฌด๋Š” 4์›”๋ถ€ํ„ฐ ๋‹ด๋‹นํ–ˆ๋˜ ์ž‘์—…๋“ค์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  ์„ฑ๊ณผ๋ถ„์„ ๋ฐ ๋ฐœํ‘œ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค. ์–ด๋–ค ์ž‘์—…๋“ค์„ ํ–ˆ๋Š”์ง€, 4์›” ํšŒ๊ณ  ๋•Œ ํ•˜๊ธฐ๋กœ ๋งˆ์Œ๋จน์—ˆ์ง€๋งŒ ์–ด๋–ค ๊ฑด ๋†“์ณค๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ ค ํ•œ๋‹ค.

๐Ÿค” 4์›” ํšŒ๊ณ  ๋Œ์•„๋ณด๊ธฐ

4์›” ํšŒ๊ณ ๋•Œ ์ •๋ฆฌํ•œ action item๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ํ™”๋ฉด์ „ํ™˜ ๊ฐ„ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด Native Stack ๋„์ž… ๋ฐ ์„ฑ๋Šฅ ๋ถ„์„๋ฐฉ๋ฒ• ์ฐพ์•„๋ณด๊ธฐ
  • ์—๋Ÿฌ ๋ฐ”์šด๋”๋ฆฌ๋ฅผ ์กฐ๊ธˆ ๋” ์ฑ•ํ„ฐ์›๋“ค์ด ์‰ฝ๊ฒŒ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ณ ๋ฏผํ•ด๋ณด๊ธฐ
  • ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„์— ๊ด€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•ด๋ณด๊ธฐ
  • UI ํŒจํ„ด๋ณ„ ์ตœ์ ํ™” ์ •๋ฆฌํ•ด๋ณด๊ธฐ
  • React ๋‚ด๋ถ€ ์ฝ”๋“œ ๋ถ„์„ํ•ด๋ณด๊ธฐ
  • ์„ ์–ธ์ ์œผ๋กœ ์ธ์ฆ/์ธ๊ฐ€ ๊ด€๋ฆฌํ•˜๊ธฐ

์ด์ค‘์—์„œ ์‹ค์ œ๋กœ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฐœ์ƒํ–ˆ๋˜ ์‹œํ–‰์ฐฉ์˜ค๋“ค๊ณผ, ํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค.

1. ํ™”๋ฉด์ „ํ™˜ ๊ฐ„ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด Native Stack ๋„์ž… ๋ฐ ์„ฑ๋Šฅ ๋ถ„์„๋ฐฉ๋ฒ• ์ฐพ์•„๋ณด๊ธฐ

5์›”์€ ์‹ค์ œ๋กœ ๊ธฐ์กด StackNavigator์—์„œ NativeStackNavigator๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๊ธฐ์กด์— stackNavigator๋Š” JS๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง€๋Š” ๋ฐ˜๋ฉด NativeStackNavigator๋Š” ์ง์ ‘ Native ์š”์†Œ๋“ค์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ธฐ ๋–„๋ฌธ์— ๊ธฐ์กด๊ณผ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋“ค์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‹ฌ๋ผ์ง„ ์ธํ„ฐํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ ํ”Œ๋žซํผ๋ณ„๋กœ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„๋˜๋Š” ๋ถ€๋ถ„๋“ค ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํ•œ ๊ธฐ์กด๊ณผ ์œ ์‚ฌํ•œ ์œ ์ € ๊ฒฝํ—˜์„ ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ์ผ์ผ์ด ํ™•์ธํ•˜๊ณ  ์ ์šฉํ–ˆ๋‹ค.

์ด๊ณผ์ •์—์„œ ๋‹ค์–‘ํ•œ ์ด์Šˆ๋“ค์ด ์กด์žฌํ–ˆ๋Š”๋ฐ ์˜ˆ๋กœ, ๊ธฐ์กด์— card์™€ modal ๊ฐ„์˜ ์ด๋™์ด ์ž์œ ๋กœ์›Œ card -> mํ•ดdal -> card๋กœ ํ™”๋ฉด ์ „ํ™˜์ด ์ž์œ ๋กœ์› ๋˜ ๋ฐ˜๋ฉด, Native ์š”์†Œ๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ Modal์ด Navigation์˜ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋…ธ์ถœ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ทœ์น™์— ๋”ฐ๋ผ, Modal ๋’ค์— ์Œ“์—ฌ ๋ณด์ด์ง€ ์•Š๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋‘๋ฒˆ์งธ๋กœ ํ™”๋ฉด์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ž์ฒด๊ฐ€ ๋‹ฌ๋ผ์ง€๊ฑฐ๋‚˜, ์• ๋‹ˆ๋ฉ”์ด์…˜ ์†๋„๊ฐ€ ์ค„์–ด๋“œ๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ์ด์Šˆ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋Œ€์ฒ˜ํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

์ด์Šˆ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ณ  ๋‚˜์„œ ์„ฑ๊ณผ ๋ถ„์„์„ ์œ„ํ•ด ์ ์šฉ ์ „ ์ œํ’ˆ ๋‚ด ํ•ต์‹ฌ ํผ๋„๋“ค์˜ ํ™”๋ฉด ์ „ํ™˜๋“ค์„ ๋น„๊ตํ•˜๋ณด๊ธฐ ์œ„ํ•ด ์˜์ƒ์ดฌ์˜์„ ์ง„ํ–‰ํ•˜๊ณ , ์ดํ›„ ๋ฐ˜์˜๋œ ๋ฒ„์ „์œผ๋กœ ๋‹ค์‹œ ์ดฌ์˜ํ•˜์—ฌ ๋น„๊ตํ•ด๋ณด๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ์ถ”๊ฐ€๋กœ ์•ˆ๋“œ๋กœ์ด๋“œ๋งŒ ํ˜„์žฌ ์ง€์›๋˜์ง€๋งŒ maestro(e2e ํ…Œ์ŠคํŠธ)๋ฅผ ์ด์šฉํ•œ FlashLight ์„ฑ๋Šฅ ์ธก์ •์„ ํ†ตํ•ด ํ™”๋ฉด์ „ํ™˜๊ฐ„ ์„ฑ๋Šฅ์„ ์ธก์ •ํ–ˆ๋‹ค. ์•ž์„œ ์ดฌ์˜ํ–ˆ๋˜ ๋ฉ”์ธํผ๋„๋“ค์— ๋Œ€ํ•œ e2e script๋ฅผ ์ž‘์„ฑํ•˜๊ณ  30ํšŒ ์ •๋„ ๋ฐ˜๋ณต ์ธก์ •์„ ํ†ตํ•ด ํ™”๋ฉด์ „ํ™˜๊ฐ„ ์„ฑ๋Šฅ์„ ์ธก์ •ํ–ˆ๋‹ค.

ํ•ด๋‹น ๊ฒฐ๊ณผ๋Š” ์•„์ง ๋ถ„์„์— ์‹œ๊ฐ„์ด ํ•„์š”ํ•ด 6์›” ๋™์•ˆ ๋ถ„์„ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ณต์œ ํ•  ์˜ˆ์ •์ด๋‹ค. 6์›”์—๋Š” ์ ์šฉ๊ณผ์ •์—์„œ์˜ troubleShooting๊ณผ ์„ฑ๋Šฅ์ธก์ • ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๋ ค ํ•œ๋‹ค.

2. ์—๋Ÿฌ ๋ฐ”์šด๋”๋ฆฌ๋ฅผ ์กฐ๊ธˆ ๋” ์ฑ•ํ„ฐ์›๋“ค์ด ์‰ฝ๊ฒŒ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ณ ๋ฏผํ•ด๋ณด๊ธฐ

์—๋Ÿฌ ๋ฐ”์šด๋”๋ฆฌ ์ž‘์—…์„ ์ œํ’ˆ ๋‚ด ์ „์ฒด ํ™”๋ฉด๋“ค์— ๋Œ€ํ•œ ์ ์šฉ์„ ๋“œ๋””์–ด ์™„๋ฃŒํ–ˆ๋‹ค. ์ง€๋‚œ ํšŒ๊ณ  ๋•Œ ๊ณ ๋ฏผํ–ˆ๋˜ ์ƒˆ๋กœ์šด ํ™”๋ฉด๋“ค์ด ์ถ”๊ฐ€๋˜์—ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„์„ ์œ„ํ•œ ์ž‘์—…๋“ค๋„ ์ถ”๊ฐ€๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค.

๋จผ์ € ํ˜„์žฌ ์ ์šฉ๋œ ํ™”๋ฉด๋“ค๊ณผ ์ ์šฉ๋˜์ง€ ์•Š์€ ํ™”๋ฉด๋“ค์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ts-morph๋ฅผ ์ด์šฉํ•œ script ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์ง€์†ํ•ด์„œ ์—๋Ÿฌ๋ฐ”์šด๋”๋ฆฌ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์€ ํ™”๋ฉด๋“ค์— ๋Œ€ํ•ด ์ฒดํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ๋กœ๋Š” ๋™๋ฃŒ๋ถ„๊ป˜์„œ ์ฃผ์‹  ์•„์ด๋””์–ด๋กœ, ๊ธฐ์กด ์Šคํฌ๋ฆฐ ํŒŒ์ผ ์ƒ์„ฑ ์‹œ ์‚ฌ์šฉํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ scrip ์ฝ”๋“œ์— ์—๋Ÿฌ๋ฐ”์šด๋”๋ฆฌ๋ฅผ ์ ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด, ์ƒˆ๋กœ์šด ํ™”๋ฉด์„ ์ƒ์„ฑํ•  ๋•Œ ์ž๋™์œผ๋กœ ์—๋Ÿฌ๋ฐ”์šด๋”๋ฆฌ๊ฐ€ ์ ์šฉ๋˜๋„๋ก ํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ์ œ์•ˆ ๋ฐ›์€ ๋‹น์‹œ์— ๋Š˜ ์ง์ ‘ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  Navigator์— ์ผ์ผ์ด ์ถ”๊ฐ€ํ–ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ script์— ์ถ”๊ฐ€ํ•  ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋Š”๋ฐ, ํ•จ๊ป˜ ๊ณ ๋ฏผํ•ด์ฃผ์‹  ๋•๋ถ„์— ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ˜„์žฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ ์ ์šฉ ์ž‘์—… ๋ฟ ์•„๋‹ˆ๋ผ, ์ดํ›„ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋  ํ™”๋ฉด๋“ค์„ ์œ„ํ•œ ์ž‘์—…๋“ค๋„ ์ง„ํ–‰ํ•ด ์กฐ๊ธˆ ๋” ์™„์„ฑ๋„ ์žˆ๊ฒŒ ๋งˆ๋ฌด๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ ์šฉ๋˜์ง€ ์•Š์€ ํ™”๋ฉด๋“ค์„ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” script๋Š” ์ดํ›„ github action์„ ์ด์šฉํ•œ CI์— ์—ฐ๋™ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฐœ์ „์‹œ์ผœ๋ณผ ์˜ˆ์ •์ด๋‹ค.

6์›”์—๋Š” ์ž‘์—… ๋ฐฐ๊ฒฝ, ์ž‘์—… ๋ฐฉ์‹, ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๋ ค ํ•œ๋‹ค.

3. ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„์— ๊ด€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•ด๋ณด๊ธฐ

4์›”์— ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„์— ๊ด€ํ•œ ๊ณต๋ถ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค ๋Š๊ผˆ๋˜ ์ด์œ ๋Š”, ์Šค์ฟผ๋“œ ๊ธฐ๋Šฅ๊ฐœ๋ฐœ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค๋ฃจ๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.

๋‹น์‹œ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋Š” 1200์ค„์ด ๋„˜๋Š” ๋งŽ์€ ์ฝ”๋“œ๋“ค์ด ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ์— ๋‹ด๊ฒจ์žˆ์–ด ํ•œ๋ˆˆ์— ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์› ๊ณ , ์ž์ฒด์ ์œผ๋กœ API ์š”์ฒญํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ ๋ฐ–์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์ค‘๋ณต API๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋“ฑ์˜ ์ด์Šˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ด์Šˆ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ๊ณผ ํ™”๋ฉด์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋  ๋•Œ,์ œํ’ˆ์˜ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋‹ฌ๋ผ์กŒ์„ ๋•Œ ์œ ์—ฐํ•˜๋ฉด์„œ ํ™•์žฅ์„ฑ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„๋ฅผ ๊ณต๋ถ€ํ–ˆ๊ณ , ์ด๋ฅผ ์ ์šฉํ•ด๋ณด๋ ค ํ–ˆ๋‹ค.

์Šค์ฟผ๋“œ ์ž‘์—…์˜ ์—ฌ์œ ๊ฐ€ ์žˆ์„ ๋•Œ, ๋˜๋Š” ํ‡ด๊ทผ ํ›„์— ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„์— ๋Œ€ํ•œ ๊ฐ•์˜์™€ ๊ธ€์„ ์ฝ์œผ๋ฉด์„œ ์ง์ ‘ ์ ์šฉํ•˜๋ฉด์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„ ํŒจํ„ด์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๊ณ  ๊ทธ์ค‘์—์„œ compound Pattern์„ ์ด์šฉํ•œ headless UI๋ฅผ ์ ์šฉํ•ด๋ณด์•˜๋‹ค.

์•„์ง ๊ฐœ์„ ํ•  ๋ถ€๋ถ„์ด ๋งŽ์ด ๋‚จ์•„์žˆ์ง€๋งŒ 1์ฐจ์ ์œผ๋กœ ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ์„ ๋•Œ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€ ์ฝ”๋“œ๊ฐ€ 300์ค„ ์ด๋‚ด๋กœ ์ค„์–ด๋“ค๊ฒŒ ๋˜์—ˆ๊ณ , ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ฒŒ ์š”๊ตฌ์‚ฌํ•ญ๋“ค์„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด๋ถ€๋ถ„๋„ ์ดํ›„์— ์กฐ๊ธˆ ๋” ๊ฐœ์„  ์ž‘์—…์„ ์ถ”๊ฐ€ํ•œ ๋’ค์— ๊ธ€๋กœ ์ž‘์„ฑํ•ด๋ณด๋ ค ํ•œ๋‹ค.

ํ•˜์ง€ ๋ชปํ•œ UI ํŒจํ„ด๋ณ„ ์ตœ์ ํ™” ์ •๋ฆฌํ•˜๊ธฐ, React ๋‚ด๋ถ€ ์ฝ”๋“œ ๋ถ„์„ํ•˜๊ธฐ์™€ ์„ ์–ธ์ ์œผ๋กœ ์ธ์ฆ/์ธ๊ฐ€ ๊ด€๋ฆฌํ•˜๊ธฐ

UI ํŒจํ„ด๋ณ„ ์ตœ์ ํ™” ์ •๋ฆฌํ•˜๊ธฐ์™€, React ๋‚ด๋ถ€ ์ฝ”๋“œ ๋ถ„์„ํ•˜๊ธฐ, ์„ ์–ธ์ ์œผ๋กœ ์ธ์ฆ/์ธ๊ฐ€ ๊ด€๋ฆฌํ•˜๊ธฐ๋Š” 5์›”์— ์ง„ํ–‰ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์Šค์ฟผ๋“œ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์กฐ๊ธˆ์”ฉ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ–ˆ์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์ ‘๋ชฉํ•˜๊ณ  ์‹ถ์€ ๋งˆ์Œ์— ํ•ด๋‹น ์ผ๊ฐ์— ์ง‘์ค‘ํ•˜๊ณ  ์šฐ์„  ๋ฏธ๋ฃจ๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋Œ€์‹  ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„ ๊ณผ์ •์—์„œ JSX๊ฐ€ ์‹ค์ œ๋กœ createElement๋กœ ์ปดํŒŒ์ผ๋˜์–ด ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์  ๋“ฑ์„ ๋ฐฐ์šธ ์ˆ˜๋„ ์žˆ์—ˆ๋‹ค.

5์›”์—๋Š” ์šฐ์„ ์ˆœ์œ„์—์„œ ๋ฐ€๋ ธ์ง€๋งŒ, ์ง„ํ–‰์ค‘์ด๋˜ ์ผ๊ฐ๋“ค์„ ๋งˆ์น˜๋Š” ๋Œ€๋กœ 6์›”์˜ action item๋“ค๋กœ ์‹คํ–‰ํ•ด๋ณด๋ ค ํ•œ๋‹ค.

๐Ÿš€ 5์›”์— ๊ณ ๋ฏผ์„ ์‹œ์ž‘ํ•œ ์ผ๊ฐ ๋ฐ ๊ณต๋ถ€

5์›”์€ 4์›”์— ๊ณ ๋ฏผํ–ˆ๋˜ ์ผ๊ฐ๋“ค์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ•ด๋‹น ์ผ๊ฐ๋“ค๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ ์ผ๊ฐ๋“ค์„ ๋” ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ ์ƒˆ๋กœ์šด ์ฃผ์ œ๋“ค์„ ๋งŽ์ด ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๋Œ€์‹  6์›”์ด ๋˜๋ฉด์„œ ๋‹ค์Œ ๋ถ„๊ธฐ์— ์ง„ํ–‰ํ•˜๋ฉด ์ข‹์„ ์ผ๊ฐ๋“ค์„ ํ˜„์žฌ ์ฑ•ํ„ฐ ๋‚ด์—์„œ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋‹ค. 6์›”์— ์ง„ํ–‰ํ•˜์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ 7์›”๋ถ€ํ„ฐ ๋‹ด๋‹นํ•ด์„œ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์€ ์ผ๊ฐ๋“ค์„ ์•„๋ž˜์— ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค.

์ฃผ๊ธฐ์  ์„ฑ๋Šฅ ์ธก์ •์„ ์œ„ํ•œ CI ๊ตฌ์ถ•

ํ™”๋ฉด์ „ํ™˜ ๊ฐ„ ์„ฑ๋Šฅ ๊ฐœ์„  ์ž‘์—…์„ ํ•˜๋ฉด์„œ FlashLight์™€ maestro๋ฅผ ํ•จ๊ป˜ ์ด์šฉํ•˜๋ฉด์„œ e2e ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ฃผ์š”ํผ๋„๋“ค์— ๋Œ€ํ•œ ์„ฑ๋Šฅ์„ ์ธก์ •ํ–ˆ๋‹ค. ์ด๋ฅผ CI์— ์—ฐ๋™ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฒ„์ „๋ณ„๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์กฐ๊ธˆ ๋” ์˜๋ฏธ์žˆ๊ฒŒ ๋น„๊ตํ•ด๋ณผ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋ฌผ๋ก  e2e ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋“ค์„ ์ž‘์„ฑํ•ด์•ผํ•˜๋Š” ์ , ํ˜„์žฌ FlashLight๋Š” android ๊ธฐ๊ธฐ๋งŒ์„ ๊ธฐ์ค€์œผ๋กœ ์ธก์ •ํ•˜๋Š” ์  ๋“ฑ์˜ ์ด์Šˆ๋“ค์ด ์žˆ์ง€๋งŒ, ๊ธฐ์ค€์ด ๋˜๋Š” ๊ธฐ๊ธฐ์— ๋Œ€ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ ์•ฑ์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•œ๋‹ค๋ฉด ๊ฐœ์„ ํ•  ๋ถ€๋ถ„๋“ค์„ ํŒŒ์•…ํ•˜๊ฑฐ๋‚˜, ๋ฌธ์ œ์ ๋“ค์„ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•ด ์ œํ’ˆ์˜ ์•ˆ์ •์„ฑ์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

์„ ์–ธ์ ์œผ๋กœ ์ธ์ฆ/์ธ๊ฐ€ ๊ด€๋ฆฌํ•˜๊ธฐ

4์›” ํšŒ๊ณ  ๋•Œ ์ž‘์„ฑํ–ˆ๋˜ ๋ถ€๋ถ„์ด์ง€๋งŒ, ํ˜„์žฌ ์ œํ’ˆ ๋‚ด์—์„œ ๊ณ ๊ฐ/๊ณ ์ˆ˜์˜ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ™”๋ฉด์—์„œ ์ผ์ผ์ด ์ธ์ฆ/์ธ๊ฐ€๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ์ด ์กด์žฌํ•œ๋‹ค. ์ด๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๊ณ  ์ ์šฉํ•ด๋ณด๊ณ  ์‹ถ๋‹ค. ์˜ˆ๋กœ react navigation์˜ ๊ฐ€์ด๋“œ๋กœ Authentication flow๋ฅผ ๋„์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์„ ์ ์šฉํ•ด ๋ณด๊ณ  ์‹ถ๋‹ค.

AsyncStorage ๋Œ€์ฒดํ•˜๊ธฐ

ํ˜„์žฌ ์ œํ’ˆ ๋‚ด์—์„œ AsyncStorage๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š”๋ฐ, AsyncStorage๋Š” ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ/์‚ญ์ œ/๋ณ€๊ฒฝ์— ๋Š๋ฆฐ ์„ฑ๋Šฅ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋Œ€์ฒด์žฌ๋กœ MMKV๋ฅผ ๋„์ž…ํ•ด ๋ณด๊ณ  ์‹ถ๋‹ค.

์—ฌ๊ธฐ์„œ ์–ด๋–ค ์ž‘์—…๋“ค์„ ๋‹ด๋‹นํ•ด์„œ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์„์ง€ ๋ชจ๋ฅด์ง€๋งŒ, 3๋ถ„๊ธฐ์—๋„ ๊ณ„์†ํ•ด์„œ ์ œํ’ˆ์— ๋‹ค์–‘ํ•œ ๊ธฐ์—ฌํ•ด๋‚˜๊ฐ€๋Š” ์ผ๋“ค์„ ์ง„ํ–‰ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.

๋งˆ์น˜๋ฉฐ

5์›”์€ 4์›”์— ์ด์€ ์ž‘์—…๋“ค์ด ๋งŽ์•˜๊ณ , ํ•˜๊ฒ ๋‹ค ์„ ์–ธํ•œ action item๋“ค์„ ๋งŽ์ด ์ง„ํ–‰ํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜๊ณ  ์‹ถ์€ ๊ฑด ๋งŽ์ง€๋งŒ, ํ•˜๋‚˜์˜ ์ผ์„ ์ œ์•ˆ, ์‹คํ–‰, ๋งˆ๋ฌด๋ฆฌํ•˜๋Š”๋ฐ ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋˜์—ˆ๋‹ค. 6์›”์—๋Š” 5์›”์— ํ•˜์ง€ ๋ชปํ•œ ์ผ๋“ค์„ ๋” ์ง‘์ค‘ํ•ด์„œ ์ง„ํ–‰ํ•˜๊ณ , 7์›”๋ถ€ํ„ฐ๋Š” 3๋ถ„๊ธฐ์— ์ง„ํ–‰ํ•  ์ผ๋“ค์„ ๋ฏธ๋ฆฌ ์ •๋ฆฌํ•ด์„œ ๋”์šฑ ๋” ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•ด๋ณด๋ ค ํ•œ๋‹ค.

@Troy
๋งค์ผ์˜ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ฐœ๋ฐœ์ผ์ง€์ž…๋‹ˆ๋‹ค.