navigation

Serverless go microservices for AWS

Sparta is a framework that transforms a go application into a self-deploying AWS Lambda powered service.

All configuration and infrastructure requirements are expressed as go types for GitOps, repeatable, typesafe deployments.

Sparta Ecosystem

Features

Unified

Use a go monorepo to define and your microservice's:

  • Application logic
  • AWS infrastructure
  • Operational metrics
  • Alert conditions
  • Security policies

Complete AWS Ecosystem

Sparta enables your lambda-based service to seamlessly integrate with the entire set of AWS lambda event sources such as:

  • DynamoDB
  • S3
  • Kinesis
  • SNS
  • SES
  • CloudMap
  • CloudWatch Events
  • CloudWatch Logs
  • Step Functions
Additionally, your service may provision any other CloudFormation supported resource and even your own CustomResources.

Security

Define IAM Roles with limited privileges to minimize your service's attack surface. Both string literal and ARN expressions are supported in order to reference dynamically created resources. Sparta treats POLA and #SecOps as first-class goals.

Discovery

A service may provision dynamic AWS infrastructure, and discover, at lambda execution time, the dependent resources' AWS-assigned outputs (Ref & Fn::Att). Eliminate hardcoded Magic ARNs from your codebase and move towards immutable infrastructure

API Gateways

Make your service HTTPS accessible by binding it to an API Gateway REST API during provisioning. Alternatively, expose a WebSocket [APIV2Gateway](https://aws.amazon.com/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/) API for an even more interactive experience.

Static Sites

Include a CORS-enabled S3-backed site with your service. S3-backed sites include API Gateway discovery information for turnkey deployment.


Sparta Overview

Sparta relies on CloudFormation to deploy and update your application. For resources that CloudFormation does not yet support, it uses Lambda-backed Custom Resources so that all service updates support both update and rollback semantics. Sparta’s automatically generated CloudFormation resources use content-based logical IDs whenever possible to preserve service availability and minimize resource churn during updates.

Getting Started

To get started using Sparta, begin with the Overview.

Administration

  • Problems? Please open an issue in GitHub.


Eveyone Welcome

Courtesy of gophers

Questions?

Get in touch via:

Support Sparta

Help support continued Sparta development by becoming a Patreon patron!

Become a Patron!

Other resources