Skip to content
Dennis Vriend edited this page Dec 25, 2017 · 2 revisions

Welcome to the sbt-sam wiki!

sbt-sam is created to make use of AWS's resource and event-driven architecture called serverless. sbt-sam assumes that each sbt-sam project is modeled around the concept of a component as defined by the component architecture.

The TL;DR of a component is that a component:

  • has a single resonsibility/focus,
  • is composed of resources,
  • are isolated by default,
  • can share resources between components,
  • are driven by events

Description based programming

Serverless components are description based. Components are composed of resource that are wired together by means of resource descriptions and resource subscriptions. Wiring managed resources, and separating state from function, and leveraging event-driven architecture makes components cloud-scale.

Components are defined by:

  • resource descriptions
    • DynamoDB tables,
    • Kinesis streams,
    • SNS topics,
    • Aurora databases,
    • ...
  • Functions subscribe to events
    • Scala classes extends specialized traits to handle specific events,
    • Scala classes must be annotated to define resource subscriptions,
    • Generic functionality by means of Java and Scala libraries,
    • Scala expressions are resources themselves; they are Lambda resources
  • Resource and Event Driven Runtime
    • (AWS) Amazon Web Services,
    • Preferred resource type: Managed Resource,
    • Serverless Event Driven Runtime
  • Components are
    • sbt-sam projects
    • encapsulate resource definition
    • define isolation
    • expose resources
  • Deployment by means of
    • sbt tasks and settings