github.com/mweagle/Sparta@v1.15.0/docs_source/content/_index.md (about) 1 --- 2 date: 2016-03-08T21:07:13+01:00 3 title: 4 type: index 5 weight: 0 6 --- 7 8 <img src="/images/SpartaLogoNoDomain.png" width="33%" height="33%"> 9 10 ## Serverless _go_ microservices for AWS 11 12 <table style="width:90%"> 13 <!-- Row 1 --> 14 <tr> 15 <td style="width:33%" valign="top"> 16 <h4> 17 Sparta is a framework that transforms a <i>go</i> application into a self-deploying AWS Lambda powered service. 18 </h4> 19 All configuration and infrastructure requirements are expressed as <i>go</i> types for GitOps, repeatable, typesafe deployments. 20 </h4> 21 </td> 22 <td style="width:66%"> 23 <img src="/images/sparta_ecosystem.png" alt="Sparta Ecosystem" /> 24 </td> 25 </tr> 26 </table> 27 28 <hr /> 29 30 ## Features 31 32 <table style="width:90%"> 33 <!-- Row 1 --> 34 <tr> 35 <td style="width:50%"> 36 <h2>Unified</h2> 37 <p>Use a <i>go</i> monorepo to define and your microservice's: 38 <ul> 39 <li>Application logic</li> 40 <li>AWS infrastructure</li> 41 <li>Operational metrics</li> 42 <li>Alert conditions</li> 43 <li>Security policies</li> 44 </ul> 45 </td> 46 <td style="width:50%"> 47 <h2>Complete AWS Ecosystem</h2> 48 <p>Sparta enables your lambda-based service to seamlessly integrate with the entire set of AWS lambda <a href="http://docs.aws.amazon.com/lambda/latest/dg/intro-core-components.html">event sources</a> such as: 49 <ul> 50 <li>DynamoDB</li> 51 <li>S3</li> 52 <li>Kinesis</li> 53 <li>SNS</li> 54 <li>SES</li> 55 <li>CloudMap</li> 56 <li>CloudWatch Events</li> 57 <li>CloudWatch Logs</li> 58 <li>Step Functions</li> 59 </ul> 60 Additionally, your service may provision any other <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html">CloudFormation</a> supported resource and even your own <a href="http://gosparta.io/docs/custom_resources">CustomResources</a>. 61 </p> 62 </td> 63 </tr> 64 <!-- Row 2 --> 65 <tr> 66 <td style="width:50%"> 67 <h2>Security</h2> 68 <p>Define <a href="http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html">IAM Roles</a> 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 <a href="http://searchsecurity.techtarget.com/definition/principle-of-least-privilege-POLP">POLA</a> and <a href="https://twitter.com/hashtag/secops">#SecOps</a> as first-class goals. 69 </p> 70 </td> 71 <td style="width:50%"> 72 <h2>Discovery</h2> 73 <p>A service may provision dynamic AWS infrastructure, and <a href="http://gosparta.io/docs/eventsources">discover</a>, at lambda execution time, the dependent resources' AWS-assigned outputs (<code>Ref</code> & <code>Fn::Att</code>). Eliminate hardcoded <i>Magic ARNs</i> from your codebase and move towards <a href="http://chadfowler.com/2013/06/23/immutable-deployments.html">immutable infrastructure</a></p> 74 </td> 75 </tr> 76 <!-- Row 3 --> 77 <tr> 78 <td style="width:50%"> 79 <h2>API Gateways</h2> 80 <p>Make your service HTTPS accessible by binding it to an <a href="http://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html">API Gateway</a> 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.</p> 81 </td> 82 <td style="width:50%"> 83 <h2>Static Sites</h2> 84 <p>Include a <a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">CORS-enabled</a> <a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">S3-backed site</a> with your service. S3-backed sites include API Gateway discovery information for turnkey deployment.</p> 85 </td> 86 </tr> 87 </table> 88 <hr /> 89 <a href="https://cloudcraft.co/view/8571b3bc-76ef-48c1-8401-0b6ae1d36b4e?key=d44zi4j1pxj00000" rel="Sparta Arch"> 90 <img src="/images/sparta_overview.png" width="50%" height="50%"> 91 </a> 92 93 Sparta relies on [CloudFormation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) to deploy and update your application. For resources that CloudFormation does not yet support, it uses [Lambda-backed Custom Resources](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources-lambda.html) 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](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html) and minimize resource churn during updates. 94 95 ## Getting Started 96 97 To get started using Sparta, begin with the [Overview](/example_service/step1/). 98 99 ## Administration 100 101 - Problems? Please open an [issue](https://github.com/mweagle/Sparta/issues/new) in GitHub. 102 103 <br /> 104 <img src="/images/GopherInclusion.png" alt="Eveyone Welcome" height="256"> 105 <center> 106 <h6>Courtesy of <a href="https://github.com/ashleymcnamara/gophers">gophers</a> 107 </h6> 108 </center> 109 <br /> 110 111 ## Questions? 112 113 Get in touch via: 114 115 - <i class="fas fas-twitter"> @mweagle</i> 116 - <i class="fas fas-slack"> Gophers: <a href="https://gophers.slack.com/team/mweagle">@mweagle</a></i> 117 - [Signup page](https://invite.slack.golangbridge.org/) 118 - <i class="fas fas-slack"> Serverless: <a href="https://serverless-forum.slack.com/team/mweagle">@mweagle</a></i> 119 - [Signup page](https://wt-serverless-seattle.run.webtask.io/serverless-forum-signup?webtask_no_cache=1) 120 121 ## Related Projects 122 123 - [go-cloudcondensor](https://github.com/mweagle/go-cloudcondenser) 124 - Define AWS CloudFormation templates in `go` 125 - [go-cloudformation](https://github.com/mweagle/go-cloudformation) 126 - `go` types for CloudFormation resources 127 - [ssm-cache](https://github.com/mweagle/ssm-cache) 128 - Lightweight cache for [Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html) values 129 130 ### Support Sparta 131 132 Help support continued Sparta development by becoming a Patreon patron! 133 134 <a href="https://www.patreon.com/bePatron?u=12960916" data-patreon-widget-type="become-patron-button">Become a Patron!</a><script async src="https://c6.patreon.com/becomePatronButton.bundle.js"></script> 135 136 ## Other resources 137 138 - [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) 139 - [Build an S3 website with API Gateway and AWS Lambda for Go using Sparta](https://medium.com/@mweagle/go-aws-lambda-building-an-html-website-with-api-gateway-and-lambda-for-go-using-sparta-5e6fe79f63ef) 140 - [AWS blog post announcing Go support](https://aws.amazon.com/blogs/compute/announcing-go-support-for-aws-lambda/) 141 - [Sparta - A Go framework for AWS Lambda](https://medium.com/@mweagle/a-go-framework-for-aws-lambda-ab14f0c42cb#.6gtlwe5vg) 142 - Other libraries & frameworks: 143 - [Serverless](https://github.com/serverless/serverless) 144 - [PAWS](https://github.com/braahyan/PAWS) 145 - [Apex](http://apex.run) 146 - [lambda_proc](https://github.com/jasonmoo/lambda_proc) 147 - [go-lambda](https://github.com/xlab/go-lambda) 148 - [go-lambda (GRPC)](https://github.com/pilwon/go-lambda) 149 - Supported AWS Lambda [programming models](http://docs.aws.amazon.com/lambda/latest/dg/programming-model-v2.html) 150 - [Serverless Code Blog](https://serverlesscode.com) 151 - [AWS Serverless Multi-Tier Architectures Whitepaper](https://d0.awsstatic.com/whitepapers/AWS_Serverless_Multi-Tier_Architectures.pdf) 152 - [Lambda limits](http://docs.aws.amazon.com/lambda/latest/dg/limits.html) 153 - [The Twelve Days of Lambda](https://aws.amazon.com/blogs/compute/the-twelve-days-of-lambda/) 154 - [CloudCraft](http://cloudcraft.co) is a great tool for AWS architecture diagrams