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
The Latest "Software Integration: The Intersection of APIs, Microservices, and Cloud-Based Systems" Trend Report
Get the report
  1. DZone
  2. Software Design and Architecture
  3. Microservices
  4. DevOps and Testing Software Architecture

DevOps and Testing Software Architecture

Learn how DevOps enables continuous testing of software architecture for faster, higher-quality releases.

Sean Barow user avatar by
Sean Barow
·
Oct. 03, 18 · Opinion
Like (1)
Save
Tweet
Share
6.80K Views

Join the DZone community and get the full member experience.

Join For Free

Forbes Magazine famously wrote that “Every Company is a Software Company.” Your company must become more responsive and agile using software and technology. And if the software doesn’t work or gives customers a bad experience, it can lead to lost revenue. This has led to the DevOps phenomenon, which is speeding up the deployment of software and, consequently, the speed of software development.

Because the speed of software development is getting so fast it is imperative to manage and improve your software architecture to keep up with the speed of development. So the issue becomes how to make sure the architecture doesn’t erode over time. Or to put it another way: how can I freely make changes to architecture over time? These are common questions for software architects. Neil Ford, software architect at ThoughtWorks, states:

“You can build architectures that evolve, it doesn’t take a Herculean amount of effort. In fact, you can incrementally start applying these ideas [continuous architectural testing] to your existing architecture.”

Using DevOps to Continuously Test Software Architecture

The increasing usage of DevOps/Continuous Delivery pipelines makes it easier to improve (or evolve) your software architecture. You can test the architecture regularly every time you make changes to the code. This eliminates the worry about architectural erosion in your software.

In a DevOps pipeline, you need design rules, metrics, and tests (like Netflix chaos monkey) that continuously monitor the health of the software architecture. As Neil Ford said above, you build and use these mechanisms over time and then run them on a continual basis as you make changes to the architecture. You know immediately if your architecture is degrading (i.e. losing important architectural characteristics like scalability, security, and performance). You can fix it now instead of finding out in six months to a year when it may be too late. This safeguards your architecture and creates a protective layer around your software as it evolves.

By running the pipeline all the time, developers know if their particular architecture is doing what it is supposed to be doing. This forces every developer to think about architectural characteristics like scalability, security, and performance. If they don’t, the DevOps pipeline will immediately flag their software as a problem. DevOps architectural testing allows you to set architectural guidelines requiring that developers write code to the original architectural specification or it is not going to make it through the pipeline.

One of the architectural trends that helps with this is microservices. A microservices architecture facilitates smaller iterative changes to the architecture because of its smaller iterative deployment.

To improve the speed of deployment and get an architecture ready for DevOps, you should improve and increase the modularity of your existing software. This will allow you to break big chunks of software into smaller chunks. To do that, you need to have a clear picture of the component and modular relationships inside your codebase. This will allow you to improve the modularity of your software system. Visualization tools show you how coupled software components are to one another. This indicates how modular your system is and how easy it will be to split into smaller services.

You can also see how cohesive the application is. Many times applications degrade to low-cohesion and become a big ball of mud with no discernable architecture structure at all. Tightly coupled modules have been shown to lead to longer release cycles. Software should be designed for testing and deployability, which means architecting the software so it is loosely-coupled and well-encapsulated.

Summary

Architects typically worry about architectural characteristics like scalability, security, and performance. In the DevOps/Continuous Delivery world, these worries can be handled by verifying that the characteristics are not eroding over time. Continuously testing your architecture in a DevOps pipeline might seem like a huge effort but it can be done in an incremental fashion. This will allow you to stop architectural erosion. You will be able to pivot when the business needs you to make changes to the architecture without having to engage in a huge refactoring effort.

If you are interested in learning more about Lattix Architect or seeing a demonstration, click here.

Software development Architecture Software architecture DevOps

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Introduction to Spring Cloud Kubernetes
  • Solving the Kubernetes Security Puzzle
  • Full Lifecycle API Management Is Dead
  • Building Microservice in Golang

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: