Challenges And Opportunities In Emerging Software Architectures

Prof. Raghu Reddy lists out the current challenges in designing software architecture, talks about IIITH’s Software Engineering and Research Centre current focus and gives a sneak peek into the future. Here’s a summarized version based on his talk at the TechForward seminar series.

To better understand the importance of software architecture, let’s first look at its evolution which spans across five ages. As per an article published in IEEE software, in the pre-1980s, the focus was primarily on monolithic systems. During the 1980s and 1990s, we began to explore distributed monolithic systems that offered multiple architectural views for different types of stakeholders. It was during this period that the concept of diverse architectural styles emerged, leading to the adoption of 3-tier architecture, client-server models, and more. This was also the time when consideration of how to assess the implementation of an architecture began. No longer was there just a single vendor catering to a small set of programs; instead, entire platforms had to be distributed. The complexity increased in the 1990s with the onset of the internet-connected age, where systems were always ‘on’ and connected. This necessitated quality considerations like scalability, performance, security, etc. It was around this time, Dewayne Perry and Alexander Wolf published a seminal paper on the foundations of software architecture. This work remains one of the most cited resources and helped to formalize software architecture as a discipline and provided a basis for future research and development in this area.

In the 2000s and 2010s, as internet-native applications (applications specifically built for the internet rather than simply hosted with its assistance) became commonplace, the focus shifted to building systems that were fast and reliable. Additionally, there was a strong intent to minimize technical debt for companies. As a result, software architecture evolved to become more agile. This evolution is ongoing due to the continuous emergence of new technologies. For instance, with the emergence of IoT, we are moving towards architecting connected devices. We have AR/VR, Edge, 4G/5G, Quantum, 3D printing, Bionics, and other emerging technologies. This necessitates a shift towards an architecture-first approach, to effectively address the challenges posed by these emerging technologies.

Current Architectural Problems
Some of the typical challenges encountered include latency, throughput, and access to information. For example, using AR/VR and IoT for digital twins requires an active feedback loop, as the analysis performed must feed back into the system. Similarly, when discussing the transition from cloud to edge computing to place data closer to the devices we use, the architecture for edge devices necessitates reduced response times. We are effectively moving towards a data-centric architecture.

To illustrate the importance of data-centric architecture, consider an online search for a passenger car that weighs less than 2000 kg and costs less than 20 lakhs. As it can be seen via a simple google search, the results conveniently ignored the weight component of my query, focusing solely on the cost of cars that met one of my specifications but not the exact information that was requested. This highlights the need for a fundamental shift towards decoupling data from applications. In other words, code related to data should not be embedded within the application; instead, it should be easily extractable. We encounter similar situations in enterprises, where typical applications have separate data models. Enterprises may possess thousands of applications, many of which operate in silos, integrating data through data warehouses, data lakes, point-to-point interfaces, and APIs. The goal is to transition from an application-centric architecture to a data-centric architecture, where an enterprise knowledge graph (EKG) is utilized by multiple applications. This shift implies that instead of having one model per application, we will likely have one core model for the entire enterprise.

Pluses Of Data-Centric Architecture
The advantages of a data-centric architecture are numerous. One key benefit is that it can prevent data silos by aggregating fragmented data into an enterprise knowledge graph, which in turn becomes shared knowledge for the entire organization. Second, it is sensitive to data quality issues due to automated quality assessments. Additional benefits include its ability to handle unstructured data, flexibility in adapting to business changes, enhanced user interaction through dynamic query mechanisms and the use of natural language, proactive predictive capabilities, and contextual awareness that enables it to adapt to change.

Challenges
As software architects, we must however consider functionality, the quality of data, the ML model itself, and infrastructure, each of which presents its own challenges. For instance, when dealing with data, the sheer volume can be overwhelming, prompting questions about which features to focus on. This, in turn, affects the parameters involved; the more parameters there are, the larger the model being trained and built becomes. This complexity has significant implications for the architecture of the entire system, as it necessitates consideration of maintenance complexity, versioning of the models, and more.

Model Drift And Navigating It
Since data is in a constant state of flux, ML models are also continuously evolving, leading to shifts in the statistical properties of the target variables. This phenomenon, known as model drift, is something software architects need to consider as they adopt strategies to address it. Tools that can assist with managing model drift include monitoring suites like Prometheus and Grafana for real-time performance tracking, as well as automated feedback loops using Kubeflow. To understand why addressing this is crucial, especially in the age of Edge computing, let’s consider a simple example: a type of lane assist system, commonly known to many as Advanced Driver-Assistance System (ADAS). As an architect, one must ponder where the intelligence that detects the lanes resides. Is it embedded in the device in the car, on the phone, or elsewhere? If the intelligence resides in a small device, the architect needs to think about model compression, how small should the model be, stability of communication – especially since it will rely on the internet, and qualities like security (to prevent hacking into the device).

This is where hybrid architecture comes into play, a mix of cloud and edge. There could be different types of architectures: for example, the system could be entirely centralized, entirely decentralized, or a combination of the two. An architect has to be able to make a decision on

how to train the data, when to re-train, etc to ensure the system is performing as per expectations. However, it’s been noticed in many intelligent systems that as intelligence grows, systems become increasingly uncertain. This uncertainty includes resource variability, data drift, concept drift, quality of service uncertainty, environmental uncertainty, etc. The architect’s role becomes extremely important in this world where systems need to continuously adapt to these uncertainties.

Designing Self-Adaptive Systems
One of the architectural solutions gaining popularity is the concept of self-adaptive architectures. The framework associated with this is the MAPE-K framework (Monitor, Analyze, Plan, Execute, and Knowledge), which is used to develop self-adaptive systems that can dynamically respond to changes in the environment. The MAPE-K loop also facilitates real-time adjustments in model parameters or architecture based on objectives. At IIITH, SERC faculty and students have been focusing on sustainability as an objective in designing software architecture. Some private organizations have shown interest in partnering to achieve green software goals by analyzing energy usage consumption data from various devices, such as IoT devices and sensors. This collaboration aims to build models that help us understand whether consumption is at peak load or reduced load. As a result, organizations can set thresholds and decide whether to maintain those levels or adapt accordingly. Some part of the research related to this is based on a paper presented at the 21st IEEE ICSA conference held at IIIT Hyderabad in June 2024. There is a good amount of research work being done in this area. Researchers have identified some of the tactics that one can follow for sustainability of ML-enabled systems that include applying sampling techniques for data-centric systems, using quantization aware training for model training, considering federated learning for deployment and so on.

Conclusion
The future of software architecture in the wake of data-centricity is that we are probably going to see more of adaptable design, more operational expenditure, one that is more probabilistic, more of no code, low code platforms, more of MEC, and Cloud-Edge hybrid continuums.

This article was initially published in the December edition of TechForward Dispatch 

Prof. Raghu Reddy is Associate Professor and Head, Software Engineering Research Centre, IIITH. His primary research interests are in the design and construction of complex software systems, human computer interaction and AR/VR.

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Leave a Reply

Your email address will not be published. Required fields are marked *

Next post