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.
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
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
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?
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.
I'm working on figuring the same thing out, so will try to post as the details come together. At the moment, I'm hosting the Neo4j instance in Azre, spun up using the Neo4j-provided Enterprise template on Ubuntu 16.04. That spun up and configured with no problem and so far seems to work fine.
I'm using the Azure Repos Git repository for SCM, which has a whole Pipeline concept where you build out the CI/CD pipeline in YAML. They include a free dev/test capability which is pretty cool. Trying to figure out getting the Node.js app for the API deployed to an Azure app service at the moment. If anyone has any experience with this I'd greatly appreciate any hints!
We're building the front end in React and testing deployment with Netlify at the moment, will post how that goes once the API is up and connecting the UI to the DB instance!