Hasura

GreenBean·2022년 4월 22일
1
post-thumbnail

Hasura

Hasura란?

  • PostgreSQL 데이터베이스 및 마이크로 서비스에 연결 한 후 자동으로 GraphQL API 백엔드를 빌드 할 수있는 오픈 소스 엔진
  • 기존의 Restful API에서는 프론트엔드에서 필요로 하는 정말 간단한 데이터베이스 CRUD라도 백엔드가 API로 만들어 주기까지 대기해야 한다는 단점이 있음
  • 또한, 원하는 데이터에서 추가로 필요로 하는 데이터가 추가되거나 할 때에 백엔드가 추가 개발을 해줄 동안 마음대로 가져다 쓸 수 없다는 수동적인 단점 또한 존재
    • 예를 들어서 원래는 get (예시: /info) 에서 이름과 전화번호만 필요로 하다가 어느 날에 회사명도 필요로 하다면 백엔드가 다시 수정해 줘야 한다는 번거로움이 있음
    • 그것을 해소해주기 위하여 나온것이 GraphQL
  • GraphQL을 명령어로 프론트엔드에서 스스로 주도적으로 원하는 정보를 가져다 쓸 수 있게 만들어줌
  • 하지만 여전히 백엔드에서 기본적인 mutationquery로 CRUD를 만들어 줘야 한다는 단점이 존재
    • 그것을 한번에 해결해 주는것이 HASURA
  • 클라이언트는 GraphQL을 통해서 요청을 하면 HASURASQL문으로 바꿔서 연결된 데이터베이스에서 직접 데이터를 가져와서 반환해줌
    • 즉, 원래라면 백엔드 개발자가 구현을 해줘야 하는 데이터베이스 CRUD를 손하나 까딱 안하고 HASURA가 대신 구현을 해주는 셈
  • 또한 HASURA의 강력한 점은 이메일 발송과 같이 CRUD에 해당하지 않는 기능을 원할 때에도 HASURA가 지원하는 웹훅 트리거를 이용하여 즉각적으로 사용이 가능하다는 큰 장점이 있음
  • 또한 Remote Schema 라는 웹 서버와 HASURA 연결 가능
    • Remote Schema는 기존의 컬럼과 realation을 걸 수 있음
    • 예시: 만약 01012345678 이라는 전화번호가 데이터베이스에 있는데 국제번호도 가지고 싶다고 하면 전화번호를 payload로 받고 +82 을 붙이고 0을 제거해서 +82 1012345678 이라는 값을반환 해주는 스키마를 만들어주면 이 function을 연결 가능
# 예시 쿼리

query{
	person{
		name
		phone
		international{   # remote schema에서 만든 schema
			phone
		}
	}
}

Tip! 추가 내용

  • Haskell 기반의 가볍고 빠른 오픈소스 GraphQL 엔진
  • Postgres 지원
    • jsonb 타입 사용 가능
  • 강력한 Admin 기능
    • 조회 • 추가 • 수정 • 삭제 화면 제공
    • 인증 • 인가 • 이벤트 트리거 등 각종 기능 웹 콘솔 제공
  • 강력한 Query 기능
    • 기본 query에 더해 filter, sort, aggregate, paginate, distinct 지원
      • filter: eq, neq, gt, lt, Ute, lte, in, min, like, contains, has_key, and, or, .. 지원
      • aggregate: count, sum, avg, max, min 지원
  • 강력한 Mutation 기능
    • insert, update, delete 외에 upsert 지원
      • Upsert: key가 있으면 update하고 없으면 insert
  • 이벤트 트리거
  • JWT 기반 인증 & 인가
  • Table View 연동 기능
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글