μ νμ λ§λ€κΈ° μν΄μ λ§μ κΈ°λ₯μ΄ νμ νμκ³ κ·Έμ λ°λΌ λ§μ APIλ₯Ό μ°λνμ¬ κ°λ°νμλλ° μκ°μ΄ μ§λ μμ°μ€λ½κ² APIκ° μΆκ°λκ±°λ λ³κ²½λλ μΌλ€μ΄ λ§μμ§κ² λμμ΅λλ€.
μ΄κ²μ κ²°κ΅ API μ€νμ΄ μΆκ°λκ±°λ λ³κ²½λλ μΌμ΄ λ°μνλ κ²μ μλ―Ένμκ³ κ·Έμ λ°λΌ ν΄λΌμ΄μΈνΈκ° λ€λ£¨μ΄μΌ ν μλ ν¬μΈνΈμ λν μΈν°νμ΄μ€λ₯Ό μ μ§λ³΄μνλ κ²μ μ½μ§ μμμ΅λλ€.
λκ΅°λ€λ API μ€νμ λ¬Έμλ‘ μ 리νλ κ²μ μ²μμ μ¬μΈμ§ λͺ°λΌλ μ§μμ μΌλ‘ κ΄λ¦¬νλ κ²μ μ λ μ¬μ΄ μΌμ΄ μλμμ΅λλ€.
μ¬μ΄λ νλ‘μ νΈμ μ΄λ¬ν λ¬Έμ λ€μ GraphQLμ λμ νλ―λ‘μ¨ ν΄κ²° ν μ μμ§ μμκΉ μκ°νμ¬ λ¬Έμλ€μ μ½κ³ κ°μ₯ μΈμ κΉμλ λΆλΆλ€μ μμ½ ν΄λ³΄μμ΅λλ€.
ν΄λΌμ΄μΈνΈμμ μ΄ν΄ ν μ μλ μΈμ΄μ
λλ€. λΉμ·ν μλ‘ SQLμ΄ μλλ° μ§μλ₯Ό μμ±νλ μμ μ μ νν μ΄λ€ λ°μ΄ν°λ₯Ό λ°ν νλμ§ μ΄ν΄ ν μ μμμ λ»ν©λλ€.
κ·Έλ¦¬κ³ GraphQLμ λΌμ΄λΈλ¬λ¦¬κ° μλ μ€νμ μ μν κ²μ
λλ€. μ μλ μ€νμ λ°λΌ μΈμ΄μ λ§κ² κ°λ° ν μ μμ΅λλ€.
GraphQL λ°©μμΌλ‘ κ°λ°νλ €λ©΄ GraphQL ν΄λΌμ΄μΈνΈμ GraphQL μλ²κ° νμν©λλ€.
GraphQL μλ²λ μΈμ΄λ§λ€ λΌμ΄λΈλ¬λ¦¬κ° λ§μ΄ μ‘΄μ¬νκ³ ν΄λΌμ΄μΈνΈλ‘μλ μ μΌ μ λͺ
ν κ²μ Relayμ Apolloκ° μμ΅λλ€.
Relayλ λ©νμμ κ°λ°ν λΌμ΄λΈλ¬λ¦¬λ‘ GraphQLμ μ€κ³νκ³ μλΉμ€μ μ κ·Ήμ μΌλ‘ λμ
ν νμ¬λ΅κ² μμ λ€μ μ² νμ λ§κ² κ°λ°λμ΄ μμ΅λλ€.
μ μΌ μμμ μΏΌλ¦¬κ° μ‘΄μ¬νκ³ ν΄λΉ 쿼리λ₯Ό νλ κ·Έλ¨ΌνΈλ‘ μ¬λΌμ΄μ€νμ¬ κ° μ»΄ν¬λνΈμμ μ¬μ©νλ λ°©μμ
λλ€.
μ΄λ¬ν ꡬ쑰λ μ€μΌμΌλ§μ μ ν©ν ꡬ쑰μ
λλ€. μλΉμ€κ° 컀μ§λλΌλ μ¬λΌμ΄μ€λ νλ κ·Έλ¨ΌνΈλ₯Ό ν΅ν΄ μΊμ ννΈλ₯Ό κ·Ήλν μν΅λλ€.
λ€λ§ μ»΄ν¬λνΈμ νλμ νλ κ·Έλ¨ΌνΈλ₯Ό λμνμ¬ μ μΈνλ λ°©μμ μ·¨νκΈ° λλ¬Έμ 컨벀μ
μ΄ κΉλ€λ‘κ³ Relayλ§μ λλ ν°λΈκ° μ‘΄μ¬νμ¬ λ¬λ컀λΈκ° μ μ§ μμ΅λλ€.
κ·Έλ¦¬κ³ SSRμ 곡μμ μΌλ‘ λΌμ΄λΈλ¬λ¦¬μμ μ§μνμ§ μκΈ° λλ¬Έμ λ³λμ λΌμ°ν° μμ
μ΄ νμν©λλ€.
Apolloλ Relayμ λλΆλΆμ κΈ°λ₯μ λΉμ·νκ² μ 곡νμ§λ§ νΉμ 컨벀μ
μ κ³ μ λμ§ μμ μ μλλ‘ μ μ°μ±μ μ 곡ν©λλ€.
SSR λν λΌμ΄λΈλ¬λ¦¬ λ 벨μμ 곡μ μ§μνκ³ μμ΅λλ€.
μ΄λ¬ν λλ΅μ μΈ νΉμ§μ κ°μ§κ³ μμΌλ©° μ΄λ€ κ²μ μ ν ν μ§λ μ νμ μ€ν λ΄μμ SSRμ νμμ±μ λ°λΌ κ²°μ λλ¦¬λΌ μκ°λ©λλ€.
μλν¬μΈνΈλ₯Ό νλλ‘ ν΅ν© ν μ μμΌλ©°, ν΄λΌμ΄μΈνΈμμ μμ²νλ μμ μ μ΄λ€ λ°μ΄ν°λ₯Ό κ°μ Έμ€λμ§ μ΄ν΄ ν μ μμ΅λλ€.
Rest APIλ₯Ό μ¬μ©νλ€λ³΄λ©΄ νν λ§μ£Όνλ μΈλν¨μΉ(λ°μ΄ν°λ₯Ό λ§λ€κΈ° μν΄ μ¬λ¬ APIλ₯Ό νΈμΆ)κ³Ό μ€λ²ν¨μΉ(API μλ΅μ λΆνμν λ°μ΄ν°κΉμ§ ν¬ν¨)μ μμ¨ μ μμ΅λλ€.
λν GraphQL μλ²μμ μ 곡νλ Playground μ¬μ΄νΈλ₯Ό ν΅ν΄ λ³λμ λ¬Έμ μμ΄λ λ°μ΄ν° μΈν°νμ΄μ€λ₯Ό νμΈ ν μ μμ΅λλ€. (λ³λμ μ½λ μμ±μ νμ§ μμλ λ©λλ€)
κ·Έλ¦¬κ³ GraphQL μλ²κ° μ€κ°μμ λ°±μλ APIλ₯Ό ν΅ν©νμ¬ μ 곡νλ―λ‘ μμ€ν
λ§μ΄κ·Έλ μ΄μ
μ μ 리ν©λλ€. μλ₯Ό λ€μ΄ μΈν°νμ΄μ€ λ΄μμ λ°μ΄ν°κ° μλ‘ λ€λ₯Έ μΆμ²λ₯Ό κ°μ§λ€κ³ νλλΌλ ν΄λΌμ΄μΈνΈλ
ν΄λΉ λΆλΆμμ μ κ²½ μΈ νμκ° μμ΅λλ€.
νλμ GraphQL λ°μ΄ν°κ° νλμ λ΄λΆ APIλ₯Ό ν΅ν΄ μ 곡νλ€κ° λΆλ¦¬λ μ¬λ¬κ°μ λ΄λΆ APIλ₯Ό μ‘°ν©νμ¬ μ 곡 ν μ μμΌλ©°, μ΄ λ§μ λ°±μλμμ μμ€ν
μ μ μ°μ±μ΄ μκΉμ μλ―Έν©λλ€.
λ³λμ μλ ν¬μΈνΈλ₯Ό μΆκ°νκ±°λ λ³κ²½νμ§ μμλ λλ©° ν΄λΌμ΄μΈνΈκ° μμ²νλ 쿼리μ λν΄μ κ°κ°μ μμ± λ³λ‘ λ°μ΄ν°λ₯Ό μ 곡νλ©΄ λκΈ° λλ¬Έμ
λλ€.
GraphQLμ νλ² μΈν°νμ΄μ€λ₯Ό μ€κ³νλ©΄ λλλ¦¬κΈ°κ° μ½μ§ μμ΅λλ€. κ·Έλμ 곡μλ¬Έμμλ μμ€ν
μ λͺ¨λ λ°μ΄ν°λ₯Ό νλ²μ λ§μ΄κ·Έλ μ΄μ
νλ κ²μ μΆμ²νμ§ μκ³ μ μ§μ μΈ λμ
μ ν΅ν΄ μ€μλ₯Ό μ€μ¬λκ°λ κ²μ κΆμ₯νκ³ μμ΅λλ€.
GraphQL μλ²κ° λ°±μλ μλ² μλ¨μ μ‘΄μ¬νμ¬ ν΄λΌμ΄μΈνΈμ μμ²μ λ°λ μνμ νκ² λλ―λ‘ μΈνλΌλ₯Ό μ κ΄λ¦¬ν΄μΌν©λλ€.
μ€μ λ‘ μ΄λ€ μλΉμ€μμ GraphQLμ μ¬μ©νλλ° λ§μ μμ²μ΄ νλ²μ λ°λ € GraphQL μλ² μ€λ₯κ° ν΄λΌμ΄μΈνΈμ κ·Έλλ‘ λ
ΈμΆλ μ μ΄ μμ΅λλ€.