Hacker News new | ask | show | jobs
by kabes 3474 days ago
All these GraphQL solutions seem to focus on the frontend and assume there's a magical GraphQL server somewhere. But GraphQL Just shifts the hard work from the client to the server and I haven't seen any good solution towards security (except storing all the possible queries a user may access, which kind of defeats the purpose of GraphQL in the first place) and performance (a large query is usually resolved to thousands of database fetches, instead of 1 optimized one) on the server side.

What we really need is a decent GraphQL server. The client isn't difficult anyway.

5 comments

That's a really good point, kabes.

At Graphcool (https://www.graph.cool) we're working on exactly what you're describing. We're putting a lot of work into optimizing for the best possible performance while providing a powerful and flexible API. The key for this will be combining GraphQL and serverless technologies like AWS Lambda to implement your business logic.

Concerning security: We're currently testing a new permission system with a group of beta testers which leverages the Graph structure of your backend to specify data access rules.

Hey there, there is one thing I've been wondering about with Graphcool: What's your plan for supporting BI solutions? As it stands there doesn't seem to be a way for non-developers to do any analysis on the data that resides inside Graphcool.

I also have a bit of feedback on the webiste: It looks way way overloaded. I get it, it's cool how easy it is to use, but there are ~6 full blown code examples on very different things. The FAQ link doesn't take me to a FAQ page that answers the questions I have, but instead takes me to a guides page (which is only a little bit better than the FAQ link in the footer that takes me to the main page again). The competitor matrix feels really arbitrary. Fields with almost the exact same texts yield you a "++" and the competitor a "-"? Why? I feel like a dedicated "features" page would do a much better job at highlighting your strengths.

Hi hobofan (funny name btw), really good questions: 1) BI/Data analysis for non-developers: It's not a feature we're providing yet out of the box but it's on our roadmap for the upcoming months. For now we're focussing on the best possible DX. 2) FAQ link: Yup, you're right. That's broken right now. We're fixing it. 3) Competitor matrix: Good point, we'll try to make this more clear/objective. 4) Dedicated "features" page: I agree, we'll consider it while restructuring the page.

Again, thanks a lot for your great feedback. And I'm glad you enjoyed using Graphcool so far!

The article was written by Graphcool. They provide a GraphQL Backend As A Serivice. I used Graphcool on a recent hackathon, and it was a pleasure to use. I rarely got going with a service as quickly, though I must admit that I had some GraphQL experience prior, which certainly helped.
In addition to graph.cool, there's scaphold.io. has any body used these two and can share their experience?

(I'm not affiliated with either of them. Just wanna know)

Hey there, I've used both Scaphold and Graph.cool and I would thoroughly recommend Graph.cool.

To understand why, I recommend you have a play with them yourself. It is immediately clear, in my opinion, that Graph.cool is a much better designed product in every aspect. Graph.cool's UX exudes refinement and quality that Scaphold's does not.

An example of this is the fact they invite you to their Slack team automatically when you sign up (i.e. use the email you sign up with to invite you, you don't have to do anything). They really care about their customers, and the Slack community around Graph.cool is much more active than Scaphold's. In fact, it's mostly the community that is buzzing around on Slack, and it's about people learning GraphQL, not necessarily learning how to use Graph.cool. The Graph.cool team seem to be really motivated to help everyone learn to use GraphQL, not just their service. This is also evident if you get in touch with the founders of Graph.cool - they are just nice people to talk to.

Any feature distinction that Scaphold may have over Graph.cool is quickly disappearing. I can only think of one, subscriptions, and Graph.cool has that on their roadmap to be released very shortly. On the other hand, Graph.cool has plenty of features that Scaphold does not, such as Auth0 integration, Relay AND Apollo support (from the same schema), a much better permission model.

Oh, and it's free (for now) :)

This is incorrect on several points. Scaphold supports relay and Apollo out of the box and integrates with auth0 (per their docs; I've used neither feature).

Subjectively, having played with both, I chose scaphold (over graph.cool and reindex) for a few reasons:

- pricing model makes a lot more sense to me. Graph.cool tiers their pricing on user counts, which makes very little sense to me for a product the cost drivers of which are storage and throughput. They also apparently count a user once they register, with no clear way of handling inactive users (can't be good for your LTV calcs). Reindex was also suboptimal imo, with steep jumps from free tier to paid. They also charge based on 'operations,' which, while less so, also seems strangely divorced from what I imagine their cost drivers are. Scaphold seems to have taken firebase's pricing model, which was a smart move

- storage. Graph.cool has really low storage per tier. Reindex bills storage separately from 'operations' and only charges in $50 5GB chunks (5.1 GB last month? Sorry!). Scaphold again copies firebase's pricing with small, inexpensive increments.

- ui. I didn't use graph.cool's ui too much, but I'm very happy with scaphold's. Afaik reminded didn't have any ui to speak of--someone correct me here if I'm wrong. You can build your entire schema in scaphold's ui (with very helpful tool tips most of the time) , manage integrations (which, generally, just make certain queries/mutations available), and view some pretty thorough analytics on your app. Coming from firebase, which has been really neglecting web app users in favor of mobile lately (imo), this was really nice.

Lastly, I'm new to graphql, but as I understand it, scaphold has added some nice features on top of the API. It seems to mirror PostgraphQL (a postgres <-> graphql utility), and adds pretty robust support for relationships (1:1,1:many,many:many). My schema is highly relational and, so far, it's a breeze.

I will note that graph.cool seems to have much more newbie-friendly docs, and maybe more comprehensive docs over all. Scaphold's docs are okay: they're wider than they are deep (maybe a paragraph for every feature w/ an uncommented snippet), there are some obvious mistakes, and some parts of the docs are scattered between the docs page and the UI's tool tips. When I had problems, though, their team got back to me w/in minutes (on email and slack).

To be clear, I'm not affiliated w/ any company discussed here--I'm just a user shopping for a firebase replacement.

That said, if you're considering the product, here's a ref link--$10 for you & $25 for me https://scaphold.io/referral?ref=99XXP3

Thank you for going so much into detail.

Our pricing structure has been like that since we started a year ago. We have learned a lot since then and you touch on some important points. We have put of updating the pricing model because we have been busy improving docs and working on the product, but expect a complete revamp early next year.

If you want to talk more you can always reach me on soren@graph.cool :-)

I tried Scaphold because all of the shiny promises on their landing page like: out of the box integrations, analytics etc.

Turns out the most basic feature of a BaaS app, the console, is practicaly unusable. Too buggy, too many errors happening. After struggling with it for a while I switched to graph.cool.

The small issues that I had with it were resolved by the team immediately. Smooth sailing from then on

I tried using Scaphold but the main issue is that their entire service is just so buggy. They try to do everything and then nothing works "really" well. It's actually because I got so disappointed, I was looking for other solutions and Graph.cool was the best that I could find. The best is their support. They are so highly responsive on their Slack channel, I rarely see that.
graph.cool is like iPhone,they are so stable in the services they provide and scaphold is like Note7(just explodes, when you try to push it further). We have been using graph.cool for 4 months now and it just works as it promises to be...!
With regards to reducing the number of database fetches, DataLoader [1] (also by Facebook) is a great tool used by a lot of GraphQL severs to solve this issue.

[1] https://github.com/facebook/dataloader

Very good point, mrpoller. DataLoader works great in combination with GraphQL. We're using a similar concept at Graphcool (which is written in Scala using Sangria). This method combined with a smart caching strategy turned out to be very effective.
They don't even seem to have a live site with a usable demo as far as I can see. If it does exist, it's buried deep where it shouldn't be.