- Create a promotion based deployment flow for clients, instances of graphs, and backend resolvers.
- Each node in this network has the potential to be live but only those which are tested and reliable are production-worthy.
- Data and the metal are always guaranteed to be the latest usable pieces of the platform.
- User requests and runs client application
- On initialization, client application verifies identity
- Auth0 is asked for credentials if identity is unfulfilled
- Application makes a GraphQL request with identity to AWS API Gateway
- AWS API gateway passes the GraphQL request to latest GraphQL lambda
- GraphQL lambda requests the backend gateway
- Backend gateway passes to backend resolvers
- Backend resolver authenticates or rejects identity
- Backend resolver handles response for request using authentication for authorization
- Backend resolver fulfills request with response for GraphQL lambda
- GraphQL lambda fulfills graph response for Client
- Client resolves graph response
- Client stores authentication for further requests and utilizes graph data
- Should not have to worry about environments.
- Objects like Users are atomic and don’t have different possible states. When I test something, I only have to test for the real functionality instead of potential or adverse functionality.
- Features or changes aren’t blocking the entire system.
- Going back to environments or stateful data will make everything painful.
- There’s a lot more working parts to worry about that each have their own IAM roles
- System or E2E tests may be much more challenging.
- Features and changes need to be incremental.