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. Culture and Methodologies
  3. Agile
  4. An Agile Introduction to DevOps, Part III: The Environmentalists

An Agile Introduction to DevOps, Part III: The Environmentalists

In this article, Gil Zilberfeld talks about the modern problems of software development that are brought about through automation.

Gil Zilberfeld user avatar by
Gil Zilberfeld
·
Nov. 08, 16 · Opinion
Like (2)
Save
Tweet
Share
4.46K Views

Join the DZone community and get the full member experience.

Join For Free

1bsjsr

last time , we looked at how “regular” development practices have made sure that things worked at the development team level. it’s time to move on because, as we know, it’s not working software unless it’s tested.

let me tell you a story, sonny. when i was young, we built the software all on my machine: compiling, testing, and packaging. turns out, these days, it’s not really that easy.

a-testin’ we will go

to take it to the next level, we need more devops practices. let’s look at them through the principle spectacles:

  • minimize risk (delivery methodology, environment management).
  • minimize waste (automatic packaging, automatic deployment).
  • early feedback (automatic system tests, non-functional tests).

the delivery methodology is a relative of the branching methodology we discussed last time . it is usually developed ad-hoc-ishly like its relative, which is too bad.

unless your product is getting deployed for the first time, you will need to be able to do two things: rebuild it from scratch and upgrade it. there are as many ways to do it as there are companies, but someone needs to say how we publish upgrades and patches and even add operations features (metrics, etc.) in a matter that affects how we architect and code.

the idea is not having this methodology invented (or reinvented) on the fly. when we have proper ways of building environments and packages, we reduce the risk of testing a software package that is different than the one we deploy.

this is where we’re entering the realm of environment management: as we define the environment we’re going to test in. there are many of those, and sometimes (hell, most of the time), they are different than what we have in production. so, we also need to understand the differences and their impact.

with great tools like docker and puppet, we can easily define and spin environments for testing (and other purposes that we’ll discuss later). devops skills include:

  • understanding tools.

  • understanding the economics of environments mapping.

  • maintaining a “map” of which environments are available and what they include, as well as which versions are available and how they differ from each other.

from understanding the  methodology and having an environment management capabilities, we can talk about packaging and deployment processes.

the package has arrived

when looking at skills, i separate the packaging from the deployment. the packaging of the software is not just creating deployable packages, services, and components. the packaging skills include more than just automation. because software is so complex, there’s dependency management, understanding what should be a prerequisite in the environment and which version.

in my ancient story, deployment was manual. we produced an installation package that the testers would install on their environment. however, with current distributed software, we’re talking about an automated software package deployed in different environment.

finally, we’re expanding our feedback cycle with more tests.

moar feedback!

unit and integration tests are quick. they require a low threshold of prerequisites in order to run. as we move on to system and end-to-end tests, we need fully prepare environments to run them in. we may need simulators (i.e., service virtualization) to run them, because a real third party may not be available. apart from the functional tests, we can add automated performance tests (like load, availability, recovery, etc.) to get more feedback on the product.

that’s not all. we need to report the results back. usually, red and green are not enough at this point, so we need to allow better data collection and reporting.

just for testing.

still think that these are just “developer” practices? we’re not even at the ops level yet. we’ll pick up next time on delivering to production.

DevOps agile

Published at DZone with permission of Gil Zilberfeld, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • The Future of Cloud Engineering Evolves
  • Kotlin Is More Fun Than Java And This Is a Big Deal
  • The Quest for REST
  • A Complete Guide to AngularJS Testing

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: