Building Systems for the Modern World
Our conversation focuses on an innovative concept – the development of antifragile systems. We will focus on methodologies and strategies related to services and products, rather than concentrating on the team or organizational level. While the concept of antifragility extends to teams and corporations, entrepreneurs will gain more by delving into the implications of startup business activities.
The days when a basic website or service could add value to a user are far behind us. Essentially, any business venture, regardless of scale, ultimately transforms into a sophisticated system.
The aspiration of today’s startups to attract a massive user base invariably results in the construction of intricate systems. Nowadays, these systems need to be agile to stay relevant and satisfy the evolving demands of the market.
A complex adaptive system can be defined as an artificial or natural system comprised of various components intricately interconnected.
The critical factor that dictates the need for these components to interact is a central idea. These components need to be capable of responding effectively to significant possible internal or external adverse effects for the system to survive.
Even at this preliminary stage of defining our developmental objectives, we can recognize patterns and notions related to microservices. A microservices architectural approach seems inherently compatible with complex adaptive systems.
We must envision such a system as an integrated function. An individual microservice’s functioning must align with the entire system’s operation. Its standalone performance is less important compared to the adaptiveness and antifragility of the system as a whole. Should it differ, the system should be re-evaluated and reconfigured.
Defining the Scale for Systems Vulnerability
We should strive to comprehend various types of systems within our scope, particularly their ability to respond to external threats.
Fragile
These systems, whether complex or not, are quite common. A fragile system is prone to mishaps, and recovery often implies high costs and lengthy duration.
A startup introducing a new product or service typically starts by constructing a fragile system. They usually adhere to the “happy path” process, displaying limited resilience to challenging situations.
Another characteristic of a fragile state is its deep-rooted dependence on external systems, whether as straightforward as relying on internet connectivity for transactions, information retrieval, or data storage. A simple network disconnection can trigger system malfunction, deteriorating user experience, potential data loss, increased susceptibility to security breaches, and more.
On occasion, startups hastily build such delicate systems to win over investors or to rapidly penetrate the market. This approach can lead to disastrous scenarios where the startup is unable to handle high traffic, ward off security threats, or navigate the legal landscape. A Minimum Viable Product (MVP) often epitomizes this sort of system, especially when built without understanding what an MVP is.
Robust
Sturdy systems are often perceived as a logical response to vulnerable systems. The latter can easily buckle under the strain of threatening events, but the former can withstand and/or absorb them.
The aim becomes to achieve a sturdy system once we’ve managed the foundational growth and crossed the hurdles that come with defining our service or product and launching it for our first set of customers.
At the time of the product launch or as the service starts to gain customer traction, we note how clients interact with it. This tends to differ from our initial design, implementation, or original concept. We make a few tweaks and present a valuable market proposition. At this point, our objective is system stabilization.
Striving for sturdiness is viewed as the ultimate goal and target. We aim to resolve any ongoing issues and any newly discovered ones, hoping for the system to function perfectly at all times.
Antifragile
Consider now a system that we believe is sturdy and can withstand any negative fallout.
The issue here is that regardless of how many potential or actual adversities a system has faced, one can always imagine at least one more scenario where the system may encounter a setback.
Financial capacity defines how long we can keep fixing ongoing and potential issues, identified either by customers or the development team or management.
Capital is not a limitless resource; we often have to evaluate, alleviate, and balance the vulnerability of a sturdy system with the need to inject more resources or make strategic decisions on what issues can be left unaddressed.
As opposed to sturdy systems, an antifragile system improves its performance in dynamic environments by learning from setbacks. In fact, an antifragile system needs to be attacked and compromised to learn and adapt to its environment.
Without the ability to learn from setbacks or without experiencing such events, antifragile systems revert to being fragile and are ill-equipped to handle fluctuating environments.
Evaluation of antifragility is directed at some types of impacts and is best understood as the degree of antifragility towards specific sets of problems.
Characteristics of Antifragile System
How can an antifragile system be differentiated? What key elements constitute its foundation, and how it is designed?
Here are the notable qualities distinct to an antifragile system:
Modularity
Intricate systems necessitate a modular design. A glitch within the system or unusual interaction among its units or with its surrounding environment should not trigger a total system breakdown.
For this to occur, both the hardware and software constituents of the system must have a modular composition. Additionally, the system should be defined by its strong and weak connections, indicative of dependencies. Weak links guarantee that alterations in one component don’t necessarily induce changes in others.
Weak Links
Weak links function similar to their namesake electrical safety devices, controlling a potential spread of failures or anomalies across the whole system. They enhance system durability by confining negative impacts to a singular module.
During the planning process, it is critical to identify the connections among modules and to spotlight those with a higher degree of connection. Subsequently, efforts should be made to minimize dependencies in order to create more autonomous modules.
Redundancy
According to Nassim Nicholas Taleb,
Nassim Nicholas Taleb emphasizes that redundancy is an innate trait of antifragile systems. For these systems, their main priority is not efficiency.
Built to withstand and even flourish in unpredictable and random environments, antifragile systems are likely to demonstrate apparent ‘inefficiencies’ due primarily to their multilayered redundancies.
In simpler terms, make room for the operation of multiple copies of components across varied hardware infrastructures. This principle is expanded by integrating a demand for diversity.
Diversity
To put it succinctly, avoid relying excessively on a single technological platform, be it hardware or software.
To ensure a system’s longevity amidst external influences, it should offer nearly identical duplication of its functionalities. The establishment of such systems involves integrating diverse methods, structures, and platforms. An antifragile system must continue to progress towards redundancy and variety. A heterogeneous structure enables the system to minimize the possibilities of multiple components failing at the same time due to a single event. A truly robust system, which is resistant to cascading failures, must not only be diversified but also redundant. Single or multiple components operating on the same platform remain vulnerable.
Fail Fast
Adaptable systems, produced to withstand unfavorable circumstances, should foster a learning and ‘bounce-back-ready environment’.
The most detrimental situation for such a system would be to announce recovery necessities just as resources or dependencies are on the brink of exhaustion. This delayed intervention could potentially jeopardize the whole system, attributing to its lenient policies regarding resource consumption.
Take, for example, a software component that gradually increases memory use, depletes connection pools, or persistently over-utilizes the CPU.
If the system allows these internal predicaments to prevail, it might lose its recovery ability, hindered by complete resource use and the absence of recovery resources.
The ‘fail fast’ strategy is a smart approach that preserves sufficient resources for recovery functions, state retainment, and enhancing an adaptive system’s learning mechanisms.
Conclusion
Antifragile systems introduce an intriguing design concept and method worth investigating and enacting, particularly during the development phase of a new system — a frequent situation in startup creation.
Though not an effortless or budget-compatible proposition, it’s a sound strategy for developing adaptable systems.
Presently, the methodology of microservices design boosts the feasibility of creating nearly antifragile systems.
This endeavor will encompass dependency reduction, provision for multiple instances with similar functionalities, incorporation of alike functionalities on various platforms (e.g., both Azure and AWS, rather than one or the other), and configuring such systems for early alerts and rapid failures.
This seems a plausible architectural strategy, attainable employing current microservices approach. To further evolve truly adaptive (and antifragile) systems, the integration of machine learning for system management might be required.
0 Comments