5

Software Architecture and Design InfoQ Trends Report—April 2021

 3 years ago
source link: https://www.infoq.com/articles/architecture-trends-2021/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Software Architecture and Design InfoQ Trends Report—April 2021

Key Takeaways

  • In a cloud-native world, architects are reprioritizing the -ilities they consider most important. Innovative architects are designing for resilience, observability, portability, and sustainability.
  • Dapr and the Open Application Model are two ways to make building distributed systems easier, and it will be interesting to watch how they are adopted in the future.
  • The pendulum seems to be coming to rest, after swinging to extremes between monoliths and microservices. As a result, architects are relying on well-established patterns and designs that focus on high cohesion and low coupling, regardless of the underlying technology.
  • In fully-remote work environments, architects are finding new ways to communicate with their teams, and finding replacements for the water cooler chats which were useful for gathering knowledge.
  • The next generation of GraphQL features, notably GraphQL Federation and GraphQL Microservices, are showing where to go next after companies have strong adoption of GraphQL.

1Architecture-2021-1618415938711.jpg

Each year, the InfoQ editors discuss the current state of software architecture and design, and identify the key trends to watch, resulting in this report and the accompanying graph. This year, we’re letting you listen in to the discussion, on an episode of the InfoQ podcast. The editors were joined by Holly Cummins, an innovation leader on IBM’s corporate strategy team, and a previous speaker at QCon.

Designing for ___

We start by looking at which “-ilities” are most important to architects. A software architect is responsible for the cross-cutting concerns and making sure that individual components of a large system can work together seamlessly to meet overall objectives. In 2021, four areas we feel architects are concerned with are designing for resilience, designing for observability, designing for portability, and designing for sustainability.

Designing for resilience is vital for modern, distributed systems, where any individual component could fail, and the overall system should remain available. In many ways, the ideas being implemented are not new—just becoming more important as distributed systems and modular architectures are more common. Daniel Bryant referred to the work done by David Parnas in the 1970s, and Michael Nygard’s more recent book, Release It!, as good sources for ideas regarding circuit breakers, timeouts, retries, and other fundamental requirements for a resilient system. What is new is finding ways to solve those problems across a system, such as using a cloud-native service mesh, or even building on a framework such as Dapr

Further down the adoption curve, there has been a steady increase in the adoption of asynchronous programming techniques and event-driven architectures. This adoption is the result of both a lower barrier to entry for implementing asynchronous patterns and a built-in benefit of increased system resilience.

However, the flip side to event-driven architectures, and asynchronous systems, in general, is they are still difficult to reason about and understand. Which ties into the rise of designing for observability. Very often, observability is seen as a run-time need—can we tell if the system is behaving as expected? But, for architects, observability is becoming increasingly important as a design-time need—can we understand all the interactions occurring within the complex system?

In 2021, the innovators are finding ways to provide both the run-time and design-time observability benefits almost automatically. By removing the burden of developers having to manually implement observability non-functional requirements, it becomes less likely that a key component will be missing from the big picture of the system. That then leads to being able to use the observability to create accurate, living architecture diagrams, and a corresponding mental model of the system.

Another focus area for architects is designing for portability, whether that’s for multi-cloud or hybrid-cloud. In most cases, there are no reasons for architects to design for the lowest common denominator to enable true multi-cloud portability or avoiding vendor lock-in. However, especially with corporate acquisitions, CTOs are more likely to have systems that run in separate hosting environments, including AWS, Azure, GCP, and on-prem. When making decisions regarding standardization, architects need to pick their battles.

Holly Cummins has spoken on the subject of designing for sustainability, which is one of the new innovator trends. This is emerging because people are realizing the software industry is responsible for a level of carbon usage comparable to the aviation industry. Some of this is almost directly measurable, as the bill for compute usage is highly correlated to energy consumption. Where CTOs and architects can have an impact is by either reducing unnecessary compute usage or utilizing more sustainable cloud hosting options. Some cloud data centers run on 100% green energy, while data centers in Virginia are powered by coal. If latency is less of a concern, then it may make sense to host in Iceland instead of Virginia. While many companies look to reduce their hosting costs purely for economic reasons, some are choosing to make sustainability a priority, and architecting and deploying their systems accordingly.

Correctly-built distributed systems

The topic of microservices has steadily moved across the trends graph and has been categorized as a late majority trend for some time, as it has become easier to build distributed systems. However, we’re continuing to see some pushback against the overuse of microservices as an attempt to solve all problems. In some cases, this has led to major reversals, such as going back to a monolith. As the pendulum stops swinging, it seems we’re finally setting on a sane approach for most systems.

Some of the trends around building distributed systems, or modular monoliths, all come back to fundamental architectural principles, such as high cohesion and low coupling. Domain-Driven Design, while considered a late majority trend, continues to be emphasized by architects looking for good guidance on context mapping and identifying boundaries within a system. Similarly, the C4 model can be very useful to create a hierarchical set of architecture diagrams to help understand your system.

Data architecture

InfoQ is continuing to see innovation in the overlap between software architecture and data architecture. Data mesh, added to the graph last year, remains an innovator trend this year. It’s joined by data gateways, which are somewhat like API gateways but focus on the data aspect. As microservices have led to a polyglot persistence layer, API gateways offer abstractions, security, scaling, federation, and contract-driven development features.

The role of the architect

We continue to look at the role software architects play in their organizations. Beyond the traditional “boxes and arrows” responsibilities, architects are serving as technical leaders and mentors to other team members. Architects also need to be able to communicate with many audiences, described by Gregor Hohpe as riding the architect elevator—talking to the CTO and other executives, then traveling down to the engine room to work with the developers.

For many teams, communication styles were very disrupted due to the pandemic and many companies adopting a long-term remote working strategy. This means architects have lost the ability to learn by osmosis simply because they could sit in the same room as the developers and overhear conversations. Where this has been helpful, it has led to more written communication, whether in IM chat rooms, or architecture decision records, and keeping those up to date because teams are regularly referring to them. The leading architects are finding ways to leverage the constraints of a fully remote team to their advantage, and creating better software designs because of it.

Other topics

Dapr and the Open Application Model (OAM) were both introduced by Microsoft in late 2019. OAM is a specification for defining cloud-native applications and focuses on the application, rather than the container or orchestrator. Similarly, Dapr is a framework that has pluggable components meant to make cloud-native development easier. Although Microsoft was involved in their creation, both are open source projects, work on any cloud provider, and Dapr may become a CNCF project. Both Dapr and OAM have yet to see major adoption and are therefore clearly innovator trends to keep an eye on.

WebAssembly is another innovator trend. For architects, it will be interesting to see if it is used as just a supplement to web frameworks and mobile development, or if systems will be designed with WebAssembly in mind, and how that will manifest.

A final note about GraphQL, which crossed the chasm on the trends graph last year. Since then, there has been innovation, particularly at Netflix, for the next-generation of GraphQL functionality, notably GraphQL Federation and GraphQL microservices. Just as the sprawl created by microservices led to new patterns for managing that sprawl, for companies that have invested heavily in GraphQL, they are needing GraphQL Federation to assist with managing the new complexity. This isn’t a problem every company will run into, but it remains useful to know and see where it goes in the future.

About the Authors

1Thomas-Betts-1618416653868.jpegThomas Betts is the Lead Editor for Architecture and Design at InfoQ, and a Sr. Principal Software Engineer at Blackbaud. For over two decades, his focus has always been on providing software solutions that delight his customers. He has worked in a variety of industries, including retail, finance, health care, defense and travel. Thomas lives in Denver with his wife and son, and they love hiking and otherwise exploring beautiful Colorado.

1Daniel-Bryant-1618416653868.jpegDaniel Bryant works as a Product Architect at Datawire, and is the News Manager at InfoQ, and Chair for QCon London. His current technical expertise focuses on ‘DevOps’ tooling, cloud/container platforms and microservice implementations. Daniel is a leader within the London Java Community (LJC), contributes to several open source projects, writes for well-known technical websites such as InfoQ, O'Reilly, and DZone, and regularly presents at international conferences such as QCon, JavaOne, and Devoxx.

1Holly-Cummins-1618417146316.jpegHolly Cummins is an innovation leader in IBM Corporate Strategy, and spent several years as a consultant in the IBM Garage. As part of the Garage, she delivers technology-enabled innovation to clients across various industries, from banking to catering to retail to NGOs. Holly is an Oracle Java Champion, IBM Q Ambassador, and JavaOne Rock Star. She co-authored Manning's Enterprise OSGi in Action.

1Eran%20Stiller-1618417007442.jpgEran Stiller is the CTO and Co-Founder of CodeValue. As CodeValue’s CTO, Eran designs, implements, and reviews various software solutions across multiple business domains. With many years of experience in software development and architecture and a track record of public speaking and community contribution, Microsoft recognized Eran as a Microsoft Regional Director (MRD) since 2018 and as a Microsoft Most Valuable Professional (MVP) on Microsoft Azure since 2016.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK