Is my Application a good fit for Deploy?

Broadly speaking, if your Application is already containerized, and aligns well with the Twelve-Factor App model, you will likely find Deploy’s features to be familiar and in-line with your expectations. However, the Deploy platform’s architecture is opinionated, and is not suitable for every type of application.

Tip

You do not need to host 100% of your infrastructure on Aptible Deploy to realize the benefits of the platform. If some of your applications are not compatible, Deploy can be used in conjunction with other SaaS services, or privately hosted services via Network Integrations.

Containerization

Deploy only supports running Docker Containers. Most applications you have written yourself will be easy to containerize, if they are not already. However, software distributed by a 3rd party may be harder to meet this requirement. Some tell-tale signs an application won’t be possible or easy to run on Deploy:

  • VMDK, VDI, or VDH files - Deploy does not support running software in virtual machines.
  • Amazon Machine Images (AMIs) - Deploy does not support running software directly on EC2 instances.
  • EXE or MSI files - Deploy does not support Microsoft Windows software.

Operating System

Aptible Deploy supports Docker images with operating systems based upon the Linux kernel, such as Debian, Ubuntu, CentOS, RedHat, Alpine, etc. Windows-based Docker images cannot be run on Deploy.

Transport Protocol

All services you host on Deploy must be explicitly exposed via Endpoints, which only support exposing TCP-based services. You will not be able to serve UDP services from Deploy. You may still connect to UDP services (such as DNS, SNMP, etc) from Applications hosted on Deploy.

Data Persistence

With the notable exception of Database data, the filesystem for your Containers is ephemeral. This means that every time your containers are recycled, any data you stored on the filesystem will be gone.

As a result, you should make sure you never use the filesystem for data you need to retain long term. Instead, this data should be stored in a Database or in a third-party storage solution, such as AWS S3.

Applications that rely on persistent local storage, or a volume shared between multiple containers, will need to be re-architected.

Twelve-Factor App: https://12factor.net/