Feat. Serverless
데이터베이스를 사용해야하는 프로젝트를 할 때는 항상 RESTful 방식을 이용했다. 그 방식에 익숙하기도 했고 편하기도 했다.
GraphQL은 데이터베이스에 접근하는 하나의 방식이다. 다른 방법으로는 RESTful 방식이 있다. 돈을 사용하는 방법으로 체크카드와 현금이 있듯이 돈을 사용한다는 같은 목적을 갖지만 방법이 다른 것이다. 나는 그냥 현금을 사용하는데 익숙했지만 처음으로 체크카드를 발급받아봤다. 이때는 편해보였다.
1년전 쯤 GraphQL을 처음으로 접했다. 그때는 아마존 웹서비스의 Appsync를 사용했다. Appsync는 GraphQL을 쉽게 사용할 수 있도록 도와주는 서비스다.
결론적으로는 Appsync의 사용을 포기했다. 클라이언트로 리액트를 사용했는데, Appsync와 리액트를 같이 사용하려다가 포기를 결정했다. 내가 사용하려는 목적에 적합하지 않았다. 조금 편하자고 해야할 일이 너무 많았다. 그래서 그냥 RESTful로 다시 돌아갔다.
1년전에는 그랬고, 다른 프로젝트를 시작하기에 앞서 GraphQL을 선택했다. 이번에는 다를 것이라고 생각했다. Apollo라고 하는 GraphQL 사용을 도와주는 라이브러리를 사용했다. 고정비용은 줄일수록 좋은 것이니 서버리스를 선택했다. 서버리스는 항상 돌아가고 있는 서버가 없어서 아무도 사용하지 않으면 서버비는 0원이다. 사용하는 만큼 지불하는 방식이다. 물론 해야할 일이 조금 더 있긴하지만 고정비용이 더 중요하기 때문에 서버리스를 선택했다. 데이터베이스도 비용을 가장 절약할 수 있어보이는 DynamoDB를 선택했다. 이렇게 처음으로 서버리스 GraphQL 구축을 시작했다.
GraphQL은 클라이언트 개발자 입장에서는 매우 편리하다. 물론 내가 처음 구축해서 복잡했던 것도 있지만 단순 데이터 처리가 아니라면 GraphQL은 백엔드에서 꽤나 복잡해진다. 사용자 인증처리, 권한처리, 보안까지 염두하다보면 더 복잡해진다. 논리야놀자를 몇번 외쳤는지 모르겠다. 꽤나 오랜시간 투자해서 첫 서버리스 GraphQL을 구축했다.
프론트는 어렵지 않았다. 그냥 원하는대로 요청하면 데이터가 왔다. 필터링도 쉬웠고 변경도 편했다. 요즘에는 클래스형을 지양하고 함수형 컴포넌트를 지향하고 있었기에 Hooks를 적극적으로 사용했다. Apollo Hooks는 Hooks와 GraphQL의 사용을 편하게 해준다. 적극 추천한다.
GraphQL을 사용하면서 느낀점은 '공짜는 없다'이다. 편하게 사용할 수 있지만 그 대가가 없는 것은 절대 아니다. 어떤 기능을 구현할 때는 불리한 점이 분명히 있고 마냥 편하지는 않다. 그럼에도 불구하고 프론트가 편한것은 팩트인 것 같다.