Software Quality

December 10, 2016

Who cares about DevOps practices?

Filed under: Uncategorized — David Allen @ 12:33 pm

I’m preparing for a talk in January on the benefits of DevOps. In preparing for a talk, I always start with the prime directive for presentations: “Know your audience.”  In this case, my target audience is a diverse group of IT professionals.  So I was wondering whether DevOps practices would be relevant to all of them. I asked myself the question “Who is directly affected by DevOps practices?”

Who is affected by DevOps? It depends on what your role is. DevOps is about improving the delivery of software and streamlining subsequent operations. The DevOps Handbook provides a tremendous overview of DevOps ideas and real-world case studies of companies implementing DevOps practices.

One of the underlying principles of DevOps is the lean concept of favoring global optimization over local optimization. In other words, we want to choose solutions whose total cost of ownership and total benefit are optimum over the entire life-cycle of the solution rather than just favoring one part of the life-cycle. For example you could build a software solution cheaply, but it might be very expensive to maintain. Or you might favor a SaaS solution because you can get started quickly, but it may be dramatically more expensive than a custom-built solution over its lifetime. Those are just two examples that illustrate how you can make a bad decision if you focus on only one aspect of the solutions costs or benefits in making a decision. You have to look at the big picture.  Those lean concepts of global optimization trace their roots to the theory of constraints, authoried by Dr. Eliyahu Goldratt, and other systems thinking approaches (see http://watersfoundation.org). You can research those topics if you want more depth.  For a more tactical answer, here is my list of people who are directly affected by DevOps.

Those who most benefit from studying DevOps practices are those who are responsible for designing, building, and delivering custom software.  These are people with titles like programmer, web developer, business analyst, QA tester, configuration management engineer, Scrum Master, project manager, and more.

For those who work with packaged solutions or SaaS solutions, if those packages or services routinely require customization and deployment of changes, then DevOps practices are also valuable. In fact, some SaaS solution providers like Salesforce.com have project management and deployment tooling built into their platform to support agile project management and automated delivery in the manner we aspire to with DevOps practices.

Even people who are responsible for delivering solutions like client workstations may find some benefit in a study of DevOps practices. Harkening back to our earlier philosophical remarks about global optimization, our ambition is more than simply finding solutions that are cheap to purchase. We want solutions that are cheap to purchase and install and operate over their entire life-cycle. For those who support client workstations like desktop or laptop computers, they are responsible for far more than simply buying the cheapest piece of equipment . The operational side of the workstation involves processes like patching the operating system, monitoring and protecting the system from malware, and deploying approved software. Again, one of the lessons of the DevOps movement is that we have done ourselves a disservice by working in silos and trying to optimize our individual areas. By failing to look at the big picture, and failing to consider the total cost and benefits of ownership over the lifecycle of the solution, we may not be providing the best solutions for our customers.

To reinforce this point, there has recently emerged an entire class of software development tools intended to help accelerate the development and delivery of software. These are called low-code platforms, and examples include Mendix and Outsystems among others. Their development platforms wrap a number of development and delivery capabilities into the solution and they aspire to the DevOps practices in order to streamline not just the creation of software but its ultimate delivery into subsequent environments and the testing and approval necessary to ensure that it gets into production safely and quickly.

So anyone who delivers software at any point in the life-cycle of a solution, where it is a software-only solution, or a solution with a software component, should understand at least the basics of modern DevOps theories.

 

April 18, 2016

The Pace of Change – How we Cope

Filed under: Uncategorized — David Allen @ 3:53 pm

New technologies arise so quickly that it is hard to achieve mastery in one before it is made obsolete.

So Knockout, Backbone, Angular, Aurelia?

And Azure released several new services into Preview in this month, while several that had been in preview were moved to General Availability. I can barely keep up with reading about the new services, let alone conduct experiments with the new features.

It has never been more true that if you are hiring purely to find someone who matches your checklist of technologies in use, you are missing something. As an experienced hiring manager, I suggest that candidates for advanced positions need experience in the core technology, and some version of front end/back end or whatever.

But you want people who are willing and able to learn new things. Their history is merely an indication of their aptitude and attitude.

Developers naturally get attached to technologies they’ve invested in. There is no good rule for when to stay with something and when to move on.

This is a fun field for someone who loves learning and relishes change. But it can be exhausting. And at some point, we must adopt a strategy to survive or we will all become shepherds and beekeepers.

 

 

 

March 27, 2016

Transient Fault Handling is easy with Polly

Filed under: Uncategorized — David Allen @ 1:07 pm

If you deal with real-world systems, and you value availability, you will want a strategy for handling transient faults. As we move to a greater reliance on services and microservices, we have a greater responsibility to consider such strategies to maintain adequate availability of our solutions.

There are several frameworks out there to help with this in .Net. But the one I like best is Polly.

https://github.com/App-vNext/Polly

Scott Hansleman did a great post on it.

I like it because the syntax is very clean and intentional.

You can choose another framework, or roll your own. But you can’t ignore this without leaving your users vulnerable to outages. If the outages are limited in time and occasional, why not just RETRY?

 

 

 

March 23, 2016

New Service Fabric Case Study

Filed under: Azure, Uncategorized — Tags: — David Allen @ 7:22 am

The Azure Service Fabric Team Blog has a new case study of a customer using Service Fabric: https://blogs.msdn.microsoft.com/azureservicefabric/2016/03/15/service-fabric-customer-profile-talktalk-tv/. It provides great detail on the application architecture and the advantages of Service Fabric that are leveraged, but it speaks less about the organizational transformation that was involved. (more…)

December 28, 2015

E-Mail Templates ease development

Filed under: Azure — David Allen @ 12:33 pm

I already respected SendGrid’s e-mail service. We use it for our Azure-hosted web solutions. They now have a template service, which makes development of attractive or complex emails even easier than ever.   (more…)

June 26, 2015

TFS Build 2015 – Using the new build definition

Filed under: Uncategorized — David Allen @ 5:04 pm

This article records step-by-step how to create a new build definition using TFS Build 2015, and publish a website to a Microsoft Azure Web Site from an on-premises build agent. It also describes how to create custom build pools.

TFBuild 2015 is a huge transformation in how we use TFS to build solutions. It integrates with Visual Studio Online. But it also supports your favorite build tools like Ant, Maven, MSBuild and many more. It also supports a variety of scripting languages like DOS, PowerShell, bash Shell Script. This is a powerful testimony to Microsoft’s efforts to embrace cross-platform tools. You can read an Overview of Team Foundation Build 2015 at https://msdn.microsoft.com/Library/vs/alm/Build/feature-overview.
“How did I find out about this?” I was wandering around my local Visual Studio 2015 RC desktop, when I noticed two different types of builds. I saw “Build Definitions” and “XAML Build Definitions” and wondered what the difference was. I created a new Build Definition, and was transported to my VSO (Visual Studio Online) build tab, where they had a message

“We’ve built a new, scriptable build system that’s web-based and cross-platform. See vsopreview for documentation.”

So I clicked the vsopreview link and read about the wonders of this new build technology. Let’s create a build definition that will publish a website to Microsoft Azure. (more…)

Older Posts »

Blog at WordPress.com.