Architecture and Design Trends Report 2024

03 Oct 2024 (3 months ago)
Architecture and Design Trends Report 2024

RavenDB and Conference Overviews

  • Raven DB indexes are compiled ahead of time, making queries up to 3,000 times faster at runtime, and it supports distributed transactions, real-time data, and ETL for Kafka and SQL Server (7s).
  • The 10th uncover conference will feature senior practitioners discussing emerging trends and best practices across topics like AI, software architectures, generative AI, platform engineering, and modern software security (28s).
  • The QCon London conference will include a track on connecting systems, with speakers discussing APIs, protocols, and observability, and more information can be found at qconlondon.com (44s).
  • The InfoQ podcast is discussing current trends in software architecture and design for 2024, with a panel consisting of InfoQ editors Ron Steeler, Rafal Gonars, Daniel Bryant, and special guest Blanca Garcia Gil (57s).
  • Ron Steeler is a principal software architect at Luxury Escapes and an InfoQ editor on architecture and design, with 20 years of experience in the field (1m17s).
  • Rafal Gonars is a principal engineer at Starbucks and a relatively new InfoQ editor, having joined the group last year (1m33s).
  • Daniel Bryant is an independent tech consultant, longtime architect, part-time platform engineer, and bit of Dev, who also manages the news at InfoQ (1m55s).
  • Blanca Garcia Gil is an independent data consultant with a background in software and data engineering, and a programming committee member for QCon London (2m10s).

InfoQ Editors and Contributors

  • Thomas Betts is a principal architect at Blackb, the largest software provider for the social good community, and the lead editor at InfoQ for architecture and design (2m24s).
  • The discussion is part of the 2024 Architecture and Design Trends report, which provides a high-level overview of topics that InfoQ readers should be paying attention to that year (2m47s).
  • The report helps the editorial team focus on innovative technologies across all content on InfoQ, and this conversation is just one part of the report (2m51s).

Data-Driven Architectures

  • The discussion will start with data-driven architectures, as they have become increasingly important for architects to consider when designing systems (3m17s).
  • Data is affecting architecture decisions, and architects need to consider various aspects such as machine learning models, analytic models, and big data when making these decisions (3m35s).
  • In the past, data systems were handled separately in organizations, but now architects are thinking more about the data points going through pipelines and microservices, and considering factors such as data security, quality, and downstream consumption (4m17s).
  • Architects are now responsible for handling concerns that used to be handled by separate teams or systems, and there is an expectation for data to be of a certain standard to make good decisions (4m47s).
  • There is also an expectation for systems that hold data for business consumption to be resilient and always available, which was not as important in the past (5m9s).
  • The fact that data is now part of the main workflow and pipeline has led to a shift in priorities, with a focus on instantaneous and always-on systems (5m23s).
  • There is a trend towards more emphasis on data architectures that support machine learning workflows, including training, serving, and model versioning (5m53s).
  • Architects need to be aware of various architectural qualities, including composition, resiliency, observability, and performance, when designing systems that support machine learning workflows (6m22s).
  • Architects need to have knowledge of various tools and concepts, such as data lakes, data warehouses, ETL tools, and data quality tools, and integrate them into their systems (6m38s).
  • It is essential for architects to be aware of data architecture and integrate it into their systems, even if they do not deal with it directly in their day-to-day work (7m1s).
  • Architecture and design trends are shifting to focus on data, with a growing need to address the quality and reliability of data in systems, as well as its integration into primary workflows, requiring architects to be concerned with a broader range of quality attributes (8m20s).
  • Architects are struggling with data architecture, which is still in the process of maturing, unlike software architecture, which has been more established, with data quality and reliability being key challenges (8m11s).

Large Language Models (LLMs) in Architecture

  • The use of event-driven architecture and ETA pipelines are being considered to address data integration challenges, with each approach having its pros and cons (7m20s).
  • Large language models (LLMs) are becoming increasingly relevant to architecture, with potential applications in generating new functionality and building components, but also requiring the collection of data for training and serving models (9m31s).
  • The integration of AI-enabled components into architectures is expected to increase, with architects needing to consider the implications of these technologies on their designs (10m8s).
  • Architects need to be aware of the maturity level of the systems they are working on, identifying areas that require improvement and addressing challenges such as data quality and reliability (8m4s).
  • The trend report highlights the biggest challenge as identifying the thing being worked on and its maturity level, with architects needing to consider the varying degrees of maturity across different aspects of their systems (8m1s).
  • William Gibson's quote "the future is already here, it's just unevenly distributed" is referenced, suggesting that architecture is already present in various forms, but its distribution and maturity vary across different areas (7m39s).
  • Architects are required to have a broader range of knowledge, including data architecture, AI, and ML, to effectively design and integrate systems (8m57s).
  • The architecture of Focus will play a significant role in productionizing emerging technologies, and organizations, engineers, and architects must understand their possibilities and limitations (10m27s).
  • Companies are expected to develop custom Large Language Models (LLMs) to solve specific problems, leveraging open-source frameworks and low-friction training methods (10m43s).
  • Custom LLMs will be used to train on specific data, enabling tailored solutions, such as document history analysis and PDF retrieval, as seen in Microsoft Co-Pilot and other similar tools (11m8s).
  • LLMs will become another tool for architects to use in system design, but not a replacement for human architects, who will continue to make decisions and practice architecture (11m37s).
  • Architects will use LLMs as a "rubber duck" to bounce ideas, ask questions, and validate designs, rather than relying solely on AI for design decisions (11m53s).
  • The discussion around AI replacing developers has subsided, with the understanding that AI is a tool, like Microsoft's Co-Pilot, that assists but does not replace human professionals (12m14s).
  • AI can aid in writing code, such as bash scripts, and can perform 90% of the job, with humans refining and fixing the remaining 10% (12m30s).
  • AI can also help validate architectural designs and ideas, but will not replace human architects in creating the initial designs (12m42s).
  • AI has the potential to enable learning in architecture and engineering by compiling and presenting knowledge, applying established patterns to problems, and capturing and categorizing information (13m9s).
  • The concept of explainability in AI is crucial, allowing users to understand the structure and changes in a codebase, with tools like co-pilot being able to analyze and explain the code in a way that's easy to comprehend (13m45s).
  • This feature is particularly important for large institutions with complex and long-standing codebases that cannot be replaced overnight, making it essential to understand the existing code and its history (14m5s).
  • Trusting AI models is also vital, as they can have biases and provide different outputs based on the input they receive, and it's essential to question and verify the information provided by these models (14m47s).
  • Architects should not rely solely on AI models but instead use them as a tool to aid in their decision-making, remembering that they are still responsible for making the final decisions (15m31s).
  • The concept of "trust but verify" is essential when working with AI models, ensuring that the information provided is accurate and reliable (15m58s).

Cell-Based Architecture

  • Cell-based architecture is a concept where a running system is broken down into independent components or cells, each operating independently and serving requests (16m42s).
  • This architecture allows for greater flexibility and availability, with each cell able to operate as an availability zone on the cloud, a data center, or something else (16m59s).
  • Cell-based architecture is making a resurgence due to its importance in modern system design, with several articles and presentations highlighting its benefits and applications (16m17s).
  • Cloud-based systems, cloud-native microservices, and services have many dependencies and moving parts, making them prone to errors and failures when a request comes in and travels through multiple components (17m28s).
  • Modeling these systems as independent cells can lower the probability of errors, as a cell can continue running and responding to requests even if other cells drop off or have issues (17m13s).
  • This concept is not new and was previously known as the "Bulkhead pattern," but it is making a comeback with the resurgence of cloud-native and complex architecture to reduce errors and improve user experience (17m58s).
  • The Bulkhead pattern was first mentioned in an article from 2012, but it has been researched in the context of cloud computing due to the specific challenges of failures in cloud-based workloads (18m15s).
  • Large companies that cannot afford partial failures have adopted this concept to detect and address failures, which is challenging in cloud-based systems with multiple data centers and interactions (19m10s).
  • Another driving factor for the adoption of this concept is cost-effectiveness, as public cloud providers charge for traffic between availability zones or data centers, and constricting traffic to a single cell can save money (19m37s).
  • The idea of spinning up more servers and services in multiple availability zones or data centers to achieve resilience is not always effective, and good isolation, fault tolerance, and bulkheads are necessary to prevent failures from spreading (20m14s).
  • A cell-based architecture, also known as a bulkhead pattern, can help isolate systems, make them more resilient, and save money by reducing unnecessary traffic, but it requires careful consideration and planning (21m10s).
  • This type of architecture has its advantages, including resiliency, but it also has its complexities, such as defining boundaries and enforcing them, and ensuring a consistent way of routing requests to cells (21m41s).
  • The concept of cell-based architecture is related to the idea of resiliency, which can be achieved through tools like the circuit breaker pattern, and it's not a new idea, but rather a re-evaluation of architecture and a continuous architecture mindset (21m27s).

Modern Architecture and Team Topologies

  • The trend of re-evaluating architecture is also related to the idea of moving from monoliths to microservices and back again, and the use of serverless architecture, and it's essential to constantly evaluate and re-evaluate architecture decisions (22m22s).
  • The modern architecture book by Nick Tune expands system architecture into what is called corporate architecture, which aligns with the idea of agile and DevOps, and it's a natural progression towards achieving better services and products by aligning with desired outcomes (23m8s).
  • The approach promoted by Team Topologist and Nick Tune's architecture modernization book combines data design and other concepts to enable teams to pursue their goals and achieve better outcomes in the marketplace (24m14s).
  • The industry is maturing to provide a framework that brings together product development, architecture, and organizational structuring, which will have a profound impact on the industry by providing good patterns to follow (24m26s).
  • This framework is driving the unification and alignment between technology and business, and provides good patterns and ways of implementing this at the level of companies and business units (25m14s).
  • Architects need to consider how to deploy and integrate software, and platform engineering is a key factor in this, as it influences the architecture chosen and can incentivize or discourage certain design decisions (25m57s).

Platform Engineering and Architecture

  • The platform built influences the architecture chosen, and a symbiotic relationship exists between the platform, application, and infrastructure layers (26m26s).
  • There is a need to learn from architecture and apply principles such as layering, abstractions, coupling, and cohesion to platform engineering (27m5s).
  • The book "Team Topologies" by Matthew and Manuel is mentioned as a valuable resource that has done well in providing patterns for platform engineering (26m14s).
  • The Cloud Native Computing Foundation (CNCF) is working with others to understand how to build better platforms (26m56s).
  • Platform engineering is an area that architects need to consider when building, deploying, and running software (26m0s).
  • Platform engineering is still in its early days, particularly in relation to architecture, and is likely in the innovators stage of the diffusion of innovation curve (27m51s).
  • Many people are adopting platforms or portals, with some using tools like Backstage, but these may not necessarily be full platforms (27m59s).
  • Building platforms and understanding how they influence architecture is an area that is still being explored and developed (28m10s).
  • Platforms are systems that support the building of other systems, and they can have a multiplying effect on the overall architecture and product (28m25s).
  • A bad platform can limit architectural options and make it difficult to support chosen architectures, particularly in terms of deployment, resiliency, and observability (28m38s).

Treating Everything as Code

  • The trend of treating everything as code, including infrastructure and CI/CD pipelines, is becoming more prevalent, with tools like Terraform and Dagger (30m7s).
  • As everything becomes code, software architecture principles start to apply, and architects should be aware of the decisions being made around deployment pipelines and methodologies (30m26s).
  • Architects should not ignore the areas of DevOps and platform engineering, as they are closely related to software architecture and require consideration of principles like coupling, cohesion, and composition (30m51s).
  • The importance of data is highlighted, with data mesh being a key concept, and the idea of treating data as code is discussed (30m56s).
  • The trend in the industry is moving towards combining different backgrounds and expertise, such as data and software architecture, to achieve better results (31m20s).
  • The concept of DevOps is mentioned, and how it brought together software engineers and operations people to solve problems and improve outcomes (31m45s).
  • The idea of breaking down silos and treating the platform as just another piece of code is emphasized, and the importance of collaboration and communication between teams is highlighted (32m6s).

Revisiting Classic Concepts

  • Classic concepts in software engineering and architecture, such as cell-based architecture and domain-driven design, are still relevant and useful today (32m38s).
  • The idea of revisiting old concepts and implementing them with new infrastructure, tools, and technologies is discussed, and the example of microservices and right-sized services is given (33m7s).
  • The importance of architecting systems with cost and scalability in mind is emphasized, and the challenge of building data architectures that can scale without excessive cost is highlighted (33m23s).
  • The need to balance scalability with cost and to avoid over-provisioning is discussed, and the importance of considering the near future and not just the present is emphasized (33m31s).

Fundamentals of System Design

  • When designing systems, it's essential to understand the fundamentals and what is being tried to achieve, considering the actors and interactions between them, without referring to technology choices first (34m2s).
  • People often jump into solutioning and applying well-known patterns without considering the end goal of the initiative, so it's crucial to cover the basics and get the foundational elements right before talking technology choices (34m38s).
  • Decoupling systems, setting boundaries of responsibility, and avoiding designing by hype are key principles to keep in mind when designing systems (35m7s).
  • It's essential to know what's new and modern in technology, but design according to non-functional requirements or quality attributes, and don't design for a hypothetical future scenario if it's not justified by current needs (35m21s).
  • Simple designs that can evolve and modernize over time are often preferred, and it's essential to pay the price for complexity only when justified (35m56s).
  • There are two tracks to learning: staying up-to-date with the latest developments and refining timeless patterns and classics, which are essential for making progress in system design (36m18s).
  • Timeless patterns and classics, such as David Parnas's work on information hiding, coupling, and cohesion, are still relevant today and provide a foundation for building on (36m49s).
  • Progress in system design is often a spiral, building on previous knowledge and experiences, rather than a linear progression (37m7s).
  • Architecture and design trends continually build upon past knowledge, but the direction is not always linear, and it's essential to learn from classic patterns while keeping up with the latest developments (37m23s).

Edge Computing

  • Edge Computing is a topic that involves running code where it makes sense, pushing it to the edge, and can help save costs by distributing resources and running them in the right place (37m45s).
  • The idea of Edge Computing is not new, as it's a recurring concept that has evolved over time, from mainframes to PCs, web-based machines, and back to client-side processing (38m2s).
  • The reason for the swings in architecture and design is the constant change in requirements, and it's essential to reevaluate the reasons behind these changes (38m39s).
  • Platform engineering plays a crucial role in deploying code to customers, and new technologies can make it easier to get code to market faster, with less latency, and more usefulness (38m52s).
  • Good architecture is based on classic, basic understanding, quality attributes, and what is trying to be achieved, and what worked five years ago may not be the right decision today (39m9s).

Sustainability and Green Software

  • Sustainability and the Green Revolution are essential topics in architecture and design, and there is a growing focus on green software, with various tracks and initiatives emerging (39m34s).
  • The importance of sustainability and green software is being recognized, with experts like Adrian Cockroft and others contributing to the discussion and development of sustainable architecture and design practices (39m58s).
  • There are upcoming books on architecture and design that are expected to be released soon, including ones by B and Curry (40m16s).

AI and MLOps Trends

  • In the AI space, there is a lot of hype, but there is a need to see more applied uses of AI beyond generating things from other things (40m29s).
  • There is a trend towards more customized or tuned applications of AI and AI-based products that address specific needs, which is happening in part through the automotive industry (40m46s).
  • The evolution of machine learning and MLOps is expected to continue, with a potential shift towards AI Ops in the next year or two (41m12s).
  • There will be a greater need to incorporate AI into the things being built, and to contend with how to best do so (41m31s).

Privacy Engineering

  • The concept of privacy engineering is becoming increasingly important, which involves incorporating users' private privacy into the architecture of a system (41m47s).
  • Privacy engineering can involve simple things like not logging personal information or storing unnecessary information, as well as more complex topics like anonymizing or aggregating user data (41m53s).
  • Architects need to be aware of privacy engineering and how to protect users' privacy, especially as regulations continue to pile up across the world (42m31s).
  • The InfoQ Architecture and Design Trends Report for 2024 will be available in two parts, with the written report and trends graph available on infoq.com (42m54s).

Overwhelmed by Endless Content?