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> &amp; <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">&nbsp; @mweagle</i>
   116  - <i class="fas fas-slack">&nbsp; 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">&nbsp; 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