Prisma게섯거랏 HASURA가 나가신다 - HASURA 란?

김민준·2020년 12월 11일
1

하수라란?

목록 보기
1/1

왜 사용을 했나?

새로운 프로젝트를 진행하면서, 제품의 런칭을 애자일을 통하여 MVP로 빠르게 개발을 하기로 결정이 되었었다.

초기에는 Node.js + NestJs로 Restful API을 만들어서 개발을 진행 하였다.

하지만 기존의 restful api개발 방식으로는 시간의 소모가 심하였고 또한 첩첩산중으로 개발되었던 back office 서비스에 심각한 버그가 발생한데다 퇴사자가 발생함으로서 필연적으로 다시 개발을 해야만 하였다.
아... 망했어요

그때 이렇게 된김에 기술스택을 새롭게 구성해보자! 라는 아이디어가 나왔고 CTO의 아이디어에 따라 GraphQL과 HASURA를 도입하기로 하였다.

전에 여기저기서 GraphQL은 많이 들어 봤지만 HASURA는 처음들어서 많이 생소했기에 대체 뭐하는것인가 싶었다.

넌 누구니

몇달사용을 하고 나니 정말 파워풀 하고 MVP방식으로 빠르게 프로덕트를 공개하기까지의 시간을 정말 획기적으로 줄여 주었다.

한국의 소개된글을 찾아보니 별로 없는것 같기에 이런 좋은건 같이 알고 싶고자 이렇게 소개글을 써본다.

HASURA 란?

기존의 Restful API에서는 프론트앤드에서 필요로 하는 정말 간단한 DB CRUD라도 백앤드가 API로 만들어 주기까지 대기해야 한다는 단점이 있었다.

또한, 원하는 데이터에서 추가로 필요로 하는 데이터가 추가되거나 할때에 백앤드가 추가개발을 해줄동안 마음대로 가져다 쓸수없다는 수동적인 단점이 있었다.

예를 들어서 원래는 get ('/info') 에서 이름, 전화번호 만 필요로 하다가 어느날에 회사명도 필요로 하다면 백앤드가 다시 수정해 줘야 한다는 번거로움이 있었다.

그것을 해소해 주기위하여 나온것이 GraphQL이다.

GraphQL을 명령어로 프론트앤드에서 스스로 주도적으로 원하는 정보만을 가져다 쓸 수 있게 만들어줬다.

하지만, 여전히 백앤드에서 기본적인 mutation과 query로 CRUD를 만들어 줘야 한다는 단점이 있었다.

그것을 한번에 해결해 주는것이 HASURA다.

위의 그림과 같이 클라이언트는 graphql을 통해서 요청을 하면 HASURA는 SQL문으로 바꿔서 연결된 DATABASE에서 직접 데이터를 가져와서 return 해준다.

즉, 원래라면 백앤드 개발자가 구현을 해줘야 하는 DB CRUD를 손하나 까딱 안하고 HASURA가 대신 전부다 구현을 해주는 셈이다.

또한, HASURA의 굉장히 강력한 점은, 이메일 발송과 같이 CRUD에 해당하지 않는 기능을 원할때에도 HASURA가 지원하는 웹훅 트리거를 이용하여 즉각적으로 사용이 가능하다는 큰 장점이있다.

묻고 더블로가!

또, Remote schema 라는 웹서버와 하수라를 연결할수도 있다.
이 Remote schema가 대단한것이, 기존의 컬럼과 realation을 걸수가 있는데,

만일에 01012345678 이라는 전화번호가 DB에 있는데 국제번호도 가지고 싶다고 하면,

전화번호를 payload로 받고, +82 을 붙이고 0을 제거해서 +82 1012345678 이라는 값을 return 해주는 스키마를 만들어주면 이 function을 연결해줄수있다!

query{
	person{
		name
		phone
		international{
			phone
		}
	}
}

위에서 international은 직접만든 remoteSchema에서 만든 schema다.

자랑의 자랑을 엄청 써놓은것 같은데 사실은 이밖에도 HASURA를 사용하면서 겪은 정말 대단한 경험들이 많다

하지만 전부 다 적을수는 없으니 천천히 하나씩 써보도록 해보겠습니다

profile
웹 프로그래밍을 하고 있습니다. 된다고 다가 아닌 개발을 하고 싶습니다

0개의 댓글