Mark Richards

Independent Software Architect, Author of Fundamentals of Software Architecture

Mark Richards

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 has been in the software industry since 1983 and has significant experience and expertise in application, integration, and enterprise architecture. Mark is the founder of DeveloperToArchitect.com, a website devoted to helping developers in the journey to software architect. He is the author of numerous technical books and videos, including the recently published Fundamentals of Software Architecture, Microservices AntiPatterns and Pitfalls, Microservices vs. SOA, the Software Architecture Fundamentals video series, The Enterprise Messaging video series, Java Message Service, 2nd Edition, and contributing author to 97 Things Every Software Architect Should Know. Mark has a master’s degree in computer science and is a regular conference speaker at the No Fluff Just Stuff (NFJS) Symposium Series. He has spoken at hundreds of conferences and user groups around the world on a variety of enterprise-related technical topics.

Presentations

The Move Towards Modularity

Monday, 7:30 PM EST

It seems like all we talk about these days is making our architectures more modular. However, several questions emerge when moving towards a level of architectural modularity. What are the benefits? Why should you care? How far should you take architectural modularity? Should you use service-based architecture or move all the way to microservices? What is the best approach for moving to microservices? In this keynote I'll address all of these questions so that you'll fully understand the rationale for this important trend and also understand a solid approach for moving to microservices.

It seems like all we talk about these days is making our architectures more modular. However, several questions emerge when moving towards a level of architectural modularity. What are the benefits? Why should you care? How far should you take architectural modularity? Should you use service-based architecture or move all the way to microservices? What is the best approach for moving to microservices? In this keynote I'll address all of these questions so that you'll fully understand the rationale for this important trend and also understand a solid approach for moving to microservices.

Microservices Architecture Fundamentals (UberConf)

Tuesday, 8:30 AM EST

Microservices continues to be the latest buzzword in the industry, and probably will be for some time. If you are not sure what microservices is or want to start getting your feet wet in understanding the basics of this architecture style, then this session is just right for you. In this session I will cover the basics of the microservices architecture pattern. We'll talk about distributed architecture, what a microservice is, what the bounded context means, how to determine the right level of service granularity, the dangers of inter-service communication, and the role of the API layer. By the end of this session you will have a good idea of what the microservices architecture style is all about and whether it is a good fit for you.

Agenda:

  • Why Microservices?
  • Microservices Topology
  • Service Granularity
  • Service Classification
  • Bounded Context and Share-Nothing Architecture
  • The Role of the API Layer

Archived

Tuesday, 10:30 AM EST

.

.

Microservices and Distributed Data

Tuesday, 1:30 PM EST

Jorge Santayana is famous for saying “Those who cannot remember the past are condemned to repeat it”. When SOA (Service-Oriented Architecture) was all the craze, everyone got all excited about services, but forgot about the data. This ended in disaster. History repeats itself, and here we are with Microservices, where everyone is all excited about services, but once again, forgets all about the data. In this session I will discuss some of the challenges associated with breaking apart monolithic databases, and then show the techniques for effectively creating data domains and how to split apart a database. I consider the data part of Microservices the hardest aspect of this architecture style. In the end, it's all about the data.

Agenda

  • Data distribution challenges and considerations
  • Creating data domains
  • Data and service granularity
  • Handling common data tables
  • Managing distributed transactions

Microservices Communication Patterns

Tuesday, 3:15 PM EST

Once you break things apart into microservices, you must then put them back together. In other words, individual services still sometimes need to talk to one another to complete a given business transaction, whether that transaction is synchronous or asynchronous. In this session I talk about the various patterns of communication within microservices - orchestration, aggregation, and adapters. I also talk about coupling between services, including stamp coupling and bandwidth issues, and how to address these common communication woes.

Agenda

  • Orchestration vs. Choreography and When To Use Each
  • Microservices Orchestration Pattern (tying services together)
  • Microservices Aggregation Pattern (cross-cutting business concerns)
  • Microservices Adapter Pattern (communicating to outside systems)
  • Stamp Coupling and Bandwidth (twin evils)
  • Asynchronous vs. Synchronous Communication

Microservices Caching Strategies

Tuesday, 5:00 PM EST

Have you ever wondered how to share data between microservices? Have you ever wondered how to share a single database schema between hundreds (or even thousands) of microservices (cloud or on-prem)? Have you ever wondered how to version relational database changes when sharing data in a microservices environment? If any of these questions intrigue you, then you should come to this session. In this session I will describe and demonstrate various caching strategies and patterns that you can use in Microservices to significantly increase performance, manage common data in a highly distributed architecture, and even manage data synchronization from cloud-based microservices. I'll describe the differences between a distributed and replicated cache, Using live coding and demos using Hazelcast and Apache Ignite, I'll demonstrate how to share data and also how to do space-based microservices, leveraging caching to its fullest extent.

Agenda:

  • Caching Topologies
  • Sharing Data Between Microservices
  • Space-Based Microservices and Caching
  • Calculating Data Collisions

The Art of Problem Solving

Tuesday, 8:30 PM EST

As Tech Leaders, we are presented with problems and work to find a way to solve them, usually through technology. In my opinion this is what makes this industry so much fun. Let's face it - we all love challenges. Sometimes, however, the problems we have to solve are hard - really hard. So how do you go about solving really hard problems? That's what this session is about - Heuristics, the art of problem solving. In this session you will learn how to approach problems and also learn techniques for solving them effectively. So put on your thinking cap and get ready to solve some easy, fun, and hard problems.

Agenda:

  • the checklist
  • visual representations
  • you know what happens when you assume…
  • you gotta start somewhere
  • the world is flat
  • hey! keep it clean!
  • perception can be reality

Applying Reactive Architecture Patterns

Wednesday, 9:00 AM EST

Reactive architecture patterns allow you to build self-monitoring, self-scaling, self-growing, and self-healing systems that can react to both internal and external conditions without human intervention. These kind of systems are known as autonomic systems (our human body is one example). In this session I will show you some of the most common and most powerful reactive patterns you can use to automatically scale systems, grow systems, and self-repair systems, all using the basic language API and simple messaging. Through code samples in Java and actual run-time demonstrations, I'll show you how the patterns work and also show you sample implementations. Get ready for the future of software architecture - that you can start implementing on Monday.

Agenda

  • introduction to reactive architecture
  • supervisor consumer pattern (automated microservices scalability)
  • workflow event pattern (automated asynchronous error handling)
  • producer control flow pattern (automated repairing of downstream systems)

Streaming Architecture Using Kafka (UberConf)

Wednesday, 11:00 AM EST

There are many different uses for Apache Kafka. It can be used as a streaming broker, event broker for transactional data, and even a database. This session is about understanding streaming architecture and how to implement it using Apache Kafka. I start this session by talking about some of the streaming architecture patterns, then dive into how Apache Kafka works using the Core API. Using live coding examples in Apache Kafka, I also talk about the differences between Kafka and regular messaging (RabbitMQ, ActiveMQ, etc.) and when you should use each. I end this session by putting everything together, showing an actual streaming architecture using Kafka within a Microservice ecosystem for gathering various metrics for business and operational monitoring and reporting.

Agenda:

  • Streaming architecture patterns
  • Kafka overview
  • Kafka producers and consumers
  • Kafka vs. standard messaging
  • Streaming examples in a microservices ecosystem

Integration Architecture: Concepts and Patterns

Wednesday, 1:30 PM EST

Very few applications stand alone anymore. Rather, they are combined together to form holistic systems that perform complex business functions. One of the big challenges when integrating applications is choosing the right integration styles and usage patterns. In this session we will explore various techniques and patterns for application integration, and look at what purpose and role open source integration hubs such as Camel and Mule play in the overall integration architecture space (and how to properly use them!). Through actual integration scenarios and coding examples using Apache Camel you will learn which integration styles and patterns to use for your system and how open source integration hubs play an part in your overall integration strategy

Agenda:

  • Integration Styles: pros, cons, and when to use
  • Integration and Abstraction
  • Integration Hubs: use cases, failover, federation, team ownership
  • Common integration patterns

Creating Enterprise Architecture Roadmaps

Wednesday, 3:15 PM EST

While there are dozens of activities within an enterprise architecture effort, there is only one primary outcome - an enterprise architecture roadmap. Roadmaps describe what efforts (i.e., projects) need to be done to meet a specific objective, the dependencies between those efforts, and the prioritization of those efforts. In this session I'll cover the four main models that make up an EA roadmap and show you techniques for how to identify projects, classify projects, prioritize projects, and finally illustrate these efforts through consolidated roadmap views. By the end of this session you'll have a clear view of why enterprise architecture is needed, the purpose behind it, and how to create an effective and clear enterprise architecture roadmap.

Agenda

  • Roadmap scope and context
  • Roadmap approaches
  • Roadmap structure and models
  • Iteration modeling
  • Project portfolio modeling
  • Prioritization modeling
  • Roadmap views and construction

Enterprise Architecture Approaches and Strategies

Wednesday, 5:00 PM EST

There are many traditional approaches to enterprise architecture. Unfortunately, these traditional approaches are one of the reasons EA fails in today's world. In the first part of this session I'll describe and demonstrate the traditional approaches to EA, explain why they fail, and then show you several modern approaches to enterprise architecture that hold lots of promise in transforming EA to the 21st century. In the second part of this session I'll then describe 4 different enterprise architecture strategies for overall EA team structure, governance, process, and standards.

Agenda

  • Model-driven approach to EA
  • Initiative-driven approach to EA
  • Why traditional approaches fail
  • Incremental EA approach
  • Value-driven EA approach
  • Adaptive EA Approach
  • Why modern approaches are better
  • EA strategies and standards
  • Prescriptive strategy
  • Classic alternatives strategy
  • Distributed strategy
  • Durable interface strategy

EA Frameworks: Comparing Zachman, TOGAF, and FEA

Thursday, 9:00 AM EST

Organizing and governing enterprise architecture models and processes is a daunting task. No wonder so many people are wondering whether an enterprise architecture framework will help. Understanding various enterprise architecture frameworks like Zachman, TOGAF, and FEAF is the first step. More important, however, is knowing whether you need an EA framework at all. In this session I will start with the basics of the Zachman Framework, TOGAF (The Open Group Architecture Framework), and FEA (Federal Enterprise Architecture) so that you can gain a complete understanding of how each of these frameworks work. During the journey of these frameworks I will continually point out the strengths and weaknesses of each framework to arrive at the best part of the session - how to build your own EA Framework that works for you and your situation.

Agenda

  • Zachman Framework
  • TOGAF (The Open Group Architecture Framework)
  • FEA (Federal Enterprise Architecture Framework)
  • Building your own custom EA framework

Archived

Thursday, 10:45 AM EST

Software architecture is hard. It is full of tradeoff analysis, decision making, technical expertise, and leadership, making it more of an art than a science. The common answer to any architecture-related question is “it depends”. To that end, I firmly believe there are no “best practices” in software architecture because every situation is different, which is why I titled this talk “Essential Practices”: those practices companies and architects are using to achieve success in architecture. In this session I explore in detail the top 6 essential software architectural practices (both technical architecture and process-related practices) that will make you an effective and successful software architect.

This session is broken up into 2 parts: those essential architecture practices that relate to the technical aspects of an architecture (hard skills), and those that relate to the process-related aspects of software architecture (soft skills). Both parts are needed to make architecture a success.

Books

Java Message Service: Creating Distributed Enterprise Applications

by Mark Richards, Richard Monson-Haefel, and David A Chappell

  • Java Message Service, Second Edition, is a thorough introduction to the standard API that supports "messaging" -- the software-to-software exchange of crucial data among network computers. You'll learn how JMS can help you solve many architectural challenges, such as integrating dissimilar systems and applications, increasing scalability, eliminating system bottlenecks, supporting concurrent processing, and promoting flexibility and agility.

    Updated for JMS 1.1, this second edition also explains how this vendor-agnostic specification will help you write messaging-based applications using IBM's MQ, Progress Software's SonicMQ, ActiveMQ, and many other proprietary messaging services.

    With Java Message Service, you will:

    • Build applications using point-to-point and publish-and-subscribe messaging models
    • Use features such as transactions and durable subscriptions to make an application reliable
    • Implement messaging within Enterprise JavaBeans (EJB) using message-driven beans
    • Use JMS with RESTful applications and with the Spring application framework

    Messaging is a powerful paradigm that makes it easier to uncouple different parts of an enterprise application. Java Message Service, Second Edition, will quickly teach you how to use the key technology that lies behind it.


97 Things Every Software Architect Should Know: Collective Wisdom from the Experts

by

  • In this truly unique technical book, today's leading software architects present valuable principles on key development issues that go way beyond technology. More than four dozen architects -- including Neal Ford, Michael Nygard, and Bill de hOra -- offer advice for communicating with stakeholders, eliminating complexity, empowering developers, and many more practical lessons they've learned from years of experience. Among the 97 principles in this book, you'll find useful advice such as:

    • Don't Put Your Resume Ahead of the Requirements (Nitin Borwankar)
    • Chances Are, Your Biggest Problem Isn't Technical (Mark Ramm)
    • Communication Is King; Clarity and Leadership, Its Humble Servants (Mark Richards)
    • Simplicity Before Generality, Use Before Reuse (Kevlin Henney)
    • For the End User, the Interface Is the System (Vinayak Hegde)
    • It's Never Too Early to Think About Performance (Rebecca Parsons)

    To be successful as a software architect, you need to master both business and technology. This book tells you what top software architects think is important and how they approach a project. If you want to enhance your career, 97 Things Every Software Architect Should Know is essential reading.


No Fluff, Just Stuff Anthology: The 2007 Edition

by Neal Ford

  • Twenty-seven weekends a year, the No Fluff, Just Stuff conference rolls into another town, featuring the world's best technical speakers and writers. Up until now, you had to go to one of the shows to soak up their collective wisdom. Now, you can hold it in the palm of your hand. The No Fluff, Just Stuff Anthology represents topics presented on the tour, written by the speakers who created it. This book allows the authors the chance to go more in depth on the subjects for which they are passionate. It is guaranteed to surprise, enlighten, and broaden your understanding of the technical world in which you live.

    The No Fluff, Just Stuff Symposium Series is a traveling conference series for software developers visiting 27 cities a year. No Fluff has put on over 75 symposia throughout the U.S. and Canada, with more than 12,000 attendees so far. Its success has been a result of focusing on high quality technical presentations, great speakers, and no marketing hype. Now this world-class material is available to you in print for the first time.


Java Transaction Design Strategies

by Mark Richards

  • Understanding how transaction management works in Java and developing an effective transaction design strategy can help to avoid data integrity problems in your applications and databases and ease the pain of inevitable system failures. This book is about how to design an effective transaction management strategy using the transaction models provided by Java-based frameworks such as EJB and Spring. Techniques, best practices, and pitfalls with each transaction model will be described. In addition, transaction design patterns will bring all these concepts and techniques together and describe how to use these models to effectively manage transactions within your EJB or Spring-based Java applications. The book covers: - The local transaction model - The programmatic transaction model - The declarative transaction model - XA Transaction Processing - Transaction Design Patterns