About Architecture: The Hard Parts Workshop


Software architects have no clean, easy decisions: everything is a terrible tradeoff. Architecture has lots of difficult problems, which this platform-agnostic class highlights by investigating what makes architecture so hard. This hands-on, platform-agnostic architecture class goes beyond the fundamentals of software architecture and focuses on the really hard problems. This class focuses primarily on aspects of distributed architectures and on areas surrounding modularity versus granularity, the challenges of event-driven architectures (including difficult error handling issues), distributed architecture patterns and how to decouple services to achieve proper granularity. Architecture is full of hard parts; by attending this workshop you can gain the insights and techniques to make it just a little softer.

This class is divided into 2 main parts:

Part 1: Pulling Things Part (Modularity and Building Blocks)

Part 2: Putting Them Back Together (Patterns and Tradeoffs)

Pulling things apart (Part 1) focuses on how to break up systems and identify levels of modularity. However, once you’ve broken apart your systems, how do you tie them back together? Putting them back together (Part 2) focuses on just this – the techniques of how to do orchestration, workflows, and transactions, while keeping parts decoupled from one another.

Course Language: The course will be entirely in English.

Architecture: The Hard Parts Workshop Topics


Workshop sections:

 

Part 1: Pulling Things Apart (Modularity and Building Blocks)

Architectural Modularity

  • Modularity vs. Granularity
  • Drivers for Modularity

Components as Architecture Building Blocks

  • Component Definition
  • Coupling Types
  • Connascence
  • Connascence Properties
  • Abstractness vs. Instability (Main Sequence)
  • Component Cohesion
  • Modern Connascence

Architecture Quantum

  • What is an Architectural Quantum?
  • Why are Quanta so Important to Architecture?
  • Examples of Architecture Quantum

Architecture Kata Exercises #1 – Breaking Apart The System

Modularity vs. Granularity

  • Determining The Right Level of Granularity
  • Service Granularity Drivers
  • Service Granularity Factors

Architecture Kata Exercises #2 – Identifying Services

Breaking Apart Data

  • Drivers For Separating Data
  • Factors Impacting Data Separation

Architecture Kata Exercises #3 – Data Ownership and Bounded Contexts

Analytical Reporting Challenges

  • Issues with Data Warehouses
  • Issues with Data Lakes

Part 2: Putting Them Back Together (Patterns and Tradeoffs)

Synchronous vs. Asynchronous Communication

  • Quantum Separation
  • Messaging For East-West Communication
  • Leveraging Queues For Back Pressure
  • Leveraging Publish-Subscribe For Extensibility

Contract Management

  • Consumer-Driven Contracts
  • Value-Driven Contracts
  • GraphQL
  • Schemas

Data Access and Data Sharing Strategies

  • Interservice Communication
  • Data Replication
  • Replicated Caching
  • Data Domains

Architecture Kata Exercises #4 – Data Access Techniques

Orchestration and Workflow

  • Differences Between Orchestration and Choreography
  • Choreography Examples
  • Orchestration Examples
  • Workflow Patterns and Sagas

Architecture Kata Exercises #5 – Orchestration and Workflow

Data Mesh

  • Defining a Data Mesh
  • Data Mesh Concepts

Class Summary: Final Words of Advice

Starting Date, Duration & Schedule of the course


Starting Date: March 22-23, 2021

Duration: This workshop consists of 8 hours.

Teachers


Zhamak Dehghani

Zhamak Dehghani works with ThoughtWorks as a principal consultant, with a focus on distributed systems architecture and digital platform strategy at Enterprise. She is a member of the ThoughtWorks Technology Advisory Board and contributes to the creation of the ThoughtWorks Technology Radar. Zhamak has worked as a software engineer and architect for 20 years in the areas of distributed computing communications, as well as embedded device technologies and she has contributed to multiple patents on embedded mobile sensing devices.

Neal Ford

Neal Ford is a Software Architect at ThoughtWorks. He is an internationally recognized expert on software development and delivery, especially in the intersection of agile engineering techniques and software architecture. Neal authored magazine articles and authored many books including “Fundamentals of Software Architecture”, “Building Evolutionary Architectures: Support Constant Change”, “Functional Thinking: Paradigm Over Syntax”, “The Productive Programmer (Theory in Practice (O’Reilly)” and many others, dozens of video presentations, and spoken at hundreds of developers conferences worldwide, one of them is O’Reilly Software Architecture Conference. His topics include software architecture, continuous delivery, functional programming, cutting edge software innovations, and includes a business-focused book and video in improving technical presentations. His primary consulting focus is the design and construction of large-scale enterprise applications.

Mark Richards

Mark Richards is an experimented software architect focused on the architecture, design and implementation of microservices architectures, service oriented architectures and distributed systems. He’s also author of many books and technical videos.

Price & Payment Method


¡Only 5 Tickets are available!

Please contact us if you are interested

Sign up

Interested in this course? Contact us!