It’s clear that containerization is the future. We can say so because containerization takes IT automation to a whole new level, with containers provisioned in seconds from predefined libraries of resource images. And Docker is becoming the standard to develop and run containerized applications. This time we are going to tell you about using Docker for startups.
The ready availability of containerization technology massively increases the economic advantage of microservices-based application architectures. And this helps a startup business to market products as fast as possible. We’ll skip the part with main advantages of containerization over virtualization, but will provide you with the picture to show the main difference.
Containerization eliminates all of the baggage of virtualization by getting rid of the hypervisor and its VMs
The containers consist of only the resources they need to run the application they’re hosting, resulting in the much more efficient use of the underlying resources.
A technology like Docker is instrumental in automating the principles of devops. Its predefined library images are operationally pretested, allowing developers to just go ahead and deploy. Which is vital for developing speed and performance.
So the next part of our article will be a summary how much adopting a container-friendly architecture has helped a startup business. The story is based on the experience of Carlos Vega and his company.
- Tools like docker-compose do wonderful things and allow a newcomer install just a single thing to jump straight back into coding. The declarative nature of these tools provides a simple description of how runtime components talk to each other. This makes reasoning about your top-level architecture all the easier.
- Due to the symmetry of development and production environment, Docker makes packaging the code for production as simple as possible.
- Containers allow doing the package of your application together with exactly the kind of environment you need. Hybrid-cloud setups have the same portability.
One day Carlos Vega company became not satisfied with the service of the cloud provider they used. So they decided to switch to Doker and this transition took just a couple days. Monitoring and logging can be replaced with containerized open-source solutions that are easier to set up.
Software systems become more complex and fragmented at runtime. They become fragile when faced with network partitioning. And containers on their own don’t solve this problem — quite the opposite in fact. Their ephemeral nature makes your system ever so dynamic. This makes it difficult to set dependencies in stone at deploy time.
In case you will scale to a clustered infrastructure, the situation can worsen. It reaches the point of never being certain of where your processes might end up running. This makes locating and addressing them all the more difficult. But it is the need to embrace this nature that gives way to a whole host of solutions.
After trying several clustering systems Carlos’ company settled on Docker’s own Docker Swarm for most of their deployments using the simple Docker for AWS CloudFormation template.
- At first, you should declaratively express the desired state of your system about the services it should run.
- Then Swarm will constantly monitor the actual state of your containers. It will reconcile the desired state by rescheduling the workload to other nodes in the event of a node failure. It will also self-heal the cluster by re-provisioning new servers should a node become unrecoverable.
- Provisioning your own container cluster may escape your needs. However, new CaaS (Containers-as-a-Service) platforms are popping up, often at no extra cost than your underlying infrastructure usage.
- You’ll find service discovery, load-balancing, software-defined networks, persistent storage, task scheduling and RAFT consensus.
Microservices are all the rage these days, so you can come to split your applications into several different services. This approach allows to mix and match different languages and frameworks. That keeps you free to work with the best tool for the job every time.
Inherent security shouldn’t bother you in case of using Docker. Applications tend to have a one-to-one relationship with containers. You should be able to isolate the damage to that application’s domain, keeping whatever else you choose to run on your hosts safe. Containerized environments do help in reducing your attack surface as an organization.
You can find the original story and the examples here.
Subscribe to our weekly newsletter to discover more!