๐Ÿ2์ฐจ ์Šคํ”„๋ฆฐํŠธ - prgrms-web-devcourse-final-project/WEB4_5_GAEPPADAK_BE GitHub Wiki

๊ฐœ์š”

  • ๊ธฐ๊ฐ„: 2025๋…„ 5์›” 9์ผ(๊ธˆ) - 5์›” 20์ผ(ํ™”)
  • ๋ชฉํ‘œ: ์šฐ์„ ์ˆœ์œ„ ๋†’์Œ์˜ ๊ธฐ๋Šฅ ์™„์„ฑ
  • ํŒ€ ๊ตฌ์„ฑ: ๋ฐฑ์—”๋“œ 6์ธ, ํ”„๋ก ํŠธ 1์ธ

์Šค์ฝ”ํ”„

์Šคํ”„๋ฆฐํŠธ IN / OUT

์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋Šฅ ํฌํ•จ ์—ฌ๋ถ€ ๋น„๊ณ 
๋†’์Œ ์‹ค์‹œ๊ฐ„ ํฌ์ŠคํŠธ ์กฐํšŒ API ์˜ค๋ฅ˜ ํ•ด๊ฒฐ IN GET /posts/top API
๋†’์Œ LLM ๊ธฐ๋ฐ˜ ํฌ์ŠคํŠธ ์ƒ์„ฑ IN ์—ฌ๋Ÿฌ AI ๋น„๊ต ๋„์ž…
๋†’์Œ ํšŒ์› ์ •๋ณด ์ˆ˜์ • ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ดˆ๊ธฐํ™” IN -
๋†’์Œ ํšŒ์› ํƒˆํ‡ด IN soft delete ์ ์šฉ
๋†’์Œ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ IN FE ์ฃผ๋„
๋†’์Œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ๊ธฐ๋Šฅ IN RBAC
์ค‘๊ฐ„ ๋Œ“๊ธ€ ๋ฐ ํฌ์ŠคํŠธ ์‹ ๊ณ  ๊ธฐ๋Šฅ IN FE-์‹ ๊ณ  ๋ฒ„ํŠผ / BE-API ์ถ”๊ฐ€
์ค‘๊ฐ„ ๊ด€๋ฆฌ์ž โ€“ ํšŒ์›ยท๋Œ“๊ธ€ยทํฌ์ŠคํŠธยท์‹ ๊ณ  ๊ด€๋ฆฌ IN ํ†ตํ•ฉ Admin API
์ค‘๊ฐ„ ์Šค์ผ€์ค„๋Ÿฌ ๋กœ์ง ๋ฐ ์•ˆ์ •์„ฑ ๊ฐ•ํ™” IN ์‹ ๊ทœ์„ฑ ํ‰๊ฐ€ ๋กœ์ง ์ถ”๊ฐ€ ๋ฐ Job Context ๊ฒ€ํ† 
์ค‘๊ฐ„ ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ IN Grafana + Prometheus + Sentry ๊ฒ€ํ† 
๋‚ฎ์Œ ํฌ์ŠคํŠธยท์ถœ์ฒ˜ ๋…ธ์ถœ ์ˆœ์œ„ ์„ค์ • OUT ์ฐจ๊ธฐ ๊ฒ€ํ† 
๋‚ฎ์Œ ์™ธ๋ถ€ API ํ˜ธ์ถœ ์ œํ•œ ์•Œ๋ฆผ ์‹œ์Šคํ…œ OUT ์ฐจ๊ธฐ ๊ฒ€ํ† 

์ƒ์„ธ ์ž‘์—… ๋ชฉ๋ก

Epic ์šฐ์„ ์ˆœ์œ„ ์„ค๋ช… ๋‹ด๋‹น์ž SP
๋ฐฑ๋กœ๊ทธ ๋†’์Œ ์‹ค์‹œ๊ฐ„ ํฌ์ŠคํŠธ ์กฐํšŒ(GET /posts/top) ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ์ดํƒœ๊ฒฝ 8
๋†’์Œ ์„œ๋ฒ„ ์‹œ๊ฐ„๋Œ€ ๊ธฐ์ค€์„ UTC๋กœ ํ†ต์ผ ์ดํƒœ๊ฒฝ 4
์ค‘๊ฐ„ ์Šค์ผ€์ค„๋Ÿฌ - ํ‚ค์›Œ๋“œ ์‹ ๊ทœ์„ฑ ํ‰๊ฐ€ ๋กœ์ง ์œค์ƒ๋ฏผ 16
์ค‘๊ฐ„ ์Šค์ผ€์ค„๋Ÿฌ ์•ˆ์ •์„ฑ ๊ฐ•ํ™” ์ดํ™”์˜ 16
๋‚ฎ์Œ flyway migration ์ ์šฉ ํ™•์ธ ์ดํ™”์˜ 8
AI ๊ธฐ๋Šฅ ๋†’์Œ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ AI๊ฐ€ ํฌ์ŠคํŠธ๋ฅผ ๋‚ด์šฉ์„ ์š”์•ฝํ•ด ์ž‘์„ฑ ์ดํƒœ๊ฒฝ, ๊น€ํ•˜์—ฐ, ์œค์ƒ๋ฏผ 24
ํšŒ์› ๊ธฐ๋Šฅ ๋†’์Œ ํšŒ์› ์ •๋ณด ์ˆ˜์ • ์œค์ƒ๋ฏผ 8
๋†’์Œ ๋กœ๊ทธ์ธ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ/์ดˆ๊ธฐํ™” ๊น€๊ฒฝ๋ž˜ 8
๋†’์Œ ํšŒ์› ํƒˆํ‡ด(soft delete ํ•„์š”) ๊น€ํ•˜์—ฐ 16
๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๋†’์Œ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ FE๋‹˜ 0(FE)
์‹ ๊ณ  ๊ธฐ๋Šฅ ์ค‘๊ฐ„ ๋Œ“๊ธ€ ์‹ ๊ณ  ๊ธฐ๋Šฅ ์ดํ•˜์€ 4
์ค‘๊ฐ„ ํฌ์ŠคํŠธ ์‹ ๊ณ  ๊ธฐ๋Šฅ ์ดํ•˜์€ 4
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ๋†’์Œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ๊ธฐ๋Šฅ ์ดํ™”์˜, ๊น€๊ฒฝ๋ž˜, ๊น€ํ•˜์—ฐ, ์ดํƒœ๊ฒฝ, ์ดํ•˜์€ 8
์ค‘๊ฐ„ ๊ด€๋ฆฌ์ž - ํšŒ์› ๊ด€๋ฆฌ ์ดํ•˜์€ 4
์ค‘๊ฐ„ ๊ด€๋ฆฌ์ž - ๋Œ“๊ธ€ ์‹ ๊ณ  ๊ด€๋ฆฌ ์ดํ•˜์€ 4
์ค‘๊ฐ„ ๊ด€๋ฆฌ์ž - ํฌ์ŠคํŠธ ๊ด€๋ฆฌ ์ดํ•˜์€ 4
์ค‘๊ฐ„ ๊ด€๋ฆฌ์ž - ํฌ์ŠคํŠธ ์‹ ๊ณ  ๊ด€๋ฆฌ ์ดํ•˜์€ 4
๋ชจ๋‹ˆํ„ฐ๋ง ์ค‘๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ์„œ๋ฒ„ ์ ์šฉ ๊น€๊ฒฝ๋ž˜ 16
์ค‘๊ฐ„ ์„œ๋ฒ„ ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ์ดํ™”์˜ 16

Story Point(SP) ํ•ฉ๊ณ„ โ‰ˆ 172 ( ํŒ€ ๊ธฐ์ค€ 6๋ช… ร— 5์ผ ร— ํ•˜๋ฃจ 6์‹œ๊ฐ„ = 180ยฑ10 ๋‚ด์™ธ โ†’ ์ ์ •)

์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ

์ƒ์„ธ ์ž‘์—… ๋ชฉ๋ก ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ ์ƒ์„ฑ

์‚ฌ์šฉ์ž ๊ตฌ๋ถ„ Epic User Story
์‚ฌ์šฉ์ž ๋ฐฑ๋กœ๊ทธ ์‚ฌ์šฉ์ž๋Š”, ์˜ค๋ฅ˜ ์—†์ด ์‹ค์‹œ๊ฐ„ ์ธ๊ธฐ ํฌ์ŠคํŠธ๋ฅผ ์กฐํšŒํ•˜์—ฌ ์ตœ์‹  ์ด์Šˆ๋ฅผ ๋†“์น˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
AI ๊ธฐ๋Šฅ ์‚ฌ์šฉ์ž๋Š”, ํ‚ค์›Œ๋“œ๋ณ„ ๋‰ด์Šค๋ฅผ AI๊ฐ€ ์š”์•ฝํ•œ ํฌ์ŠคํŠธ๋กœ ์ฝ์–ด์„œ ํ•ต์‹ฌ๋งŒ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์‚ฌ์šฉ์ž๋Š”, ๊ฒ€์ƒ‰์ฐฝ์— ํ‚ค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ด€๋ จ๋œ(๋˜๋Š” ์œ ์‚ฌ์„ฑ์ด ๋†’์€) ํฌ์ŠคํŠธ ๋ฐ ์—ฐ๊ด€ ์ถœ์ฒ˜๊ฐ€ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œ์‹œ๋˜์–ด ํ•œ๋ˆˆ์— ์ตœ์‹  ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
ํšŒ์› ๊ธฐ๋Šฅ ๋กœ๊ทธ์ธํ•œ ํšŒ์›์€, ๋‚ด ํ”„๋กœํ•„ ์ •๋ณด(๋‹‰๋„ค์ž„)์„ ์ˆ˜์ •ํ•˜์—ฌ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋กœ๊ทธ์ธํ•œ ํšŒ์›์€, ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žŠ์—ˆ์„ ๋•Œ ์ด๋ฉ”์ผ๋กœ ์ดˆ๊ธฐํ™” ๋งํฌ๋ฅผ ๋ฐ›์•„ ์žฌ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋กœ๊ทธ์ธํ•œ ํšŒ์›์€, ๊ณ„์ •์„ ํƒˆํ‡ด(soft delete)ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฐ์ดํ„ฐ๋Š” ์ฆ‰์‹œ ์•”ํ˜ธํ™” ๋ฐ ์ˆจ๊น€ ์ฒ˜๋ฆฌ๋œ๋‹ค.
์‹ ๊ณ  ๊ธฐ๋Šฅ ๋กœ๊ทธ์ธํ•œ ํšŒ์›์€, ๋ถ€์ ์ ˆํ•œ ๋Œ“๊ธ€์„ ์‹ ๊ณ ํ•˜์—ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ ์งˆ์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
๋กœ๊ทธ์ธํ•œ ํšŒ์›์€, ํ—ˆ์œ„ ์ •๋ณด ํฌ์ŠคํŠธ๋ฅผ ์‹ ๊ณ ํ•˜์—ฌ ์šด์˜์ž์˜ ๊ฒ€ํ† ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ๊ด€๋ฆฌ์ž๋Š”, ๊ด€๋ฆฌ์ž ๋Œ€์‹œ๋ณด๋“œ์— ์ ‘๊ทผํ•˜์—ฌ ์šด์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ด€๋ฆฌ์ž๋Š”, ํšŒ์› ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๊ณ  ๋ธ”๋ž™/ํƒˆํ‡ด ์ฒ˜๋ฆฌ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ด€๋ฆฌ์ž๋Š”, ๋Œ“๊ธ€ ์‹ ๊ณ  ๋ชฉ๋ก์„ ๋ณด๊ณ  ๋ธ”๋ž™/๊ธฐ๊ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์—ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ ์งˆ์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
๊ด€๋ฆฌ์ž๋Š”, ํฌ์ŠคํŠธ ์‹ ๊ณ  ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๊ณ  ์‚ญ์ œ ์ฒ˜๋ฆฌํ•˜์—ฌ ํ—ˆ์œ„ ์ปจํ…์ธ ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐœ๋ฐœ์ž ๋ฐฑ๋กœ๊ทธ ๊ฐœ๋ฐœ์ž๋Š”, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜โ€†ยทโ€†DBโ€†ยทโ€†API ์‘๋‹ต์˜ ์‹œ๊ฐ„๋Œ€๋ฅผ UTC๋กœ ํ†ต์ผํ•˜์—ฌ TZ ํ—ท๊ฐˆ๋ฆผ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐœ๋ฐœ์ž๋Š”, ํ‚ค์›Œ๋“œ ์‹ ๊ทœ์„ฑ ํ‰๊ฐ€ ๋กœ์ง์„ Batch์— ํฌํ•จํ•˜์—ฌ ์ค‘๋ณต๋œ ํฌ์ŠคํŠธ ์ƒ์„ฑ๊ณผ ์ž์›๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐœ๋ฐœ์ž๋Š”, ์Šค์ผ€์ค„๋Ÿฌ ์ค‘๋‹จ ์‹œ์ž‘/์žฌ์‹œ๋„ ๋ฐ ์•Œ๋ฆผ ๋กœ์ง์„ ๋ณด๊ฐ•ํ•˜์—ฌ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋น ๋ฅด๊ฒŒ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐœ๋ฐœ์ž๋Š”, flyway migration ์ด๋ ฅ์„ CI์—์„œ ๊ฒ€์ฆํ•˜์—ฌ ์Šคํ‚ค๋งˆ ๋ถˆ์ผ์น˜๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
AI ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ž๋Š”, ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ LLM(Gemini, OpenAI, ํด๋กœ๋“œ) ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋” ๋‚˜์€ ๋ชจ๋ธ์„ ์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ž๋Š”, RBAC ๊ธฐ๋ฐ˜์œผ๋กœ ์—ญํ• ๋ณ„ API๋ฅผ ์ œ์–ดํ•˜์—ฌ ๊ถŒํ•œ ์˜ค์šฉ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐœ๋ฐœ์ž๋Š”, Grafana ๋Œ€์‹œ๋ณด๋“œ์—์„œ API TPS/์—๋Ÿฌ์œจ/์‘๋‹ต์‹œ๊ฐ„์„ ์‹ค์‹œ๊ฐ„ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์ด์ƒ ์งํ›„๋ฅผ ์ฆ‰์‹œ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐœ๋ฐœ์ž๋Š”, ๋กœ๊ทธ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

UX/UI ํ๋ฆ„

FigJam ๋งํฌ: [https://www.figma.com/board/T9dM5oVh1Gox1FVbHDyriL/๊ฐœ๋น ๋‹ญ?node-id=0-1&t=C0XgNWHPw076Q9sj-1](https://www.figma.com/board/T9dM5oVh1Gox1FVbHDyriL/%EA%B0%9C%EB%B9%A0%EB%8B%AD?node-id=0-1&t=C0XgNWHPw076Q9sj-1)

  • 2์ฐจ ์Šคํ”„๋ฆฐํŠธ ํ•ต์‹ฌ ํ™”๋ฉด
    1. ํšŒ์› ์ •๋ณด (์ˆ˜์ • ๋ฐ ํƒˆํ‡ด)
    2. ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€
    3. ์‹ ๊ณ  ํŒ์—… - ์‚ฌ์œ  ์„ ํƒ & ์ œ์ถœ
    4. ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ (ํšŒ์›/ํฌ์ŠคํŠธ/๋Œ“๊ธ€ ์‹ ๊ณ  ๊ด€๋ฆฌ)

image

API ๋ช…์„ธ

[์ œ๋ชฉ ์—†์Œ](https://www.notion.so/1f13550b7b558077bd42c2c6295b16ad?pvs=21)

ํ…Œ์ŠคํŠธ ์ „๋žต

1. ๋‹จ์œ„(Unit) ํ…Œ์ŠคํŠธ

  • Service ์ค‘์‹ฌ: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์ง‘์ค‘๋œ ๊ณ„์ธต
  • ์™ธ๋ถ€ ์˜์กด์„ฑ์€ Mock ์ฒ˜๋ฆฌ

2. ํ†ตํ•ฉ(Integration) ํ…Œ์ŠคํŠธ

  • ์‹ค์ œ Bean๊ณผ ์ž„๋ฒ ๋””๋“œ H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™˜๊ฒฝ์„ ํ†ตํ•ด ๊ฒ€์ฆ
  • Controller E2E ํ…Œ์ŠคํŠธ ์ค‘์‹ฌ
  • Query ๊ฒ€์ฆ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Respository ํ…Œ์ŠคํŠธ๋„ ํฌํ•จ

3. Code Coverage

  • Line Coverage > 70% ์ด์ƒ
  • Branch Coverage > 50% ์ด์ƒ
  • CI ํŒŒ์ดํ”„๋ผ์ธ ์—ฐ๋™

QA ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค

๋…ธ์…˜ ํ…œํ”Œ๋ฆฟ:

  • ์‹ค์ œ ์‚ฌ์šฉ์ž ํ”Œ๋กœ์šฐ๋ฅผ ๊ณ ๋ คํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ๋กœ ํ™•์žฅ
    • ์˜ˆ: ํšŒ์› ๊ฐ€์ž… โ†’ ์ธ์ฆ โ†’ ํ‚ค์›Œ๋“œ ๊ตฌ๋… โ†’ ํŠธ๋ Œ๋“œ ํ™•์ธ ๋“ฑ์˜ ์ผ๋ จ์˜ ํ–‰๋™ ํ๋ฆ„
  • ํŠนํžˆ, ์œ ์ € ๋™์‹œ์„ฑ ๋ฐ API ํ˜ธ์ถœ ๊ฒฝ์Ÿ ์ƒํ™ฉ ๋“ฑ ์‹ค์ œ ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ์˜ Edge Case๋„ ํฌํ•จ

๋ชฉ์ : ๊ธฐ๋Šฅ๋ณ„ API๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž ๊ด€์ ์˜ ํ”Œ๋กœ์šฐ ๊ธฐ๋ฐ˜ QA ์ฒด๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ์‹ค์งˆ์ ์ธ ๋ฒ„๊ทธ๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€

[์ œ๋ชฉ ์—†์Œ](https://www.notion.so/1f13550b7b5580008145f8e192c02a5b?pvs=21)

๊ฒฐ๊ณผ

Definition of Done (DoD)

  • ๋กœ๊ทธ/์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ
  • ๋ชจ๋“  Story โ†’ Unit & Integration ํ…Œ์ŠคํŠธ ํ†ต๊ณผ
  • QA ํ†ตํ•ฉ ์‹œ๋‚˜๋ฆฌ์˜ค Pass์œจ 100%
  • ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ๊ธฐ์ค€ ํ†ต๊ณผ(๋ผ์ธ 70%, ๋ถ„๊ธฐ 50%)
  • Swagger ๋ฌธ์„œ ์ตœ์‹ ํ™” ๋ฐ JSON ์ถ”์ถœ
  • ๋ฐฐํฌ Tag v2.0.0

ํšŒ๊ณ 

  • ๐Ÿ‘ ์ž˜ํ•œ ์ 

  • ๐Ÿค” ์•„์‰ฌ์šด ์ 

  • ๐Ÿ”ง ๊ฐœ์„ ํ•  ์ 

  • ๐Ÿš€ ๋‹ค์Œ ์•ก์…˜

Next Actions

  • Hourly Keyword/Post Cache (Redis, CDN)
  • ๋ชจ๋‹ˆํ„ฐ๋ง์—์„œ ๋Œ€์‹œ๋ณด๋“œ/ํŒจ๋„ ์ถ”๊ฐ€
  • Keyword์— priority STANDARD, REALTIME ์„ ๊ตฌ๋ถ„ โ†’ ์Šค์ผ€์ค„๋Ÿฌ ์ฃผ๊ธฐ ๋ถ„๋ฆฌ
  • S2S PoC

image