How it works
Overview
Stacktape is distributed as a single binary and can be installed using a single command.
It works on any (Windows, Linux or Mac) machine or CI/CD server.
Stacktape itself is implemented in Typescript (with a fallback to Go for performance demanding tasks).
Configuration
Every aspect of your infrastructure and deployment process is configured using a simple (YAML, JSON or Typescript) configuration.
The configuration lives alongside your application in your project repository. This approach has multiple advantages:
- Version-controlled and easy to review
- Immediately obvious for every developer how the application runs in production
- Ability to spin up multiple environments (stages) using the same configuration
- Your applications can be deployed using a single command
Example stacktape.yml
configuration
Copy
serviceName: my-applicationresources:apiServer:type: web-serviceproperties:resources:cpu: 1memory: 2048scaling:minInstances: 1maxInstances: 5packaging:type: stacktape-image-buildpackproperties:entryfilePath: ./src/index.ts
Infrastructure management
Behind the scenes, Stacktape uses AWS CloudFormation to manage your infrastructure.
Stacktape offers 25+ high-level infrastructure resources.
This resources are composed of multiple (in some cases more than 20), underlying AWS services.
For example, a single web-service
resource translates to almost 1000 lines of Cloudformation configuration.
Deployments
Stacktape offers different ways to deploy your application.
1. From local machine
The deployment from local machine will build and deploy the application from your (Windows, Linux or Mac) system.
These deployments are the fastest and most convenient, but require you to have Docker (or any other language-specific build) tool installed.
The deployment is as simple as
Copy
stacktape deploy --stage <<stage>> --region <<region>>
2. Using AWS CodeBuild pipeline
The Deployment using AWS CodeBuild will build and deploy your application remotely, inside AWS CodeBuild pipeline.
These deployment ensure the consistent deployment environment and doesn't require anything (besides Stacktape) installed locally.
The deployment is as simple as
Copy
stacktape codebuild:deploy --stage <<stage>> --region <<region>>
3. Using any CI/CD tool
Stacktape also easily integrates into any CI/CD pipeline that your already use.
Example Github actions workflow configuration
Copy
name: Deploy application using Stacktapeon:push:branches:- mainjobs:deploy-app:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- uses: actions/setup-node@v2with:node-version: "16"- name: Install Stacktaperun: curl -L https://installs.stacktape.com/linux.sh | bash- name: Deploy the stackrun: stacktape deploy --stage <<stage>> --region <<region>>env:STP_API_KEY: ${{ secrets.STP_API_KEY }}