GraphQL ์ด๋?
ํ์ด์ค๋ถ์์ ๋ง๋ API๋ฅผ ์ํ ์ฟผ๋ฆฌ ์ธ์ด.
์น ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก๋ถํฐ ํจ์จ์ ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ด ๋ชฉ์ ์ธ ์ฟผ๋ฆฌ ์ธ์ด.
* SQL ์ DB ์์คํ ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ด ๋ชฉ์ ์ธ ์ฟผ๋ฆฌ ์ธ์ด๋ก ๋๊ฐ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ผ๋ ๊ฒ์์ ์ ์ฌํ๊ฒ ๋๊ปด์ง์ง๋ง ๋ชฉ์ ์์๋ถํฐ ๋ค๋ฆ.
๊ธฐ์กด API ํธ์ถ ๋ฐฉ์
๊ธฐ์กด์ REST API ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํธ์ถํด์ค๋ ํ์์ ๋ค์๊ณผ ๊ฐ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ํต์ ํ๊ธฐ ์ํด์๋ ์๋ฒ๊ฐ ๊ตฌํํด๋ API๋ฅผ ํธ์ถํด์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ฑฐ๋, ๋ฐ์์ค๊ฒ ๋๋ค. ๋ณดํต ํ๋์ View๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด์ ๋ณดํต ์ฌ๋ฌ ๋ฒ API๋ฅผ ํธ์ถํ๊ฒ ๋๊ณ , ํธ์ถ์ ํตํด ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํด์ ์ฌ์ฉ ํด์ผ ํ๊ฒ ๋๋ค.
์ฑ์ ํ์ด์ง๊ฐ ๋ณต์กํด์ง์๋ก ๋ง์ ํธ์ถ์ ํด์ผํ๊ณ ๋ฐ์ดํฐ ์กฐํฉ์ ์ํด ์์ฐจ์ ์ธ ์ฒ๋ฆฌ๊ฐ ๋ค์ด๊ฐ์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ง๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํ๋ ๊ฒ์ด ๋งค์ฐ ๋ณต์กํด์ง.
์ด๋ฌํ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋์จ ๊ฒ์ด GraphQL.
GraphQL ์ ๊ตฌ์กฐ
GraphQL์ ํด๋ผ์ด์ธํธ์์ ์๊ธฐ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ง์ ์ฟผ๋ฆฌํ ์ ์๋๋ก ํด์ ๊ธฐ์กด API ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค๋ค.
๋ฏธ๋ค์จ์ด ๊ฐ์ ๋๋์ผ๋ก ์ดํดํ๋ฉด ์ฌ์ธ ๋ฏ ํ๋ค.
GraphQL์ ๋ค๋ฅธ Query Language์ธ SQL ๋ฑ๊ณผ ๊ฐ์ด ์ฟผ๋ฆฌ๋ฅผ ์ ์ธํ๋ฉด ํด๋น ๊ฐ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค. ์ต๊ทผ ์ ์ธํ ํจ๋ฌ๋ค์์ด ์ ์ฐจ์ ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋ ์ ์ธ์ ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํจ์ผ๋ก์จ ๋์ฑ ์ง๊ด์ ์ผ๋ก ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์ค๋์ง๋ฅผ ์ ์ ์๊ฒ ๋จ.
๊ทธ๋์ GraphQL์ด ์ต๊ณ ์งฑ์งฑ ๊ธฐ์ ์ธ๊ฐ?
GraphQL์ ํ๊ณ
์์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์๋ ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํ์๋๋ผ๋ฉด ํ์ฌ๋ ๊ทธ ์ญํ ์ด GraphQL๋ก ์ฎ๊ฒจ์ง๊ฒ ๋๋ ๊ฒ.
๋ชจ๋๋ก ์ญํ ์ ๋ถ๋ฆฌํ๋ฉด ๋ถ๋ฆฌํ ์๋ก ๊ฐ๋ฐ ๋ชจ๋์ ์ ์ง๋ณด์๋ ์ฌ์์ง์ง๋ง ๊ตฌํ์ ๋ณต์กํด์ง๋ค.
๊ณ ๋ก
๊ฐ๋จํ ์ฑ์ ๋จ์ผ ๋ชจ๋๋ก ๋ง๋ค๊ณ , ๋ง๋ค๊ณ ์ํ๋ ์ฑ์ ํฌ๊ธฐ๊ฐ ์ปค์ง ์๋ก ๊ณตํต ๋ชจ๋๋ก ๋ถ๋ฆฌ๋ฅผ ํ๋ ๊ฒ์ด ์ข๋ค.
GraphQL ์ฅ๋จ์
์ฅ์
1. Over Fetching ๊ณผ Under Fetching์ ํด๊ฒฐํ ์ ์์
2. End Point ์ ์์ฒญ ๋ฐฉ์์ ๊ณ ๋ฏผํ์ง ์์๋ ๋จ.
3. ํด๋ผ์ด์ธํธ ๋ก์ง์ด ๊ฐ๊ฒฐํด์ง.
๋จ์
1. HTTP ์บ์ฑ์ ํ์ฉํ๊ธฐ ์ด๋ ต๋ค.
2. ์๋ฌ ํธ๋ค๋ง์ด ์ด๋ ต๋ค
3. ์์ฒญ์ด ๋ฌด๊ฑฐ์์ง๊ณ ์ค๊ณํ๊ธฐ๊ฐ ๋ณต์กํ๋ค.