Software Architecture Superstream: Software Architecture Trade-Offs
Published by O'Reilly Media, Inc.
Analyze trade-offs to make the right decisions for your architecture
One of the most difficult tasks an architect will face is untangling the various forces and trade-offs at play in their architectures—and that’s particularly true for distributed systems. If an architect thinks they’ve discovered something that isn’t a trade-off, more likely they just haven’t identified what the trade-off is yet. After all, as the first law of software architecture states: Everything in software architecture is a trade-off.
While the scope of software architecture is almost impossibly broad, unifying elements do exist. But to truly understand and evaluate the significance of trade-offs in architecture, developers need a working knowledge of basic concepts and terminology concerning components, modularity, coupling, and connascence. This half-day of expert-led sessions will level up your skills and help you work through the complexity and trade-offs in your own system.
About the Software Architecture Superstream Series: This five-part series of half-day online events focuses on the hottest topics in software architecture, giving you the insights to keep pace with what’s next while still accommodating legacy needs. Both seasoned software architects and those looking to break into the field will learn new skills and the latest information on the tools and technologies they need to succeed.
Schedule
The time frames are only estimates and may vary according to how the class is progressing.
Neal Ford: Introduction (5 minutes) - 8:00am PT | 11:00am ET | 4:00pm UTC/GMT
- Neal Ford welcomes you to the Software Architecture Superstream.
Mark Richards: Modern Trade-off Analysis for Distributed Systems (55 minutes) - 8:05am PT | 11:05am ET | 4:05pm UTC/GMT
- The first law of software architecture states that “everything in software architecture is a trade-off.” One of an architect’s key skills is to analyze those trade-offs. Most people know this from the famous response of so many software architects around the world when they’re asked an architecture-related question: “It depends.” But how do you identify and analyze trade-offs? Join Mark Richards to find out. He’ll share tips and techniques for how to do trade-off analysis and make better decisions, using real-world trade-off examples such as service granularity, shared functionality, communication protocols, distributed transactions, and many other thorny issues architects face every day.
- Mark Richards is an experienced hands-on software architect involved in the architecture, design, and implementation of microservices architectures, service-oriented architectures, and distributed systems. He's been in the software industry since 1983 and has significant experience and expertise in application, integration, and enterprise architecture. He's the author of numerous technical resources from O’Reilly, including Fundamentals of Software Architecture and Software Architecture: The Hard Parts (both with Neal Ford), several books on microservices, and the Software Architecture Fundamentals and Enterprise Messaging video course series, and was a contributing author to 97 Things Every Software Architect Should Know. A speaker and trainer, he’s given talks on a variety of enterprise-related technical topics at hundreds of conferences and user groups around the world.
- Break (10 minutes)
Sarah Wells: Paving the Road to Effective Software Development (50 minutes) - 9:10am PT | 12:10pm ET | 5:10pm UTC/GMT
- Over the last few years, the DevOps community has learned that autonomous cross-functional teams—ones that don’t have to wait for someone outside the team to do something—can deliver business value faster. But there’s a trade-off involved: increasing autonomy reduces standardization. Too much autonomy makes it harder and more costly to maintain the levels of security, quality, observability, and cost control that companies expect. Autonomous teams must build in important things like security, observability, and cost efficiency, but they can't have every necessary skill—you need platform teams to provide common services and specific expertise. The platform team builds and runs the platform; the dev teams build and run the services. But for this to work, there can’t be a free-for-all, where teams pick whatever tech they want; nor do you want to mandate a single way of doing things. The answer is the “paved road.” Sarah Wells explores this concept in-depth and explains how to put it to work in your organization, with examples drawn from her time leading the Engineering Enablement Group at the Financial Times.
- Sarah Wells is a technology leader, consultant, and conference speaker with a focus on microservices, engineering enablement, observability, and DevOps. She has over 20 years of experience as a developer, principal engineer, and tech director across product, platform, SRE, and DevOps teams. She spent over a decade at the Financial Times, embracing autonomous empowered teams as the company transformed into a true cloud native organization able to release code 250 times as often. She’s currently writing a book, Enabling Microservice Success, for O’Reilly.
- Break (5 minutes)
Jonathan Johnson: Oh Behave! Containers and Pods for Kubernetes (50 minutes) - 10:05am PT | 1:05pm ET | 6:05pm UTC/GMT
- You want your apps to be efficient and well-behaved entities in your first-class clusters. For a developer, the heart of Kubernetes is running applications in Pods. The choice between bloated containers and distilled containers is up to you. Jonathan Johnson takes you through the important checklist items you should consider to distill your containers and Pods, including modularity, performance, resource consumption, security, and health checks. You'll learn how to attack these items throughout the development process of your application, looking at eight distillation steps, efficient base containers, gRPC versus REST, polyglot containers with 12-factor apps, web service frameworks and GraalVM, security of containers and RBAC with Pods, health checks with probes, CPU and memory declarations, automatic Pod scaling, and Pod disruption budgets.
- Jonathan Johnson is an independent software architect who has been designing useful software to move businesses forward for 30 years. He began his career creating laboratory instrument software and moving later, financial software. Since banking moved to the internet, enterprise applications took off, and Java exploded onto the scene, he’s inhabited that ecosystem. He returned to laboratory software and leveraged Java-based state machines and enterprise services to manage the terabytes of data flowing out of DNA sequencing instruments. As a hands-on architect, he applied the advantages of microservices, containers, and Kubernetes to a laboratory management platform. Today, he enjoys helping others unpack the riches in the cloud native and Kubernetes ecosystems and providing perspective on ways to modernize application architectures while adhering to the fundamentals of modularity—high cohesion and low coupling.
- Break (5 minutes)
Abel Fresnillo Silva: Software Architecture—A Story About Business Value and Trade-Offs (50 minutes) - 11:00am PT | 2:00pm ET | 7:00pm UTC/GMT
- The software development industry is changing rapidly. New technologies are born every day, and development teams have an increasing number of options for building solutions. The urge to adopt the newest languages, frameworks, and tools is a powerful one, but this tendency can cause organizations to lose focus on what’s really important: building software solutions that deliver business value. Join software architect Abel Fresnillo Silva to get insights into the process of identifying what business value means for your organization. You’ll explore popular design techniques like value-stream mapping, discover how to translate your business needs into architectural characteristics, and review the steps for choosing the right architecture.
- Abel Fresnillo Silva is a software architect and Java User Group leader with experience in multiple business domains including finance, ecommerce, insurance, and energy. He enjoys learning and understanding how software solutions can significantly impact and benefit organizations, and he tries to find the best and easiest solution for a given problem while considering all the approaches and alternatives that are available.
Neal Ford: Closing Remarks (5 minutes) - 11:50am PT | 2:50pm ET | 7:50pm UTC/GMT
- Neal Ford closes out today’s event.
Upcoming Software Architecture Superstream events:
- Microservices - April 5, 2023
- Frontend Architectures - May 31, 2023
- Domain-Driven Design and Event-Driven Architecture - August 16, 2023
- Data Architecture Styles and Patterns - November 1, 2023
Your Host
Neal Ford
Neal Ford is a director, software architect, and meme wrangler at Thoughtworks, a software company and a community of passionate, purpose-led individuals who think disruptively to deliver technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. He’s an internationally recognized expert on software development and delivery, especially in the intersection of Agile engineering techniques and software architecture. Neal’s authored several books, a number of magazine articles, and dozens of video presentations (including a video on improving technical presentations) and spoken at hundreds of developer conferences worldwide. His topics of interest include software architecture, continuous delivery, functional programming, and cutting-edge software innovations. Check out his website, Nealford.com