Serverless Architecture of Marbot

This is an architecture of Marbot- a chatbot which is one of the winners of AWS Serverless Chatbot Competition in 2016 built using AWS Lambda and deployed using SAM.

Courtesy: Michael Wittig

Website: cloudnaut.io

Twitter: @hellomichibye 

Architecture Overview

Marbot made by Andreas and Michael Wittig helps DevOps team to detect and solve incidents in AWS. It forwards alerts from AWS to your DevOps Team via Slack.

  • Marbot API is provided by API Gateway. Most of the request comes from
    • AWS SNS, where it is used with HTTPS subscription to transport alerts, notifications, and incidents from within their AWS accounts to Marbot
    • Slack – It uses Slack Events API to drive the conversation with users
  • The API Gateway forwards HTTP requests to one of the Lambda Functions.
  • All of them are implemented in Node.js and store their state in DynamoDB tables.
  • Marbot needs timers to escalate alerts after 5 minutes which is implemented with SQS messages with a delay.
  • All logs are collected and monitored through AWS Cloudwatch. Alert topic delivers Cloudwatch Alarms via email.
  • Slack waits for only 2 secs. To not miss the timeout, a record is put into Kinesis Stream that contains all relevant data before responding to the API request.
  • Marbot makes many calls to other services. AWS X-Ray is used to debug issues with them.