๐ GraphQL์ด๋?
- facebook์์ ๋ง๋ ์๋ก์ด API ํ์ค์ธ์ด
- ํ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์กฐ์ , ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ๊ธฐ ๊ฐ๋ฅ
- Graph + Query Language
GraphQL์ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค(API)๋ฅผ ์ํ ์ฟผ๋ฆฌ ์ธ์ด์ด์ ์๋ฒ์ธก ๋ฐํ์์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญํ ๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ฐ์ ์์๋ฅผ ๋ก๋๋ค.
GraphQL(์ดํ GQL)์ Structed Query Language(์ดํ SQL)์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฟผ๋ฆฌ ์ธ์ด์ ๋๋ค. ํ์ง๋ง GQL๊ณผ SQL์ ์ธ์ด์ ๊ตฌ์กฐ ์ฐจ์ด๋ ๋งค์ฐ ํฝ๋๋ค. ๋ํ GQL๊ณผ SQL์ด ์ค์ ์์ ์ฐ์ด๋ ๋ฐฉ์์ ์ฐจ์ด๋ ๋งค์ฐ ํฝ๋๋ค. GQL๊ณผ SQL์ ์ธ์ด์ ๊ตฌ์กฐ ์ฐจ์ด๊ฐ ํ์ฉ ์ธก๋ฉด์์์ ์ฐจ์ด๋ฅผ ๊ฐ์ ธ์์ต๋๋ค. ์ด ๋์ ์ ์ด์ ํ์ ์๊ธฐ๋ ๋ค๋ฅด๊ณ ๋ฐฐ๊ฒฝ๋ ๋ค๋ฆ ๋๋ค.
SQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ด ๋ชฉ์ ์ด๊ณ , GQL์ ์น ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ถํฐ ํจ์จ์ ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ด ๋ชฉ์ ์ ๋๋ค. SQL์ ๋ฌธ์ฅ(statement)์ ์ฃผ๋ก ๋ฐฑ์ค๋ ์์คํ ์์ ์์ฑํ๊ณ ํธ์ถ ํ๋ ๋ฐ๋ฉด, GQL์ ๋ฌธ์ฅ์ ์ฃผ๋ก ํด๋ผ์ด์ธํธ ์์คํ ์์ ์์ฑํ๊ณ ํธ์ถ ํฉ๋๋ค.
๐ GraphQL์ ์ฐ๋ ์ด์
- endpoint๊ฐ 1๊ฐ์ ๋๋ค. ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ์ฌ์ฉ์ด ์ฆ๋ํ๋ ์์ฆ, ํจ๊ณผ์ ์ธ ๋ฐ์ดํฐ ๋ก๋ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ํ๋ฒ์ ์์ฒญ์ผ๋ก ์ํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก๋ถํฐ ์์ฒญํด์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ REST API๋ง์ ์ฌ์ฉํ ๋
๋ฐ์ํ๋ Overfetching์ด๋ Underfetching ๋ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. - ๊ธฐ์ข ์ ์๊ด์๋ API๊ธฐ ๋๋ฌธ์ ํน์ ๊ธฐ์ข ์ ์ฐจ๋ณํ์ง ์์ต๋๋ค.
๐ Overfetching
์ํ๋ data ์ด์์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๊ฒ. data ์ ์ฒด ๋ฆฌ์์ค ๋ญ๋น ๋ฐ์
๐ Underfetching
์ํ๋ data์ ์ ๋ณด๋ฅผ ์์ฒญํ๊ธฐ ์ํด ์ฌ๋ฌ๋ฒ ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ. ๋คํธ์ํฌ๋ฅผ ํตํด ์ฌ๋ฌ๋ฒ ์ ๊ทผํด์ ๋ฆฌ์์ค ๋ญ๋น ๋ฐ์
์ฐธ๊ณ
'Studying Web Development > Free Memo' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CI/CD๋? ์์ฝ ์ ๋ฆฌ (0) | 2022.08.10 |
---|---|
๋ง์ดํฌ๋กํ์คํฌ ํ, ํ์คํฌ ํ (0) | 2022.07.30 |
[TypeScript] ํ์ ์คํฌ๋ฆฝํธ์์ any, unknown ํ์ ์ด๋? (0) | 2022.07.27 |
[TypeScript] Interface์ Class์ ์ฐจ์ด์ (0) | 2022.07.21 |
์ ๋ฌธ์๊ฐ ๊ฒช๊ธฐ ์ฌ์ด console.log ๊ด๋ จ ๋ฌธ์ ๋ชจ์ (0) | 2022.07.20 |
๋๊ธ