Dash ECS Deployments

An AWS code pipeline is created for each Dash application. This pipeline is responsible for deploying the infrastructure and the application code. The pipeline is triggered when a new commit is pushed to the specified branch of the application's repository.

Dash ECS

Dash ECS Deployment

Static Files

Zonké uses the open-dash library to extract static files from Dash's Flask server and prepare them for deployment. The static files are deployed to an S3 bucket. The deployed bucket is private and all static files are served using CloudFront.

Load Balancing

An application load balancer is used to route traffic to the ECS service running the Dash application. For security, the load balancer is placed in a public subnet and is only accessible from the internet through CloudFront.

ECS Servers

ECS servers handle API requests and other server-side logic for the Dash application. The Zonké dashboard exposes the capability to scale the number of ECS servers based on application traffic. You have the option to use Fargate or EC2 instances for the ECS servers. For security, deployed ECS servers are placed in a private subnet and are not directly accessible from the internet.

Secrets

Secrets are stored in AWS Secrets Manager and are exposed to the ECS servers as environment variables. The Zonké dashboard allows you to add, update, and delete secrets for the Dash application. Secrets are only stored in your AWS account and are encrypted at rest and in transit. The Dash application can access these secrets using os.getenv and directly from Secrets Manager.