Applications containers are hot right now, with some predicting that broad adoption of containers will be more revolutionary to IT than even cloud computing. Compared with previous technologies designed to improve operational and developmental efficiency, containers really do deliver the goods—better resource utilization, easier configuration, faster deployment and more flexible development processes.
However, a single container is no more useful than a single virtual machine. A container-orchestration platform is required to deploy and manage even a moderate amount of containers in production. A modern application using a microservice architecture, for example, might consist of dozens or even hundreds of containers spread across dozens of physical nodes and interdependent containerized services. Combine multiple components with a continuous integration and delivery system, and a cluster may need to spin up and then kill millions of containers per day in order to test code.
Companies that want to run containers in production need to parse lots of hype and hyperbole in order to find a container-orchestration platform that they can trust. Today, some technologies have huge developer camps and GitHub stars to spare. Others are actually running in production, powering next-generation applications by some of the world's largest companies and most-innovative startups.
Our open source Marathon technology falls into the latter category.
Meet Marathon
We consider Marathon one of the "killer apps" of our Datacenter Operating System (DCOS). It is one of the core services that is pre-installed with DCOS, and it is already being used in production by companies such as
Samsung, Yelp, Verizon, Disney, Autodesk and more. These companies are using Marathon to manage containers on hundreds or thousands of nodes in the public cloud, in their own datacenters, and across hybrid cloud environments. Marathon underpins container-based application deployment for everything from continuous integration to the Internet of Things to managed cloud services.
Different companies use Marathon to manage their container environments in different ways:
Marathon is built for the cloud
Recent enhancements also have enabled cloud providers to deliver turnkey container services using Marathon. For example, we're working with Microsoft on its Azure Container Service (ACS), which uses Marathon to deliver production-ready container orchestration. The default configuration of Azure Container Service includes "Marathon, Chronos and Apache Mesos to ensure that these applications can be scaled to thousands, even tens of thousands of containers," according to
a September 2015 blog post coinciding with
the official launch of ACS.
Marathon underpins the DCOS
The most compelling thing about Marathon, however, is probably its integration with
Mesosphere's DCOS. While container orchestration is an increasingly important capability, it's only one aspect of the broader shift toward making modern applications more powerful, scalable and reliable. This is why the DCOS also makes it simple to install, scale and manage complex systems
such as distributed databases, big-data pipelines and continuous integration platforms, all of which can run on a shared cluster alongside consumer web applications and microservices.
With
each new DCOS release, Mesosphere adds additional capabilities around security, resilience, monitoring, management and more.
Marathon in action
As noted above, Marathon helps users overcome many of the challenges that come along with developing and operating containerized workloads in a reliable and scalable manner. For starters, Marathon makes it easy to automate processes that are traditionally done manually. The rich web UI allows users to easily launch and monitor any Docker image, as well as to update configurations of running applications.
But Marathon is not limited to Docker. In fact, it can launch almost any existing application, be it a JVM-based app, a Ruby script or a simple Bash shell script. This is extremely helpful as users transition from legacy architectures to fully containerized workloads. (Legacy apps also benefit from running on commodity hardware on a scale-out platform.)
In typical setups, devops will use the
REST API in a scripted manner to launch applications or groups of applications that have dependencies and can be scaled as a single unit. Given that Marathon uses Apache Mesos to launch applications in a cluster of machines, it is vital to be able to automatically connect to them and spread the load across multiple instances of an application. Marathon does both out of the box, utilizing Mesos-DNS for service discovery and
Marathon-lb for load balancing.
Other important Marathon features include:
- Support for zero-downtime deployments, including rolling, blue-green and canary patterns.
- HTTP, TCP and command-based application health checks.
- Metrics emitting and collection integrations (including Graphite, DataDog and StatsD).
- A powerful event bus that enables devops to programatically react to application changes in a custom manner.
- Resilience against network and node failures, both for Marathon and the applications it manages.
- Security features such as user authentication and role-based access control.
- A flexible plugin architecture, which enables custom integration into existing enterprise IT environments.
This is why when we say our DCOS is the most enterprise-ready, production-grade and scalable option for managing large numbers of Docker containers, we do so with confidence.
Much more to come with Marathon
Much of what's explained above is the result of hard work over the past year by Mesosphere's Marathon team to improve the platform's reliability and feature set. Looking toward the future, there's an aggressive roadmap in place—including upcoming support for stateful applications such as databases—that ensures Marathon continues to be the go-to platform for companies that want to take their container strategies from idea into production. We will be sharing a lot more about that in the weeks and months to come.
In the meantime, Marathon is already stable, scalable proven. If you want to learn more about it, check out the following resources: