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.

  1. Authentication => (AWS Cognito)
  2. Authorization => (???)
  3. Runtime Configuration => (???)
  4. Logging => (AWS CloudWatch)
  5. Tracing and Performance Monitoring => (AWS XRay)
  6. Metrics & Alerts => (AWS CloudWatch)
  7. GraphQL Api => (AWS AppSync)
  8. NoSql Database => (AWS DynamoDB)
  9. Business Logic & Code => (AWS Lambda)
  10. Business Logic Orchestration => (AWS Step Functions)
  11. Event Pub/Sub => (AWS Simple Notification Service)
  12. Scheduled Events => (AWS CloudWatch)
  13. Static Website Hosting => (AWS S3)
  14. DNS => (AWS Route 53)
  15. CDN => (AWS CloudFront)
  16. Transactional Emails => (AWS Simple Email Service)

Next Steps

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.

Tagged: serverless   azure   aws   appsync   graphql