Continuous Delivery Essentials : Autonomous Systems

complex_systemAs the complexity of your IT architecture grows, it becomes increasingly difficult to implement a change by changing a single system. The dependencies may even grow so strong, that a single request requires changes in multiple interdependent systems. To make sure that individual changes on different systems will work correctly together, you need to test all new versions of the  systems working together in an integrated acceptance  environment.   After an extensive test period, you need to release all new versions of the systems to production at the same time. The integrated acceptance environment become a bottleneck for the individual teams, as each team wants to  to test there changes in isolation.   It is clear that the complexity of the IT landscape reduces the time to market of changes.

How did this turn out this way and how can this be avoided?

Read more →

functionality is lame, quality rules!

Most of the IT projects focus on delivering functionality. But it’s remarkable that the most applications do not provide any new functionality to the users at all. The functionality that is implemented, was already available.

Let us take a simple example from real life: The telephone. The  telephone provides us with the function of talking to another person. The function already existed before the invention of the telephone: you just had to walk to the person you wanted to talk to and start the conversation. The telephone made it easier because you no longer had to travel before you could start the conversation. The telephone saved you a lot of time and allowed you to increase the frequency of conversations with others.Read more →

Continuous Delivery Essentials: Providing a platform as a service

Any large IT organisation will find that the introduction of agile development teams will increase the pressure on IT operations. The teams often need new capacity  on short notice, but the process of delivering fully configured machines takes several days or even weeks. Teams cannot afford to wait that long. Some teams will resort to using  cloud service providers like Amazon AWS :  These service providers are capable of delivering capacity within minutes after a simple swipe of your credit card.

Why is it that these service providers can deliver in minutes what takes days in your organisation?  And what can you do about it?

Read more →

Separating responsibilities stalls the continuous delivery process

Continuous Delivery is all about removing waste from your software delivery process. One typical form of waste is caused by the separation of responsibilities commonly found in large organisations.

A typical separation of responsibility is normally found between development and operations. This usually means that development is not allowed to install releases into the user acceptance test or production environment. The development team basically depends on the operations department for installing and configuring application. The request can easily take one or two days before it is processed while development is waiting for the work to be scheduled.Read more →

“It is in the log, stupid!”

Browsing through the log files of any production system, you will be amazed on how many messages are logged on the Error level. It is not uncommon to find hundreds to thousands of error messages per day! When you point these out to developers or system administrators, the usual reply I get is: “Oh, that is normal”. Let me tell you: it is not normal. Any diagnostics message that is logged on the Error level, is an indication of a failure in the system. When a error log message references a situation that is not erroneous, that is an error in itself and they may  blind you for any real errors that are logged.

The fun part is that the application log is a very good indicator of the system’s maturity.
Read more →

Continuous Delivery for Enterprise Java Applications

How do you setup a environment that support the continuous deliver of enterprise Java applications? How do you manage the large number of machines that are involved? How do you enable self-service, continuous delivery of applications onto the platform?

In this blog post we will give a description of an open source Java Application Platform as a Service that we created for our customer, using VMware, Redhat Enterprise Linux, Apache WebServer, JBoss Enterprise Application Platform, JBoss Operations Network, Puppet, Deployit,  F5 Load Balancer and  a Layer7 SecureSpan gateway.

Read more →