백엔드 구현에 대한 고찰

위의 글에 이어서 작성해보겠습니다.

우선, GraphQL을 어떻게 하는지 부터 공부해야겠지?

GraphQL: API를 위한 쿼리 언어

공식문서를 살펴보면서 이해한 결과

GraphQL은 API를 위한 쿼리 언어이며 이미 존재하는 데이터로 쿼리를 수행하기 위한 런타임 입니다. GraphQL은 API에 있는 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하고 클라이언트에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공하며 시간이 지남에 따라 API를 쉽게 진화시키고 강력한 개발자 도구를 지원합니다.

아하 API에 GraphQL 쿼리를 보내고 필요한 것만 정확히 얻기 위해 사용한다는 것을 파악했다.

따라서 본 프로젝트에 다시 돌아와 생각해보았을 대 API를 현재 페이지에 랜더링할 때마다 계속해서 API를 호출하는 로직인데 여기에서 백엔드를 사용해 데이터를 저장하는 것을 구현할 수 있을 것 이라 생각했다.

이를 중점으로 구현방법에 대해 계속 공부해보았다.

최종적으로 백엔드를 구현하는 기능 목록을 작성할 수 있었다.

내 기능 구현 목록 문서에 작성해보았다.

#### 2. 해당 프로젝트에서 백엔드를 구축하여 GraphQL를 사용하려면 어떻게 해야할까?

> 이 프로젝트에서 백엔드는 Client와 외부 API 둘의 중간 역할을 하여 데이터 처리 / 캐싱 역할을 진행할 수 있을 것 같다고 판단하였다.

- `데이터 캐싱 & 관리` : Open Weather API로부터 받은 데이터를 서버에 임시로 저장하는 기능을 생각하였다. 이는 5일간의 정보를 불러오는 드롭다운 컴포넌트에 적합하다고 생각하였다.
- `GraphQL API 구현` : 클라이언트가 GraphQL을 사용하여 특정 데이터를 요청할 수 있도록 GraphQL API를 구현하는 것을 생각하였다. 필요한 데이터만 요청할 수 있으니 적합하다고 생각하였다.

아하 전체적으로 위와 같은 기능을 구현할 수 있을 것이라 생각했다.

따라서 이를 위해 GraphQL 구현 방법을 공부하고 실행했다.

todo 1. GraphQL 스키마 정의

GraphQL 스키마는 데이터 타입과 이를 조회할 수 있는 쿼리를 정의한다. 따라서 나는 날씨 데이터에 대한 스키마를 정의해보았다.