DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. DevOps and CI/CD
  4. 9 Reasons DevOps Is Better With Docker and Kubernetes

9 Reasons DevOps Is Better With Docker and Kubernetes

Learn how Docker and Kubernetes help Dev and Ops work together for quicker time to market.

Matthieu Robin user avatar by
Matthieu Robin
·
Oct. 19, 18 · Opinion
Like (6)
Save
Tweet
Share
24.92K Views

Join the DZone community and get the full member experience.

Join For Free

One of the main challenges that companies face with is a long time to market, which usually happens when your development process is slowed down. When deploying applications most of the teams usually face a problem between Dev and Ops because these two departments make the same application but work completely in different ways.

Wouldn’t it be nice if they work together without any misunderstandings to make shorten time to market? I’ve assembled this list of advantages that DevOps plus Docker and Kubernetes can provide you compared to a traditional DevOps approach.

The Traditional Approach to DevOps

In a traditional DevOps approach, developers write code and commit it to a Git repository. Then they check how it works locally and in a development environment. They launch a build process of the code using a CI tool like Jenkins, which also runs functional tests during the build. If the tests pass successfully, those changes are merged into a release branch. The tests are handled in a staging environment and at the end of the sprint, then the release is issued. System administrators prepare scripts for application deployment to production using Ansible, Puppet, or Chef. Finally, system administrators roll out the changes to production (updating the version).

Problems of the Traditional Approach

  • The first problem is that system administrators and developers use different tools. For example, the majority of developers don’t know how to work with Ansible, Puppet, or Chef. A common outcome of this situation is that the task of preparing release falls on the shoulders of system administrators. But system administrators often do not understand how an application should work, because developers are the ones who have the expertise in this area.

  • The second problem is that development environments are usually updated manually without any automation. As a result, they are very unstable and always breaking down. Changes made by one developer break changes made by another. Figuring out problems usually takes a lot of time. And finally, you get slow time to market.

  • The third problem is that development environments can differ significantly from staging and production. Moreover, staging can be very different from production. It leads to many difficulties. For example, a release prepared by developers may not work correctly in the staging environment. Even if the tests pass successfully in the staging environment, some issues may appear unexpectedly in production. Meanwhile, the rollback process of a broken version from production is very problematic and not trivial, even using Ansible, Puppet, or Chef.

  • The fourth problem is that writing Ansible manifests is time-consuming and difficult. It is very easy to lose track of changes made in manifests, updating an application from version to version. It may result in a high number of mistakes.

Improvement of DevOps Approach With Docker

The main advantage of this approach is that both developers and system administrators use the same tool — Docker. Developers create Docker images from Dockerfiles at the development stage, on local computers, and run them in a development environment.

The same Docker images are used by system administrators who make updates to the stage and production environments using Docker. It is very important that Docker containers are not patched when updating to a new version of a software. This means that a new version of your software is represented by a new Docker image and a new copy of the Docker container, but not to patch the old Docker container.

As a result, you can make immutable dev, staging, and production environments. There are several benefits of using this approach. First of all, there is a high level of control over all changes, because changes are made using immutable Docker images and containers. You can roll back to the previous version at any moment. Development, staging, and production environments become more similar to each other than with Ansible. Using Docker, you can guarantee that if a feature works in the development environment, it will work in staging and production, too.

How to Get DevOps Superpowers With Docker and Kubernetes

  • The process of creating application topology containing multiple interconnected components becomes much easier and understandable with Docker.

  • The process of load balancing configuration simplifies greatly because of built-in Service and Ingress concepts.

  • Thanks to the built-in features of Kubernetes Deployments, StatefulSets, and ReplicaSets, the process of rolling updates or green/blue deployments becomes very easy.

  • You can run CI/CD using Helm, which is more comfortable than just with Docker containers because

    • Helm charts are more production-ready and stable than individual Docker images. You were probably facing this issue when you tried to interconnect different Docker containers into a joint topology, but you failed because those images were not ready for such interconnection.

    • It provides you with a high-level template language and a concept of application releases that can be rolled back if needed.

    • Moreover, you can use existing Helm charts as dependencies for your own charts, which allows you to have complex topologies using third party building blocks.

  • Kubernetes supports out-of-the-box of deployment scenarios to multi-cloud (AWS, Google, Hidora, or another hosting provider) through Federation or service mesh tools.

Have you simplified your DevOps processes using Docker and Kubernetes? Please, share your experience!

Docker (software) Kubernetes DevOps

Published at DZone with permission of Matthieu Robin. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • What Should You Know About Graph Database’s Scalability?
  • How to Rescue Your Magento 2 Project
  • 3 Ways That You Can Operate Record Beyond DTO [Video]
  • Multi-Cloud Database Deep Dive

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: