본문 바로가기

Develop/Etc

PubSub via postgres in Graphql Yoga

graphql-yoga 모듈을 이용하여 graphql 서버를 구동시킨 경우 yoga내에 존재하는 pubsub 모듈을 사용해서 Subscription 기능을 구현할 수 있지만 이 경우 안정성이라던가 서버 확장을 하였을 경우 정상 동작이 되지 않을 가능성이 있다.

이에 별도의 Redis 서버를 구축한다거나 하여 PubSub용 시스템을 별도로 구비하여야 하지만 postgres DB 에서 PubSub 기능을 지원하기에 데이터베이스를 Postgres를 사용한다면 별도의 시스템을 구성할 필요가 없다.

yarn add graphql-postgres-subscriptions

필요한 모듈의 위 모듈이 전부다.

실제 소스코드 상에서 Graphql Server를 생성할때 해당 설정 정보들만 추가해주면 된다.

...
import { PostgresPubSub } from "graphql-postgres-subscriptions";
...

const pubSub = new PostgresPubSub(/*DBConnectionOptions*/);

const app = new GraphQLServer({
schema,
context: req => {
const { connection: { context = null } = {} } = req;
return {
req: req.request,
pubSub,
context,
};
},
});

이렇게 해주게되면 간단하게 Postgres의 Pubsub 기능을 대체해서 사용할 수 있다.

그외에도 graphql-redis-subscriptions 과 같은 모듈을 사용할 경우에는 redis를 사용하여 PubSub를 구현할 수 있을 것으로 보인다.

'Develop > Etc' 카테고리의 다른 글

Window7 mtu값 수정  (0) 2019.04.23
Google login with expo  (0) 2019.03.18
[Prisma] Try prisma  (0) 2019.03.05
[Postgres] Setup via docker  (0) 2019.03.05
[Docker] Remove <none>:<none> images  (0) 2019.01.22