... visits
조만간 회사에서 새로운 프로젝트를 시작하게 될 예정이라 얼마 전부터 설계에 대해 여러 고민을 하고 있었다.
가장 신경 쓰는 부분은 증가하는 동시 접속 사용자에게 점점 더 다양한 데이터와 정보를 노출하면서 발생하는 복잡성과 비효율에 대한 문제다.
한 화면을 렌더링하기 위해 점점 더 많은 API를 호출하고, 그렇게 받아온 응답 데이터의 일부만 사용될 때 발생하는 낭비와 새로운 요구 사항이 생길 때마다 당장 해결에만 집중된 구현들(반복).
이 모든 것들이 관리 비용 증가로 이어지고, 기술 부채에 따른 생산성 저하와 성능 하락의 원인이 되는 게 아닐까 생각한다.
내가 자주 하는 말 중에 ‘이런 고민은 우리만 하는 게 아니다’라는 말이 있는데 말 그대로 문제를 해결하기 위한 새로운 기술과 해결책이 이미 나와있을 수 있다고 생각한다. (그 반대의 경우도 있겠지만)
그래서 새로운 기술 도입을 고려하거나 배우고 싶을 때 먼저 그 기술이 탄생한 배경을 찾아보게 된다.
GraphQL도 처음 들었을 때는 대충 ‘뭔가 새로운 형태의 API일 것이다’라고만 알고 있었다. 그러다 이번 기회에 문제 해결을 위한 대안이 될 수 있지 않을까 하는 궁금증이 생겼고, 갈 길은 멀겠지만 일단 제대로 알아보려 한다.
API를 위한 Query Language
아직은 이 내용이 크게 와닿지 않는다. 앞으로 실제 GraphQL을 구현 하면서 더 깊게 과정이 필요할 것이다.
GraphQL은 2015년 7월에 처음 발표되었기 때문에 비교적 신생이면서 은근히 나온 지 조금 된 느낌을 받는다.
이렇게 느끼는 이유는 “graphql” 이라고 검색했을 때 이미 기초적인 내용이 잘 정리된 글들이 꽤 많기 때문이다. (한글이든 영어든)
그렇게 조사한 내용에 바탕으로 다시 한번 GraphQL의 특징에 대해 정리해 보았다.
/graphql/
)를 사용함으로써 RESTful API에서 생기는 많은 Enpoint의 복잡성을 줄여줄 수 있다.GraphQL은 RESTful API와 자주 비교 된다. REST는 이미 많이 알려져 있고, RESTful의 원칙을 완전하게 구현하지 않았더라도 보편적으로 채택되는 API 서비스 형태이다.
GraphQL이 담당하는 영역 자체가 REST가 차지하는 영역과 대체될 수 있기 때문에 비교 당하는 것이 당연하지 않을까 생각한다.
앞으로 GraphQL 서버나 클라이언트에서 Query하는 과정을 학습하고, 실습 하면서 조금씩 더 GraphQL을 이해하는 과정을 진행할 예정이다.
GraphQL과 RESTful API
GraphQL과 RESTful API 비교
All about GraphQL #2, GraphQL은 무엇이고 왜 계속 어디선가 들리는 걸까?
GraphQL 탄생 배경 및 Query와 Resolver에 대한 기본 설명
All about GraphQL #1, GraphQL(그래프QL) 이란 무엇일까?
다양한 디자인 패턴에 대해 GraphQL로 구현할 수 있는 부분에 대해 설명
The Anatomy of a GraphQL Query
GraphQL 파헤치기, 핵심 컨셉과 용어들 그리고 예제
(번역) Thinking in GraphQL
GraphQL 캐싱에 대해 생각 해 볼만한 글
GraphQL과 Relay: 웹 애플리케이션 개발의 미래
조금 옛날 글이지만 GraphQL이 필요하게 된 배경에 대해 공감 가는 부분