162
ARQUITECTURA EVOLUTIVA

Arquitectura Evolutiva

Embed Size (px)

Citation preview

ARQUITECTURA EVOLUTIVA

Fausto De La Torre

Desarrollador

Líder Desarrollo

@faustodelatog

Project Manager

Arquitecto Software

Desarrollador

Consultor

Líder Técnico / Arquitecto

Siempre estamos contratando

i Contexto

Arquitectura Evolutiva - Definición

Características

Principios

Micro Servicios como Arquitectura Evolutiva

Conclusiones

i Contexto

Arquitectura Evolutiva - Definición

Características

Principios

Micro Servicios como Arquitectura Evolutiva

Conclusiones

Arquitectura de Software

Arquitectura de Software

“… the important stuff (whatever that is)” Ralph Johnson

Arquitectura de Software

“SA = {Elements, Form, Rationale}” Perry DE, Wolf AL

Foundations for the study of software architecture

“… the important stuff (whatever that is)” Ralph Johnson

Arquitectura de Software

“things that people perceiveas hard to change”

Martin Fowler http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf

“SA = {Elements, Form, Rationale}” Perry DE, Wolf AL

Foundations for the study of software architecture

“… the important stuff (whatever that is)” Ralph Johnson

¿Qué es la Arquitectura de Software?

¿Por qué es importante?

¿Por qué es importante?

¿Por qué es importante?

¿Por qué es importante?

una buena arquitectura es la clave de éxito a largo plazo

Enfoque Tradicional

Enfoque Tradicional

Enfoque Tradicional

Enfoque Tradicional

Esperado vs. Real

Esperado vs. Real

Esperado vs. Real

Esperado vs. Real

El cambio es una realidad y complica

El cambio es una realidad y complica

El cambio es una realidad y complica

Buenas Prácticas

Ayer t

Arquitectura de Software

AntipatronBuenas Prácticas

HoyAyer t

Arquitectura de Software

Charles Darwin

Charles Darwin

i Contexto

Arquitectura Evolutiva - Definición

Características

Principios

Micro Servicios como Arquitectura Evolutiva

Conclusiones

ARQUITECTURA EVOLUTIVA

“Soporta un cambio guiado, continuo e incremental como primer principio a lo largo de

muchas dimensiones”

ARQUITECTURA EVOLUTIVA

Rebecca Parsons, Neal Ford

¿Qué Dificulta el Cambio?

¿Qué Dificulta el Cambio?

RIGIDEZ

¿Qué Dificulta el Cambio?

RIGIDEZ ACOPLAMIENTO

Creando la Arquitectura

Creando la Arquitectura

Creando la Arquitectura

Respuesta al cambio

Seguir un planSOBRE

Creando la Arquitectura

Respuesta al cambio

Seguir un planSOBRE

Respuesta al cambio y NO un plan

Creando la Arquitectura

Respuesta al cambio

Seguir un planSOBRE

Respuesta al cambio y NO un plan

PLANIFICAR EN ENTORNOS CAMBIANTES

t

t

Arquitectura EsperadaRealidad

Tradicional

Agile

i Contexto

Arquitectura Evolutiva - Definición

Características

Principios

Micro Servicios como Arquitectura Evolutiva

Conclusiones

¿Qué Facilita la Evolución?

Experimentación

Guiado y validado por las capacidades del negocio

Modularidad y Desacoplamiento

Negocio

¿Qué Facilita la Evolución?

Experimentación

Guiado y validado por las capacidades del negocio

Modularidad y Desacoplamiento

Negocio

Modularidad y Desacoplamiento

Modularidad y Desacoplamiento

Big Ball of Mud

Modularidad y Desacoplamiento

SOA

Eventos

Capas UI

Controladores

Negocio

Persistencia

Microservicios

Acoplamiento

X-Ray view of package dependencies

Acoplamiento a tecnologías

Acoplamiento a tecnologías

Capas de anticorrupción

¿Qué Facilita la Evolución?

Experimentación

Guiado y validado por las capacidades del negocio

Modularidad y Desacoplamiento

Negocio

Guiada por el Dominio

Guiada por el Dominio

Bounded Context

Productos

Clientes

Modelo de Datos

Bounded Context

Productos

Clientes

Modelo de Datos

Bounded Context

Facturación

CampañasMarketing

Capacidades del negocio

Entrega

Compras

message busprocess choreographer

service orchestrator

business services BS BS BS BS BS BS

enterprise services ES ES ES ES ES ES

application services AS infrastructure services IS

Guiada por el Dominio - ¿SOA?

message busprocess choreographer

service orchestrator

business services BS BS BS BS BS BS

enterprise services ES ES ES ES ES ES

application services AS infrastructure services IS

Evolución guiada por una separación técnicaNo puede evolucionar guiado por el negocio

Guiada por el Dominio - ¿SOA?

Validada por el Negocio

Validada por el Negocio

ENTREGA CONTINUA

Validada por el Negocio

ENTREGA CONTINUA

control de versiones

servidor integración continua

Integración Continua

control de versiones

servidor integración continua

build tests …

Integración Continua

control de versiones

servidor integración continua

build tests …

Integración Continua

control de versiones

servidor integración continua

build tests …

todos envían sus cambios al trunk al menos una vez

al día

Integración Continua

Agile 101

Agile 101

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Agile 101

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Agile 101

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Agile 101

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Agile 101

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Entrega Continua

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Customer

Delivery teamConstant flow of new features into production

Entrega Continua

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Customer

Delivery teamConstant flow of new features into production listo para

producción SIEMPRE

Entrega Continua

Ley de Conway

“Las organizaciones que diseñan sistemas están limitadas a producir diseños que son copias de las estructuras de comunicación de estas organizaciones.”

Ley de Conway

“Las organizaciones que diseñan sistemas están limitadas a producir diseños que son copias de las estructuras de comunicación de estas organizaciones.”

Ley de Conway

“Las organizaciones que diseñan sistemas están limitadas a producir diseños que son copias de las estructuras de comunicación de estas organizaciones.”

Equipos Multidisciplinarios organizados por

capacidades del negocio

Productos en lugar de Proyectos

Si lo diseñas lo implementas

Productos en lugar de Proyectos

Si lo diseñas lo implementas

Si lo implementas, lo despliegas

Productos en lugar de Proyectos

Si lo diseñas lo implementas

“you build it, you run it”

Si lo implementas, lo despliegas

Arquitecto de Software

Arquitecto de Software

Arquitecto de Software

DEVOPS

DBA

Arquitecto de Software

Creando la Arquitectura

Creando la Arquitectura

Código que funciona

DocumentaciónSOBRE

Creando la Arquitectura

Código que funciona y NO documentación

Código que funciona

DocumentaciónSOBRE

Creando la Arquitectura

Creando la Arquitectura

Creando la Arquitectura

Creando la Arquitectura

¿Qué Facilita la Evolución?

Experimentación

Guiado y validado por las capacidades del negocio

Modularidad y Desacoplamiento

Negocio

Canary Releasing

Feature Toggles

Producción

Feature Toggles

Producción

Feature Toggles

Producción

Feature Toggles

Producción

i Contexto

Arquitectura Evolutiva - Definición

Características

Principios

Micro Servicios como Arquitectura Evolutiva

Conclusiones

El último momento responsable

Elementos de juicio

t

El último momento responsable

Elementos de juicio

t

Empezar Simple

Dietzlers Law

Empezar Simple

Dietzlers Law

Empezar Simple

Dietzlers Law

Empezar Simple

Dietzlers Law

Empezar Simple

El negocio siempre quiere el 100%

Dietzlers Law

Empezar Simple

Tendencias

Atributos de Calidad (Fitness Functions)

Si es doloroso hazlo más seguido

Pipelines de Despliegue

Integración Continua

Migraciones BD

Aprovisionamiento automático

Pro/Reactivo en lugar de Predictivo

Pro/Reactivo en lugar de Predictivo

i Contexto

Arquitectura Evolutiva - Definición

Características

Principios

Micro Servicios como Arquitectura Evolutiva

Conclusiones

Aplicaciones Monolíticas

Aplicaciones Monolíticas

Aplicaciones Monolíticas

Aplicación

Aplicaciones Monolíticas

Aplicación

HTML, JS, etc.

Aplicaciones Monolíticas

Aplicación

HTML, JS, etc.

Aplicaciones Monolíticas

Aplicación

HTML, JS, etc.

Micro Servicios

Micro Servicios

Micro Servicios

Responsabilidad única

Micro Servicios

Responsabilidad única

Alta cohesión y bajo acoplamiento

Micro Servicios

Responsabilidad única

Alta cohesión y bajo acoplamiento

Artefactos desplegables independientes

Micro Servicios

Responsabilidad única

Alta cohesión y bajo acoplamiento

Artefactos desplegables independientes

Guiados por las capacidades del negocio

Gobierno decentralizado

Java Clojure

Ruby

Gobierno decentralizado

Java Clojure

Ruby

Estandarización

Equilibrio

Estandarización

Estandarización- Integración - Interfaces - Monitoreo - Despliegue

Flexibilidad- Construcción Interna

Estandarización- Integración - Interfaces - Monitoreo - Despliegue

Flexibilidad- Construcción Interna

Basado en el Domino

+

Validado por el Negocio

Bounded Context

Facturación

CampañasMarketing

Capacidades del negocio

Entrega

Compras

Java

Bounded Context

Facturación

CampañasMarketing

Capacidades del negocio

Entrega

Compras

Java

Clojure

Bounded Context

Facturación

CampañasMarketing

Capacidades del negocio

Entrega

Compras

Java

Clojure

Java

Bounded Context

Facturación

CampañasMarketing

Capacidades del negocio

Entrega

Compras

Java

Clojure

Java

Java

Bounded Context

Facturación

CampañasMarketing

Capacidades del negocio

Entrega

Compras

Gobierno Decentralizado

Transacciones distribuidas

tx

tx

TEOREMA DE CAP

Escalabilidad

Monolíticas Micro Servicios

Trade offs

Automatización de la infraestructura

Monitoreo

Metrics

Despliegue

i Contexto

Arquitectura Evolutiva - Definición

Características

Principios

Micro Servicios como Arquitectura Evolutiva

Conclusiones

Vivir y abrazar el Cambio

Vivir y abrazar el Cambio

Decisiones reversibles - Planificar lo necesario

Vivir y abrazar el Cambio

Decisiones reversibles - Planificar lo necesario

Pre/ReactivoPredictivo

Vivir y abrazar el Cambio

Decisiones reversibles - Planificar lo necesario

Simplificar, Desacoplar y Desenredar

Pre/ReactivoPredictivo

faustodelatog

MUCHAS GRACIAS