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.

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 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.





Courtesy of gophers

Questions?

Get in touch via:

Related Projects

go-cloudcondensor Define AWS CloudFormation templates in go

go-cloudformation go types for CloudFormation resources

ssm-cache Lightweight cache for Systems Manager Parameter Store values



Support Sparta

Help support continued Sparta development by becoming a Patreon patron!

Become a Patron!

Other resources