Strapi ์ฌ์ฉํด๋ณด๊ธฐ
Headless CMS Strapi ์ ๋ํด์ ์์๋ณด์.
Dec 31, 2023
๋ค์ด๊ฐ๋ฉฐ
์ด์ ์ ๊ทธ๋ฃน ๋ธ๋ก๊ทธ ๊ฐํธ์ ์งํํ๋ฉฐ ๋์ ํ๊ฒ๋ Strapi(๋ณดํต ์คํธ๋ผํผ ๋ผ๊ณ ์ฝ๋๊ฒ ๊ฐ์ต๋๋ค)์ ๋ํด์ ์๊ฐํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปค์คํ ํ ํ๋ก ํธ๊ฐ๋ฐ ํ๊ฒฝ์ ๋น์ฐํ ์กฐ๊ฑด์ด์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๊ด๋ฆฌ์ ํ์ด์ง์ api๊ฐ ํ์ํ์์ต๋๋ค.
ํ๋ก ํธ๊ฐ๋ฐ ํ๊ฒฝ์ next.js๋ก ํ์ ์ด์์ง๋ง ๋ฐฑ์๋๋ ์กฐ๊ธ ๊ณ ๋ฏผ์ด์์ฃ โฆ
Node.js์ express๋๋ express๋ฅผ ์ด์ฉํ ๊ฐ์ข ํ๋ ์์์ ์ฌ์ฉํ ์๋ ์์์ง๋ง ์ง์ ํ๋ํ๋ ์์ ํด ์ฃผ์ด์ผ ํ๋ ๋ถ๋ถ๋ค์ด ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋๋๋ฐ ์์ด์ ๊ทธ๋ฆฌ ํจ์จ์ ์ด์ง ๋ชปํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๊ทธ๋ฌ๋ ์์ค์ ๊ฐ์ ๊ทธ๋ฃน์ ์ดOO(์ฝ๊ณต)์ฃผ์๋์ ์ถ์ฒ์ผ๋ก Strapi์ ๋ํด์ ์๊ฒ๋์๊ณ ํฅ๋ฏธ๊ฐ ์๊ฒจ Strapi๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ก๊ทธ ๋ฐฑ์๋ ๊ตฌ์ถ ๋ฐ ๊ด๋ฆฌ์ ํ์ด์ง๊น์ง ๋น๊ต์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์์๋ ๊ฒฝํ์ ์ป๊ฒ๋์ด ์๊ฐํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
Headless CMS๋?

ํค๋๋ฆฌ์ค CMS๋ Content Management System์ ์ฝ์ด๋ก, ์น์ฌ์ดํธ์ ์ฝํ ์ธ ๋ฅผ ๊ด๋ฆฌํ๋ ์์คํ ์ ๋งํฉ๋๋ค. ๊ทธ๋ฌ๋ ํค๋๋ฆฌ์ค๋ผ๋ ์ฉ์ด๊ฐ ๋ถ์ด ํค๋๋ฆฌ์ค CMS๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๋ ์ด ์์คํ ์ ๊ธฐ์กด์ CMS์๋ ๋ค์ ๋ค๋ฅธ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ธฐ์กด์ CMS๋ ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ๊ฒฐํฉ๋ ํํ๋ก, ์ฝํ ์ธ ๋ฅผ ์์ฑ, ๊ด๋ฆฌํ๊ณ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ๊น์ง ๋ชจ๋ ํฌํจํ๊ณ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ์น์ฌ์ดํธ์ ๋์์ธ(ํ๋ก ํธ์๋)๊ณผ ์ฝํ ์ธ ๋ฅผ ๊ด๋ฆฌํ๋ ๋ถ๋ถ(๋ฐฑ์๋)์ด ํ ๋ฉ์ด๋ฆฌ๋ก ๋ฌถ์ฌ์๋ ํํ์ ๋๋ค.
๋ฐ๋ฉด, ํค๋๋ฆฌ์ค CMS๋ ์ด ๋ ๋ถ๋ถ์ ๋ถ๋ฆฌํ ํํ๋ก, ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. ์ฆ, ์ฝํ ์ธ ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฑ์๋ ๋ถ๋ถ๋ง์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ์ด๋ป๊ฒ ๋ณด์ฌ์ค์ง๋ ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ก ๊ฒฐ์ ํ๊ณ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ธฐ์ ์ด ๋ฐ๋ก API์ ๋๋ค. API๋ฅผ ํตํด ์ฝํ ์ธ ๋ฅผ ์์ฒญํ๊ณ ๋ฐ์์ค๋ฉฐ, ์ด๋ฅผ ๋ค์ํ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๊ตฌ์ฑ๋ ํค๋๋ฆฌ์ค CMS์ ์ฅ์ ์ ๋ค์๊ณผ๋ ๊ฐ์ต๋๋ค.
ํ๋ซํผ ๋ ๋ฆฝ์ : ํค๋๋ฆฌ์ค CMS๋ ์ฝํ ์ธ ๋ฅผ ์ด๋ค ํ๋ซํผ์์๋ ๋ณด์ฌ์ค ์ ์์ต๋๋ค. ์น์ฌ์ดํธ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ฐ์ผ ์ฑ, IoT ๋๋ฐ์ด์ค ๋ฑ ๋ค์ํ ํ๋ซํผ์์ ์ฝํ ์ธ ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ์ฐ์ฑ: ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์, ๊ฐ๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ๋ฐ์์๊ฒ ํฐ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ฉฐ, ์๋ก์ด ๊ธฐ์ ์ ์ ์ฉํ๊ฑฐ๋ ๋์์ธ์ ๋ณ๊ฒฝํ๋ ๋ฑ์ ์์ ์ ๋ณด๋ค ์ฝ๊ฒ ํ ์ ์์ต๋๋ค.ํ์ฅ์ฑ: ์ฝํ ์ธ ๋ฅผ ๊ด๋ฆฌํ๋ ๋ถ๋ถ๊ณผ ์ด๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ถ๋ถ์ด ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์, ๊ฐ ๋ถ๋ถ์ ๊ฐ๋ณ์ ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค. ์ด๋ ์์คํ ์ ํ์ฅ์ฑ์ ๋์ด๋ฉฐ, ๋๊ท๋ชจ ํ๋ก์ ํธ์๋ ์ ํฉํฉ๋๋ค.
๊ทธ๋ฌ๋ ํค๋๋ฆฌ์ค CMS์๋ ๋ช ๊ฐ์ง ๋จ์ ๋ ์กด์ฌํฉ๋๋ค.
๊ฐ๋ฐ ๋ณต์ก์ฑ: ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์, ๊ฐ ๋ถ๋ถ์ ๋ฐ๋ก ๊ฐ๋ฐํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ ๊ณผ์ ์ ๋ณต์กํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.์ ์ฒด์ ์ธ ๊ด๋ฆฌ ํ์: ๊ธฐ์กด CMS์์๋ ํ๋ฌ๊ทธ์ธ์ด๋ ํ์ฅ ๊ธฐ๋ฅ์ ํตํด ์ฝ๊ฒ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ง๋ง, ํค๋๋ฆฌ์ค CMS์์๋ ์ด๋ฐ ๊ธฐ๋ฅ์ ์ง์ ๊ฐ๋ฐํ๊ณ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.ํ์ค
CMS ๊ธฐ๋ฅ ๋ถ์กฑ: ํค๋๋ฆฌ์ค CMS๋ ํค๋๋ฆฌ์ค๋ผ๋ ํน์ฑ ์, ์ผ๋ถ ํ์ค CMS ๊ธฐ๋ฅ์ด ๋ถ์กฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์์๊ฒ ์ฝํ ์ธ ๋ฅผ ์ด๋ป๊ฒ ๋ณด์ฌ์ค์ง์ ๋ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋ฅ์ด ์ ํ์ ์ผ ์ ์์ต๋๋ค.
์ด์ฒ๋ผ ํค๋๋ฆฌ์ค CMS๋ ๊ทธ ํน์ฑ์ ๊ธฐ์กด์ CMS์๋ ๋ค๋ฅด๊ฒ ๋์ํ๋ฉฐ, ์ด์ ๋ฐ๋ผ ๊ทธ ์ฅ๋จ์ ์ด ์กด์ฌํฉ๋๋ค. ์ด๋ฅผ ๊ณ ๋ คํ์ฌ ํ๋ก์ ํธ์ ์๊ตฌ ์ฌํญ๊ณผ ๋ชฉํ์ ๋ง๊ฒ ์ ์ ํ CMS๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ Strapi์๋?
๊ฐ์ธ์ ์ผ๋ก ์ง์ ๊ฒฝํํด๋ณธ Strapi๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค๋ก๋ง ๊ตฌ์ฑ๋์ด ์๋ ์กฐ์ง์์๋ ์๋นํ ํจ์จ์ ์ธ ๋๊ตฌ๊ฐ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฌผ๋ก ์๊ตฌ์ฌํญ์ด๋ ๊ฐ๋ฐ๊ท๋ชจ๋ฅผ ๋ด๊ฐ๋ฉฐ ํ๋ก์ ํธ์ ๋์ ์ ๊ณ ๋ คํด๋ด์ผ ํ๊ฒ ์ง๋ง ์ ์ด๋ ๋น์ฅ์ api๋ฅผ ๊ฐ๋ฐํด์ค ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ์๋ ํ๊ฒฝ์์ ๋ถ๊ฐํผํ๊ฒ api๊ฐ ํ์ํ ์ํฉ์ด๋ผ๋ฉด Node.js Koa๊ธฐ๋ฐ์ผ๋ก ์ ์๋ Strapi๋ ์ถฉ๋ถํ ๋์ฒดํด์ค์ ์๋ ์ข์ ์ ํ์ง๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด๋๋ฏผ ์ ๊ณต : ๋ธ๋ก๊ทธ๋ฅผ ๊ฐํธ์ ์งํํ๋ฉด์ ์ด๊ธฐ์ ์ ๊ฐ ๊ฐ์ฅ ๊ณ ๋ฏผํ๋ ๋ถ๋ถ์ด ๊ด๋ฆฌ์ํ์ด์ง(admin)์ด์๋๋ฐ์ ์๋ํฐ ์ฐ๋, ์ด๋ฏธ์งํ์ผ ์ฒ๋ฆฌ๋ฑ๋ฑ ๋ค์ ๋ฒ๊ฑฐ๋ก์ด ๋ถ๋ถ๋ค์ ์ง์ ๊ตฌ์ถํด์ผ ํ๋ ํ๋๊ฒ๋ ๊ณ ๋ฏผ์ด์์ต๋๋ค.๊ทผ๋ฐ Strapi๋ ๊ธฐ๋ณธ์ผ๋ก admin ํ๋ฉด์ ๊ทธ๋ฅ ๋ง๋ค์ด์ค๋๋ค ๋ฌผ๋ก ํด๋น admin ํ๋ฉด์ ์ฌ์ฉํ์ง ์๊ณ api๋ง ์ฌ์ฉํ๊ณ ์ง์ admin์ ์ง์ ๊ฐ๋ฐํ ์๋ ์๊ฒ ์ฃ ์ ํ์ง๋ ์ฌ์ฉํ๋ ์ฌ๋์ ๋ชซ์ ๋๋ค.
ํ์ฅ์ฑ๊ณผ ์ ์ฐํจ : CMS๋ผ์ ์๋นํ ์ ํ์ ์ด๊ณ ํ์ด ๊ฒฌ๊ณ ํ ๊ฒ ๊ฐ์ง๋ง ๊ทธ๋ ์ง๋ ์์ต๋๋ค ๊ธฐ๋ณธ์ ์ธ CRUD๋ admin ํ์ด์ง์์ ๋ง์ฐ์ค ๋ช๋ฒ์ ํด๋ฆญ๋ง์ผ๋ก ์์ฑ๋ฉ๋๋ค ๋จ์ํ api๋ฅผ ์์ฑํ๋ค๋ฉด ์์ฐ์ฑ ๋ํ ํฐ์ฅ์ ์ด๊ธฐ๋ ํฉ๋๋ค. ๊ทธ์ธ์๋ ๊ฐ๋ฐ ์๊ตฌ์ฌํญ์ ๋ง์ถ์ ์๋ api์ปค์คํ ์์ ๋๊ฐ ์๋นํ ๋์ํธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค ๋ณต์กํ ์ฟผ๋ฆฌ์ผ๊ฒฝ์ฐ raw sql์ ์์ฑํด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ ํ ์๋ ์์ต๋๋ค. ๋ฌผ๋ก ์ฌ๊ธฐ์ ๋ถํฐ ์ฝ๋์์ฑ์ ์ด๋ค์ ธ์ผ ํฉ๋๋ค ๊ณต์ ํํ์ด์ง์์ ํ ์ปค์คํฐ๋ง์ด์ง์ด ๊ฐ๋ฅํ ๊ฐ๋ฐ์์ฐ์ ํ๋ ์์์ด๋ผ๊ณ ์๊ฐํ๊ณ ์์ฃ Strapi๋ ์คํ์์ค์ด๋ฉฐ ์ปค๋ฐ์ ๋๋ถ๋ถ์ด ์คํธ๋ผํผ ์ง์์ด ์๋ ์ผ๋ฐ ์ปจํธ๋ฆฌ๋ทฐํฐ์ผ๋งํผ ์ ์ง๋ณด์์ ๋ฒ๊ทธ ์์ ์ด ๊ต์ฅํ ์์ฃผ ์ด๋ฃจ์ด์ง๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค
Node๊ธฐ๋ฐ : Node(javascript)๋ก ๊ฐ๋ฐ๋์๊ธฐ ๋๋ฌธ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๊ฒ๋ ์น์ํ๊ฒ ๋ค๋ฃฐ ์ ์์ต๋๋ค
ํ๋ฌ๊ทธ์ธ๊ณผ ํ๋ก๋ฐ์ด๋ : ๊ตฌ๊ธ ๋ก๊ทธ์ธ ๋ฑ 15๊ฐ์ ์ธ์ฆ Provider ๋ฐ ํ๋ฌ๊ทธ์ธ๋ค์ ์์ฐ์ฑ๊ณผ ๊ฐ๋ฐ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ๋์์ค๋๋ค.
์์ฌ์ด๋ถ๋ถ
์ด๋๋ฏผ ์ปค์คํ : ์ด๋๋ฏผ ํ์ด์ง๋ฅผ ์ปค์คํฐ๋ง์ด์ง ํ๊ธฐ ์ด๋ ต๋ค๋ ๋ถ๋ถ์ ์ ๋ก์ ์ข ์์ฌ์ด ๋ถ๋ถ์ด์์ต๋๋ค Strapi v3์์๋ ๊ฐ๋ฅํ๋ค๋ ๊ธ์ ๋ด์๋๋ฐ v4์ ๋ค์ด์๋ฉฐ ์ด๋๋ฏผ ํ์ด์ง์ ๋ํ ์์ ๋๋ฅผ ๋ฎ์ถ๊ฑด ๋ค์ ์์ฌ์ด ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค ๋ฌผ๋ก ๋ฐฉ๋ฒ์ด ์์ฃผ์๋๊ฑด ์๋์ง๋ง ๊ทธ๋ค์ง ์ถ์ฒํ๋ ๋ฐฉ๋ฒ์ ์๋๋ฉฐ ๋๋ ๋ง์ ๋ถ๋ถ์ด ์ปค์คํ ํ ์ด๋๋ฏผ์ด ํ์ํ๋ค๊ณ ํ๋ค๋ฉด Strapi๋ก๋ api์์ฑ๋ง ํ๊ณ ์ด๋๋ฏผ์ ๋ณ๋๋ก ๊ตฌ์ถํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ปค๋ฎค๋ํฐ : Node(javascript)๋ก ์ ์๋ CMS๋ก๋ ์ฌ์ฉ์๊ฐ ๋น๊ต์ ๋ง์ ํธ์ด์ง๋ง php์ Wordpress์ฒ๋ผ ๋๋ฆฌ ์๋ ค์ ธ ์์ง์๊ณ ์ปค๋ฎค๋ํฐ ๊ท๋ชจ๊ฐ ํฌ์ง์์ ์ด๋ก ์ธํด ๋ฌธ์ ํด๊ฒฐ์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์ฐพ๊ธฐ ์ด๋ ต๊ฑฐ๋, ํน์ ๋ฌธ์ ์ ๋ํ ์๋ฃจ์ ์ ์ฐพ๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ
์ด๋ฒ ๋ธ๋ก๊ทธ์์๋ Strapi๊ฐ ์ด๋ค ์ฉ๋์ด๋ฉฐ ์ด๋ป๊ฒ ์ฌ์ฉํ๋ฉด ์ข์์ง์ ๋ํด์ ์ง์ ์ฌ์ฉํด๋ณด๊ณ ๋๋์ ์ ํ ๋๋ก ๊ฐ๋ตํ ์๊ฐํด ๋ดค์ต๋๋ค ๋ค์ ํฌ์คํ ์์๋ ๋ธ๋ก๊ทธapi๋ฅผ Strapi๋ก ์ด๋ป๊ฒ ๊ฐ๋ฐํ์๋์ง ๋ ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ์ด๋ค ์์ ๋ค์ Strapi๋ฅผ ํตํด ์งํํ๋์ง ์๊ฐํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๊ทธ๋ผ ์ด๋ง ์ด๋ฒํฌ์คํ ๋ง์น๊ฒ ์ต๋๋ค
๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.