๐Ÿ’Œ ํšŒ์‚ฌ์— ๋Œ€ํ•œ ์ฒซ ์ธ์ƒ

ํšŒ์‚ฌ๋Š” ์ž…๊ตฌ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์‚ฌ๋ฌด์‹ค๊นŒ์ง€ ๊ต‰์žฅํžˆ ๊น”๋”ํ–ˆ๋‹ค. ์ž๋ฆฌ๋ฅผ ๋ฐฐ์น˜๋ฐ›์•˜์„ ๋•Œ ๊น”๋”ํ–ˆ๋˜ ์‚ฌ๋ฌด์‹ค๊ณผ ์ฑ…์ƒ์„ ์žŠ์ง€ ๋ชปํ•œ๋‹ค.

๋‹ค์Œ์— ๋“ค์–ด์˜ฌ ์‚ฌ๋žŒ๋„ ์ด๋Ÿฐ ์ข‹์€ ๋ถ„์œ„๊ธฐ๋ฅผ ๋А๋ผ๋ฉด ์ข‹๊ฒ ์–ด์„œ.. ์ธํ„ด์‹ญ ๋งˆ๋ฌด๋ฆฌ ํ›„์— ๋‚ด ์ž๋ฆฌ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ฒญ์†Œํ•˜๊ณ  ๋‚˜์™”๋‹ค.

๐Ÿ’ฌ ํšŒ์‚ฌ์˜ ์„œ๋น„์Šค

์ž๋ฆฌ ์…‹ํŒ…์„ ๋งˆ์น˜๊ณ  ํ† ๋‹ˆ๋‹˜๊ป˜ ํšŒ์‚ฌ์˜ ์†Œ๊ฐœ์— ๋Œ€ํ•ด ์˜ค๋ฆฌ์—”ํ…Œ์ด์…˜์„ ๋ฐ›์•˜๋‹ค.

 

musma๋Š” IoT ๊ธฐ์ˆ ๋กœ ๊ฑด์„ค ํ˜„์žฅ์—์„œ ์•ˆ์ „๊ณผ ์ž์‚ฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ํ”Œ๋žซํผ์„ ์„œ๋น„์Šค ํ•˜๊ณ  ์žˆ๋‹ค.

์„ผ์„œ๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์ถฉ๋Œ ์œ„ํ—˜์„ ์•Œ๋ฆฐ๋‹ค๋˜์ง€, ์•ˆ์ „์‚ฌ๊ณ ๋ฅผ ์˜ˆ๋ฐฉํ•˜๋Š” ์„œ๋น„์Šค์ด๋‹ค.

 

๋‚˜๋Š” ๋น„๋ก ๊ฑด์„คํ˜„์žฅ์—์„œ ์ผํ•˜๋˜ ํ˜„์žฅ ์ž‘์—…์ž๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ, ๊ณต์žฅ์—์„œ ์ผํ•˜๋˜ ํ˜„์žฅ ์ž‘์—…์ž์˜€๊ธฐ ๋•Œ๋ฌธ์—, ์•ˆ์ „์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€ ๋ชธ์†Œ ๊นจ๋‹ซ๊ณ  ์žˆ๋‹ค. ๋˜ํ•œ ๋Œ€ํ•™์ƒ ๋•Œ, ์•„๋ฒ„์ง€๊ฐ€ ์ผํ•˜๋˜ ๊ณต์‚ฌ ํ˜„์žฅ๋„ ๋งŽ์ด ๊ฐ”์—ˆ๋‹ค. ์•ˆ์ „ ์‚ฌ๊ณ ๋ฅผ ์˜ˆ๋ฐฉํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, musma๋Š” ์ •๋ง ๊ฐ€์น˜ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ํ•˜๊ณ  ์žˆ๊ตฌ๋‚˜ ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

์ด ๋งํฌ๋Š” musma์˜ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์†Œ๊ฐœํ•˜๋Š” ํŽ˜์ด์ง€์ด๋‹ค. ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋ณด๋Š” ๊ฒƒ์ด ์–ด๋–จ๊นŒ?

https://musma.net/solution-safety/

โ“ ๊ฑด๋„ค๋ฐ›์€ ๊ธฐ๋Šฅ ๋ช…์„ธ์„œ์™€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์šฐ๋ฆฌ๋“ค

์•ฝ 4์ฃผ ๊ฐ„์˜ ์‹œ๊ฐ„๊ณผ ํ•จ๊ป˜ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์•ผํ•  ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ๋ช…์„ธ์„œ๋ฅผ ๋ฐ›์•˜๋‹ค. ๊ธฐ๋Šฅ ๋ช…์„ธ์„œ๋ฅผ ๋ฐ›์€ ํ›„์—๋Š” ๋‚˜ ํฌํ•จํ•ด์„œ 4๋ช… ๋ชจ๋‘ ์ •์ ์ด์—ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ธฐํšํ•ด์•ผํ• ์ง€ ๊ฐ์ด ์žกํžˆ์ง€ ์•Š์•„์„œ, ํšŒ์‚ฌ๊ฐ€ ์„œ๋น„์Šคํ•˜๊ณ  ์žˆ๋Š” ํ”Œ๋žซํผ์„ ๋ถ„์„ํ–ˆ๋‹ค.

 

๐Ÿคฃ  ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋งŽ์ด ๋“ค์—ฌ๋‹ค๋ดค๋Š”์ง€ ํšŒ์‚ฌ์˜ ์„œ๋น„์Šค์™€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๊ฒŒ ๊ธฐํšํ–ˆ๋‹ค.

 

๊ธฐํšํ•˜๋ฉด์„œ ๋งŽ์€ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๋Š”๋ฐ,

 

์ฒซ ๋ฒˆ์งธ๋Š” ๋„๋ฉ”์ธ์˜ ์šฉ์–ด์˜€๋‹ค.

์„ผ์„œ์™€ ๋””๋ฐ”์ด์Šค, ์žฅ๋น„, ์ค‘์žฅ๋น„, ์žฅ๋น„ ๊ด€๋ฆฌ์ž, ์žฅ๋น„ ๋‹ด๋‹น์ž ์ด๋Ÿฐ ์šฉ์–ด๋“ค์ด ํ˜ผ์žกํ•˜๊ฒŒ ๊ธฐ๋Šฅ ๋ช…์„ธ์„œ์— ๋‚œ์žฌํ•ด์žˆ์—ˆ๊ณ , ๊ทธ๋Ÿฐ ์šฉ์–ด๋ฅผ ์ž˜ ๋ชจ๋ฅด๋‹ค๋ณด๋‹ˆ, ์˜๋ฌธ์ ์ด ํˆฌ์„ฑ์ด์ธ ๊ธฐํš์„œ๊ฐ€ ํƒ„์ƒํ•˜๊ณ ์•ผ ๋ง์•˜๋‹ค.

 

๋‘ ๋ฒˆ์งธ๋Š” ๋ฏธํŒ…์ด ๋๋‚˜๋ฉด ๋ฏธํŒ…์— ์ฐธ๊ฐ€ํ•œ ์ธ์› ๋ชจ๋‘ ๋‹ค๋ฅธ ์ƒ๊ฐ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์ด์—ˆ๋‹ค.

ํ•œ๋ช…์€ ๋‚˜๋ฌด ์˜์ž๋ฅผ ์ƒ๊ฐํ•˜๊ณ , ๋˜ ๋‹ค๋ฅธ ํ•œ๋ช…์€ ์ฒ ์ œ ์˜์ž, ๊ทธ๋ฆฌ๊ณ  ๋˜ ๋‹ค๋ฅธ ํ•œ๋ช…์€ ํ˜ธํ™”์Šค๋Ÿฌ์šด ์˜์ž.. ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ํ”„๋ก ํŠธ ์•ค๋“œ์ธ ๋‚˜์™€ ์ž๋„ค๋‹˜์€ ๋ฏธํŒ…์ด ๋๋‚˜๋ฉด ์•ผ๊ทผ์„ ํ•˜๋ฉฐ, ์Šคํ† ๋ฆฌ ๋ณด๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ์—ˆ๋Š”๋ฐ, ์„œ๋กœ ์ดํ•ดํ•œ ๋‚ด์šฉ์ด ๋‹ฌ๋ž๋˜ ๊ฒƒ์ด์—ˆ๋‹ค.

 

์„ธ ๋ฒˆ์งธ๋Š” ์‹œ๊ฐ„์ด๋ผ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋„ˆ๋ฌด ๊ฐ„๊ณผํ–ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค ์ œ์ž‘๊ธฐ๊ฐ„์€ 4์ฃผ์ด๋‹ค.

musma์—์„œ ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค๋ฅผ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์ด๋จผ๋‹˜๊ณผ ๋งค์ผ ์•„์นจ์— ์• ์ž์ผํ•œ ํšŒ์˜๋ฅผ ํ•˜๋Š”๋ฐ, ์‚ฌ์ด๋จผ๋‹˜๊ป˜ ์šฐ๋ฆฌ์˜ ๋‚ด์šฉ์ด ๋งž๋Š”์ง€ ๊ฒ€์ฆ์„ ํ•˜๊ณ  ํ™•์ •์„ ๋ฐ›์•˜์–ด์•ผ ํ•˜์ง€ ์•Š์•˜๋‚˜ ์‹ถ๋‹ค. ์šฐ๋ฆฌ๋ผ๋ฆฌ ์ด ๋‚ด์šฉ์ด ๋งž์„๊นŒ? ์•ˆ๋งž์„๊นŒ ํ•˜๊ณ  ๋งŽ์€ ์˜๊ฒฌ์„ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋„ ์ข‹์ง€๋งŒ, ์‹œ๊ฐ„์ด๋ผ๋Š” ๋ฆฌ์†Œ์Šค๋Š” ํ•œ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ€์„ค์„ ๋งŽ์ด ์„ธ์› ๋‹ค๋ฉด ์• ์ž์ผ ํšŒ์˜๋•Œ ๊ฒ€์ฆ์„ ๋ฐ›๊ณ , ํ™•์ •์„ ์ง€์—ˆ์–ด์•ผ ํ–ˆ๋‹ค.

โš ๏ธ โžก๏ธ โœŒ๏ธํšŒ์‚ฌ์˜ Templete์œผ๋กœ ์ดˆ๊ธฐ์„ธํŒ…์„ ํ•˜๋‹ค

๊ธฐํš์ด ์–ด๋А์ •๋„ ๋งˆ๋ฌด๋ฆฌ๋˜์–ด, ํ™•์ •์ง€์€ ๋‚ ์ด์—ˆ๋‹ค. ์ด์ œ ํ”„๋ก ํŠธ์•ค๋“œ ๋ผ๋ฆฌ ์ดˆ๊ธฐ์„ธํŒ…์„ ํ•ด์•ผํ–ˆ๋‹ค. ํ”„๋ก ํŠธ ์•ค๋“œ์˜ ์ดˆ๊ธฐ์„ธํŒ…์€ ์•…๋ช… ๋†’๋‹ค. ๋งฅ๋ถ์ด๋‚˜ ์œˆ๋„์šฐ์— ๋”ฐ๋ผ ์–ด๋ ค์šธ ์ˆ˜๋„ ์žˆ๊ณ , ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์Šคํƒ์ด ์žˆ๋‹ค๋ฉด ๊ทธ์— ๋Œ€ํ•œ ์…‹ํŒ…๋„ ๋”ฐ๋กœ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ดˆ๊ธฐ์„ธํŒ…์„ ํ•˜๊ธฐ ์ „์— ๋‚˜๋Š” ์ง„์งœ ํ˜น์‹œ๋‚˜ํ•˜๊ณ  musma์˜ React-templete์ด ์žˆ๋Š”์ง€ ์ฐพ์•„๋ณด์•˜๊ณ  ์—ญ์‹œ ์กด์žฌํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ํšŒ์‚ฌ์˜ ์ปจ๋ฒค์…˜์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๋ถ„๋ช…ํžˆ ๋งŒ๋“ค์–ด๋’€์„ ๊ฒƒ ๊ฐ™์€ ๋А๋‚Œ์ด ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์•ฝ๊ฐ„์˜ ํ•ดํ”„๋‹์€ ์žˆ์—ˆ์ง€๋งŒ ๋•๋ถ„์— ์ดˆ๊ธฐ์„ธํŒ…์€ 1์‹œ๊ฐ„ ๋‚ด์™ธ๋กœ ์ข…๋ฃŒ๋˜์—ˆ๋‹ค. ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ณ  ์ง„ํ–‰ํ–ˆ๋‹ค๋ฉด ์ •๋ง ๊ณ ์ƒํ–ˆ์„ ๊ฒƒ์ด๋‹ค.

 

ํšŒ์‚ฌ์˜ Templete์—์„œ ๋ฐฐ์šด, ์•ž์œผ๋กœ ์ง„ํ–‰ํ•  ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ์ 

  • Import ์ˆœ์„œ๊ฐ€ ์ •ํ•ด์ ธ์žˆ์–ด์„œ ์ด์ „์— ์ง„ํ–‰ํ•ด์™”๋˜ ํ”„๋กœ์ ํŠธ์™€๋Š” ๋‹ฌ๋ฆฌ ๊น”๋”ํ•ด์ง„๋‹ค.
  • Vite์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ณ , ์ ์šฉํ•ด๋ณด์•„์•ผ๊ฒ ๋‹ค.
  • ๋” ์ตœ์ ํ™”๋œ React-templete์„ ๋งŒ๋“ค์–ด๋‘๊ณ  ์‹ถ๋‹ค. ( ํ˜„์žฌ๋Š” ์ •๋ง ๊ธฐ์ดˆ์ ์ธ templete๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค )

๐Ÿ‘ ์ ์ฐจ ๋‚ด ๋งˆ์Œ ์†์œผ๋กœ ์Šค๋ฉฐ๋“ค์€ TailwindCSS

์ด์ „์—๋Š” SCSS, Styled-components๋ฅผ ์‚ฌ์šฉํ•ด์™”๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ๋กœ์šด CSS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋‘๋ ค์›€๊ณผ ๊ฑฑ์ •์ด ์•ž์„ฐ์ง€๋งŒ, ์ ์ฐจ ๋‚ด ๋งˆ์Œ ์†์œผ๋กœ ์Šค๋ฉฐ๋“ค์–ด ๋„˜๋ฒ„์›์ด ๋˜์—ˆ๋‹ค.

 

๋‚ด๊ฐ€ ๋А๋‚€ TailwindCSS์˜ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. SCSS๋‚˜ Styled-components์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํด๋ž˜์Šค ์ด๋ฆ„, ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฆ„์„ ์ง“๋Š” ๊ณ ๋ฏผ์„ ํ•  ์‹œ๊ฐ„์ด ํ•„์š”๊ฐ€ ์—†๋‹ค. ⇒ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ˆ™๋ช….. ์ด๋ฆ„ ์ง“๊ธฐ์—์„œ ๋งŽ์ด ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
  2. ์•ž์„œ ๋งํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด UI๋ฅผ ์œ„ํ•ด MUI๋ผ๋˜๊ฐ€ ANT๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ์ปค์Šคํ…€๋„ ๋ณต์žกํ•˜๊ณ  ์ตํž๋ ค๋ฉด ์‹œ๊ฐ„์ด ๊ฝค ์†Œ์š”๋œ๋‹ค. ํ•˜์ง€๋งŒ TailwindCSS๋Š” ์ž์ฒด์— ํ•ด๋‹น UI๋ฅผ ์œ„ํ•œ Templete์ด ์กด์žฌํ•œ๋‹ค. ์ปค์Šคํ…€๋„ ๋งŽ์ด ์‰ฌ์› ๋‹ค.
  3. ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผํ•  View๋ฅผ ์ƒ๊ฐํ•˜๋ฉฐ, ๋ฐ”๋กœ๋ฐ”๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ๊ณต์‹๋ฌธ์„œ๊ฐ€ ์นœ์ ˆํ•˜๋‹ค. ๋‚ด๊ฐ€ ๋ณธ ๊ณต์‹ ๋ฌธ์„œ ์ค‘์— ์› ํƒ‘์ด๋‹ค.

๋‹จ์ ์€ ์ต์ˆ™ํ•ด์งˆ๋ ค๋ฉด ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค๋Š” ์ ์ด๋‹ค.

ํšŒ์‚ฌ์˜ ์ˆ˜์ž”๋‹˜๊ป˜์„œ ์–ด๋–ค ํ™•์žฅ์•ฑ์„ ์„ค์น˜ํ•˜๋ฉด ๋” ํŽธํ•ด์ง„๋‹ค๋Š” ๋ง์„ ๋“ฃ๊ณ  ์„ค์น˜ํ•˜๊ฒŒ ๋˜์–ด ๋”์šฑ๋” ํŽธํ•ด์กŒ๋‹ค. ์ˆ˜์ž”๋‹˜ ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค.

๐Ÿ™…‍โ™‚๏ธ ๋ฐ”๋ณด ๊ฐ™์•˜๋˜ ์ผ์ฃผ์ผ

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

 

๋‹ค์‹œํ•œ๋ฒˆ ๋‚˜์—๊ฒŒ ๋งํ•œ๋‹ค.. ๋ชจ๋“  ๊ฑธ ๊ฐ•์˜๋กœ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๊ฒƒ์€ ์ •๋ง ํ•˜์ˆ˜๋‹ค. ์‹œ๊ฐ„์ด ๋„๋„ํ•œ ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ , ๋‹น์žฅ ์ฝ”์•ž์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š”๋ฐ, ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด ์ •๋ง ์‹œ๊ฐ„๋‚ญ๋น„์ด๊ณ , ๋‚จ๋Š” ๊ฒƒ๋„ ์—†๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ์‹ค์ „์ด๋‹ค. ์‹ค์ „์œผ๋กœ ๊นจ๋‹ฌ์•„๋ผ

 

๊ทธ๋ƒฅ ํ•ด๋ณด๋‹ˆ ๋ณ„๊ฑฐ ์—†์—ˆ๋‹ค. ๋ฌผ๋ก  TypeScript๊ฐ€ ์•„๋‹ˆ๋ผ anyScript๊ฐ€ ๋งŽ์ด ๋˜๊ธดํ–ˆ๋‹ค. Mobx๋Š” ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์–ด์ค‘๊ฐ„ํ•˜๊ฒŒ ๋˜๊ธดํ–ˆ๋‹ค. ๊ทผ๋ฐ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ธด ํ–ˆ๋‹ค. TailwindCSS๋Š” ์ •๋ง ์ต์ˆ™ํ•ด์กŒ๋‹ค. ๊ตญ์ œํ™”๋Š” ์ ์šฉํ•ด๋ณด์ง„ ์•Š์•˜์ง€๋งŒ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋กœ ํ•ด๋ณด๊ธด ํ–ˆ๋‹ค.

 

ํ•œ์ •๋œ ์‹œ๊ฐ„ ์†์—์„œ ๋ชปํ•œ๋‹ค๊ณ  ๊ฐ•์˜๋ฅผ ๋ณด๋ฉด์„œ ์™„๋ฒฝํ•˜๊ฒŒ ํ•˜๋ ค๊ณ  ํ•ด์„œ ์ง€์—ฐ๋˜๋Š” ๊ฒƒ๋ณด๋‹ค ์„œ๋น„์Šค๋Š” ๊ตฌํ˜„ํ•ด๋†“๊ณ , ๋‚˜์ค‘์— ๊ณ ์ณ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ๋ฒ ์ŠคํŠธ์ด์ง€ ์•„๋‹๊นŒ ์‹ถ๋‹ค.

๐Ÿ˜ฅ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์ง€ ๋ชปํ–ˆ๋‹ค.

๋™์ผํ•œ ๊ตฌ์„ฑ์œผ๋กœ 3๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์ง€๋ฅผ ๋ชปํ–ˆ๋‹ค. ๋ฌผ๋ก  ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹คํ•ด์„œ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋‚˜์ค‘์— ์œ ์ง€๋ณด์ˆ˜์— ๋“ค์–ด๊ฐˆ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์†Œ๋ชจํ•  ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋œ๋‹ค.

 

์ด๊ฒƒ์€ ์ธํ„ด์‹ญ์„ ๋งˆ์นœ ํ›„์—๋„ ์—ฌ์ „ํžˆ ์˜๋ฌธ์ด๊ณ  ์ˆ˜์ˆ˜๊ป˜๋ผ์ธ ์ƒํƒœ๋กœ ๋‚จ์•˜๋‹ค.

API์˜ ์ปฌ๋Ÿผ ๊ฐ’์ด ๋‹ค๋ฅธ๋ฐ, ์–ด๋–ป๊ฒŒ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ธ๊ฐ€?

// equipment page
<td className="py-1.5 text-center">{data.equipmentType}</td>
<td className="py-1.5 text-center">{data.company}</td>
// device page
<td className="py-1.5 text-center">{data.serialNumber}</td>
<td className="py-1.5 text-center">{data.status}</td>

๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์„ ํ•ด๋ณธ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋‹ค๋“ค ์•Œ๋‹ค์‹œํ”ผ { data.status} ๋ผ๋Š” ์‹์œผ๋กœ ๋ฐ”์ธ๋”ฉ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—๋Š” status๋ผ๋Š” ์ปฌ๋Ÿผ์ด ์—†๋‹ค๋ฉด, ํ•ด๋‹น ํŽ˜์ด์ง€๋Š” status๋ผ๋Š” ์ปฌ๋Ÿผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—, ‘ ์—†๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ ‘๊ทผ์„ ํ•˜๋ƒ ’ ๋ผ๋Š” ์—๋Ÿฌ๋ฅผ ๋„์›Œ ๋ Œ๋”๋ง์„ ๋ฐฉํ•ดํ•œ๋‹ค. ์ด๋Ÿฐ์‹์œผ๋กœ 3๊ฐœ์˜ ํŽ˜์ด์ง€ ๋ชจ๋‘ API์˜ ์ปฌ๋Ÿผ ๊ฐ’๊ณผ ํ˜•์‹์ด ๋ชจ๋‘ ๋‹ฌ๋ž๋‹ค. 1์ฐจ์  ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต์ด๋ผ๋ฉด ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ปฌ๋Ÿผ ๊ฐ’์€ ์–ด์ฐŒํ•  ๋„๋ฆฌ๊ฐ€ ์—†์—ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์‹œ๊ฐ„์„ ๋จผ์ € ๊ณ ๋ คํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์–ผ๋งˆ๋‚˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ์ธ๊ฐ€?

์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ์†Œ์š”๋ ์ง€ ๊ฐ์กฐ์ฐจ ์˜ค์ง€ ์•Š์•„ ์ฐจ์„ ์ฑ…์„ ๊ณ ๋ คํ•˜์—ฌ, ์ ์šฉํ–ˆ๋‹ค.

 

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

const pathCheckerOptionData: any = () => {
    switch (pathName) {
      case 'equipmentList':
        return equipmentData
      case 'deviceList':
        return deviceData
      case 'adminHistory':
        return adminHistoryData
    }
  }

{
  ;(() => {
        if (pathName === 'equipmentList') {
          return (
            ...your code
          )
        }
	
	if (pathName === 'deviceList') {
	  return (
		...your code
	  )
	}

	if (pathName === 'adminHistory') {
	  return (
  		...your code
	  )
	}
  })()
}

โš ๏ธ ์Šค๋…ธ์šฐ๋ณผ ํšจ๊ณผ๋กœ ๋ฏธ์™„์„ฑํ•œ ํ”„๋กœ์ ํŠธ

1์ฃผ์ฐจ์—์„œ ๊ธฐํš์ด ์˜ค๋ž˜๊ฑธ๋ฆฐ ์ ๊ณผ 2์ฃผ์ฐจ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์Šคํƒ์— ๋Œ€ํ•œ ๋ง‰์—ฐํ•œ ๋‘๋ ค์›€์œผ๋กœ ์‹œ๊ฐ„์„ ํ—ˆ๋น„ํ•œ ๊ฒƒ์ด ์Šค๋…ธ์šฐ๋ณผ์ด ๋˜์–ด ๋ถ€์กฑํ•œ QA ์‹œ๊ฐ„์„ ๋ถˆ๋Ÿฌ ์™”๊ณ , ํ—ˆ๋‘ฅ๋œ ๋ฐœํ‘œ์‹œ๊ฐ„ ๋“ฑ, ์ด๋Š” ์šฐ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ํšŒ์‚ฌ์— ์ค‘์š”ํ•œ ํ”„๋กœ์ ํŠธ์˜€๋‹ค๋Š” ๊ฒƒ์„ ์ธ์‹์‹œํ‚ค๋Š”๋ฐ ์‹คํŒจํ–ˆ๋‹ค.

์‹คํŒจ์˜ ์›์ธ์€ ์•ž์„œ ๋งํ•œ ๊ฒƒ๊ณผ ์ค‘๋ณต๋˜์ง€๋งŒ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์€ ๊ฒƒ์„ ์œ„์ฃผ๋กœ ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

 

  1. 4์ฃผ๋ผ๋Š” ์‹œ๊ฐ„์ด ์žˆ์—ˆ๋Š”๋ฐ, ํ”Œ๋ž˜๋‹์— ์‹คํŒจํ–ˆ๋‹ค. 3์ฃผ๋ฉด ๊ฐœ๋ฐœ์ด ๋๋‚˜์•ผํ•˜๊ณ , ๋งˆ์ง€๋ง‰ 1์ฃผ๋Š” QA์˜ ์‹œ๊ฐ„์ด๋‹ค
  2. ๊ธฐํš์— ๋„ˆ๋ฌด ์˜ค๋žœ์‹œ๊ฐ„์„ ์Ÿ์•˜๋‹ค. ๊ฐ€์„ค์„ ์„ธ์› ์œผ๋ฉด ๊ทธ ๊ฐ€์„ค์— ๋Œ€ํ•œ ๊ฒ€์ฆ์„ ๋นจ๋ฆฌ๋นจ๋ฆฌ ๋ฐ›์•„์„œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š” ๋ฃจํ‹ด์„ ๋น ๋ฅด๊ฒŒ ํ•ด์•ผํ•œ๋‹ค.
  3. ์•ˆ๋˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ๋ถ™์žก์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฐ ๊ฒƒ์— ๋Œ€ํ•ด ์˜ค๋ž˜ ๋ถ™์žก๋Š” ๊ฒƒ์€ ์—…๋ฌด ํƒœ๋งŒ์ด๋‹ค.
  4. ๊ฐœ์ธ์œผ๋กœ์„œ ์ผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํŒ€์›์œผ๋กœ์„œ ์ผํ•ด์•ผํ•œ๋‹ค.

๋‚ด๊ฐ€ ํ”„๋กœ์ ํŠธ์˜ ์ง„ํ–‰์ด ๋А๋ ธ๊ธฐ ๋•Œ๋ฌธ์—, ํ˜น์€ ํŒ€์›์ด ํ”„๋กœ์ ํŠธ์˜ ์ง„ํ–‰์ด ๋А๋ ธ๋‹ค๊ฐ€ ์•„๋‹ˆ๋ผ ํŒ€์˜ ์‹คํŒจ์˜€๋‹ค. ๋ฌผ๋ก  ์‹คํŒจํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๋‚™๋‹ดํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด ์‹คํŒจ ์†์—์„œ ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์› ์œผ๋ฉฐ, ์ด ํ”„๋กœ์ ํŠธ์˜ ํŒ€์žฅ๋‹˜๊ป˜ ๋” ๋งŽ์€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜๋‹ค

๋ฌผ๋ก  ํ”„๋กœ์ ํŠธ๋Š” ์ธํ„ด์‹ญ์ด ๋๋‚˜๊ณ  ๋งˆ๋ฌด๋ฆฌ ์ง€์—ˆ๊ณ , ๋ฆฌํŒฉํ† ๋ง์€ ์ง„ํ–‰์ค‘์ด๋‹ค.

โค๏ธ ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐ์šด ๊ฒƒ๊ณผ๋Š” ๋ณ„๊ฐœ๋กœ ๋™๋ฃŒ์—๊ฒŒ ๋ฐฐ์šธ ์ ์ด ๋งŽ์•˜๋‹ค.

๊ฐ™์€ ํ”„๋ก ํŠธ์•ค๋“œ ํฌ์ง€์…˜์ธ ์ž๋„ค๋‹˜์—๊ฒŒ ๋ฐฐ์šธ์ ์ด ๋งŽ์•˜๋‹ค. ๋‚˜๋Š” 1,2์ฐจ ๋•Œ ์ด๋Ÿฐ๊ฒƒ์„ ๋งŽ์ด ๊ฒฝํ—˜ํ•ด๋ณธ์ ์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋” ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ณ„์† ์ง€์ผœ๋ดค๋˜ ๋‚˜์˜ ํŒ€ ๋™๋ฃŒ์˜ ์žฅ์ ์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•œ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋Š” ๋ฐฑ์•ค๋“œ์—์„œ API ๋ช…์„ธ์„œ๋ฅผ ๊ณต์œ ํ–ˆ์„ ๋•Œ, ๊ผผ๊ผผํ•˜๊ฒŒ ์ฒดํฌํ•˜๋Š” ์ ์ด๋‹ค. ๋น ์ง„ ๋ฐ์ดํ„ฐ๋Š” ์—†๋Š”์ง€, ํ•„์š” ์—†๋Š” ๊ฐ’์ด ์žˆ๋‹ค๋˜์ง€, ํ˜•์‹์„ ๊ณ ์ณ์คฌ์œผ๋ฉด ํ•œ๋‹ค๋˜์ง€, ์งˆ๋ฌธ์ด ์žˆ๋‹ค๋˜์ง€ ์ฒดํฌํ•ด์„œ ๋ฐฑ์•ค๋“œ์™€ ๊ณ„์† ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ๊ณ  ๋ฐ›์•˜๋‹ค.

๋‘ ๋ฒˆ์งธ๋Š” ๊ธฐ๋Šฅ ๋ช…์„ธ์„œ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ, ์ž์‹ ๋งŒ์˜ ๊ฐ€์„ค์„ ๊ณ„์† ์„ธ์šด ์ ์ด๋‹ค. ๋น„๋ก ๊ฒ€์ฆ์€ ๋ชปํ–ˆ์ง€๋งŒ ๊ณ„์† ๊ฐ€์„ค์„ ์„ธ์šฐ๊ณ  ๋‚˜์™€ ์˜๊ฒฌ์„ ์ฃผ๊ณ  ๋ฐ›์•˜๋‹ค.

์„ธ ๋ฒˆ์งธ๋Š” ์–ด๋–ค ๊ธฐ์ˆ  ์Šคํƒ์˜ ์ ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์–ด๋–ป๊ฒŒ ์ •ํ•  ๊ฒƒ์ธ์ง€ ์ •ํ•˜๊ณ ์ž ํ•  ๋•Œ, ๋”ฑ ์ด๊ฒƒ์œผ๋กœ ์ •ํ•˜์ž๊ฐ€ ์•„๋‹ˆ๋ผ, ์„œ๋กœ๊ฐ€ ๋ชจ๋ฅด๋Š” ๋ฐฉ๋ฒ•์„ ๊ณต๋ถ€ํ•ด์„œ ์„œ๋กœ์—๊ฒŒ ์„ค๋ช…ํ•ด, ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚˜์•„๊ฐ€์ž! ๋ผ๊ณ  ํ•˜๋Š” ์ ์ด๋‹ค. Mobx์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๋‘๊ณ  ์˜๊ฒฌ์„ ์ฃผ๊ณ  ๋ฐ›๊ฒŒ ๋ฌ๊ณ , ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๋„ค ๋ฒˆ์งธ๋Š” ์ž์‹ ๊ฐ ๋„˜์น˜๋Š” ์‚ฌ๋žŒ์ด๋ผ๋Š” ์ ์ด๋‹ค. ํ”„๋กœ์ ํŠธ 2์ฃผ์ฐจ๊นŒ์ง€ ์ž์‹  ์—†๋˜ ๋‚˜์™€๋Š” ๋‹ค๋ฅด๊ฒŒ, ํ•ญ์ƒ ์ž์‹ ๊ฐ์ด ๋„˜์ณ์„œ ๋‚˜์—๊ฒŒ๋„ ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ์คฌ๊ณ , 80% ์ด์ƒ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์„œ๋น„์Šค๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์ด ๋งํฌ๋กœ ์ด๋™ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

ํ˜„์žฌ ๊ฐœ๋ฐœ ์ƒํƒœ๋กœ๋Š” ๋ฐฑ์•ค๋“œ๊ฐ€ ๋ฐฐํฌ๋˜์–ด ์žˆ์ง€ ์•Š์•„, ์•ˆ์—ด๋ฆฌ๋ฏ€๋กœ, Dev์—์„œ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ ์ค‘์ด๋‹ค.

https://github.com/conqueror-G/Mars-monitoring-system

'Memoirs > ํšŒ๊ณ ๋ก' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ˆ˜์Šต ์ข…๋ฃŒ ํ›„ ํšŒ๊ณ   (0) 2023.01.09
์ทจ๋ฝ€์— ์„ฑ๊ณตํ–ˆ๋‹ค.  (2) 2022.09.17

+ Recent posts