You are viewing details from a past event. Please check our upcoming event schedule if you are looking for current content.

Mark Richards

Independent Software Architect, Author of Fundamentals of Software Architecture

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

Archived

9:00 AM MDT

.

.

Archived

9:00 AM MDT

Reactive architecture patterns allow you to build self-monitoring, 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 2 part live virtual workshop, I show you some of the more common and powerful reactive patterns you can use to automatically scale systems, grow systems, and self-repair systems, all using the basic language API (Java) and simple messaging (RabbitMQ). Through code samples in Java and live demonstrations, I show how the patterns work and also show you sample implementations. Get ready for the future of software architecture - that you can start implementing tomorrow.

Part 1: Creating Self-Aware and Responsive Systems

Introduction
  • What are Autonomic Systems?
  • Understanding The Reactive Manifesto
  • Why Is Reactive Architecture So Important?
  • Reactive Architecture vs. Reactive Programming
  • Creating Self-Aware and Responsive Systems
Self-Aware and Responsive Systems
  • Supervisor Consumer Pattern
  • Thread Delegate Pattern

Archived

11:00 AM MDT

Reactive architecture patterns allow you to build self-monitoring, 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 2 part live virtual workshop, I show you some of the more common and powerful reactive patterns you can use to automatically scale systems, grow systems, and self-repair systems, all using the basic language API (Java) and simple messaging (RabbitMQ). Through code samples in Java and live demonstrations, I show how the patterns work and also show you sample implementations. Get ready for the future of software architecture - that you can start implementing tomorrow.

Part 2: Creating Self Healing and Self-Configuring Systems

Creating Self-Healing Systems
  • Workflow Event Pattern
  • Producer Control Flow Pattern
Creating Self-Configuring Systems
  • Threshold Adjust Pattern

Archived

1:00 PM MDT

.

.

Archived

3:00 PM MDT

.

.

Archived

9:00 AM MDT

The path to migrating to Microservices from a monolithic or service-oriented architecture (or even starting a greenfield application) is riddled with challenges, pitfalls, canyons, demons, and even fire-breathing dragons. I like to call it “The Kings Road”. In this session I will show the migration patterns that allow you to easily fly over this challenging road and ease the pain associated with moving to microservices. I will also show you some automation tools you can use to help analyze your applications to determine how challenging this road will be.

Agenda

Introduction
  • Migrating to Microservices
  • Migration Roadmap and Patterns
Migration Patterns
  • Identifying Logical Components
  • Flattening and Refactoring Components
  • Identifying Component Dependencies
  • Identifying and Creating Component Groups (Domains)
  • Creating a Remote User Interface
  • Migrating Domains to Domain Services
  • Migrating Domain Services to Microservices
  • Identifying Microservices

Archived

11:00 AM MDT

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

  • Distributed Caching Topology
  • Replicated Caching Topology
  • Choosing Which Topology To Use
  • Sharing Data Between Microservices
  • Space-Based Microservices and Caching
  • Data Collisions

Archived

1:00 PM MDT

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 excited about services, but once again, forgets all about the data. In this hands-on live virtual session I discuss some of the challenges associated with breaking apart monolithic databases, and then show several techniques for sharing and accessing data. I consider the data part of Microservices the hardest aspect of this architecture style. In the end, it's all about the data.

Agenda
  • Breaking Apart Monolithic Data
  • Data Granularity Factors
  • Data Granularity Factors
  • Creating Data Domains
  • Data Sharing and Access: Interservice Communication
  • Data Sharing and Access: Data Replication
  • Data Sharing and Access: Replicated Caching
  • Data Sharing and Access: Data Domains
  • Handing Common Data
  • Hands-on Exercises: Identifying Data Ownership and Access

Archived

3:00 PM MDT

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 hands-on live virtual session I talk about the various patterns of communication and workflow management within a microservices ecosystem.

Agenda
  • Orchestration vs. Choreography
  • Microservices Aggregator Pattern
  • Microservices Adapter Pattern
  • Workflow Patterns and Sagas
  • Hands-on Exercises: Identifying Communication and Workflows

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