I’ve recently taken a break and spent a lot of time looking at the best tech and development approaches of today, in preparation for a start up I had hoped to do. When speaking to investors or out source companies about what I was proposing I had to come up with something that helped me explained it.. I hope you find it useful..
Technical overview for X as a service.
Building X as a service. Leveraging Service full Serverless, Event driven architecture with observability, based on AWS, GraphQL, Node.js and Vue.js.
What does that mean?
Service full - integrating 3rd parties where possible to supply services so we do not have to re-invent and maintain the wheel, e.g. document merging, online documented editing, calendar integration systems, payment systems etc.
Serverless - utilising AWS's platform, using services that do not require any management or provisioning of servers or containers. They are fault tolerant and have flexible scaling built in and no charge to pay when idle, e.g. Cognito, Lambda, DynamoDB, SNS, SQS, Aurora Serverless (for RDB for reports), etc etc etc!
Event driven - triggering functions off of data changes (in DynamoDB or when a file is added to S3 for example), making each function simpler and focused on one task, with configuration used to control flow logic where ever possible.
Observability - logging each function/event in detail to provide visualisation, understanding, traceability and debugging across event flows, especially in production.
Node.js as the main backend language,
GraphQL as the interface between front and backend,
Vue.js + Quasar Framework for the frontend.
Serverless means focus on the core business and time to market, reducing maintenance and introducing a scalable cost, based on usage. Functionality is split into projects (microservices) that work as independently as possible, allowing simultaneous development, focused testing and easier longer term maintenance.
Authenticate against Cognito, using the API Gateway/AppSync, most (or all) interaction will be with AppSync or lambda functions that are backed by data in DynamoDB. Updates to DynamoDB will trigger asynchronous functions, including sending to a Kinesis stream to feed into a relational database for business reporting.
Event driven also means we can switch out which function is called between individual instances, allowing for customisation by changing configuration rather than code.
We want have a DevOps, inclusive and supportive culture, that fosters growth, sharing and learning from our missteps.
- Config / deploy: aws-cdk (not in GA yet but I like it a lot)
- AWS main components:
- aws-sdk / cognito / amplify / sns / sqs / appsync / s3 / dynamodb / aurora serverless / kinesis /
Either SAM for local, or just deploy with
aws-cdk to test envs
- Observability — https://www.honeycomb.io or X-Ray
- AWS cloudwatch / alerts etc
My startup didn’t happen.. but wow did I learn a lot and have fun building prototypes and talking to people in this new world, good luck with whatever you are doing.