Continuous Delivery and DevOps:A Quickstart Guide
上QQ阅读APP看书,第一时间看更新

ACME systems evolution phase 2.0

The business has grown in both size and turnover. The customer base is now global and the ACME software platform is being used by millions of customers on a daily basis. ACME systems as a business is well-established, well-renowned, and recognized as being at the forefront in their area of expertise. However, the level of growth and investment has had an impact on profitswhich are still pretty much non-existent.

The board of ACME systems are approached by a larger competitor with an acquisition offer. The board and investors feel this makes good commercial sense and that this will help stabilize the business for the future so the sale is agreed. On the whole, everyone is happy with the deal and most see this as positive recognition that they have at last reached the big time.

At first everything is goodeverything is great, in fact. The ACME systems team now has the backing it needs to invest in the business and be able to scale out and obtain a truly global reach. It can also focus on the important things, such as building quality software, scaling out the software platform, investing in new technologies, tools, and R&D. The drier side of businessadministration, program and project management, sales, marketing, and so oncan be passed to the new parent company that has all of this in place already.

The ACME engineering team moves forward in excited anticipation. The level of investment is such that the software engineering team doubles in size in a number of months. The R&D teamas it's now calledintroduces new development tools and processes to enable the speedy delivery of quality software. Agile is adopted across the R&D team, and the opportunity to fully exploit engineering best practices is realized. The original ACME platform starts to creak and is showing its age, so further investment is provided to re-architect and rewrite the software platform using the latest architectural approaches and technologies. In short, the R&D team feels that it's all starting to come together and it has the opportunity to do things right.

In parallel to this, the ACME engineering team members who looked after the production environments are absorbed into the parent's global operations organization. On the face of it, this seems a very good idea; there are datacenters filled with cutting-edge kit, cloud capabilities, global network capabilities, and scalable infrastructure. Everything that is needed to host and run the ACME platform is there. Like the R&D team, the operations team has more than they could have dreamed of. In addition to the tin and string, the operations team also has resources available to help maintain quality, control change to the platform, and ensure the platform is stable and available 24 x 7.

Sitting above all of this, the parent company also has well-established governance, and program—and project-management functions to control and coordinate the overall end-to-end product delivery schedule and process.

On the face of it, everything seems rosy and the teams are working more effectively than ever. At first, this is true, but very soon things start to take a downward turn. Under the surface, things are not all that rosy:

  • It is getting increasingly difficult to deliver software—what took days now takes weeks or even months
  • Releases are getting overly complex and larger as the new ACME platform rapidly grows and more features are added and changes are made
  • Despite the advances in re-architecting the ACME platform, there still remain large sections of buggy legacy code deep within the bowels of the system, which refuses to die
  • The R&D team members are now so far removed from the production environment that they are ignorant as to how the software they are writing functions or performs, once it eventually goes live
  • The operations team members are now so far removed from the development process that they are ignorant to what's being delivered and how it's being developed
  • There are many corporate hoops to jump through and process hurdles to overcome before software changes can go anywhere near the production servers
  • Quality is starting to suffer as last-minute changes and frantic bug fixes are being applied to fit into release cycles
  • Technical debt amassed during the fast and loose days is starting to cause major issues
  • More and more R&D resources are being applied to assist in releases, which is impacting the development of new features
  • Deployments are causing prolonged production downtime—both planned and unplanned
  • Deadlines are being missed, stakeholders are being let down, and trust is being eroded
  • The once-glowing reputation is being tarnished

The main problem here, however, is that this attrition has been happening very slowly over a number of months and not everyone has noticedthey're all too busy trying to deliver.

Let's now revisit the process flow for delivering software and see what's changed since last we lookedit's not a pretty picture.