In Part 9 of this series, we are going to discuss on the Availability Aspect of the Architecture Pillar.

As a reminder, the Architecture Pillar focuses on ensuring that the application is built using modern development techniques to create maintainable, scalable and resilient applications.

Availability Aspect

Traditional applications have extended system downtime to run maintenance and perform batch processing.

Modern applications have limited to no system downtime.  They are engineered to allow portions of the application to be taken offline without impacting the availability of the whole application.  They are engineered to support multiple versions of the application running concurrently. They avoid batch cycles and instead incrementally update the application data throughout the day.

Consumers expect applications to be available at all times.  Prior to the web, there were two categories of consumer systems that had high levels of availability: telephony (dial-tone) and credit card payment (card swipe) systems.  Consumer-driven websites embraced the need to be always-on because every second of downtime equated to lost revenue and diminished customer satisfaction.

It has been difficult for IT departments to offer high availability.  Many internal IT applications are saddled with long downtimes due to extended system maintenance windows and batch cycle times.  They are remnants of the time when employees only worked during business hours within company buildings.  IT departments could carve out large maintenance windows for their internal application maintenance.

Modern applications recognize that the need for accessibility of information on an almost 24×7 basis is driving the need for significantly greater application availability.  Modern applications are shortening if not eliminating maintenance windows to meet this need.  They are transforming daily batch programs into updates that can be run throughout the day and re-engineering their applications so that they can be deployed incrementally.  They are increasing availability of their application in a cost-effective manner by focusing on resiliency of many, low-cost components instead of investing in the reliability of a single, expensive component.

Successful IT Organizations focus on application availability instead of uptime through a combination of application development, infrastructure and release management disciplines.  They are upgrading or replacing systems that cannot support minimal system downtime.  They practice automatically deploying the application to multiple environments prior to going live. To meet this need economically, modern applications must be designed to be resilient.

Join us next week as we wrap up the series when we discuss Engagement.