Attini Concepts

.
├── attini-config.yaml
├── deployment-plan.yaml
├── database.yaml
└── sam-app
    ├── template.yaml
    ├── hello_world/...
    └── tests/...

Attini Distribution

An Attini Distribution is the source of all Attini Deployments, it includes your code, config, web content etc.

The Attini Distribution should be considered an immutable package that you build/packade once, then deploy multiple times into different enviroments.

The Distribution always includes a attini-config.yaml which contins 3 things.

1. Metadata

Name, id, version and tags so that we can keep track of the distribution.

2. Package instructions

Build commands, build image configuration etc. which enables lightweight CI capabilities.

3. Deployment instructions

Instructions for the Attini Framework on how to create the Attini Deployment Plan.

AppDeploymentPlan:
  Type: Attini::Deploy::DeploymentPlan
  Properties:
    DeploymentPlan:
      - Name: Database
        Type: AttiniCfn
        Properties:
          StackName: !Sub ${Env}-database
          Template: database.yaml
      - Name: API
        Type: AttiniSam
        Properties:
          StackName: !Sub ${Env}-api-app
          Project:
            Path: /api-app
          Parameters:
            DatabaseARN.$:
              $.output.Database.DatabaseARN

Attini Deployment Plan

Attini Deployment Plan is a serverless pipeline that executes your deployment. It can orchestrate any technology and requires no maintenance, so you can use it to manage your legacy or to adopt new tooling.

The first time you deploy the Attini Distribution, the Attini Framework will create the Deployment Plan within your AWS Account, dedicated to this distribution and environment. This differs from other CI/CD tools where the deployment is executed from outside the application environment and the pipelines are often shared between them.

Next time you deploy the Distribution, Attini will update the Deployment Plan only if its definition has changed. This makes the Attini Deployment Plans easy to maintain at scale while allowing you to re-deploy quickly.

The Attini Deployment Plan Types makes it easy to do normal deployment tasks like deploying CloudFormation / AWS SAM apps, running scripts, requiring manual approvals and more.

The Deployment Plan is built on top of AWS StepFunctions and fully supports all its features such as parallel executions, choices, re-tries and all its AWS Service integrations.

> attini deploy run hello-world.zip -e prod

Current state for hello-world in prod:
    DistributionId: ee022740aa0ee
    Version: 1.0.0
    DistributionTags:
        Owner: Carl

Distribution being deployed:
    DistributionId: fc380c67fc59c
    Version: 1.0.1
    DistributionTags:
        Owner: Carl

You're about to deploy hello-world into prod.
Continue? (Y/N)

Attini Enviorment

An Attini Environment is a required logical target for all Attini deployments.

Attini Environments can be of 2 different types: production or test. When you deploy to production environments, you always get a confirmation prompt showing you what you are going to deploy. In test environments, the deployment runs directly. This is designed to speed up development while preventing mistakes.