It is an overwhelmingly recognized fact that businesses across the globe can easily attain the elusive goal of reliability by putting highly reliable IT systems in place, as IT is the most direct and greatest business-enabler. However, producing reliable IT systems is beset with a number of challenges and concerns, since IT complexity is consistently on the rise due to the heightened heterogeneity and the growing multiplicity of various information technologies and tools. There have been various approaches, best practices, optimization techniques, patterns, and algorithms recommended by subject matter experts (SMEs) and accomplished architects for consistently moderating IT complexity and for producing reliable IT systems in plenty. Resiliency and elasticity are the top two ingredients for having reliable systems. In other words, business workloads and IT services have to be elegantly resilient and elastic to be reliable in their operations, offerings...
You're reading from Practical Site Reliability Engineering
Microservices are API-enabled, self-contained, loosely coupled, and fine-grained services. MSA represents a high-level architectural style for composing microservices-centric enterprise-grade applications. MSA is a direct and distinct off-shoot of the service oriented architecture (SOA) paradigm to surmount the various SOA drawbacks. Luminaries and pundits, based on their vast experiences with service-oriented enterprise, embedded, and cloud applications, have brought in this new paradigm, which is rapidly sweeping the whole IT industry. MSA brings forth a number of unique business technologies and user benefits. Business systems are greatly empowered to be flexible and extensible through the incorporation of the various MSA characteristics. MSA are typically business-centric to realize next-generation business applications in a configurable, customizable, and composable manner. MSA ultimately provides the relevant capability for the swift and risk-free...
A resilient application keeps processing data and doing transactions, even when one or more components of the application fail due to an internal or external reason. That is, when a software system is under attack, the system has to find a way out to survive or to come back to the original state quickly. Therefore, it is imperative that every complicated and mission-critical system has to be designed, developed, and deployed using the most applicable resiliency properties. In other words, a system that is not designed with resiliency as the core feature is bound to fail at some point. For the forthcoming IoT, blockchain, and AI-enabled digital transformation and intelligence era, resilient IT infrastructures, platforms, and software applications are the most important ingredients to attain the intended and envisaged success. Let's digress a bit and discuss why this is so.
Highly distributed environments pose new challenges—centralized computing...
Resiliency patterns are good to a certain extent in providing the required resiliency. In this section, we will be focusing on the various aspects of establishing and enforcing the mandated resiliency.
With the faster proliferation of mobile, wearable, portable, nomadic, wireless, and various other I/O devices, the users are demanding ubiquitous access to various applications, services, data sources, and content. For realizing sophisticated applications, not only the pervasive access but also the easy and quick leverage of data and services is essential. That means software applications and services ought to be made available all the time. Even if there is an attack on one or more services, the system has to continuously function by tolerating all kinds of faults, failures, and mishaps. If the application is under a heavy load, then the system has to scale up or out accordingly to respond...
IT reliability contributes immensely to business reliability. IT reliability is being achieved through resilient and elastic IT systems (both software and hardware). With the quicker adoption of microservices architecture, the realization of resilient and elastic software systems is being made easy. Microservices are being touted as the best-in-class application building block, and hence there are enabling patterns for microservices development, deployment, integration, and operations.
In the next chapter, we will focus on DevOps under Site Reliability Engineering (SRE), since as automation and DevOps play a big role in the SRE journey.