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
Partner Zones AWS Cloud
by AWS Developer Relations
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
Partner Zones
AWS Cloud
by AWS Developer Relations
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. DevOps and CI/CD
  4. Evolving Understanding of Delivery

Evolving Understanding of Delivery

As the cloud is integrated more heavily and adopted more widely, emerging processes are being introduced to address emerging issues.

Rod Johnson user avatar by
Rod Johnson
·
Mar. 25, 19 · Analysis
Like (1)
Save
Tweet
Share
7.14K Views

Join the DZone community and get the full member experience.

Join For Free

Two new terms have recently emerged around software delivery: Software-Defined Delivery and Progressive Delivery. Why? How do they relate to Continuous Delivery?

Several forces today make delivery increasingly complex. Notably, the proliferation of repositories, with hundreds of small projects replacing a handful of monoliths; a desire for greater automation to realize the full potential of CD across multiple environments; the rise of feature flagging; and increased evidence (such as the Equifax debacle) of the need to bake security into the delivery process.

James Governor of RedMonk recently coined the term Progressive Delivery to capture some of these new needs:

I have been waiting for a term to emerge to describe a new basket of skills and technologies concerned with modern software development, testing, and deployment. I am thinking of Canarying, Feature Flags, A/B testing at scale.

James is clear in acknowledging the critical prior art of Continuous Delivery: "CI/CD is the basis of everything good in modern software development." Progressive Delivery refers to a set of newish problems and practices within Continuous Delivery.

In contrast, Software-Defined Delivery (SDD) refers to an approach to solving these and other problems. How do we meet such new delivery demands? How can we iterate quickly to find the best solution for our team?

The core idea of SDD is simple: "Delivery infrastructure is now programmable, and we will program it." Why should we continue to hack delivery pipelines out of YAML and Bash — a tactical solution to a strategic problem? Instead, we should approach delivery like any other engineering problem, applying our core skills and tools.

SDD recognizes that delivery should be:

  • Core: Delivery code is production code.
  • Engineered: In robust, testable code, just like our applications.
  • Collaborative: As people are part of the process and knowledge sharing is critical to success.
  • Accelerated: Through increased automation and reuse of components.

Together, these point to an extensible platform that can automate more than delivery. Anything we do repeatedly deserves to be automated. Instead of merely getting to fill in the blanks by configuring a CI application, we want to use our engineering skills and creativity against a rich model. A recent tweet by Atomist's Jessica Kerr highlights the benefits of using modern programming languages:

Ants have evolved to collaborate very successfully at exactly one thing. Humans, with language, can collaborate at whatever we choose, different in each situation. Existing CI/CD solutions are great at helping you do one thing, follow one pattern. Teams, with a modern programming language, can collaborate in any way we choose, customized to our needs.

Progressive Delivery and Software-Defined Delivery are complementary. Progressive Delivery describes needs that are becoming increasingly important in cloud-native applications; SDD is necessary to meet these and other needs, and be able to continuously improve our continuous delivery.

Delivery is an engineering problem. By bringing our best engineering skills and practices to delivery, we can rise to new challenges as they appear, just as we overcome new business problems.
Delivery (commerce)

Published at DZone with permission of Rod Johnson, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • How To Set Up and Run Cypress Test Cases in CI/CD TeamCity
  • mTLS Everywere
  • Microservices 101: Transactional Outbox and Inbox
  • AWS CodeCommit and GitKraken Basics: Essential Skills for Every Developer

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: