Home > Blogs > VMware Accelerate Advisory Services > Tag Archives: continuous delivery

Tag Archives: continuous delivery

NEW White Paper: DevOps and Agile Development – A VMware Field Perspective

DevOps is both a hot topic and an overused term today, leading to an endless stream of contradicting definitions and confusion. Is it a technology? An organizational construct? A combination of the two? It depends on who you ask.

This white paper, written by three VMware DevOps experts, Kevin Lees, John Gardner, and Peg Eaton, is an attempt to provide guidance in this new field, shaped by their extensive experience enabling agile software development and infrastructure delivery for customers across the globe.

Inside you will find:

Key Concepts

What’s the difference between continuous integration, continuous delivery, and continuous deployment? How does VMware describe the “shift to the left” and what does that mean for I&O? Gain a foundational understanding of the key definitions, guiding principles, and infrastructure & operations and developer implications of DevOps from the perspective of VMware.

Delivery Pipeline and Agile Processes

Learn more about the complex collaboration needed between software developers and IT operations.  Explore how DevOps directly affects the software delivery process through the application of agile principles and the utilization of tools and techniques that support a continuous delivery pipeline.

Team Models and Evolving in the Enterprise

This new model for application development does not come without challenges – knowledgeable professionals discuss the key roles and organizational cultural shift required for teams to function, as well as the ideal end state of a DevOps team, the more accessible concession model of “DevOps as a Service,” and how to evolve these models within the enterprise.

Read the full white paper here: DevOps and Agile Development, A VMware Field Perspective


Still hungry for more? Further your learning with these great DevOps posts:

A Foundation for DevOps: Establishing Continuous Delivery

Peg EatonBy Peg Eaton

As Practice Director for VMware’s DevOps & Cloud Native Apps Professional Services team, I lead a a specialized team of developers with decades of experience helping customers reach their DevOps goals.

In our experience, many organizations have accepted that they need to apply DevOps best practices to accelerate application delivery, and they are in the early stages of developing their strategy for moving forward.

They’ve heard terms like continuous integration and continuous delivery, but have difficulty mapping out what their optimal DevOps tool chain would be, faced with a large, and growing number of technology options, a lack of standardization, and very often, widely differing opinions within the organization on what’s right for them.

In this short video, I walk through our own best-practice example of a Continuous Delivery Pipeline, discuss the software stacks that comprise the tool chain, and pass on DevOps best practice advice along the way.

The Continuous Delivery Pipeline

The Continuous Delivery Pipeline contains inter-related software stacks which support the pipeline stages and activities; enabling repeatable and reliable software delivery by application teams.

You will notice notice as we go through the stacks….you have options. You might choose VMware solutions for some of these areas.  Or you might have made other investments. That’s ok. We believe in our products, but we’re committed to helping you create a seamless integration between all these moving pieces, regardless of which software solutions you choose.

Let’s start with the Planning Stack. This software stack supports agile development throughout the delivery pipeline — planning and tracking software releases; creation of user stories; sprint planning, backlog management, and issue tracking. Typical tools used in planning are JIRA, Redmine, Trello, GitHub Pages, and MS TFS

Next in the toolchain is the Coding Stack. The software in this stack is used for the coding effort against the user stories. We have integrated development environments, editors, debugging tools, and unit-test tools. Geany, Atom, Eclipse, MS-TFS, and vRealize Orchestrator are commonly used tools. Other software in this stack used to support application development: pre-configured developer-workstations, and the environments for application unit-tests (essentially a set of VM blueprints).

The Commit Stack supports version control and many best practices including: daily check-ins, committing assets early and often, automated style-checking, and code reviews. Typical tools include Git, GitHub, MS TFS, and Gerrit.

Developers need fast useful feedback once code is committed; continuous integration tools support automated software builds and automated smoke tests. The Continuous Integration Stack, uses tools like Jenkins, Gerrit Triggers, and vRealize Automation.

The Testing Stack is used in managing testing throughout the software development lifecycle. The key to high productivity and quality code is developer-driven testing in production-like environments for each phase of the lifecycle — it is more effective to expose and remediate issues earlier in the lifecycle. For this stack, you can use tools such as Selenium, REST-assured, soapUI, SonarQube, and vRealize Automation.

The Artifact Management Stack supports the management of application artifacts including binaries; and provides package version control and dependency management of the artifacts. Tools for artifact management include JFrog Artifactory, and vRealize CodeStream.

The next stack focuses on Continuous Deployment and provides support for consistent deployments to every environment – UAT, Staging, and Production. You can use tools like Jenkins, Ansible, vRealize Automation, and vRealize Orchestrator, and vRealize CodeStream.

Next in the tool chain is the Configuration Management Stack, which supports application and environment configuration and is often tightly integrated with the deployment stack. Typical tools in this stack are Ansible, Chef, Puppet, and Chocolatey.

The Control Stack comes next, and is used for application and infrastructure behavior monitoring — alerting, dashboards, logging, capacity management throughout the release process and into production. You can use the vRealize Suite at this stage, including vRealize Operations and vRealize Log Insight, as well as Nagios.

Last but not least is the Feedback Stack, which provides automated feedback to the right people at the right-time during all phases — alerts, auditing, test results, build results, deployment — touching all areas of the pipeline. Github Issues and Slack can be effective tools in this stage.

There are a LOT of moving pieces – it is COMPLEX – and I am sure you are concerned about how in the world to make them all play nicely together! Our capability is in getting all of these moving pieces to work together for a continuous, well monitored flow.

Shift Left

So how does this tool chain help your Dev and Ops team to accelerate application delivery?
Well, application development teams today have moved into the traditional infrastructure and operations space in order to accelerate application delivery.

Application teams require fast-feedback and optimal execution flow during the development life-cycle, and for this they need consistent, production-like environments everywhere and on-demand, continuous integration and deployment, and automated testing throughout the application release lifecycle.

As a result, the dev teams are deploying and managing tools, and automating tasks throughout the life-cycle to support these requirements.

Infrastructure & Operations teams that are concerned with governance and stability can participate in this “shift-left” by working in a high-trust culture where Dev & Ops collaborate to build the optimal execution flow.

Treating infrastructure like code benefits both Dev and Operations, enabling you to version infrastructure definitions with code and use consistent, production-like environments everywhere

A shift-left takes the burden of tool-chain management off the development teams and provides the infrastructure & operations team the visibility, governance, and control to support the business.

VMware DevOps Foundation Solution

The VMware DevOps Foundation Solution (currently available in North America only) enables our customers to implement and operate a Continuous Delivery tool chain with prescriptive stacks of best of breed tools based on common industry patterns and your own environment’s requirements, whether your apps are developed using C#, Java, Python, Go or other programming languages.

The fact that our stacks are pre-integrated means they are ready to use much more quickly, thereby providing a faster time-to value in delivering your applications.

Worried that you are already using a certain tool that you didn’t see in this presentation – don’t worry, these stacks are flexible and we have worked with almost every tool on the landscape.

Creating the DevOps tool chain that will work for you can be complicated, but we’re here to help.

To get started, contact your VMware rep to set up a 1-hour meeting with my team to discuss your goals for Continuous Development. We will then schedule a half-day workshop on continuous delivery and DevOps best practices with your development and operations leaders to kick the project off on the right foot.

We look forward to working with you to make your dreams for accelerated application delivery a reality!

=======

Peg Eaton is a practice director for VMware’s DevOps and Cloud Native Apps Services Organization and is based in Massachusetts. 

Increase the Speed of IT with DevOps and PaaS

Reg Lo By Reg Lo

How do you increase the speed of IT?

In this 5 minute video whiteboard session I will describe two key strategies for making IT more agile and improving time to market.  For your convenience there is also a transcript of the video below.

Two key strategies for increasing the speed of IT are:

  1. Deliver more applications using DevOps. Traditional waterfall methods are too slow.  Agile methodologies are an improvement but without accelerating both the infrastructure provisioning and application development, IT is still not responsive enough for the business.  Today, many organizations are experimenting with DevOps but to really move the needle, organizations must adopt DevOps at scale.
  2. Deliver new Platform-as-a-Service faster. Infrastructure-as-a-Service is the bare minimum for IT departments to remain relevant to the business.  If IT cannot provide self-service on-demand IaaS, the business will go directly to the public cloud.  To add more value to the IaaS baseline and accelerate application delivery, IT must deliver application platforms in a cloud model, i.e. self-service, on-demand, with elastic capacity.

Let’s start with this second key strategy: delivery new PaaS services faster.  PaaS services include second generation platforms (database-as-a-service, application server-as-a-service, web server-as-a-service) as well as third generation platforms for cloud native applications such as Hadoop-as-a-service, Docker-as-a-service or Cloud Foundary-as-a-service.

In order to launch these new PaaS services faster, IT must have a well-defined service lifecycle that it can use to quickly and repeatably create these new services.  What are the activities and what artifacts must be created in order to analyze, design, implement, operate and improve a service?

Once you have defined the service lifecycle, you can launch parallel teams to create the new service: platform-as-a-service, database-as-a-service, or X-as-a-service where X can be anything.  Each service can be requested via the self-service catalog, delivered on demand, and treated like “code” so it can be versioned with the application build.

Each service needs a single point of accountability – the Service Owner.  The service owner is responsible for the full lifecycle of the service.  They are part of the Cloud Services team, or also called the Cloud Tenant Operations team.  The Cloud Services Team also manages the service catalog, provides the capability to automate provisioning, and manages the operational health of the services.

The Cloud Services Team is underpinned by the Cloud Infrastructure Team. This team combines cross-functional expertise from compute, storage and network to create the profiles or resource pools that the cloud services are built on.  The Cloud Infrastructure Team is also responsible for capacity management and security management.  The team not only manages the internal private cloud, but also the enterprise’s consumption of the public cloud, transforming IT into a service broker.

Now that we’ve described the new cloud operating model, let’s return to the first key strategy for increasing the speed of IT: deliver more applications using DevOps.  Many organizations have tasks one or two applications teams to pilot DevOps practices such as continuous integration and continuous deployment.  This is a good starting point, however, in order to expand DevOps at scale so IT can provide a measurable time-to-market impact for the business, we need to make the adoption easier and more systematic.

The DevOps enablement team is a shared services team that provides consulting services to the other app dev teams; contains the expertise in automation so that other app dev teams do not need to become the expert in Puppet, Chef, or VMware CodeStream; and, this team drives a consistent approach across all app dev teams to avoid a fragmented approach to DevOps.

Remember how we talked about expanding PaaS?  With self-service on-demand PaaS provisioning, app dev teams can build environment-as-a-service: an application blue print that contains multiple VMs (the database server, application server, web server, etc.)  Environment-as-a-service lets app dev teams treat infrastructure like code, helping them adopt continuous deployment best practices by linking software versions to infrastructure versions.

By delivering more applications using DevOps and by delivering new PaaS services faster, you can increase the speed of IT.


Reg Lo is the Director of VMware Accelerate Advisory Services and is based in San Diego, CA.  You can connect with him on LinkedIn.

What Is DevOps, and Why Should I Care? — The IT Leadership Perspective

kai_holthausBy Kai Holthaus

One of the newest buzz words in IT organizations is “DevOps.” The principles of DevOps are contrary to how IT has traditionally managed software development and deployment. So, why are more and more organizations looking to DevOps to help them deliver IT services to customers better, cheaper and faster?

But…what exactly is DevOps anyway? It is not a job or a tool or a market segment; it’s best defined as a methodology, or an approach. It has ideological elements that are in common with techniques like Sigma Six and Lean. More on this later.

Software Development and Deployment Today

DevOps todayIn today’s world, there’s a “wall” between the teams that develop software and the teams that deploy software. Developers work in the “Dev” environment, which is like a sandbox where they can code, try, test, stand up servers and tear them down, as the coding work requires. Teams working in the “Ops” environment deploy the software into a production environment, where they also ensure the software is operational. Often, the developed software is literally ‘thrown over the wall’ to operations teams with little cooperation during the deployment.

Why Was It Set Up That Way?

This “wall” is an unintended consequence of the desire to allow developers to perform their tasks, and operational teams to do theirs. Developers are all about change; their job is to change the existing (and functional) code base to produce additional functionality. Operations teams, on the other hand, desire stability. Once the environment is stable, they would like to keep it that way, so that customers and users can do their work.

For that reason, developers usually do not even have access to the production environment. Their work—by nature—is considered too disruptive to the stability of the production environment.

The Problems with Today’s Development and Deployment

Because of the separation between developers and operations, deployment is often cumbersome and error-prone. While developers are usually asked to develop deployment techniques and scripts, these techniques first have to be adapted to the production environment. Then they have to be tested. And since the deployment teams don’t usually understand the new code (or its requirements) as well as the developers, the risk to introduce errors rises. Worst case, it will lead to incidents, which are all too common.

Additionally, in today’s datacenters that are not yet software-defined, new infrastructure—such as compute, storage or network resources—is hard to set up and integrate into the environment. This further slows down deployments and raises the possibility of disruptions to the environment.

DevOps to the Rescue

At its core, DevOps is a new way of developing and maintaining software that stresses collaboration, integration and automation. It attempts to break down the “wall” between development and operations that exists today by removing the functional separation between the teams. It uses agile development and testing methodologies, such as Scrum, and relies on virtualization and automation to migrate entire environments instead of migrating just the codebase between environments.

The main goal of implementing a DevOps approach is to improve deployment frequency—up to “continuous deployment”—of small, incremental improvements to the functionality of software. Essentially, “dot releases,” and with software updates evolving from manufactured media to online streaming, this makes complete sense.

DevOps_graphic2

Why DevOps? Why Now?

With the increased availability and utilization of software to provision, manage and decommission resources—such as compute, storage and network in datacenters and IT environments—the DevOps approach is becoming more and more common. IT organizations are now able to create new resources, integrate them quickly into environments, and even move them between environments with the click of a button. This allows developers to develop their code in a particular technology stack, and then easily migrate the entire stack to the production environment, without disrupting the existing environment.

Sounds Great, How Do I Start?

The three main aspects that need to be addressed to implement a DevOps approach for the development and operations of software come down to the familiar elements of project management:

  • People
  • Process
  • Technology

On the people side, teams have to be established that have accountability over the software across its entire lifecycle. The same teams that develop the software will also assure the quality of the software and deploy the software into the production environment.

From a process perspective, an agile development methodology, such as Scrum, must be implemented to increase the frequency at which deployable packages of software are being created. Reducing the amount of change at each deployment cycle will also increase the success rate of the deployments, and reduce the number of incidents being created.

On the technology side, DevOps relies heavily on the Software-defined Datacenter (SDDC), including high levels of automation for the provisioning, management and decommissioning of datacenter resources.

VMware Is Here to Help

VMware has been the leader in providing the software to enable the SDDC. VMware also has the knowledge and technology to enable you to use DevOps principles to improve your software-based service delivery. VMware vRealize Code Stream enables continuous deployment of your software. And if you like to be on the leading edge of technology, check out VMware Photon for a technology preview of software that allows you to deploy new apps into your environments in seconds.


Kai Holthaus is a delivery manager with VMware Operations Transformation Services and is based in Oregon.