Today we are releasing Apollo - A platform for running your next generation web services and applications.
This is a project that we have been experimenting with internally to power microservices and big data platforms for our clients.
Apollo is built on top of a number of open source components and has bootstrap scripts for Vagrant, AWS and Digitalocean. We are aiming to expand cloud support and features even further in the coming months. If you are interested in getting involved, or just want to see where we are going you can check out our current roadmap.
Lets have a look at some of the features / components of Apollo.
Features / Components
The following open source components are baked into Apollo core:
- Apache Mesos: The backbone of Apollo. Mesos handles cluster management and orchestration. Highly scalable and fault tolerant out of the box Mesos allows you to simplify the datacenter treating your cluster like one big machine. Mesos handles resource availability (CPU/memory/storage) and is able to distribute arbritrary tasks across your datacenter, making it ideal for big data workloads. http://mesos.apache.org
- Docker: For packaging and running your applications. We believe Docker will be a big player in the future of building and running applications in the enterprise. In combination with Mesos frameworks like Marathon and Aurora you can build your own platform as a service leveraging Linux containers. https://www.docker.com/
- Consul: For service discovery and DNS. Never hard-code an application endpoint or service URL in your configuration files again. We use Consul to automatically register service addresses, ports and arbritary information about Docker containers that start in the datacenter. It also comes packed with its own built-in DNS server so you can query services easily. https://www.consul.io/
- Weave: Weave simplifies the networking for Docker containers. We use Weave to create a separate overlay network which all containers start up in. This removes some of the headaches around Docker networking - no need to carefully co-ordinate which ports are mapped from host > container anymore. All containers inside the Weave network can communicate with each other directly using their Consul DNS and port meaning the end result looks a lot like standard networking (in the bare-metal / VM world). http://weave.works/
- Terraform: Terraform allows you to rapidly and consistently spin up resources in the cloud. Think Amazon Cloud Formation / OpenStack Heat but cloud agnostic. We’ve already built terraform plans that allow you to spin up Amazon VPC and Digitalocean public cloud. We’re looking to expand that with support for Rackspace(Openstack) and Microsoft Azure. https://www.terraform.io/
For further documentation on Apollo components see the docs on Github https://github.com/Capgemini/Apollo/tree/master/docs.
## Use Cases
We think Apollo fits nicely into the following use cases -
- Build your own internal Plaform as a service (PAAS) leveraging Docker container runtimes
- Large scale Continuous Integration using the Jenkins Mesos framework. The folks at Ebay have already done this in production and we’re looking to provide the Jenkins framework as a Docker container plugin to Apollo soon.
- Manage and distribute your big data workloads. There are a number of big data processing frameworks built on Mesos, such as Spark and Storm. Again we’re looking to provide these pluggable to Apollo in the future.
If you manage to get any of the above or other Mesos frameworks working on Apollo, please think about contributing that back via a pull request
## Give it a spin
Dont take my word for it, give it a spin. We have some more documentation on our github and some getting started guides for various cloud providers.
Thank you to following peeps for providing some amazing open source tools and software that we’ve built upon:
The guys at Docker, Inc, Hashicorp, Weaveworks, All the contributors to Mesos, and anyone who has ever provided a patch into all of the open source good stuff we are using here.
For more information, please see our Github repository - https://github.com/Capgemini/Apollo.