Matt Stine

I Enable Early-Career Enterprise Software Engineers to Continuously Improve

Matt Stine

My passion is taking a metaphysical approach to software engineering: what is the nature of the collaborative game that we continuously play, and are there better, more contextually-aware ways to play that game?

By day I lead a team tasked with taking a first-principles-centric approach to intentionally enabling programming language usage at the largest bank in the United States.

By night I write and teach my way through a masterclass in software engineering and architecture targeting early-career software engineers working in large-scale enterprise technology organizations.

What is the primary goal?

To win the game. More seriously: to get 1% better every day at providing business value through software.

Who am I?

I'm a 22-year veteran of the enterprise software industry. I've played almost every role I can imagine:

  • Software Engineer
  • Software Architect
  • Technical Lead
  • Engineering Manager
  • Consultant
  • Product Manager
  • Field CTO
  • Developer Advocate
  • Conference Speaker
  • Author
  • Technical Trainer
  • Technical Marketer
  • Site Reliability Engineer
  • Desktop Support Specialist

I've worked at Fortune 500 companies, a tenacious teal cloud startup, and a not-for-profit children's hospital. I've written a book, and I've hosted a podcast. I've learned a lot along the way, including many things I wish I'd known when I first got started. And so now I want to pass those learnings on to you, especially if you've only just begun your career.

Presentations

Cloud Native Architecture Patterns & Katas Workshop

Monday, 9:00 AM EST

As a software architect, confronting the cloud can feel quite daunting. We are confronted with an onslaught of public cloud providers; which one should we choose? Are we ready for public cloud? Or do we need to focus on private cloud? And what does that even mean? Or are we looking for a hybrid solution? And these questions are only the beginning. Soon we’ll be looking at IaaS vs. PaaS. Containers vs. Unikernels. Servers vs. Serverless! Is there any way to make sense of all of the choices and cut through all of the hype?

Fortunately there is a way forward. There are clear architectural concepts and patterns that we can use as guideposts on our journey to the cloud. In this full-day workshop, we’ll gain an understanding of the unique characteristics of cloud infrastructure and how we can design and develop application architectures that fully exploit those unique characteristics. These “cloud native” architectures compose simple patterns with predictable performance, scaling, security and failure characteristics to create solutions to complex problems that can be quickly, flexibly, and continuously evolved to take advantage of new information. In many ways these architectures have more in common with organic systems than anything we’ve previously called software.

These characteristics of cloud native architectures allow us to practice an extreme flavor of continuous delivery that allows us to survive a new marketplace where speed is our primary competitive advantage and access to consumer services must be ubiquitous.

The newly trained cloud architect will leave this workshop equipped with an understanding of:

  • unique characteristics of cloud infrastructure
  • architecture concepts unique to cloud native
  • significant tradeoffs involved in cloud architecture
  • the concept of continuous partial failure and how it affects architecture
  • the importance of composability to cloud architectures
  • how continuous delivery, devops, and microservices relate to cloud

You’ll also leave with a rich catalog of cloud native architecture patterns that you should be able to apply regardless of your choice of cloud provider or technology stack. We'll enhance our understanding of these topics by alternating between a traditional lecture setting and breaking up into groups to do kata exercises.

Cloud Native Architecture Fundamentals: Part 1

Tuesday, 8:30 AM EST

Cloud continues to grow in importance in even the most conservative companies’ IT strategies. Because of this, even experienced software architects must confront a new world in which many of our normal architectural assumptions no longer hold. Before we create architectures that leverage cloud infrastructure, we need to rebuild our mental model of infrastructure around the appropriate concepts and principles. The purpose of this session is to do just that.

In this session we’ll:

  • tour the current cloud infrastructure landscape
  • explore the key business and technology motivators for adopting cloud
  • explore the unique aspects of cloud infrastructure that violate our traditional assumptions
  • examine the risks associated with adopting cloud infrastructure
  • navigate some of the key tradeoffs involved with cloud architecture choices
  • overlay traditional architecture patterns and examine their suitability to cloud
  • define a cloud native architecture that is optimized to exploit the uniqueness of the cloud environment

The learner should leave this session prepared for deeper dives into cloud native architecture patterns and migration strategies.

NOTE: We'll cover roughly 50% of the material in Part 1.

Cloud Native Architecture Fundamentals: Part 2

Tuesday, 10:30 AM EST

Cloud continues to grow in importance in even the most conservative companies’ IT strategies. Because of this, even experienced software architects must confront a new world in which many of our normal architectural assumptions no longer hold. Before we create architectures that leverage cloud infrastructure, we need to rebuild our mental model of infrastructure around the appropriate concepts and principles. The purpose of this session is to do just that.

In this session we’ll:

  • tour the current cloud infrastructure landscape
  • explore the key business and technology motivators for adopting cloud
  • explore the unique aspects of cloud infrastructure that violate our traditional assumptions
  • examine the risks associated with adopting cloud infrastructure
  • navigate some of the key tradeoffs involved with cloud architecture choices
  • overlay traditional architecture patterns and examine their suitability to cloud
  • define a cloud native architecture that is optimized to exploit the uniqueness of the cloud environment

The learner should leave this session prepared for deeper dives into cloud native architecture patterns and migration strategies.

NOTE: We'll cover roughly 50% of the material in Part 1. If you come to only Part 2, we'll be starting in the middle.

Cloud Native Architecture Patterns: Part 1 - Brick Patterns

Tuesday, 1:30 PM EST

Now that we’ve been equipped with an understanding of how software architectures can exploit the unique aspects of cloud infrastructure environments, it’s time to construct a pattern catalog that can guide our decision making as we journey from concepts and principles to concrete implementations. The software industry has long been motivated by the promise of a “component marketplace” from which we can draw commodity components which can be composed via standardized mechanisms to create powerful systems. These systems are often compared to the myriad of possible creations that can be produced using Lego pieces. The power in the Lego “architecture” is found in the amazing diversity of individual pieces that are composed via a universal system of compatibility. Cloud native architectures approximate the same power via Lego-like patterns.

In this two-part series, we’ll divide the cloud native patterns into two categories:

  1. Bricks - how we design cloud native services
  2. Mortar - how we compose cloud native systems

In part one we’ll study “Brick Patterns” from the following categories:

  • Externalized Configuration
  • Externalized State
  • Externalized Channels
  • Runtime Reconfiguration
  • Continuous Delivery via Multi-Version Concurrent Execution
  • Brick Telemetry

The learner should leave this session prepared to design and implement cloud native “bricks” that can be composed via any “master builder” of cloud native solutions.

Cloud Native Architecture Patterns: Part 2 - Mortar Patterns

Tuesday, 3:15 PM EST

Now that we’ve been equipped with an understanding of how software architectures can exploit the unique aspects of cloud infrastructure environments, it’s time to construct a pattern catalog that can guide our decision making as we journey from concepts and principles to concrete implementations. The software industry has long been motivated by the promise of a “component marketplace” from which we can draw commodity components which can be composed via standardized mechanisms to create powerful systems. These systems are often compared to the myriad of possible creations that can be produced using Lego pieces. The power in the Lego “architecture” is found in the amazing diversity of individual pieces that are composed via a universal system of compatibility. Cloud native architectures approximate the same power via Lego-like patterns.

In this two-part series, we’ll divide the cloud native patterns into two categories:

  1. Bricks - how we design cloud native services
  2. Mortar - how we compose cloud native systems

In part one we’ll study “Mortar Patterns” from the following categories:

  • Service Discovery
  • Edge Gateways
  • Fault Tolerance
  • Event-Driven Systems
  • Contract Management
  • Integration Telemetry

The learner should leave this session prepared to compose cloud native solutions from any available collection of cloud native “bricks.”

Cloud Native Architecture Migration Strategies

Tuesday, 5:00 PM EST

If you’ve been following along, you’ve realized by now that cloud native architectures are fundamentally different than most traditional architectures. Most of the cloud native architectures that we can see in the wild have been built by relatively young companies that began from a zero-legacy state. Architects in more mature organizations are faced with the daunting challenge of building modern systems that exploit the unique characteristics of cloud infrastructure while simultaneously attempting to migrate legacy systems into those same environments, all the while “keeping the lights on.”

Much of the last two years of my career have been spent helping Fortune 500 companies devise cloud native migration strategies, and I’ve built a increasingly large catalog of patterns that have proven useful across multiple systems and industry verticals. In this session we’ll dive into those patterns and more, including:

  • the utility of cloud native maturity models
  • the cloud continuum: cloud ready, cloud friendly, cloud resilient, cloud native
  • the app continuum: evolving toward distributed systems
  • criteria for selecting applications to migrate
  • the occasionally palatable perils of “lift and shift”
  • applying the Strangler Pattern
  • leveraging strategic domain-driven design: bounded contexts, context maps, and anti-corruption layers
  • insulating from “irreplaceable” legacy systems of record with hexagonal architecture

The learner should leave this session with a tool belt suitable for attacking an upcoming cloud native architecture migration effort.

Introduction to Chaos Engineering

Tuesday, 8:30 PM EST

Chaos Engineering, pioneered by Netflix, is the discipline of experimenting on a distributed system in order to build confidence in the system's capability to withstand turbulent conditions in production.

In this presentation, we'll take a look at the problem of building resilient software, and discuss how applying Google's SRE principles and patterns for architectural resiliency can help us to solve it. We'll then examine how the practice of Chaos Engineering can help us to prove or disprove the resiliency of our systems.

An Architect's Guide to Evaluating Cloud Services

Wednesday, 9:00 AM EST

The verdict is in: Cloud is NOT a fad. If you haven't already, as a software architect you will be called upon to evaluate various cloud services and determine their suitability for your company's use. In this session, we'll examine ten key criteria that you can use to evaluate any cloud service.

During our time together we'll examine the following criteria:

  1. Economics: Price/Cost/Unit of Billing
  2. Applicability to Business Case
  3. Resiliency Requirements
  4. Scalability Requirements
  5. Security Requirements
  6. Regulatory Requirements
  7. Degree of Provider “Lock-In”
  8. Required “Undifferentiated Heavy Lifting”
  9. Differentiating Features
  10. Available Tooling

Serverless State of the Union: 2018

Wednesday, 11:00 AM EST

On the 2017 tour, I introduced the notion of “serverless” and Functions as a Service (FaaS) platforms. We understood the motivation for serverless computing, compared serverless to other cloud-native infrastructure approaches, navigated some architectural tradeoffs, and took a whirlwind tour of the Big 3 FaaS providers.

In this 2018 edition of the talk, we’ll still cover a few of the same themes to bring new folks up to speed, but we’ll also look at what’s changed in this ecosystem over the past year, take a look at new or enhanced features, offerings, runtimes, and programming models, and examine what use cases are becoming popular for serverless computing. We’ll also look at how tradeoffs have evolved, and definitely throw in a few demos.

AWS Lambda Deep Dive

Wednesday, 1:30 PM EST

In this presentation, we'll build, test, and deploy an image-processing pipeline using Amazon Web Services such as Lambda, API Gateway, Step Functions, DynamoDB, and Rekognition.

We'll take a look at some of the following topics:

  • Describing serverless deployments with SAM
  • Testing lambda functions with SAM Local
  • Interacting with AWS API's from lambda functions
  • Configuring IAM policies for lambda functions
  • Describing workflows of functions with Step Functions
  • Deploying with Cloud Formation