Nomad, from HashiCorp, is presented as a simple, flexible, and production-grade workload orchestrator that enables organizations to deploy, manage, and scale any application, containerized, legacy or batch jobs, across multiple regions, on private and public clouds. Nomad's workload support enables an organization to run containerized, non containerized, and batch applications through a single workflow. Nomad is available open source, or via a supported enterprise plan.
There's really no reason to ever use Mesos. We switched over to Kubernetes and it's been a breath of fresh air - better CD support, easy CLI for browsing logs, no mysterious dangling redeploys. If you're looking for a tool to manage a fleet of Docker containers on VMs, Kubernetes beats Mesos by a wide margin.
Nomad is well suited for organizations who wish to tackle the problem of cloud computing with as little opinion as possible. Where competing tools like Kubernetes limit the concept of "batteries included," Nomad relies on engineers understanding the missing components and filling them in as necessary. The benefit of Nomad is the ability to build a system out of small pieces with the cost of having more complexity at a system level compared to alternatives.
Mesos may have many frameworks. If you have Mesos installed on your servers, you may use it for many kinds of tasks. Today we're running only web applications but the idea is to install a different framework for big data soon.
Unreliable deployments that would fail for no good reason. Sometimes our Docker container would be "restarting" forever because Mesos thought it didn't have enough resources to start the container.
Impossibly slow UI. Built in React under the hood with a lot of bloatware backed in, so loading the Mesos UI on a slow internet connection was painful.
No real logging solution - it would stream "console.log()" output to the UI, but searching for logs wasn't really possible without downloading a huge file.
No built-in support for redeploying containers from a CI. We had to create a service whose whole job was to expose an HTTP endpoint that restarted a container, and then made Circle CI ping the endpoint whenever we wanted to redeploy.
Nomad only handles one part of a full platform. Expertise and vision are required in implementing an entire system that is functional enough for an organization to rely on. This includes other tools to handle things like secrets, service discovery, network routing, etc.
Nomad is delayed in some modern functionality, like features for service-mesh and open tracing. These features are on the tool's roadmap, but there's currently no native support. These paradigms can be established still, but require more expertise outside of Nomad itself.
Nomad is not the leading tool for this space, and as such risks being left behind by tools with much greater support, such as Kubernetes.
Kubernetes is really great and their community is growing really fast (Google influence). We evaluated it in the beginning and it would fit for our web applications workload. We decided to proceed with Mesos because it has more potential. You may use a different framework for different kinds of tasks on Mesos. There is a Kubernetes framework for Mesos, by the way.
Nomad's primary competitor is Kubernetes, specifically its scheduling component. Kubernetes is a much more complete system that will handle more things than job scheduling, including service discovery, secrets management, and service routing. There also exists a much larger community support for Kubernetes vs Nomad. One might say Kubernetes is the safer choice between the two. Kubernetes is the complete "operating system" for cloud computing, but with it includes complexities that are "Kubernetes" specific. The decision really comes down to a mindset of monolith vs components. With Kubernetes, I would argue you choose the entire system as a whole. With Nomad, you design your system piece by piece. There is no wrong answer.
Nomad has allowed our organization to deploy quicker and more frequently with a lower failure rate.
Nomad has brought in consistency from an operations perspective.
Nomad's performance allows us to scale infinitely while providing functionality that reduces mean time to repair (canary deploys, versioning, rollbacks, etc).