Deployment Options


(Michael McKenzie) #1

For anyone who has posted a web application using the GRANDstack, what deployment options did you use for each aspect of the stack? I am looking for easier and cheaper options. I am working on few personal projects and am just curious how the process has gone for others.


(M. David Allen) #2

I'm working on some small/simple GRAND stack applications.

With Neo4j, I do a lot of work on deploying the database itself into Kubernetes (you can read about that here, so that's how I run the DB portion.

Because that's in kubernetes already, the back-end (based on neo4j-graphql-js, not the neo4j java plugin for graphql) I tend to build into a docker container and deploy on kubernetes as well.

The front end is just a react SPA. For that I do a react build and end up copying static files to cloud bucket hosting (like S3, or google storage) and run the app hosted straight out of that.

So for the web end of this -- static bucket hosting is such a simple way to go....I don't know why a person wouldn't do it that way. Sure I could package that into docker and run it in kubernetes too but at the end of the day the react front end is just a bunch of static files so kubernetes is really overkill.

The hardest parts about this are the boring admin aspects, that have everything to do with running a real app and nothing to do with the GRANDstack per se. For example setting up SSL and a domain name for the web tier, so that it can talk to your graphql back-end without needing to set special CORS headers and so on. Or writing some kubernetes YAML and injecting configuration secrets so that neo4j-graphql-js backend knows where to contact the database. In the sample code, you get this clean easy example where you have a dotenv file and you're pre-wired to some simple database (like localhost) but when you deploy any app for real (grandstack or otherwise) there are always all of these configuration bits and bobs that take time to get right


(Michael McKenzie) #3

yeah. I am using an older version of the GRANDstack starter application and am still learning how to use Docker all that jazz #ShinyObjectSyndrome


(Franck) #4

Hello David,
Looks like you have experience with a stack similar to ours.
We run a react web app in an s3 bucket.
We run neo4 in an EC2 instance in AWS with the graphql Java plugin in the server (which is not ideal but we are going to migrate it)
We have some time to CORS issues. It's strange because we have the same neo4j server on azure (that we want to migrate) and it works well.
Could you point me to a good documentation to fix configure CORS properly?
What would be your recommended architecture for the graphql API?
Thank you and have a great day
Franck


(M. David Allen) #5

With respect to how CORS works with the graphQL java plugin, I'm not sure. Perhaps @michael.hunger knows, because he wrote a lot of that code!

Please do though indicate exactly what CORS issue you're running into. Can you give us maybe an error message from the browser, or an example of a curl call that fails with some indication of what you expect?


(Franck) #6

Our neo4j server is: cds-db.capx.biz

Here are the errors when we try to connect from our react application to the neo4j database

OPTIONS http://cds-db.capx.biz:7474/graphql/ 404 (Not Found)

Access to XMLHttpRequest at 'http://cds-db.capx.biz:7474/graphql/' from origin 'http://cds.capx.biz' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.