Broadly speaking, if your Application is already containerized, and aligns well with the Twelve-Factor App model, you will likely find Aptible’s features to be familiar and in-line with your expectations. However, the Aptible platform’s architecture is opinionated and is not suitable for every type of application.
You do not need to host 100% of your infrastructure on Aptible to realize the benefits of the platform. If some of your applications are not compatible, Aptible can be used in conjunction with other SaaS services, or privately hosted services via Integrations.
Aptible 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 Aptible:
- VMDK, VDI, or VDH files - Aptible does not support running software in virtual machines.
- Amazon Machine Images (AMIs) - Aptible does not support running software directly on EC2 instances.
- EXE or MSI files - Aptible does not support Microsoft Windows software.
Aptible 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 Aptible.
All services you host on Aptible must be explicitly exposed via Endpoints, which only support exposing TCP-based services. You will not be able to serve UDP services from Aptible. You may still connect to UDP services (such as DNS, SNMP, etc) from Applications hosted on Aptible.
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.