lil.dev
Published on

๐ŸŽ‰ ์ปฌ๋Ÿฌ๋ฆฌ์ŠคํŠธ ํ”„๋กœ์ ํŠธ #18 ์ค‘๊ฐ„ ์ ๊ฒ€

๊ธ€์“ด์ด

    ๐Ÿ“Œ

    1. ์ค‘๊ฐ„ ์†Œ๊ฐ
    2. ํ•œ ์ผ๊ณผ ํ•  ์ผ
    3. ์ด์ œ๊นŒ์ง€์˜ ์–ด๋ ค์›€
    4. ์•ž์œผ๋กœ์˜ ๋ฐฉํ–ฅ
    Welcome

    โœจ ์ปฌ๋Ÿฌ๋ฆฌ์ŠคํŠธ ์‚ฌ์ดํŠธ(์•„์ง ์—†์Œ

    1. ์ค‘๊ฐ„ ์†Œ๊ฐ

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

    2. ํ•œ ์ผ๊ณผ ํ•  ์ผ

    ์‹œํ—˜์ง€

    ํ”„๋ŸฐํŠธ

    • S3 ๊ฐ™์€ ๊ณณ์—์„œ ๋ฌธ์ œ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜จ๋‹ค~ -> ์•„์ง S3 ๋ฏธ์‚ฌ์šฉ
    • ๋ฌธ์ œ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๊ณ , ํด๋ฆญ! ํ•˜๋ฉด ํ•ด๋‹น ๋ฌธ์ œ ํŽ˜์ด์ง€๋กœ ์ด๋™
    • ๋žœ๋ค ์„ ํƒ ๋ฒ„ํŠผ์„ ํด๋ฆญ! ํ•˜๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ์ด๋™

    ๋ฐฑ์—”๋“œ

    • ํ•  ์ผ์ด ์—†๋‹ค

    ๋ฌธ์ œ ํ’€์ด

    ํ”„๋ŸฐํŠธ

    • ์—๋””ํ„ฐ๋ฅผ ๊นŽ๋Š”๋‹ค โ†’ ํŒ”๋ ˆํŠธ ๋งค์šฐ ํž˜๋“ค์—ˆ์Œโ€ฆ
    • ํŒ”๋ ˆํŠธ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค
      • ๋ฌธ์ œ๋‚˜ ํŒ”๋ ˆํŠธ๋ฅผ S3์—์„œ ๋“ค๊ณ  ์˜จ๋‹ค
    • ์ €์žฅํ•  ๊ฑธ submit์„ ํ•˜๋ฉด

    ๋ฐฑ์—”๋“œ

    • ์ตœ์ข… ์ €์žฅ, ๊ณต์œ  ํ•œ๋‹ค

    ํšŒ์›๊ฐ€์ž…

    ํ”„๋ŸฐํŠธ

    • ํšŒ์›๊ฐ€์ž… form์„ ๋งŒ๋“ ๋‹ค
    • api ์„œ๋ฒ„์—๊ฒŒ ๊ฐ€์ž… ์š”์ฒญ์„ ํ•œ๋‹ค

    ๋ฐฑ์—”๋“œ

    • email ์ ์œ  ํ™•์ธ์„ ํ•˜๊ฑฐ๋‚˜, Oauth๋กœ ๊ถŒํ•œ์„ ์–ป๋Š”๋‹ค
    • ๊ธฐ์กด์— ๊ฐ€์ž…ํ•œ ์œ ์ €์ธ์ง€ ํ™•์ธํ•˜๊ณ 
    • DB์— ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค

    ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ

    ํ”„๋ŸฐํŠธ

    • ๋กœ๊ทธ์ธ form์„ ๋งŒ๋“ ๋‹ค
    • api ์„œ๋ฒ„์—๊ฒŒ ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ํ•œ๋‹ค
    • ํ† ํฐ์„ ๋ฐ›์•„์„œ, ์ƒํƒœ์— ์˜ฌ๋ ค๋†“๊ณ , api ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ๋ณด๋‚ธ๋‹ค
    • ๋กœ๊ทธ์•„์›ƒ
    • ๋‚ด๊ฐ€ ๋ฐœ๊ธ‰ ๋ฐ›์€ ํ† ํฐ์„ ์ง€์šด๋‹ค

    ๋ฐฑ์—”๋“œ

    • ๋กœ๊ทธ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ, DB์— ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด์™€ ๋Œ€์กฐํ•˜๊ณ 
    • ์•”ํ˜ธํ™”๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜(argon2) vs Passport ๊ฐ™์€ ๊ฑธ๋กœ OAuth
    • jwtํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ธฐ (json web token)

    ๋งˆ์ดํŽ˜์ด์ง€

    ํ”„๋ŸฐํŠธ

    • ์„œ๋ฒ„์—๊ฒŒ ์‚ฌ์šฉ์ž์˜ ํ‘ผ ๋ฌธ์ œ, ํ’€๋˜ ๋ฌธ์ œ ์ •๋ณด๋ฅผ ์š”์ฒญํ•œ๋‹ค
    • ํ”„๋ŸฐํŠธ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ , pdf๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค

    ๋ฐฑ์—”๋“œ

    • ํ•ด๋‹น ์‚ฌ์šฉ์ž๋ฅผ ๋จผ์ € ์ฐพ๊ณ 
    • ๊ทธ ์‚ฌ์šฉ์ž๊ฐ€ ํ‘ผ ๋ฌธ์ œ์™€, ํ’€๋˜ ๋ฌธ์ œ ๋ชฉ๋ก์„ joinํ•ด์„œ
    • ๋ณด๋‚ด์ค€๋‹ค~
    • pagination
      • offset
      • page
      • maxCount
    • ์‚ฌ์šฉ์ž ๋งˆ๋‹ค ํ•ด๋‹น๋˜๋Š” ๋งˆ์ดํŽ˜์ด์ง€, ๋ฌธ์ œ ํŽ˜์ด์ง€ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ์‚ฌ์šฉ์ž ์ •๋ณด ํ™•์ธ

    ๋ฐฐํฌ

    ๋ฐฑ์—”๋“œ

    • node.js ์„œ๋ฒ„๋ฅผ docker container ๋กœ ๋นŒ๋“œํ•ด์„œ ECS์— ์˜ฌ๋ฆฌ๊ธฐ
    • IAM์œผ๋กœ ๊ถŒํ•œ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์— ๊ณ„์ • ๋งŒ๋“ค๊ธฐ
    • Access Management

    1์ฐจ ๋ฐฐํฌ ์ดํ›„ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ

    ์ฆ๊ฒจ์ฐพ๊ธฐ๋‚˜ ๊ฒ€์ƒ‰์ด ์žˆ๋‹ค

    ํ”„๋ŸฐํŠธ

    • ์ฆ๊ฒจ์ฐพ๊ธฐ ์ถ”๊ฐ€, ์‚ญ์ œ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค
    • ํƒœ๊ทธ๋ฅผ ๋‹ฌ๊ณ , ์‚ญ์ œ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค
    • ํ•„ํ„ฐ๋ฅผ ํ•œ๋‹ค~
    • 2020๋…„๋„ ์ดํ›„์— ์ถœ์ œ๋œ ๋ฌธ์ œ๋งŒ ๋ณด๊ธฐ~

    ๋ฐฑ์—”๋“œ

    • ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๊ณ 
    • ํƒœ๊ทธ๋กœ ์ฐพ๊ธฐ

    ์ž๋™ ์ €์žฅ

    ํ”„๋ŸฐํŠธ

    • ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜๊ฑฐ๋‚˜
    • ์ •๊ธฐ์ ์œผ๋กœ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ธ๋‹ค

    ๋ฐฑ์—”๋“œ

    • ์ž๋™ ์ €์žฅ์ด ์˜ค๋Š” ๊ฑธ ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ €์žฅ์„ ํ•ด์ค€๋‹ค
    • ์™„์„ฑ๋œ ๊ฑฐ vs ์ž‘์„ฑ ์ค‘์ธ ๊ฑฐ
    • table์—๋‹ค๊ฐ€ flag๋ฅผ ๋งŒ๋“ค์–ด์„œ
    • isCompleted => ์™„๋ฃŒ๋๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ boolean์œผ๋กœ ์ €์žฅ
    • ์™„์„ฑ์ด ๋˜๋Š” ์ˆœ๊ฐ„์—~ => ํ™•์ •!

    ๊ด€๋ฆฌ์ž! version2

    • Role Based Authorization => ์—ญํ•  ๊ธฐ๋ฐ˜ ๊ถŒํ•œ ๊ด€๋ฆฌ
    • ๊ด€๋ฆฌ์ž ์šฉ API !
    • ๋ชจ๋“  ํ‘ผ ๋ฌธ์ œ๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค
    • filter(1๋ฒˆ ๋ฌธ์ œ ํ‘ผ ๊ฒƒ๋“ค๋งŒ ๋ชจ์•„ ๋ณด๊ณ  ์‹ถ๋‹ค๋“ ์ง€)

    3. ์ด์ œ๊นŒ์ง€์˜ ์–ด๋ ค์›€

    • ์ผ์ • ๊ด€๋ฆฌ ๋‚˜๋ฆ„๋Œ€๋กœ ๋…ธ์…˜์—๋„ ๊ธฐ๋กํ•˜๊ณ , ํ•  ์ผ์„ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ฆฌ์ŠคํŠธ ์ž‘์„ฑํ•ด ์ฐฉ์‹คํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์ค‘๊ฐ„ ์ค‘๊ฐ„ ๋‹ค๋ฅธ ์ผ์ •์ด ์ƒ๊ธฐ๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๋ฉฐ ์–ด๋ ค์›€์„ ๊ฒช์„ ๋•Œ ์†๋†“๊ณ  ์‰ฌ๊ธฐ๋„ ํ–ˆ๋‹ค.

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

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

    4. ์•ž์œผ๋กœ์˜ ๋ฐฉํ–ฅ

    1์ฐจ ๋ชฉํ‘œ๋Š”

    • ํšŒ์›๊ฐ€์ž…, ํšŒ์› ์ˆ˜์ •, ๋ฉ”์ธ ํŽ˜์ด์ง€ ๋“ฑ ๋‚จ์€ ํŽ˜์ด์ง€๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋งŒ๋“ค๊ณ 
    • ๋ฐฑ์—”๋“œ ์—ฐ๊ฒฐํ•˜๊ธฐ
    • css ์ˆ˜์ •
    • ๋ฐฐํฌ
    • ํšŒ๊ณ  ๋ฐ ๋ฆฌ๋“œ๋ฏธ ์ž‘์„ฑ

    2์ฐจ ๋ชฉํ‘œ๋Š” ๋ฐฐํฌ ํ›„

    • ์ฆ๊ฒจ์ฐพ๊ธฐ, ํ•„ํ„ฐ๋ง, ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
    • ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
    • css ์ˆ˜์ •