Patches, we don't need no stinking patches

Are your packages up to date?

If you write software with open source tools you have a number of hidden, or even not so hidden dependencies on what you develop. 

Scala (programming language)
Scala (programming language) (Photo credit: Wikipedia)
The power of Spark, Scala, Java, R, Python, and Perl is generally in the packages and libraries that provide functionality.

These packages and libraries are more robust than just sample code.

They are made up of code, and sometimes even data examples that implement a particular algorithm or method to solve a particular problem.

It is generally a best practice to stay current with the version of a particular package that your code may be reliant on. This, at times requires your coders to update their code to reflect changes in the released packages.

As it so happens some of these packages, in turn, have requirements for particular packages that may need to be installed on the server, at the operating system level, where this code needs to run.

When there is a potential for conflict between two things that may need a similar package requirement, the most effective pattern I have seen recently is to separate the dependencies to run on individual machines.

The rise of virtual machines for code separation makes it easier to implement these things.

By using a virtual machine, the process of creating a niche environment for a specific process to run without conflicting with another process can be automated. Tools such as puppet, and Chef ease this process.

This automation, returning to my earlier point, becomes very straightforward if everyone uses the most current packages, libraries and dependencies.

This may seem obvious, and pointless to actually write this down.

However, I have worked at and been a consultant in more than one production environment where more effort was applied to maintaining old functionality than simply updating dependencies and  code to reflect the most current releases of dependent libraries.

There is a cost to this.

The cost of missed opportunities.

By  spending so much time "patching" your code to reflect older functionality, you are missing new opportunities to meet the needs of your customers.

How current are you?

No comments:

Post a Comment