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. Software Design and Architecture
  3. Cloud Architecture
  4. Best Practices and Anti-Patterns for Containerized Deployments

Best Practices and Anti-Patterns for Containerized Deployments

As containers and their various support tools become standardized in the development industry, you'll need to know what practices to follow and avoid.

Vamsi Chemitiganti user avatar by
Vamsi Chemitiganti
·
Nov. 02, 18 · Opinion
Like (2)
Save
Tweet
Share
6.77K Views

Join the DZone community and get the full member experience.

Join For Free

Kubernetes is easily the most transformational cloud technology available today. It is the de facto standard for container orchestration, essentially functioning as an operating system for cloud-native applications.

With its built-in high availability; granular, infinite scalability; portability; and rolling upgrades, Kubernetes provides many of the features that are critical for running cloud-native applications on a truly composable, interoperable infrastructure.

Enterprises of all sizes are trying to take advantage of Kubernetes both for developing greenfield applications and for re-architecting and modernizing legacy applications so that they're Kubernetes-based.

But there is a process involved with doing so. Cloud-native applications need to be architected, designed, developed, packaged, delivered, and managed based on a deep understanding of cloud-computing frameworks. The application itself needs to be designed for scalability, resiliency, and incremental, Agile enhancements from the get-go.

Cloud-native applications fundamentally change how you provision and deploy your infrastructure, and how you manage it. This is particularly true when making the jump from traditional virtual machines to containers and Kubernetes, and when you have more loosely coupled applications, such as microservices and serverless functions.

Here are six best practices and six anti-patterns to consider when your organization is investigating how to modernize its applications and invest in container-based development and infrastructure.

Containerization Best Practices

1. Start by Targeting the Right Kind of Application

Your first step should be to select a candidate for containerization. You need an app that is backed by a clear business need for modernization. Beyond that, good indicators of a good fit for containerization include:

  • The app is large or web-scale.
  • It has inherent statelessness in the architecture.
  • Its business needs include a superior user experience and high frequency of releases and updates.

2. Consider Team and Human Capabilities

Invest in DevOps-style team capabilities for building out an Agile development model and invest in site reliability engineers (SREs) for performing deployments in production and to ensure smooth operations. Not taking care of these is a sure recipe for failure.

3. Adopt Pure Open-Source Kubernetes

Once you have determined the use case and the team capabilities, no matter which cloud you choose to deploy for production-grade containerized workloads, you stick with a stable open-source release. Best of all, go with the industry standard for container orchestration: Kubernetes.

Every cloud provider that offers its own Kubernetes distribution or some other orchestration system with custom integration points and features that are unique to its ecosystem, is bound to get you stuck in the long run. Use the plain-vanilla, pure Kubernetes to stay cloud-neutral and to ensure that you can easily benefit from the great developments and enhancements produced by this vibrant, mature community.

4. Work Out The Enterprise Integrations

These include single sign-on (SSO), authentication and authorization, monitoring, security, ACL governance risk compliance, and more.

5. Stay Conversant with Kubernetes Changes

Features keep getting added and updated from one release to another in the Kubernetes project, which produces a high velocity of change. That's why it's important to upgrade to stable releases and work with a vendor that can help you stay current with your Kubernetes infrastructure, with the least amount of disruption to your service or management overhead.

You may not have the internal resources to ensure that Kubernetes installations, troubleshooting, deployment management, upgrades, monitoring, and ongoing operations won't end up causing significant business disruption and cost increases-especially the need for more skilled personnel.

If that's the case, consider opting for a SaaS-based managed Kubernetes service. This is particularly helpful if you are struggling to keep up with the rate of change in the community and best practices for managing Kubernetes in production.

6. Incrementally Iterate

As you get to a successful point with the first deployment, slowly percolate this approach to other lines of business.

Have Patience

Developing expertise for creating and running Kubernetes- or container-based applications is a journey. It doesn't happen in a day, and you need to be in it for the long haul. You will become more versed with this new technology and this new way of developing and running cloud-native apps.

The above tips are sure to get you on the right track on your path toward containerization. Now here are their anti-patterns.

Containerization Don'ts

These anti-patterns could hamper your Kubernetes container deployment project.

1. Choosing the Wrong Kind of Application

If your application is not an ideal candidate for containerization, you will waste time on countless release cycles and valuable resources trying to migrate something that doesn't make sense — and you will fail.

2. Neglecting Enterprise Integrations

Enterprises that neglect the current vendor landscape and the integrations to Kubernetes from a network, storage, and security standpoint are setting themselves up for failure.

3. Neglecting to Build a Customized Continuous Delivery/Continuous Integration Pipeline Architecture

If you don't do this, you'll end up with operations ramifications that you will have to work out.

4. Locking Yourself Into an IaaS provider's Kubernetes or Serverless Computing Services

Since workloads run on different providers or clouds based on business and cost considerations, by relying on pure-play Kubernetes as the standard, you ensure their portability and interoperability across multiple clouds and even in on-premises environments.

IaaS vendor lock-in makes zero sense from both a business and technology perspective.

5. Not Dealing with Multi-Cloud Management

This is a challenge your IT admins need to deal with once you have containerized deployments in place. IT leadership needs to account for the economics of multi-cloud management and the ROI in the business containerization case.

6. Not Making Investments from Both a Developer and Operations Standpoint

Containers change the entire software lifecycle and how the related roles operate. You need to understand that to be ready. Train developers and operations on everything from container registry, configuration and continuous integration practices to security and monitoring containers and microservices effectively.

Containers and Kubernetes Are Your Future

Since Kubernetes is still in a stage of relative enterprise infancy, now is the time to consider the above issues as you evaluate your path to containers. To take advantage of Kubernetes in your organization, it is important to ensure that your implementation is smooth, and that you can reap the benefits of this revolution in software delivery.

This article originally appeared on TechBeacon
Kubernetes Anti-pattern application Cloud computing Open source operating system

Published at DZone with permission of Vamsi Chemitiganti, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Bye Bye, Regular Dev [Comic]
  • 7 Awesome Libraries for Java Unit and Integration Testing
  • Differences Between Site Reliability Engineer vs. Software Engineer vs. Cloud Engineer vs. DevOps Engineer
  • Mr. Over, the Engineer [Comic]

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: