arquitectura para artesanos

58
Arquitectura para artesanos Software Craftsmanship Barcelona 27.09.2015 Toni Tassani @atassani

Upload: toni-tassani

Post on 16-Feb-2017

284 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Arquitectura para artesanos

Arquitectura para

artesanos

Software Craftsmanship Barcelona 27.09.2015

Toni Tassani @atassani

Page 2: Arquitectura para artesanos

Nada de tecnología Experiencia Niveles Relación con craftsmanship Ideas

Expectativas

Page 3: Arquitectura para artesanos

Arquitecto

Page 4: Arquitectura para artesanos

Arquitecto

Page 5: Arquitectura para artesanos

“La relación de

componentes

que forman un

sistema y las

interrelaciones

entre ellos”

Page 6: Arquitectura para artesanos

¿De qué hablo

cuando hablo de

arquitectura?

Page 7: Arquitectura para artesanos

El tamaño

importa

Startup Corporación

Page 8: Arquitectura para artesanos

Velocidad

Cambio

Riesgo

Inestabilidad

Eficiencia

Seguridad

Control

Rentabilidad

Page 9: Arquitectura para artesanos

Rápida

Informal

Eficaz

Rigurosa

Formal

Precisa

Page 10: Arquitectura para artesanos

La historia es

importante

Page 11: Arquitectura para artesanos

Todo por decidir

Aplicaciones

y sistemas

existentes

Page 12: Arquitectura para artesanos

Todo por decidir

Aplicaciones

y sistemas

existentes

Page 13: Arquitectura para artesanos

el arquitecto hombre orquesta

Page 14: Arquitectura para artesanos

Arquitecto en departamento de arquitectura

Page 15: Arquitectura para artesanos

Decisiones de entorno de desarrollo

Decisiones de entorno de ejecución

Guía para el equipo

Estructura del código

CTO / Desarrollador senior

el arquitecto

Page 16: Arquitectura para artesanos

Estructuras muy formales

Organizaciones con mucha historia

Decisiones a muchos niveles

TTM “Time to Market”

TCO “Total Cost of Ownership”

Arquitecto

Page 17: Arquitectura para artesanos

Normalizar Homogeneizar Controlar a los desarrolladores Facilitar cambios futuros Permitir multi-proveedor Evitar CVDD Industrializar

Page 18: Arquitectura para artesanos

WTF!

Page 19: Arquitectura para artesanos
Page 20: Arquitectura para artesanos
Page 21: Arquitectura para artesanos

The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary

by Eric S. Raymond

Page 22: Arquitectura para artesanos

Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.

Page 23: Arquitectura para artesanos
Page 24: Arquitectura para artesanos

Aprendiz

Oficial

Maestro

Page 25: Arquitectura para artesanos

Growing the

architecture

Page 26: Arquitectura para artesanos
Page 27: Arquitectura para artesanos

¿Qué podemos aprender?

Page 28: Arquitectura para artesanos
Page 29: Arquitectura para artesanos

We Software

Page 30: Arquitectura para artesanos
Page 31: Arquitectura para artesanos
Page 32: Arquitectura para artesanos

¿Qué podemos aprender?

Page 33: Arquitectura para artesanos

Enterprise Architect

Solutions Architect

Busin

ess A

rchitect

Data

Arc

hitect

Netw

ork

Arc

hitect

Infr

astr

uctu

re A

rchitect

Te

chn

ica

l Arc

hite

ct

Security

Arc

hitect

Subject Areas

Pro

jects

/ L

ow

Leve

l S

trate

gy /

Hig

h L

evel

Page 34: Arquitectura para artesanos

Arquitectura

empresarial

“La organización fundamental de un sistema, compuesta por sus componentes, las relaciones entre ellos y su entorno, así como los principios que gobiernan su diseño y evolución.” Existe, esté definida o no

Business

Data

Application

Technology

Page 35: Arquitectura para artesanos

TOGAF

The Open Group

Architecture Framework

Alternativas: Zachman

IAF

Page 36: Arquitectura para artesanos

Business Layer

Application Layer

Infrastructure Layer

ArchiMate

Page 37: Arquitectura para artesanos

Arquitectura de ejecución Componentes software reutilizables

alineados con requerimientos

Arquitectura de desarrollo

Herramientas, estándares y metodologías para el desarrollo de

software

Arquitectura de operación

Mecanismos para garantizar el nivel de servicio y operación del software

Arquitectura técnica

Infraestructura (HW y SW base) para soportar el desarrollo y operación del

sistema.

Negocio

Page 38: Arquitectura para artesanos

Arquitectura de ejecución Componentes software reutilizables

alineados con requerimientos

Arquitectura de desarrollo

Herramientas, estándares y metodologías para el desarrollo de

software

Arquitectura de operación

Mecanismos para garantizar el nivel de servicio y operación del software

Arquitectura técnica

Infraestructura (HW y SW base) para soportar el desarrollo y operación del

sistema.

Negocio

c

Logging

Monitorización

Caché

Procesos batch

Alertas

Internacionalización

Llamadas a servicios

Configuración

Transaccionalidad

Autenticación …

Page 39: Arquitectura para artesanos

Arquitectura de ejecución Componentes software reutilizables

alineados con requerimientos

Arquitectura de desarrollo

Herramientas, estándares y metodologías para el desarrollo de

software

Arquitectura de operación

Mecanismos para garantizar el nivel de servicio y operación del software

Arquitectura técnica

Infraestructura (HW y SW base) para soportar el desarrollo y operación del

sistema.

Negocio

IDE

Pruebas unitarias

Estrategia de pruebas

Templates

Gestión de configuración

Modelado de datos

Generadores de código

Documentación

Integración continua

Encodings …

Page 40: Arquitectura para artesanos

Arquitectura de ejecución Componentes software reutilizables

alineados con requerimientos

Arquitectura de desarrollo

Herramientas, estándares y metodologías para el desarrollo de

software

Arquitectura de operación

Mecanismos para garantizar el nivel de servicio y operación del software

Arquitectura técnica

Infraestructura (HW y SW base) para soportar el desarrollo y operación del

sistema.

Negocio

Entornos

Promoción

Autorizaciones

Automatismos

Versionado

Alta disponibilidad

Registro de servicios

Alta disponibilidad

Contingencia

Intervenciones

Page 41: Arquitectura para artesanos

Arquitectura de ejecución Componentes software reutilizables

alineados con requerimientos

Arquitectura de desarrollo

Herramientas, estándares y metodologías para el desarrollo de

software

Arquitectura de operación

Mecanismos para garantizar el nivel de servicio y operación del software

Arquitectura técnica

Infraestructura (HW y SW base) para soportar el desarrollo y operación del

sistema.

Negocio

Hardware

Software de base

Virtualización

Containers

Cloud pública / privada

Topología de red

Licencias

Instalación

Mantenimiento

Page 42: Arquitectura para artesanos

Arquitectura de ejecución Componentes software reutilizables

alineados con requerimientos

Arquitectura de desarrollo

Herramientas, estándares y metodologías para el desarrollo de

software

Arquitectura de operación

Mecanismos para garantizar el nivel de servicio y operación del software

Arquitectura técnica

Infraestructura (HW y SW base) para soportar el desarrollo y operación del

sistema.

Negocio

Page 43: Arquitectura para artesanos

Arquitectura

como producto

App1 App2 App3 App4 AppN

ARQUITECTURA

SOFTWARE BASE

HARDWARE

Page 44: Arquitectura para artesanos

Arquitectura

como producto

App1 App2 App3 App4 AppN

FONTANERÍA

SOFTWARE BASE

HARDWARE

Page 45: Arquitectura para artesanos
Page 46: Arquitectura para artesanos

Arquitectura en

Metodologías

ágiles

Page 47: Arquitectura para artesanos

DSDM Atern

“Firm foundations”

Page 48: Arquitectura para artesanos
Page 49: Arquitectura para artesanos

Initial architectural envisioning “Architecture Owner” Agile DBAs Defer Commitment Agile Architecture

DAD

Page 50: Arquitectura para artesanos

Arquitectos

Page 51: Arquitectura para artesanos
Page 52: Arquitectura para artesanos

Arquitecto como rol

Comunicar la arquitectura

Abstracción, reducir detalle

noUML

Verbo y nombre

Page 53: Arquitectura para artesanos

Workspace workspace = new Workspace("Spring PetClinic", ""); // create a software architecture model Model model = workspace.getModel(); SoftwareSystem springPetClinic = model.addSoftwareSystem("Spring PetClinic", "Allows employees to view and manage information “ + "regarding the veterinarians, the clients, and their pets."); Person clinicEmployee = model.addPerson("Clinic Employee", "An employee of the clinic"); clinicEmployee.uses(springPetClinic, "Uses"); // create some views to visualise the model ViewSet viewSet = workspace.getViews(); SystemContextView contextView = viewSet.createContextView(springPetClinic); contextView.addAllSoftwareSystems(); contextView.addAllPeople(); // upload the model and views to structurizr.com StructurizrClient structurizrClient = new StructurizrClient("https://api.structurizr.com", "key", "secret"); structurizrClient.putWorkspace(1, workspace);

Descripción de la

arquitectura en

código

structurizr

Page 54: Arquitectura para artesanos

The Craftsman I Would Like to Be

Alex Bolboaca

El título no es lo importante

Aprende tu técnica

Piensa a diferentes niveles

Sé pragmático

Rodéate de artesanos

Aprende toda tu vida

http://www.alexbolboaca.ro/

Page 55: Arquitectura para artesanos

Niveles de arquitectura

Enterprise Architecture

Software Architecture

Comunicación

Abstracción

Respeto

Page 56: Arquitectura para artesanos

TOGAF

ArchiMate

SAFe

Architecture runway

Architecture for

Developers

structrurizr

Page 57: Arquitectura para artesanos

Firmitas

Utilitas

Venustas

Page 58: Arquitectura para artesanos

Gracias

Toni Tassani @atassani