Learning Serverless - Day 1
I’ve been working in software for the last 18 years and I don’t think I’ve ever been as excited about new technology as much as I am about the serverless movement. I am on a journey to learn serverless and both refactor an existing system from microservices and monoliths to a serverless architecture as well as build a greenfield web application using serverless. This series of posts will serve as my journal of how that goes. Day 1 is to familiarize myself with the various components that will make up the overall system.
Choosing a cloud provider
For me the choice comes down to Azure or AWS. Azure is what I’m most familiar with (I’ve used it for about 3 years) so I thought that it might be my choice but AWS has what is probably the biggest reason that I want to try serverless and that is AppSync.
The main interest that I have in AppSync is being able to define my application’s api in GraphQL syntax and have that transformed automatically into a working GraphQL api that is automatically wired up to DynamoDb, which includes DynamoDb Streams that other components can react to automatically.
Finding the right services
My goal for day 1 is to be able to map out all of the services that are needed so that I can understand each piece and how it fits together to make the final application. Primarily I want to learn what AWS services I will need for the various components of the application. So far these are the services from AWS and what they are used for as I understand them.
These will be updated / modified as I learn more.
- Authentication => (AWS Cognito)
- Authorization => (???)
- Runtime Configuration => (???)
- Logging => (AWS CloudWatch)
- Tracing and Performance Monitoring => (AWS XRay)
- Metrics & Alerts => (AWS CloudWatch)
- GraphQL Api => (AWS AppSync)
- NoSql Database => (AWS DynamoDB)
- Business Logic & Code => (AWS Lambda)
- Business Logic Orchestration => (AWS Step Functions)
- Event Pub/Sub => (AWS Simple Notification Service)
- Scheduled Events => (AWS CloudWatch)
- Static Website Hosting => (AWS S3)
- DNS => (AWS Route 53)
- CDN => (AWS CloudFront)
- Transactional Emails => (AWS Simple Email Service)
In day 2 my goal will be to document the requirements of the greenfield application that I want to build using all of these various serverless technologies.
Published on October 31, 2018.