๐๋ค๋ก๊ฐ๊ธฐ
GraphQL๊ณผ REST๋ ๋ชจ๋ ์น์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํ ํต์ ํจํด์ด๋ค. ๊ทธ๋ฌ๋ ์ด ๋ ํต์ ํจํด์ ์ค๊ณ ์์น๊ณผ ๊ธฐ๋ฅ์ด ํฌ๊ฒ ๋ค๋ฅด๋ค.
REST
REST(Representational State Transfer)๋ ์น์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ API ๋์์ธ ํจํด์ด๋ค. HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ๊ฐ ๋ฆฌ์์ค๋ URL๋ก ์๋ณ๋๊ณ HTTP ๋ฉ์๋(GET, POST, PUT, DELETE ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ ์ํํ๋ค. REST๋ ์ํ๋ฅผ ๊ฐ์ง์ง ์๋(stateless) ํต์ ์ด๋ฉฐ, ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๊ฐ ์์ฒญ์ ์์ ํ ๋
๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
REST์ ์ฅ์
- ๋จ์ํจ: REST๋ HTTP ํ๋กํ ์ฝ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก ๊ตฌํ์ด ๋จ์ํ๋ค.
- ๋ฒ์ฉ์ฑ: REST๋ HTTP ์์ ๊ตฌ์ถ๋์ด ์์ด, ์ด๋ค ํ๋ซํผ์์๋ ์ฌ์ฉํ ์ ์๋ค.
REST์ ๋จ์
- ์ค๋ฒํ์นญ(Over-fetching): ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ณด๋ค ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ์ ๋ณด ์ค ์ด๋ฆ๋ง ํ์ํ๋ฐ ์ ์ฒด ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋ฐ์์ผํ๋ ๊ฒฝ์ฐ ๋ฑ์ด๋ค.
- ์ธ๋ํ์นญ(Under-fetching): ํ ๋ฒ์ ์์ฒญ์ผ๋ก ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ป์ง ๋ชปํ๊ณ , ์ถ๊ฐ ์์ฒญ์ ๋ณด๋ด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
- ๋ฒ์ ๊ด๋ฆฌ: API์ ๋ณํ์ ๋ฐ๋ผ ๋ฒ์ ์ ๋๋ ๊ด๋ฆฌํด์ผ ํ ์ ์๋ค.
GraphQL
GraphQL์ Facebook์ด ๊ฐ๋ฐํ๊ณ 2015๋
์ ๊ณต๊ฐํ ๋ฐ์ดํฐ ์ง์ ์ธ์ด์ด๋ค. ํด๋ผ์ด์ธํธ๋ ํ์ํ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ์ง์ ํ๊ณ , ์๋ฒ๋ ์ ํํ ํด๋น ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๊ฐ ์ ํํ ํ์ํ ๋ฐ์ดํฐ๋ง์ ๊ฐ์ ธ์ฌ ์ ์๊ฒ ๋๋ค.
GraphQL์ ์ฅ์
- ๋ฐ์ดํฐ ํจ์จ์ฑ: ํด๋ผ์ด์ธํธ๋ ํ์ํ ๋ฐ์ดํฐ๋ง ์์ฒญํ ์ ์๋ค. ์ด๋ก ์ธํด ์ค๋ฒํ์นญ๊ณผ ์ธ๋ํ์นญ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
- ๋จ์ผ ์์ฒญ: ์ฌ๋ฌ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์์ฒญ์ผ๋ก ๋ฐ์ ์ ์๋ค.
- ํ์
์์คํ
: GraphQL์ ๊ฐ๋ ฅํ ํ์
์์คํ
์ ๊ฐ์ง๊ณ ์์ด, ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ ์ ์๋ค.
- ์์ฒด ๋ฌธ์ํ: GraphQL ์คํค๋ง๋ API์ ๋ํ ๋ช
ํํ ์ดํด๋ฅผ ์ ๊ณตํ๋ฉฐ, ์์ฒด ๋ฌธ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
GraphQL์ ๋จ์
- ํ์ต ๊ณก์ : ์๋ก์ด ์ง์ ์ธ์ด์ด๋ฏ๋ก, ๊ฐ๋ฐ์๋ค์ด ์ด๋ฅผ ์ตํ๋ ๋ฐ์ ์๊ฐ์ด ํ์ํ๋ค.