{evolve_at_scale}

Tackling complexity of digital transformation

{myself}

Sebastián Díaz

Head of Digital Ecosystem @ Walmart

/seadiaz

/seadiaz

@seadiaz

/seadiaz

# Myself

{motivation}

# Motivation

Once upon a time a person that presents his resignation

Why did he quit?

From scratch

There is no restriction to build anything we envision, leading the company towards the latest technologies

1.

2.

Avoid bureaucracy

There is not useless processes to follow in order to select vendors, pick cloud services or prioritize the roadmap

3.

Move fast

No need to discuss and line up with a myriad of people to carry out deliriums we have

# Motivation

Make sense to me?

# Motivation

{the_problem}

# The Problem

Ingredients for success

# The Problem
  • People
  • IT
  • Merchandising
  • Marketing
  • People
  • Supply Chain
  • Sales
  • Operations
  • Finance
  • Legal
  • ...
  • IT
  • Merchandising
  • Marketing
  • People
  • Supply Chain
  • IT
  • Merchandising
  • Marketing
  • People
  • Supply Chain
  • Processes
  • Technology

1

Bring a visionary guy or a consulting company with previous experience

2

Create an island of happiness with a disruptive salary strategy

 

3

Launch few product teams to develop homegrown digital products

5

Credibility increases; therefore, we bring more product teams and repeat the formula

4

Even though there are some issues, the first release comes to light

6

Until the formula doesn't work, so, what next?

# The Problem

The Formula Doesn't Work

People

There is a lack of definition around growth, career path, maturity model, onboarding, upskilling, reskilling, ...

1.

2.

Processes

There is not processes in place for performance review, recruitment, promotions, fundings, portfolio, ...

3.

Technology

Quality is not good enough decreasing speed  of delivery, huge coordination efforts and redundancy of solutions 

# The Problem
# The Problem

Challenges at Scale

# The Problem

Vision Alignment

Challenges at Scale

# The Problem

Guided Architecture

Challenges at Scale

# The Problem

Conway's Law

Challenges at Scale

# The Problem

Tech Debt Propagation

Challenges at Scale

# The Problem

Shadow IT

Challenges at Scale

# The Problem

Cognitive Load

Challenges at Scale

{history}

The Evolution of ...

# History
# History
# History

The Evolution Pyramid

# History

Foundations

Edge

Why do we like to start over again?

# History

{mermaid_songs}

# Mermaid Songs

Adoption

# Mermaid Songs

From Scratch

# Mermaid Songs

Limitless Budget

  • Bring talented people quickly
  • Bring external support easily
  • Select any XaaS
# Mermaid Songs

Moving Fast

# Mermaid Songs

Moving Fast

Why avoid mermaid songs?

# Mermaid Songs

Let's be protagonists of those complex problems

# Mermaid Songs

{solutions}

# Solutions

ADR

“An Architectural Decision Record (ADR) captures a single AD”

 

“An Architectural Decision (AD) is a software design choice that addresses a functional or non-functional requirement that is architecturally significant”

ADR - Template Example

# Title

## Status

What is the status, such as proposed, accepted, rejected, deprecated, superseded, etc.?

## Context

What is the issue that we're seeing that is motivating this decision or change?

## Decision

What is the change that we're proposing and/or doing?

## Consequences

What becomes easier or more difficult to do because of this change?
# PRESENTING CODE

ADR - Tooling

# PRESENTING CODE
  • ADMentor Architectural Decision Modeling Add-In for Sparx Enterprise Architect
  • adr-tools - bash scripts to manage ADRs in the Nygard format. example.
  • Ansible script to install adr-tools: ansible-adr-tools
    • C# rewrite: adr-cli
    • Go rewrite: adr
    • Java rewrite: adr-j
    • Node.js rewrite: adr
    • PHP version: phpadr
    • Powershell module: adr-ps
    • Python rewrite: adr-tools-python
  • Another Powershell module: ArchitectureDecisionRecords
  • adr-log: Generates a architectural decision log out of MADRs.
  • adr-manager: Craft MADR templates directly in the Web Browser.
  • adr-viewer - python application to generate a website from a set of ADRs.
  • Embedded Architectural Decision Records, which shows how a distributed AD log can be embedded in Java Code via ADR annotations.
  • Log4brains: CLI and web UI to log and publish your ADRs as a static website

ADR - Lifecycle

# PRESENTING CODE

Proposed

Accepted

Rejected

Superseded

Deprecated

ADR - Scopes & Compliance

# PRESENTING CODE

Product/Team

Ecosystem/Organization

# Solutions

Context Mapping

Identify each model in play on the project and define its BOUNDED CONTEXT. This includes the implicit models of non-object-oriented subsystems. Name each BOUNDED CONTEXT, and make the names part of the UBIQUITOUS LANGUAGE. Describe the points of contact between the models, outlining explicit translation for any communication and highlighting any sharing.

 

Evans, Eric. Domain-Driven Design: Tackling Complexity in the Heart of Software . Pearson Education. Kindle Edition. 

# Solutions

Context Mapping

  • Shared Kernel
  • Customer/Supplier
  • Conformist
  • Anticorruption Layer
  • Separate Ways
  • Open Host Service
  • Published Language
# Solutions

API Specification

The OpenAPI Specification (OAS) defines a standard, language-agnostic interface to RESTful APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined, a consumer can understand and interact with the remote service with a minimal amount of implementation logic

# Solutions

API Specification

Make discovery and usage easy

Diminish coordination and collaboration

Increase quality dramatically

# Solutions

API Specification - Tooling

  • Auto Generators: Tools that will take your code and turn it into an OpenAPI Specification document
  • Converters: Various tools to convert to and from OpenAPI and other API description formats.
  • Data Validators: Check to see if API requests and responses are lining up with the API description.
  • Description Validators: Check your API description to see if it is valid OpenAPI.
  • Documentation: Render API Description as HTML (or maybe a PDF) so slightly less technical people can figure out how to work with the API.
  • DSL: Writing YAML by hand is no fun, and maybe you don't want a GUI, so use a Domain Specific Language to write OpenAPI in your language of choice.
  • GUI Editors: Visual editors help you design APIs without needing to memorize the entire OpenAPI specification.
  • Learning: Whether you're trying to get documentation for a third party API based on traffic, or are trying to switch to design-first at an organization with no OpenAPI at all, learning can help you move your API spec forward and keep it up to date.
  • Miscellaneous: Anything else that does stuff with OpenAPI but hasn't quite got enough to warrant its own category.
  • Mock Servers: Fake servers that take description document as input, then route incoming HTTP requests to example responses or dynamically generates examples.
  • Parsers: Loads and read OpenAPI descriptions, so you can work with them programmatically.
  • SDK Generators: Generate code to give to consumers, to help them avoid interacting at a HTTP level.
    Security: By poking around your OpenAPI description, some tools can look out for attack vectors you might not have noticed.
  • Server Implementations: Easily create and implement resources and routes for your APIs.
  • Testing: Quickly execute API requests and validate responses on the fly through command line or GUI interfaces.
  • Text Editors: Text editors give you visual feedback whilst you write OpenAPI, so you can see what docs might look like.
# Solutions

C4 Model

The C4 model is an easy to learn, developer friendly approach to software architecture diagramming. Good software architecture diagrams assist with communication inside/outside of software development/product teams, efficient onboarding of new staff, architecture reviews/evaluations, risk identification (e.g. risk-storming), threat modelling (e.g. STRIDE/LINDDUN), etc.

# Solutions

C4 Model - Metaphor

# Solutions

C4 Model - Level 1 (Context)

# Solutions

C4 Model - Level 2 (Container)

# Solutions

C4 Model - Level 3 (Component)

# Solutions

C4 Model - Level 4 (Code)

# Solutions

C4 Model - Tooling

# Solutions

C4 Model - Tooling

# Solutions

Developer Portal

A one stop shop for all developer needs

 

Browse through the Company Developer Products to gain insights on technologies that can help you and your projects

 

Find useful guides based on Roles, Use cases & Dev Lifecycle to quickly find information to kickstart your project

# Solutions

Developer Portal - Backstage

# Solutions

Developer Portal - Backstage Tooling

# Solutions

Developer Portal - Backstage Tooling

# Solutions

Developer Portal - Backstage Tooling

{takeaways}

# Takeaways
  • Real impact comes after a while
  • Complex problems arise at scale
  • We need to get ahead of coming problems
  • Money helps, but we need more to thrive

🙏

Evolve at Scale

By Sebastian Diaz

Evolve at Scale

  • 56