What is our primary use case?
We managed traffic at Zetta, and traffic would be moving between multiple services in our microservice architecture. Because of this setup, we were using Amazon Neptune to understand how many requests were going from one service to another service, how many were successful (2XX), and how many were failing (5XX).
We had an architecture where requests would go via multiple ingress objects, and we needed to identify which cluster was being hit the highest, which service was being hit the lowest, and which service was most unhealthy in terms of providing more 5XX responses. To get visibility on all our services present across Zetta, we used Amazon Neptune, where we represented every service as a node and represented edges as requests and responses.
What is most valuable?
The onboarding part and documentation where we could ideally use Amazon Neptune is excellent. Amazon Neptune as a product by AWS is exceptional because it supports multiple graph models such as RDF and property graph. It also has support for multiple querying languages such as Gremlin, SparkQL, and OpenCypher. It is very comprehensive in supporting every requirement we had at Zetta.
Amazon Neptune's best features include its multiple servers, each supporting different languages such as OpenCypher, SparkQL, and RDF. For the same RDF graph or property graph, we could use multiple languages to query on different servers. This is exceptional because we have one graph DB with two endpoints exposed where we could interact with different languages on the same graph. Additionally, Amazon has a Sagemaker Jupyter Notebook which interacts with the Amazon Neptune database itself, providing a clean UI for representing nodes since the Jupyter Notebook has predefined graph representation capabilities through queries.
What needs improvement?
The main issue was the limited community of Amazon Neptune users, which meant everything needed to be explored independently. Although this was adventurous, it required more time investment in the product.
We had a strict time constraint, and it took many sleepless nights to find information in the documentation. There was even a section within the documentation that contained incorrect information.
Apart from the community, documentation aspect, and technical support, everything in Amazon Neptune is already excellent. As Amazon consistently provides great services, these three areas are the only ones where I could see room for improvement.
For how long have I used the solution?
I worked with Amazon Neptune for almost eight months, though I am not currently using it.
What do I think about the stability of the solution?
We did not experience any issues with Amazon Neptune. The service was never down during our POC, so we didn't need to test its self-healing capacity.
How are customer service and support?
I attempted to contact support but did not receive a response.
How would you rate customer service and support?
Which solution did I use previously and why did I switch?
We weren't using any graph DB at the beginning. We later adopted Amazon Neptune.
We assessed Neo4j alongside Amazon Neptune. We chose Amazon Neptune primarily because all our infrastructure is maintained by AWS, so we preferred not to manage any additional services ourselves. The second reason was that Neo4j only supports property graphs, whereas Amazon Neptune also works with RDF.
How was the initial setup?
The initial setup for Amazon Neptune was very straightforward.
What's my experience with pricing, setup cost, and licensing?
The cost aspects were managed by our SRE team who provisioned the instances. The pricing structure is similar to how EC2 instance pricing varies. I was informed that it was somewhat expensive, though I'm not certain about the specific reasons or potential optimizations.
Which other solutions did I evaluate?
One difference we found was that Neo4j has the in-place feature to override edge values between multiple nodes, which is not available within Amazon Neptune. Additionally, transitive relations were not definable on Amazon Neptune.
What other advice do I have?
We used Amazon Neptune for making POCs for one of our projects, utilizing its real-time capabilities. There were approximately five to six different relational lists that were managed efficiently using Amazon Neptune.
Amazon Neptune helped us by providing meaningful insights in one place and in one iteration. Previously, it required three to four iterations and interaction between teams to get the same level of observability that Amazon Neptune provides immediately.
It's an excellent product, but potential users should ensure they have enough time to explore all the capabilities of Amazon Neptune before adoption. The time investment and community aspects should be kept in mind when considering Amazon Neptune as a solution.
On a scale of 1-10, this solution rates an 8.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Amazon Web Services (AWS)