#01.Go - GraphQL 알아보기

2020. 5. 31. 22:20Tutorial & Training/Go

서론

 

Go언어를 사용하는 Gopher 여러분들은 상당히 다수 존재하는 반면에,

Graphql은 아직까지도 한국어로 된 자료가 많지 않으며, GraphQL 대다수의 자료는 JS가 부동의 1위를...

 

저도 언어를 3가지를 사용하지만 graphql은 JS로 처음 접근했었습니다. 왜냐고요? JS밖에 자료가 없었거든요...

그 이후 Prisma라는 걸 알게 되었고 Prisma 자체의 한계점에 부딪혀 Prisma2를 접근했고...

Prisma2의 자체의 또 한계점을 알게 되어 삽질하다가 결국 Django + Grahpql이라는 방법을 채택했었죠.

 

심지어 gqlgen은 2020.05.31 기준 현재까지도 대충 gqlgen을 키워드로 검색했을 때 단 1개도 존재하지 않아서 많은 안타까움을 자아냈습니다...

 

저도 처음에는 굉장히 많은 선택의 고민을 했었고, 중간에도 막히는 부분에 있어 교체할까도 고민을 했었습니다.

신들린 구글링(?)으로 그 문제들을 극복했지만 추후에 언급하겠지만 해당부분은 굉장히 불편함을 나타내기도 합니다.

 

 

 

 

 

 

Go Graphql 종류

 

Golang을 사용하여 사용할 수 있는 GraphQL 라이브러리는 Graphql 공식 홈페이지에서도 볼 수 있지만,

https://graphql.org/code/#go

 

GraphQL: A query language for APIs.

GraphQL provides a complete description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.

graphql.org

위 와 같이 존재합니다.

사실 graphql-go는 graphql-relay-go와 같이 쓰면 정말 좋습니다.

gqlgen도 사실 relay가 문제인데 저걸 사용하는 방법이 있는 것 같은데, 아무리 찾아봐도 저것에 대해 잘 설명해주신 분이 없어서 저는 수동 구현했습니다.... 혹시 누군가 알고 계신다면 댓글/ 방명록/ 이메일 부탁드려요!

 

 

 

 

Why gqlgen?

 

로고가 귀엽다

Go GraphQL 모듈은 상당히 다수 존재하지만, 굳이 gqlgen을 사용하는 이유로는 스키마 기반으로 작성이 가능합니다.

스키마 기반으로 작성할 경우 가져올 수 있는 이점으로는, 여타 프레임워크 예를 들면 Django에서는

models.py 에 DB Table을 명시하게 되는데 이러한 과정을 스키마를 명시한다고 할 수 있죠.

 

이렇게 스키마를 명시하면, 타 언어 서버나 프레임워크로 이전할 때 굉장히 편하고 알아보기 편하다고 해야 할지

그냥 공통규격으로 언어 제약 없이 사용하기 좋습니다. 좀 더 쉽게 표현하자면

언어와 서버와 프레임워크가 각기 달라도 JSON으로 소통(통신)한다면, 같은 규격이니 사용하는데 문제가 없듯이?

 

 

 

사실 로고는

go-graphql이 더 귀엽다