The world of deploying, maintaining or scaling applications has certainly changed a lot in the age of cloud infrastructure but I can not confidently say that it has become much easier. There are a lot of choices out there, and at various levels of abstraction. But for a startup that is focused on the core product, the whole infrastructure scene can seem daunting at times.
Many vendors who have a wide range of controls for fine tuning also seem to have lock-ins. And a vendor neutral approach seems way too complex or expensive for a small or mid-sized company. This is where Magnetic.io comes in – with their Vamp solution they want to make it easy to canary-release, -test and scale (Docker) containers and microservices across multiple container-providers so that companies can stay outside vendor lock-ins while staying productive.
I had a nice chat with Olaf from Magnetic.io a couple weeks back. He explained how Vamp (Vamp.io) emerged from their attempt at building a modern Ecommerce platform over two years ago. The idea was to build a very modular Ecommerce platform with a (micro)services oriented architecture and packaged in containers. While developing this, they felt that deploying, releasing and scaling applications across the infrastructure available was not as straightforward as the infrastructure provides preach.
Problems and possible solutions
According to Olaf, managing distributed and scalable microservice-architectures and containers is not so easy if a company does not have experienced systems engineering roles available for teams. DevOps is tricker than it seems on the surface. If you have a (micro)services oriented architecture, then you probably have lots of small components that need to work in tandem. And if you want to leverage the possiblities of modern container infrastructure, like canary testing & releasing or autoscaling, the situation can quickly become very complex for young startups or even mid sized companies.
Canary Release – is a technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody.
Explained at http://martinfowler.com/bliki/CanaryRelease.html
The Vamp core platform is self-hosted, Open Source (Apache 2) and provides canary and autoscaling features on top of all common container technology (Container Orchestration Engine, COE) platforms like Docker, DC/OS, Kubernetes and Rancher. Vamp comes with a server installation, a command line interface (CLI), a graphical UI and a RESTful API. The platform lets you describe your services topology, dependencies and scaling-patterns using YAML/JSON blueprints. Vamp has an execution/runtime engine to deploy these service similar to what AWS CloudFormation provides. The platform is IaaS agnostic, so you could utilise any cloud provider or also run on bare metal hosting.
Managing, scaling, reacting to changes
The Vamp platform allows for complex routing as Olaf described to me. There is “plain” load balancing as you would expect from a platform like this, but the routing can be very comprehensive. You can set all kinds of routing rules, for example depending on geography, user agent or even A/B testing rules. And you can set rules to enable a certain percentage of users to hit your new releases, which is named as canary releasing.
Vamp has built in metrics gathering from it’s default router and load balancer components. It also can read, aggregate and act upon any kind of metric, for example from your services, containers, infrastructure, or any external system. Vamp metrics like for example the current response time can trigger escalations and actions in all Vamp controlled components, for example updating your routing rules or changing the scale of your running containers. These put together help you build a well scaling, fault mitigating system.
Under their hood
The Vamp platform, as Olaf puts it, builds on the shoulders of giants. They use tools like Mesos/Marathon, Docker, HA Proxy, Elasticsearch, Kibana, ZooKeeper and Linux hosts for running containers. The platform is built using Go, Scala and ReactJS. As you can see that they integrate some very well know software in this domain which all have great communities behind them. Thus Vamp has very low lock in to a new technology stack that you might not feel confident about, and thus gives you the freedom to easily move between different container schedulers while maintaining your Vamp blueprints and workflows to manage your containers and microservices in exactly the same way.
Audience and support
As I mentioned the core product is self-hosted and Open Source. The target audience for this is the general developer/startup community. Feel free to go through the documentation and get started here. They have a community support channel on Gitter. Professional support is already available and according to Olaf, an Enterprise offering is in the works. This has more comprehensive support and features targeted towards mid and large sized companies, focusing on security and control. The team wants to roll out their first Enterprise offering by end of 2016. They are currently working with a several global companies to improve and extend the product.
Team behind the scenes
The team consists of experience architects, consultants, developers, technical writers and UX/UI designers. This is something Olaf stressed upon since they really believe in making a complete product that is easy to use instead of something quick and dirty that only appeals to console users. They certainly have a strong vision and have chosen a domain where there is a constant stream of new offerings. We wish them all the best and look forward to some superb products.
Magnetic.io’s VAMP is an open source platform that provides features for (A/B) testing, deploying and autoscaling (micro)service oriented architectures that rely on container technology. The company is headquartered in Amsterdam and was created by Olaf Molenveld. www.vamp.io. Contact: Olaf Molenveld, CEO,
[email protected], tel +31 653 36 27 83.
Sumit Datta is a programmer, an Open Source enthusiast and a startup enabler. He is the go to person in the overall system design, having built multiple web platforms in technologies ranging from the traditional LAMP stack to modern day single page apps. He has been working with Internet based product/service companies since 2003, built a few startups and also worked with them.