At Kumina we deploy all our platforms based on "infrastructure as code"
principles. This allows us to easily reproduce and scale environments. For this particular platform
use Hashicorp's Terraform. Terraform enables us to codify the entire Amazon AWS infrastructure. Due
the numerous providers that come with Terraform we can provision everything from EC2 to RDS.
We use CoreOS as the operating system for the plaform. By using CoreOs, we
a lightweight Linux operating system which is designed for providing infrastructure to clustered
deployments. CoreOS comes bundled with several tools:
» Docker (Container runtime)
» Fleet (Distributed init System)
» Etcd (Service discovery and key/value store)
Continuous Integration and Continuous
Jenkins is used as the Continuous Integration and Continuous Deployment
It's set up to automatically create and deploy images, run tests, cron jobs and migrations,
the entire experience with the platform. Developers just need to push code to Git and most other
are done automatically. LendInvest has chosen to manually deploy new versions of their applications
the touch of a (web-based) button, but that could be automated as well.
Orchestration tool Kubernetes
LendInvest is using a micro-services architecture and container technology, we needed an
tool that is stable, feature rich and allows easy administration. Kubernetes was the obvious choice
us, as it has a strong Open Source community and is feature-rich. Also, it's based on 15 years of
experience with Google Borg, where it has been running production workloads.
Some of Kubernetes features include:
» Automatic binpacking
» Horizontal scaling
» Automated rollouts and rollbacks
» Storage orchestration
» Service discovery and load balancing
» Secret and configuration management
» Batch execution