{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