๐Ÿ‘Ÿ ๐ŸŽฅ ์ฃผ์ฐจ๋ณ„ ์Šคํ”„๋ฆฐํŠธ ๊ณ„ํš & ๋ฐ๋ชจ ์‚ฌ์ดํŠธ - boostcampwm-2022/web17-waglewagle GitHub Wiki

2์ฃผ์ฐจ : ์ธํ”„๋ผ ์ž‘์—… & ํ…Œ์ŠคํŠธ API ์ˆ˜์‹  ํ™•์ธ

2์ฃผ์ฐจ ๋ฐ๋ชจ ์‹œ๋‚˜๋ฆฌ์˜ค

ํ…Œ์ŠคํŠธ ๋ชฉ์ ๊ณผ ์ƒํ™ฉ

  • ์„œ๋ฒ„ ๊ตฌ์„ฑ, CI / CD ๊ฐ™์€ ์ธํ”„๋ผ, API, DB ๋“ฑ ์„ค๊ณ„๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉด ์–ด๋–จ๊นŒ? + ๊ณ๋“ค์—ฌ์„œ ๋””์ž์ธ ์ •๋„ (๋ ˆ์ด์•„์›ƒ ๋๋‚œ๋‹ค๋ฉด)
  • API ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ์ด ๋œ๋‹ค.

์‹œ๋‚˜๋ฆฌ์˜ค ์ง„ํ–‰์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ

  • API ๋ช…์„ธ
  • DB ERD
  • CI / CD ํŒŒ์ดํ”„๋ผ์ธ
  • ์„œ๋ฒ„ ์ธํ”„๋ผ ์‹œ๊ฐํ™” ์ž๋ฃŒ
  • ์•„๋ฌด๊ฑฐ๋‚˜ Mock API (CORS๋ž‘ ๊ด€๋ จ๋˜๋ฉด ์ข‹๊ฒ ๋‹ค.)
  • (๋ ˆ์ด์•„์›ƒ)

์‹œ๋‚˜๋ฆฌ์˜ค ์ง„ํ–‰์— ํ•„์š”ํ•œ ์กฐ๊ฑด

  • API ๋ช…์„ธ ์ž‘์„ฑ
  • DB ERD ์„ค๊ณ„
  • CI / CD ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„
  • ์„œ๋ฒ„ ์ธํ”„๋ผ ๊ตฌ์ถ•
  • ์•„๋ฌด๊ฑฐ๋‚˜ Mock API ๊ตฌํ˜„
  • (๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„)

์‹œ๋‚˜๋ฆฌ์˜ค ์™„๋ฃŒ ์‹œ ๋ณด์žฅํ•˜๋Š” ๊ฒฐ๊ณผ

  • API ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ HTTP ํ†ต์‹ ์— ์„ฑ๊ณตํ•œ๋‹ค
  • MySQL ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ
  • ์ธํ”„๋ผ ์„œ๋ฒ„๋“ค (CI / CD)
  • (ํด๋ผ์ด์–ธํŠธ ํ™”๋ฉด)

2์ฃผ์ฐจ ์ž‘์—…๋‚ด์šฉ

๋ฐฑ์—”๋“œ

  • ๋ฐฑ์—”๋“œ : DB ์„ค๊ณ„
  • API ๋ช…์„ธ ์ž‘์„ฑ
  • API ์„œ๋ฒ„ ๋ฐฐํฌ
  • API ์„œ๋ฒ„ CI / CD
  • DB ์„œ๋ฒ„ ๋ฐฐํฌ
  • DB ์„œ๋ฒ„ CI / CD
  • ํ…Œ์ŠคํŠธ์šฉ API ๊ตฌํ˜„

ํ”„๋ก ํŠธ์—”๋“œ

  • ํŽ˜์ด์ง€ ๋””์ž์ธ
  • ํŽ˜์ด์ง€ ์„ค๊ณ„ (์ธํ„ฐ๋ž™์…˜, ์ปดํฌ๋„ŒํŠธ ์ถ”์ƒํ™”)
  • ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋ฒ„ ๋ฐฐํฌ
  • ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋ฒ„ CI / CD
  • ESLint, prettier, tsconfig ์„ค์ •ํ•˜๋ฉฐ ์ฝ”๋”ฉ ์Šคํƒ€์ผ ๋งž์ถ”๊ธฐ
  • ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๊ด€๋ฆฌ์žํŽ˜์ด์ง€ ๊ตฌํ˜„ํ•˜๋ฉฐ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ ์Šคํƒ€์ผ ์‹ฑํฌ ๋งž์ถ”๊ธฐ
  • ๋žœ๋”ฉ ํŽ˜์ด์ง€ ๊ตฌํ˜„
  • ํ…Œ์ŠคํŠธ์šฉ API ์ˆ˜์‹  ํ™•์ธ ๊ตฌํ˜„

3์ฃผ์ฐจ : ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„

3์ฃผ์ฐจ ๋ฐ๋ชจ ์‹œ๋‚˜๋ฆฌ์˜ค

ํ…Œ์ŠคํŠธ ๋ชฉ์ ๊ณผ ์ƒํ™ฉ

  • ๊ธฐ์ˆ ์ ์ธ ๋„์ „์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ดํ•ดํ•˜๊ณ , ํ•ต์‹ฌ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ์ดˆ์ ์„ ์ƒˆ๋กญ๊ฒŒ ์žก์•˜๋‹ค.
  • ํ•ต์‹ฌ๊ธฐ๋Šฅ(๊ธฐ์ˆ ์ ์ธ ๋„์ „, ์˜ค๋ž˜ ๊ณ ๋ฏผ ๋ฐ ๊ฐœ์„  ํ•„์š”)์„ ๋จผ์ € ๊ตฌํ˜„ํ•˜์—ฌ ๋ฐ๋ชจ์— ์‚ฌ์šฉํ•˜๊ณ , ์ถ”ํ›„ ๋ณด์™„์„ ํ•ด์•ผํ•œ๋‹ค.

์‹œ๋‚˜๋ฆฌ์˜ค ์ง„ํ–‰์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ

  • ํ‚ค์›Œ๋“œ ๋ฐ์ดํ„ฐ (ํ‚ค์›Œ๋“œ, ๊ฐœ์ˆ˜, ์—ฐ๊ด€๊ด€๊ณ„)
  • ํ‚ค์›Œ๋“œ ์—ฐ๊ด€๊ด€๊ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ํ‚ค์›Œ๋“œ ์‹œ๊ฐํ™” ๋ฐฐ์น˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์‹œ๋‚˜๋ฆฌ์˜ค ์ง„ํ–‰์— ํ•„์š”ํ•œ ์กฐ๊ฑด

  • ์„ฑ๋Šฅ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  & ํ‚ค์›Œ๋“œ ๊ฐ€์ค‘์น˜์— ๋”ฐ๋ฅธ ๋ณ€ํ™” ์—†์ด ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๊ตฌํ˜„ (๊ฐœ์ˆ˜์— ๋”ฐ๋ผ์„œ๋งŒ)
  • ์„ฑ๋Šฅ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ํ‚ค์›Œ๋“œ ์ž๋™์™„์„ฑ (์ด๋ฏธ ์žˆ๋Š” ๋‹จ์–ด๋กœ ๋งž์ถฐ์คŒ)
  • ์„ฑ๋Šฅ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ํ‚ค์›Œ๋“œ ์ถ”์ฒœ ๊ตฌํ˜„ (ํ˜„์žฌ ๋‹จ์–ด์—์„œ ์ถ”์ฒœ)

์‹œ๋‚˜๋ฆฌ์˜ค ์™„๋ฃŒ ์‹œ ๋ณด์žฅํ•˜๋Š” ๊ฒฐ๊ณผ

  • ๊ธฐ์ดˆ์ ์ธ ์ˆ˜์ค€์ด๋ผ๋„ ์œ ์ €๊ฐ€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3์ฃผ์ฐจ ๊ฐฑ์‹ ๋œ Feature List

๊ณตํ†ต

  • ์ด๋ฒˆ์ฃผ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ API ๋ช…์„ธ ๊ฐฑ์‹ ํ•˜๊ธฐ

ํ”„๋ก ํŠธ์—”๋“œ

  • ๊ฐฑ์‹ ๋œ Feature List ํ† ๋Œ€๋กœ UI / UX ๋””์ž์ธ ๊ทธ๋ ค์„œ ๊ณต์œ ํ•˜๊ธฐ

  • ๊ทธ๋ฃน ํ‚ค์›Œ๋“œ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” (์›Œ๋“œ ํด๋ผ์šฐ๋“œ)

    โ‡’ ์ด๋ฒˆ ์ฃผ์˜ ํ”„๋ก ํŠธ์—”๋“œ ํ•ต์‹ฌ๊ธฐ๋Šฅ

  • ํ‚ค์›Œ๋“œ ์ž…๋ ฅ์‹œ ํ‚ค์›Œ๋“œ ์ž๋™์™„์„ฑ

    โ‡’ ๊ผญ ๊ฒ€์ƒ‰์ฐฝ์œผ๋กœ ์•ˆ๋„์›Œ๋„๋จ

  • ํ‚ค์›Œ๋“œ ์ž…๋ ฅ์‹œ ํ‚ค์›Œ๋“œ ์ถ”์ฒœ

    โ‡’ ๊ผญ ๊ฒ€์ƒ‰์ฐฝ์œผ๋กœ ์•ˆ๋„์›Œ๋„๋จ

  • ์ฐธ์—ฌ์ž์˜ ํ‚ค์›Œ๋“œ ๋ชฉ๋ก UI ๊ตฌํ˜„ (๋‚ด๊ฐ€ ๊ฐ€์ง„ ํ‚ค์›Œ๋“œ๋“ค)

๋ฐฑ์—”๋“œ

  • ํ‚ค์›Œ๋“œ(์†Œ๊ทธ๋ฃน) ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    โ‡’ ์ด๋ฒˆ ์ฃผ์˜ ๋ฐฑ์—”๋“œ ํ•ต์‹ฌ๊ธฐ๋Šฅ

  • Username ์ ‘์† ์‹œ ์ฟ ํ‚ค ๊ฐ’ ๋„˜๊ฒจ์ฃผ๊ธฐ

  • User ๋กœ๊ทธ์ธ ํ™•์ธ API

  • ํ‚ค์›Œ๋“œ(์†Œ๊ทธ๋ฃน) ์ƒ์„ฑ API

  • ํ‚ค์›Œ๋“œ(์†Œ๊ทธ๋ฃน)์— ์œ ์ € ์ง„์ž… ์‹œ, ํ‚ค์›Œ๋“œ(์†Œ๊ทธ๋ฃน) ์ฐธ์—ฌ์ž ์ˆ˜ ๊ฐฑ์‹ 

    โ‡’ ์ฐธ์—ฌ์ž ์ˆ˜๊ฐ€ ์žˆ์–ด์•ผ ์ดˆ๊ธฐ ์›Œ๋“œ ํด๋ผ์šฐ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•ด์šฉ

4์ฃผ์ฐจ : ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ์™„๋ฃŒ & ์‹ค์‹œ๊ฐ„ ์„œ๋ฒ„ ํ†ต์‹ 

## ํ…Œ์ŠคํŠธ ๋ชฉ์ ๊ณผ ์ƒํ™ฉ

ํ…Œ์ŠคํŠธ ๋ชฉ์ 

  • ์„œ๋ฒ„ ํ†ต์‹ ์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ œ๊ณต๊ณผ ์‹œ๊ฐํ™”๊ฐ€ ์ œ๋Œ€๋กœ ๋˜๋Š”๊ฐ€?

ํ˜„์žฌ ์ƒํ™ฉ

  • ๋ฌผ๋ฆฌ์—”์ง„ ๋ฐฐ์น˜ ๊ณ„์‚ฐ๊ธฐ ๊ตฌํ˜„ ๋๋‚˜๊ฐ.
  • ์†Œ์ผ“ API ์„œ๋ฒ„ โ‡’ REST API ์„œ๋ฒ„๋กœ ์ด๋™

ํ…Œ์ŠคํŠธ ์ƒํ™ฉ

  • ๋ถ€์ŠคํŠธ์บ ํ”„ ์บ ํผ๋“ค์—๊ฒŒ ์ œ๊ณต

์‹œ๋‚˜๋ฆฌ์˜ค ์ง„ํ–‰์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ

  • ์‹ค์ œ ํ‚ค์›Œ๋“œ ๋ฐ์ดํ„ฐ (๋ฏธ๋ฆฌ ๋„ฃ์–ด๋‘๋Š”)

์‹œ๋‚˜๋ฆฌ์˜ค ์ง„ํ–‰์— ํ•„์š”ํ•œ ์กฐ๊ฑด

  • OAuth ๋กœ๊ทธ์ธ ๊ตฌํ˜„
  • ํ‚ค์›Œ๋“œ CRUD
  • ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”
  • short polling์„ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ํ†ต์‹  ๊ตฌํ˜„
  • (์šฐ์„ ์ˆœ์œ„ ํ•˜) ์Šค๋ ˆ๋“œ CRUD์™€ UI

์‹œ๋‚˜๋ฆฌ์˜ค ์™„๋ฃŒ ์‹œ ๋ณด์žฅํ•˜๋Š” ๊ฒฐ๊ณผ

  • ๋ฐ๋ชจ ์‚ฌ์ดํŠธ MVP๋ฅผ ์บ ํผ๋“ค์ด ์ด์šฉ์ด ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„œ๋ฒ„ ํ†ต์‹ ์ด ํฌํ•จ๋œ๋‹ค.
  • ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • short polling์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Feature List backlog ๋ณด์™„ ๋ฐ ๊ฐฑ์‹ 

โš ๏ธ ์ฒ˜์Œ ๋ฐฑ๋กœ๊ทธ ์„ค๊ณ„์™€ ๋งŽ์ด ๋‹ฌ๋ผ์ ธ์„œ github์˜ ๋ฐฑ๋กœ๊ทธ๋ฅผ ๋”ฐ๋ฆ„.

โ‡’ ์กฐ๊ธˆ ๋” ํฐ ๋ชฉํ‘œ๋ฅผ ์žก๊ณ  ์„ธ์„ธํ•œ ๊ฑด ์ดํ›„์— ์žก์•˜์–ด์•ผํ–ˆ๊ตฌ๋‚˜๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ

  • ๋ฌผ๋ฆฌ์—”์ง„ ๋งˆ๋ฌด๋ฆฌ
  • short polling์„ ํ†ตํ•œ ์„œ๋ฒ„ ํ†ต์‹ 
  • ๋กœ๊ทธ์ธ์„ ์œ„ํ•œ ์ฒ˜๋ฆฌ
  • ์Šค๋ ˆ๋“œ UI ๊ตฌํ˜„ (์†Œ์ผ๊ฑฐ๋ฆฌ)

โ‡’ ๊ฐ ๋„๋ฉ”์ธ๊ณผ ๊ตฌํ˜„ ๋‹จ๊ณ„๋ณ„๋กœ ๋ช‡ ๊ณต์ˆ˜(MD)์ธ์ง€ ๋ฝ‘์•„๋ณด๊ธฐ

๋ฐฑ์—”๋“œ

  • REST API ์ „์ฒด
    • ๊ฐ ๋„๋ฉ”์ธ๋ณ„ CRUD
    • OAuth
    • (์–ด๋ ค์šด ๊ฒƒ) ํ‚ค์›Œ๋“œ ๋ณต์ˆ˜ ๊ฐœ์˜ ๋ณ‘ํ•ฉ๊ณผ ์‚ญ์ œ

โ‡’ ๊ฐ ๋„๋ฉ”์ธ๊ณผ ๊ตฌํ˜„ ๋‹จ๊ณ„๋ณ„๋กœ ๋ช‡ ๊ณต์ˆ˜(MD)์ธ์ง€ ๋ฝ‘์•„๋ณด๊ธฐ

5์ฃผ์ฐจ : ๋ฐ๋ชจ ๋ฐฐํฌ ์ค€๋น„

ํ…Œ์ŠคํŠธ ๋ชฉ์ ๊ณผ ์ƒํ™ฉ

  • ์ด์ œ ์šฐ๋ฆฌ์—๊ฒŒ ๋ฌผ๋Ÿฌ์„ค ๊ณณ์€ ์—†๋‹ค.
  • ์บ ํผ๋ถ„๋“ค๊ป˜ ์ง„์งœ๋กœ ๋ฐฐํฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์•ผํ•œ๋‹ค.

์‹œ๋‚˜๋ฆฌ์˜ค ์ง„ํ–‰์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ

ํ”„๋ก ํŠธ์—”๋“œ

  • jennifer front ์ž…๋ ฅ ํ™•์ธ

๋ฐฑ์—”๋“œ

  • ํ‚ค์›Œ๋“œ ๋ฐ์ดํ„ฐ ์ข€ ์œ ์‚ฌํ•˜๊ฒŒ๋ผ๋„ ์ˆ˜์ •ํ•˜๊ธฐ

    โ‡’ ๋„ฃ๊ณ  ์‹ถ์€ ํ‚ค์›Œ๋“œ 10๊ฐœ ์”ฉ ๊ฐ€์ ธ์˜ค๊ธฐ

์‹œ๋‚˜๋ฆฌ์˜ค ์ง„ํ–‰์— ํ•„์š”ํ•œ ์กฐ๊ฑด

ํ”„๋ก ํŠธ์—”๋“œ

  • ์ปค๋ฎค๋‹ˆํ‹ฐ ์ž…์žฅ ๊ตฌํ˜„ (ํ‚ค์›Œ๋“œ ์ž…๋ ฅ ๋ชจ๋‹ฌ)
  • ํ‚ค์›Œ๋“œ ์ถ”๊ฐ€ / ํƒˆํ‡ด ๊ฐ€๋Šฅ - ์ž๋™์™„์„ฑ ํฌํ•จ ์™„์„ฑ
  • ํ‚ค์›Œ๋“œ ์ถ”์ฒœ ์™„์„ฑ
  • ํ‚ค์›Œ๋“œ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ์™„์„ฑ
  • ์Šค๋ ˆ๋“œ ์ถ”๊ฐ€ / ์‚ญ์ œ ๊ฐ€๋Šฅ
  • ์Šค๋ ˆ๋“œ ๋Œ“๊ธ€ ์ถ”๊ฐ€ / ์‚ญ์ œ ๊ฐ€๋Šฅ

๋ฐฑ์—”๋“œ

  • ์„œ๋ฒ„ ์ฃฝ์œผ๋ฉด ์ž๋™ ๋ณต๊ตฌ ๋ฐ ์—๋Ÿฌ ๋กœ๊ทธ
  • ๋ฐฐํฌ์šฉ DB ๋ถ„๋ฆฌ

์‹œ๋‚˜๋ฆฌ์˜ค ์™„๋ฃŒ ์‹œ ๋ณด์žฅํ•˜๋Š” ๊ฒฐ๊ณผ

  • ์บ ํผ๋“ค์ด ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ดํ›„ ์—ฌ๊ธฐ์—์„œ ๋‚˜์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฒˆ์ฃผ ๋ฐœํ‘œ J069_๋ฌธ์„ฑํ˜„ โ‡’ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ + ํ˜„์žฌ๊นŒ์ง€์˜ ์ง„ํ–‰์ƒํ™ฉ ๊ณต์œ 
  • ์‚ฌ์šฉํ•˜๋„๋ก ์œ ๋„ํ•˜๊ธฐ (jennifer front?)
  • ๋ณ€ํ•˜๋Š” ํ‚ค์›Œ๋“œ ์‹œ๊ฐํ™” ๋ณด์—ฌ์ฃผ๊ธฐ
  • ์ตœ์ข… ๋ฐœํ‘œ J022_๊น€๊ด€๊ฒฝ โ‡’ ์ „์ฒด ๋ฐ๋ชจ + ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊นŒ์ง€

์ด๋ฒˆ ์ฃผ Feature List์™€ ๋‹ด๋‹น์ž

๊ณตํ†ต

  • ์ด๋ ฅ์„œ

  • ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ๊ธฐ์ˆ ์Šคํƒ ์„ ์ • ์ด์œ  ๋ณด์™„

  • ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์•„ํ‹ฐํด ์ž‘์„ฑ

    โ‡’ ์ดํ›„ ๋ชฉ์š”์ผ์— ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์ณ๋‚ด๊ธฐ

ํ”„๋ก ํŠธ์—”๋“œ

ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • https ์„ค์ •ํ•˜๊ธฐ
  • ๋‹คํฌ๋ชจ๋“œ ํ•ด์ œํ•˜๊ธฐ โ‡’ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…
  • resize ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
  • ๋กœ๋”ฉ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„
  • ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€
    • ํ‚ค์›Œ๋“œ ๋ณ‘ํ•ฉ
    • ํ‚ค์›Œ๋“œ ์‚ญ์ œ

J022_๊น€๊ด€๊ฒฝ

  • ์ปค๋ฎค๋‹ˆํ‹ฐ ํŽ˜์ด์ง€
    • ํ‚ค์›Œ๋“œ ๊ทธ๋ฃน ์ž…์žฅ API ์—ฐ๊ฒฐ
    • ํ‚ค์›Œ๋“œ ๊ทธ๋ฃน ํƒˆํ‡ด API ์—ฐ๊ฒฐ
    • ํšŒ์›๊ฐ€์ž… ์‹œ ์ปค๋ฎค๋‹ˆํ‹ฐ 1๋ฒˆ์œผ๋กœ ๊ฐ€์ž…๋˜๋„๋ก, ์˜์ƒ ์ดฌ์˜์—๋Š” 2๋ฒˆ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์“ด๋‹ค.
    • ์ดˆ๊ธฐ ๋กœ๊ทธ์ธ์— ๋”ฐ๋ผ ์ดˆ๊ธฐ ์ž…๋ ฅ ๋ชจ๋‹ฌ์ฐฝ ๋„์›Œ์ฃผ๊ธฐ
    • ๋‚˜์˜ ํ‚ค์›Œ๋“œ, ์ถ”์ฒœ ํ‚ค์›Œ๋“œ ์ƒํƒœ ๊ด€๋ฆฌ (์„œ๋ฒ„ ์ƒํƒœ๋กœ ๊ด€๋ฆฌ ํ•„์š”)

J069_๋ฌธ์„ฑํ˜„

  • ์Šค๋ ˆ๋“œ ํŽ˜์ด์ง€
    • ์œ ์ € ๋กœ๊ทธ์ธ ์ƒํƒœ API ์—ฐ๊ฒฐ
    • ์Šค๋ ˆ๋“œ + ๋Œ“๊ธ€ ๋ชฉ๋ก ์ฝ๊ธฐ API ์—ฐ๊ฒฐ
    • ์Šค๋ ˆ๋“œ ์“ฐ๊ธฐ API ์—ฐ๊ฒฐ
    • ์Šค๋ ˆ๋“œ ์‚ญ์ œ API ์—ฐ๊ฒฐ
    • ๋Œ“๊ธ€ ์“ฐ๊ธฐ API ์—ฐ๊ฒฐ
    • ๋Œ“๊ธ€ ์‚ญ์ œ API ์—ฐ๊ฒฐ

๋ฐฑ์—”๋“œ

ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ์ฃผ๋ง ์ž‘์—…์‚ฌํ•ญ ๋ฐฐํฌ (API ์ตœ์‹ ํ™”)
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ ๋ฆฌํŒฉํ† ๋ง
    • ์˜ˆ์™ธ์ฒ˜๋ฆฌ / ๋ฐ˜ํ™˜๊ฐ’ ์ˆ˜์ •
  • API ๋ณ„ ์„ฑ๋Šฅ ์ธก์ • ๋ฐ ํŠœ๋‹
    • ๊ฐ ์ฟผ๋ฆฌ๋ฌธ explain๊ณผ index
  • ๊ฐ API ์ ๊ฒ€ (์ฝ”๋“œ ์Šคํƒ€์ผ๋ง)
    • RESTful URL
    • ๋ณ€์ˆ˜๋ช… / ํ•จ์ˆ˜๋ช… ์ˆ˜์ •
    • ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋ ˆ์ด์–ด, JPA๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

J026_๊น€๋Œ€ํ˜ธ

  • ํ‚ค์›Œ๋“œ ๋ณ‘ํ•ฉ / ์‚ญ์ œ๋งŒ PR

  • ํ‚ค์›Œ๋“œ ๋ฐ์ดํ„ฐ ์ข€ ์œ ์‚ฌํ•˜๊ฒŒ๋ผ๋„ ์ˆ˜์ •ํ•˜๊ธฐ

    โ‡’ ๋„ฃ๊ณ  ์‹ถ์€ ํ‚ค์›Œ๋“œ 10๊ฐœ ์”ฉ

  • ํ‚ค์›Œ๋“œ ์ถ”์ฒœ API ๊ณ ๋„ํ™”์ž‘์—…

J144_์ด์Šน๋ฏผ

  • ์šด์˜์šฉ DB ๋„์šฐ๊ธฐ + J069_๋ฌธ์„ฑํ˜„
  • ์„œ๋ฒ„ ์„ฑ๋Šฅ ์ธก์ • ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ
  • ๋”๋ฏธ๋ฐ์ดํ„ฐ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ •

๐Ÿ“ข MD์™€ ๋งˆ๊ฐ๊ธฐํ•œ ์„ค์ •์€ Issue ๋ฐœํ–‰ํ•˜๋ฉฐ ํ•˜๊ธฐ

6์ฃผ์ฐจ : ์ตœ์ข… ์Šคํ”„๋ฆฐํŠธ

์ฃผ๋ง ํ•œ ์ผ

๊ณตํ†ต

  • ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ๋ณด์™„
  • ๊ณตํ†ต ๋„์ „ ๊ณผ์ œ ์ž‘์„ฑ
  • ์•„ํ‹ฐํด ๋ณด์™„
  • ๋Œ€๋ณธ ๋‚ด์šฉ ์ž‘์„ฑ

๋ฐฑ์—”๋“œ

  • ์Šค๋ ˆ๋“œ ์„œ๋น„์Šค ๋ ˆ์ด์–ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
  • ํด๋” ๊ตฌ์กฐ ๊ฐœ์„ 
  • ์˜ˆ์™ธ์ƒํ™ฉ์ฒ˜๋ฆฌ ๋กœ์ง ๋ถ„๋ฆฌ
  • ์ปค์Šคํ…€ ์—๋Ÿฌ
  • ๋ฉ”์ธ ์ฝ”๋“œ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ

ํ”„๋ก ํŠธ์—”๋“œ

  • Thread, Keyword API ๋„๋ฉ”์ธ ๋ณ„ ๋ถ„๋ฆฌ
  • Thread, Keyword Query ๊ด€๋ จ ํ›… ๋„๋ฉ”์ธ ๋ณ„ ๋ถ„๋ฆฌ
  • ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•œ ๋ฒ„๊ทธ ํ•ด๊ฒฐ
    • ์Šค๋ ˆ๋“œ ์œ ์ € ๋ชฉ๋ก ์ œ๋ชฉ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
    • ์ปค๋ฎค๋‹ˆํ‹ฐ ํŽ˜์ด์ง€ ์ ‘์†์‹œ ์ตœ๊ทผ ์ ‘์† ๊ธฐ๋ก ๊ฐฑ์‹ ๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
    • ์œ ์ €๋ชฉ๋ก ์ ‘์† ์ค‘ ์œ ์ € ๋จผ์ € ๋ณด์ด์ง€ ์•Š๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
    • ํ‚ค์›Œ๋“œ ์ž…์žฅํ•˜๊ธฐ ํ›„์— ๋ชจ๋‹ฌ์ด ๋‹ซํžˆ์ง€ ์•Š๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
    • ๋กœ๊ทธ์ธ ์•„๋‹Œ ์ƒํƒœ์—์„œ ๋ฉ”์ธ ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ๋ฌดํ•œ ๋กœ๋”ฉ ํ˜„์ƒ ํ•ด๊ฒฐ
    • ๋ชจ๋‹ฌ ํด๋ฆญ ์‹œ ๋ชจ๋‹ฌ์ด ์ด๋™ํ•˜๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
  • parallax ๊ตฌํ˜„

ํ”„๋กœ์ ํŠธ ๊ด€๋ จ

๋ฐœํ‘œ ์˜์ƒ

๋ฐœํ‘œ ๋ฐฉ์‹ ์„ ์ •

  • ๊ฒŒ๋”ํƒ€์šด์—์„œ ๊ธฐ์ˆ ๊ณต์œ ํ•˜๋“ฏ์ด
  • ํ™”๋ฉด ๊ณต์œ  ์ž๋ฃŒ โ‡’ PPT (๋ถ€์บ  ํ…œํ”Œ๋ฆฟ)
  • ์˜ค๊ฐ€๋Š” ์žฅ๋ฉด๊นŒ์ง€ ๋…นํ™”ํ•˜๊ณ  ํŽธ์ง‘ํ•˜๊ธฐ

๊ณตํ†ต : ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ๋ฐ ๊ณตํ†ต ๋„์ „ ๋‚ด์šฉ

  • ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ : ์ค‘๊ทœ๋ชจ ์ปค๋ฎค๋‹ˆํ‹ฐ ์†Œ๊ทธ๋ฃน ๊ด€๋ฆฌ ์„œ๋น„์Šค, ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ ์†Œ๊ฐœ.

    โ‡’ ๊ธฐํš๊ณผ์ •๋ณด๋‹ค๋Š” ๋ญ˜ ํ•˜๋Š” ์„œ๋น„์Šค์ธ์ง€๊นŒ์ง€๋งŒ

    โ‡’ ์‹ค์‹œ๊ฐ„์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”์™€ ์„ฑ๋Šฅ ๊ฐœ์„ 

  • ๊ณตํ†ต ๋„์ „ ๊ณผ์ œ : ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ง€์†๊ฐ€๋Šฅํ•œ ๊ฐœ๋ฐœ์ž๋กœ์˜ ์„ฑ์žฅ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด, ์šฐ๋ฆฌ๋งŒ์˜ ๊ธฐ์ˆ ์ ์ธ ๋„์ „์„ ๊ฒฐ์ •ํ•ด์„œ ๋„์ „ํ•˜์˜€์Œ.

ํ”„๋ก ํŠธ์—”๋“œ : ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”์™€ ์„ฑ๋Šฅ ๊ฐœ์„ 

  • ํ”„๋ก ํŠธ์—”๋“œ ๋„์ „์— ๋Œ€ํ•œ ์†Œ๊ฐœ (30์ดˆ)
    • ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๊ธฐ
    • ์„ฑ๋Šฅ ๊ฐœ์„ 
  • ๊ฐ๊ฐ์˜ ๊ณผ์ •
    • ๋ฌผ๋ฆฌ์—”์ง„ ์ œ์ž‘๊ธฐ

      • Why? : ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๋Š” ์„œ๋น„์Šค์˜ ํ•ต์‹ฌ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์ด ์• ๋งคํ–ˆ๋‹ค.
      • What? : ์›๋ž˜๋Š” ์ •์ ์ธ ๋ฐฐ์น˜ โ‡’ ๋™์ ์ธ ๋ฐฐ์น˜๋ฅผ ์œ„ํ•ด ๋ฌผ๋ฆฌ์—”์ง„
      • How? : ๋ฌผ๋ฆฌ๋ฅผ ๋ชจ๋ธ๋งํ•˜์—ฌ ๋ฌผ๋ฆฌ์—”์ง„ ๊ตฌํ˜„
      • Result : ์„ฑ๋Šฅ ๊ฐœ์„ ๋œ ๋‚ด์šฉ (ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ)
    • ์ˆ˜์น˜ํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ๊ฐœ์„ 

      • ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ
    • ์ˆ˜์น˜ํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ๊ฐœ์„ 

      ํ”„๋ก ํŠธ์—”๋“œ์˜ ๋‘๋ฒˆ์งธ ๋„์ „์€ ์ˆ˜์น˜ํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ๊ฐœ์„  ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š” ๊ฒƒ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

      • ์ˆ˜์น˜ํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ๋ชฉํ‘œ๋กœ ํ•œ ์ด์œ ?

      ํ‚ค์›Œ๋“œ ์ž๋™์™„์„ฑ(1๋ถ„)

      • ๋Œ€ํ‘œ์  ์‚ฌ๋ก€๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ก€๊ฐ€ ์•ž์œผ๋กœ ๋‚˜์˜ค๋Š” ๋Š๋‚Œ

      ์ฒซ๋ฒˆ์งธ ์˜ˆ์‹œ๋กœ ํ‚ค์›Œ๋“œ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ตœ์ ํ™”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

      ์ €ํฌ๋Š” ์†Œ๊ทธ๋ฃน์ด ๋น„์Šทํ•œ ์ด๋ฆ„์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ถ„์‚ฐ๋˜๋Š” ์ƒํ™ฉ์„ ๋ฌธ์ œ๋กœ ์‚ผ๊ณ , ๊ฒ€์ƒ‰์–ด ์ž๋™ ์™„์„ฑ์„ ๊ฐœ๋ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค.

      ์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํžˆ ์ •๊ทœ ํ‘œํ˜„์‹์„ ํ†ตํ•ด์„œ ๊ฒ€์ƒ‰์–ด๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ๋ชจ๋“  ํ‚ค์›Œ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ ์ž ํ•˜์˜€์œผ๋‚˜ ์ด ๊ณผ์ •์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํ‚ค์›Œ๋“œ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ํฐ ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

      (๋ฌด์—‡์„ ํ†ตํ•ด์„œ ์•Œ๊ฒŒ๋˜์—ˆ๋Š”์ง€๊ฐ€ ๊ฐ•์กฐ๋˜๋ฉด ๋” ์ข‹๊ฒ ๋‹ค.)

      ๊ทธ๋ž˜์„œ ์ €ํฌ๋Š” ํšจ์œจ์ ์ธ ํƒ์ƒ‰ ์‹œ๊ฐ„์„ ์œ„ํ•ด ์ •๊ทœํ‘œํ˜„์‹, ์ด์ง„ ํƒ์ƒ‰, ํŠธ๋ผ์ด๋ฅผ ํ†ตํ•œ ๋ฐฉ๋ฒ• ๋“ฑ์„ ์กฐ์‚ฌํ•˜์˜€๊ณ ,

      ๊ฒฐ๊ณผ์ ์œผ๋กœ ์‚ฌ์ „ ์ƒ์„ฑ ์‹œ๊ฐ„์ด ์žˆ๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์ฐจ์ง€ํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์ง€๋งŒ, ์ปค๋ฎค๋‹ˆํ‹ฐ ์ ‘์† ์‹œ ํ•œ๋ฒˆ๋งŒ ์ƒ์„ฑํ•˜๋ฉด ๋˜๊ณ , ํƒ์ƒ‰์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒ€์ƒ‰ ์—”์ง„ ํŠน์„ฑ์ƒ ํŠธ๋ผ์ด๊ฐ€ ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋ผ๋Š” ๊ฒฐ๋ก ์„ ํ†ตํ•ด ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜์ •ํ•˜์˜€๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋กœ ํƒ์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ O(N * M)์—์„œ O(M) ๊นŒ์ง€ ๋‚ฎ์ถ”๋Š” ๊ฒƒ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค.

      Lighthouse ์„ฑ๋Šฅ๊ฐœ์„ (40์ดˆ)

      • ์ˆœ์„œ ์ƒ ์กฐ๊ธˆ ๋” ํฌ๊ด„์ ์ธ ๋‚ด์šฉ์ธ lighthouse๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋ฉด ์–ด๋–จ์ง€

      ๋‹ค๋ฅธ ์˜ˆ์‹œ๋กœ ์ €ํฌ ํŒ€์€ lighthouse์™€ ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ํ†ตํ•ด์„œ ์›น ํŽ˜์ด์ง€์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜์˜€๊ณ ,

      • ์™œ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์•˜๋Š”์ง€ ์ถ”๊ฐ€

      ์•ž์„œ ๋ง์”€๋“œ๋ฆฐ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”์—์„œ์˜ ๊ฐœ์„ ๊ณผ SSR, SSG์„ ํ†ตํ•œ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…, ๋ชจ๋‹ฌ ๋“ฑ์˜ ์กฐ๊ฑด๋ถ€๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ๋ ˆ์ด์ง€ ๋กœ๋”ฉ ์ ์šฉ ๋“ฑ์„ ํ†ตํ•ด์„œ ํผํฌ๋จผ์Šค ์ ์ˆ˜๋ฅผ 60์ ์—์„œ 95์ ๊นŒ์ง€ ์ƒ์Šน์‹œ์ผฐ์œผ๋ฉฐ,

      ๊ทธ ์™ธ์—๋„ ์ƒ‰ ๋Œ€๋น„์œจ, HTML Language ์„ค์ • ๋“ฑ์„ ํ†ตํ•ด ์ ‘๊ทผ์„ฑ์„ ๊ฐœ์„ ํ•˜๊ณ ,

      Meta tag๊ณผ Robot.txt ๋“ฑ์„ ํ†ตํ•ด์„œ SEO ๋˜ํ•œ ๊ฐœ์„ ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐœ์„ ๋œ ๊ฒฐ๊ณผ๋ฌผ์„ ์ˆ˜์น˜์ ์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

      • lighthouse์—์„œ ์ˆ˜์น˜๋ณด๋‹ค ๊ณผ์ •์„ ๋” ๊ฐ•์กฐํ•˜๋„๋ก ๋ณ€๊ฒฝ

      ํ…Œ์ŠคํŠธ ์ฝ”๋“œ(30์ดˆ?)

      • ์›”์š”์ผ ์ž‘์—…๋ณด๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋„ฃ์„์ง€ ๊ฒฐ์ •
      • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋„ฃ๋Š”๋‹ค๋ฉด ๋” ๊ฐ„๋žตํ•˜๊ฒŒ

๋ฐฑ์—”๋“œ : ํ”„๋กœ์ ํŠธ ๋„์ „ ๋‚ด์šฉ๊ณผ ๊ณผ์ •

  • ๋ฐฑ์—”๋“œ ๋„์ „์— ๋Œ€ํ•œ ์†Œ๊ฐœ (30์ดˆ)

    • ๊ผญ ์ƒˆ๋กœ์šด๊ฑธ ํ•ด์•ผ๋ผ? ๊ธฐ๋ณธ์— ์ง‘์ค‘ํ•ด๋ณด๋Š” ๋„์ „!(+ ๋ฐฐ์šด๊ฑฐ์— ๋Œ€ํ•œ ์ ์šฉ)
      • ๋ถ€์บ  ๊ณผ์ •์—์„œ โ€œํ•™์Šต ํ•˜๋Š” ๋ฐฉ๋ฒ•โ€์„ ํฌ๊ฒŒ ๋ฐฐ์› ๋‹ค๊ณ  ์ƒ๊ฐํ•ด, ์ƒˆ๋กœ์šด ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋„์ „ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ์Œ. (์ง€์†๊ฐ€๋Šฅํ•œ ๋ฐœ์ „?)
      • JAVA/SPRING ์„ ํƒ ์ด์œ ์—๋„ ํ•ด๋‹น ๋  ๊ฒƒ ๊ฐ™์Œ
  • ๊ฐ๊ฐ์˜ ๊ณผ์ •

    • ์›น์†Œ์ผ“ ๋ฐ ์ธํ”„๋ผ (2๋ถ„)
      • ์šฐ๋ฆฌ๊ฐ€ ๊ฒช์—ˆ๋˜ ๊ณผ์ •๊ณผ ๊ฒฐ๋ก 
      • ์–ป์€์  : โ€œstatelessํ•œ HTTP ์„œ๋ฒ„์˜ ๊ฐ•๋ ฅํ•จ์„ ์ดํ•ดํ•˜๊ฒŒ ๋˜์—ˆ์Œโ€, โ€œ์‹ค์‹œ๊ฐ„์€ ์›น์†Œ์ผ“๊ณผ ๋™์˜์–ด๊ฐ€ ์•„๋‹˜์„ ์•Œ๊ฒŒ ๋จโ€
      • โ€œpolling vs sse vs websocketโ€ ๋ถ„์„ ๋ฐ ๋น„๊ตํ›„ ์„ ํƒํ•˜์˜€์Œ
    • *ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฐ ๋ฆฌํŒฉํ† ๋ง (2๋ถ„)
      • ์ž˜๋ชป๋œ์„ค๊ณ„?(TDD์˜ ํšจ์šฉ)
        • ์„œ๋น„์Šค๋ ˆ์ด์–ด ๋ฉ”์„œ๋“œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ ์ž ์‹œ๋„
        • ์ปจํŠธ๋กค๋Ÿฌ์— ๋„ˆ๋ฌด ๋งŽ์€ ๊ด€์‹ฌ์‚ฌ
        • ์ปจํŠธ๋กค๋Ÿฌ์˜ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์„œ๋น„์Šค๋กœ ๋‚ด๋ฆฌ๋ ค๋‹ค ๋ณด๋‹ˆ, ์—๋Ÿฌ ํ•ธ๋“ค๋ง์— ๋Œ€ํ•œ ๊ตฌ์กฐ๋„ ์ƒ๊ฐํ•˜๊ฒŒ ๋จ
        • ์ „์—ญ ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ ์šฉ
      • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•ด ๋†“์•˜๋”๋‹ˆ, ๊ธฐ๋Šฅ ์ˆ˜์ • ๋ฐ ํ™•์žฅ๊ณผ ๋ฆฌํŒฉํ† ๋ง ์ง„ํ–‰์— ์žˆ์–ด ํšจ์šฉ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    • ๋ชฉ ๋ฐ์ดํ„ฐ & ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ (1๋ถ„)
      • dryํ•œ ๊ณผ์ • ์„œ์ˆ 
      • ํ…Œ์ŠคํŠธ ์ดํ›„ ๊ฐœ์„  ๊ณผ์ •

    (*์œ„ ๊ฐ๊ฐ์˜ ํ•ญ๋ชฉ์— ์žˆ์–ด์„œ ๋ถ€์ŠคํŠธ์บ ํ”„ ์ฑŒ๋ฆฐ์ง€/๋ฉค๋ฒ„์‹ญ ๋‚ด์šฉ๊ณผ์˜ ์—ฐ๊ณ„๋ฅผ ์ž˜ ํ•ด๋ณด๋„๋ก)

๋ฐ๋ชจ ์˜์ƒ

  • ์‹œ๋‚˜๋ฆฌ์˜ค๋Œ€๋กœ ์ฐ๋Š”๊ฒŒ ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์Œ โ‡’ ๋ฌด์กฐ๊ฑด 1๋ถ„์ด ๋„˜์Œ

  • ์›ํ…Œ์ดํฌ๋กœ ์ดฌ์˜ํ•˜๊ธฐ

    โ‡’ (์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ์‹œ๊ฐ„ ๋ณด๊ณ  ๋นผ๊ธฐ)

    โ‡’ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ด€๋ฆฌ ํŽ˜์ด์ง€ vs ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์ค„์ด๊ธฐ

  • ๊ฐ ํŒŒํŠธ๋ณ„๋กœ ๋‚ ๋ฆฌ๊ธฐ
  • ์•„์ง ์ž‘์„ฑ๋˜์ง€ ์•Š๋Š” ๋‚ด์šฉ์€ ์ผ๋‹จ ์‚ญ์ œํ•˜๊ณ , ์ž‘์„ฑ์ด ๋๋‚˜๋ฉด ์ถ”๊ฐ€ํ•˜๊ธฐ

๋ฐฑ์—”๋“œ ๊ธฐ์ˆ  ๋„์ „ ๊ณผ์ œ

  • ๊ธฐ์ˆ  ๋„์ „ ๊ณผ์ œ ๋ณ€๊ฒฝ๋จ
  • ์˜ค๋Š˜๊นŒ์ง€ ์จ์ฃผ์„ธ์š”.

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๊ฐœ์„ 

ํ”„๋ก ํŠธ์—”๋“œ

  • type ํด๋” ๋ถ„๋ฆฌ
  • type ์—ญํ• ์— ๋”ฐ๋ผ ๋ชจ๋“ˆ ๋ถ„๋ฆฌ ์ž‘์—…
  • hook ํด๋” ๋ถ„๋ฆฌ
  • Query ๊ด€๋ จ Hook ๋„๋ฉ”์ธ ๋ณ„๋กœ ๋””๋ ‰ํ† ๋ฆฌ ๋ถ„๋ฆฌ
    • Keyword, Thread๊นŒ์ง€๋งŒ ์™„๋ฃŒ - ๋‚˜๋จธ์ง€ ๋„๋ฉ”์ธ์€ ๋‚˜๋ˆŒ๋งŒํผ ์–‘์ด ๋งŽ์ง€ ์•Š์Œ
  • API ํด๋” ๋ถ„๋ฆฌ
  • API ํ˜ธ์ถœ ํ•จ์ˆ˜ ๋„๋ฉ”์ธ ๋ณ„๋กœ ๋””๋ ‰ํ† ๋ฆฌ ๋ถ„๋ฆฌ
    • ์œ„์™€ ๋™์ผ
  • test ํด๋”
  • ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ์œ„ํ•œ ๊ตฌ์กฐ ๋…ผ์˜
  • ์ปดํฌ๋„ŒํŠธ ํด๋” ๋ถ„๋ฆฌ
  • sass ๊ณตํ†ต ํŒŒ์ผ ๋ถ„๋ฆฌ

๋ฐฑ์—”๋“œ

  • ๋„๋ฉ”์ธ ํ†ตํํ•ฉ
  • ๋„๋ฉ”์ธ ๋ณ„ ํด๋” ๊ตฌ์„ฑ
  • ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ณ„์ธต ์ถ”๊ฐ€
  • controller ๊ณ„์ธต๊ณผ service ๊ณ„์ธต์— ์žˆ๋˜ ์˜ˆ์™€์ƒํ™ฉ์ฒ˜๋ฆฌ๋ถ€๋ถ„ ๋ถ„๋ฆฌ
  • ๊ณ„์ธต๋ณ„ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€ ๊ณ„ํš

ํ”„๋ก ํŠธ์—”๋“œ

  • Trie ๊ฒ€์ƒ‰์—”์ง„ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ ๋ณด์™„
  • ๋ฌผ๋ฆฌ์—”์ง„ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ž‘์„ฑ
  • ๋ฌผ๋ฆฌ์—”์ง„ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ, ์ •์ƒ์ž‘๋™์„ ํ™•์ธํ•˜์—ฌ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•จ.
  • ์•ˆ์ •์ ์ธ ๋™์ž‘์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•จ.
  • utils ๋‚ด๋ถ€์˜ ํ•จ์ˆ˜๋“ค

๋ฐฑ์—”๋“œ

  • ๊ณ„์ธต๋ณ„, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
  • Mock Framework์ธ mockito๋ฅผ ํ†ตํ•ด ๊ณ„์ธต๋ณ„ ๋‹จ์œ„ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ
  • ๋ฉ”์ธ ์ฝ”๋“œ์˜ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ์™€ ์ฝ”๋“œ ํ’ˆ์งˆ ๋ณด์™„
  • API์˜ ๋™์ž‘ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜์—ฌ ๋ฆฌํŒฉํ† ๋ง๊ณผ ์ฝ”๋“œ ์ˆ˜์ •์— ์žˆ์–ด์„œ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ธ๋‹ค.
  • controller, service, repository
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๋†’์ด๊ธฐ
  • ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ๋ฐ ์„ฑ๋Šฅ ๊ฐœ์„ 

๋ฆฌํŒฉํ† ๋ง ๊ณ„ํš

ํ”„๋ก ํŠธ์—”๋“œ

  • ์ปค์Šคํ…€ ํ›…์œผ๋กœ ๋ฐ˜๋ณต๋กœ์ง ๋ถ„๋ฆฌ
  • sass mixin, animation ๋“ฑ ๊ณตํ†ต ํŒŒ์ผ ๋ถ„๋ฆฌ
  • ์•„์ด์ฝ˜๋“ค ํ•˜๋‚˜๋กœ ํ†ต์ผ (React Icons)
  • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“ˆ ์ •๋ฆฌ
  • ์ปดํฌ๋„ŒํŠธ ๋‹จ์ผ์ฑ…์ž„์›์น™์— ๋งž๊ฒŒ ์ชผ๊ฐœ๊ธฐ
  • constants ํด๋” ์—†์• ๊ธฐ

๋ฐฑ์—”๋“œ

  • DB JPQL + JPA โ‡’ QueryDSL + Spring Data JPA๋กœ ๋ฆฌํŒฉํ† ๋ง
  • Optional, ํ•จ์ˆ˜ํ˜• ๋ฌธ๋ฒ•, ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜ํ˜• ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝ
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๋†’์ด๊ธฐ

์ฝ”๋“œ ํ’ˆ์งˆ ๊ฐœ์„  ๊ณ„ํš

ํ”„๋ก ํŠธ์—”๋“œ

  • import ์ˆœ์„œ์™€ ๊ฐ™์€ ์ปจ๋ฒค์…˜ ์„ค์ •
  • ๋ฎคํ…Œ์ด์…˜ ํ›„์ฒ˜๋ฆฌ ํ•จ์ˆ˜ ์ž‘์„ฑ
  • Next 13 ๊ธฐ์ค€์œผ๋กœ ๋ฌธ๋ฒ• ์ˆ˜์ • ๊ณ ๋ฏผํ•ด๋ณด๊ธฐ
  • ์ฃผ์„ ๋‹ฌ๊ธฐ
  • ๋ณ€์ˆ˜๋ช…, ํ•จ์ˆ˜๋ช… ๊ฐœ์„ ์‹œํ‚ค๊ธฐ

๋ฐฑ์—”๋“œ

  • HumanLint ์‚ฌ์šฉ
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๋ฉฐ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฐœ์„ ํ•˜๊ธฐ

์ถ”๊ฐ€ํ•  ๋‚ด์šฉ๋“ค

๋ฒ„๊ทธ ์ˆ˜์ •ํ•œ ๊ฒƒ

ํ”„๋ก ํŠธ์—”๋“œ

  • ์Šค๋ ˆ๋“œ ์œ ์ € ๋ชฉ๋ก ์ œ๋ชฉ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
  • ์ปค๋ฎค๋‹ˆํ‹ฐ ํŽ˜์ด์ง€ ์ ‘์†์‹œ ์ตœ๊ทผ ์ ‘์† ๊ธฐ๋ก ๊ฐฑ์‹ ๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
  • ์œ ์ €๋ชฉ๋ก ์ ‘์† ์ค‘ ์œ ์ € ๋จผ์ € ๋ณด์ด์ง€ ์•Š๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
  • ํ‚ค์›Œ๋“œ ์ž…์žฅํ•˜๊ธฐ ํ›„์— ๋ชจ๋‹ฌ์ด ๋‹ซํžˆ์ง€ ์•Š๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
  • ๋กœ๊ทธ์ธ ์•„๋‹Œ ์ƒํƒœ์—์„œ ๋ฉ”์ธ ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ๋ฌดํ•œ ๋กœ๋”ฉ ํ˜„์ƒ ํ•ด๊ฒฐ
  • ๋ชจ๋‹ฌ ํด๋ฆญ ์‹œ ๋ชจ๋‹ฌ์ด ์ด๋™ํ•˜๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ

๋ฒ„๊ทธ ์ˆ˜์ •ํ•  ๊ฒƒ

ํ”„๋ก ํŠธ์—”๋“œ

  • ๋Œ“๊ธ€ ๊ฐฏ์ˆ˜ ๋ณด์—ฌ์ฃผ๊ธฐ
  • ์˜ˆ์™ธ์ฒ˜๋ฆฌ
    • input
    • axios ์‘๋‹ต ์˜ˆ์™ธ์ฒ˜๋ฆฌ
  • ๋ฒ„๋ธ” ์ฐจํŠธ ์ถฉ๋Œ, ๊ฐœ์ˆ˜ ๊ฐœ์„ 

๋ฐฑ์—”๋“œ

  • ๋‹จ์ผ ์Šค๋ ˆ๋“œ API
  • ์Šค๋ ˆ๋“œ ์ถ”๊ฐ€ ์‹œ, ์ถ”๊ฐ€๋œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋„๋ก

๊ทธ ์™ธ ํ•  ์ผ

๊ณตํ†ต

  • PPT์™€ ๋Œ€๋ณธ ๋งŒ๋“ค๊ธฐ

๋ฐฑ์—”๋“œ

  • ์•„ํ‹ฐํด ์ž‘์„ฑํ•˜๊ธฐ
โš ๏ธ **GitHub.com Fallback** โš ๏ธ