Arquitectura para artesanos
-
Upload
toni-tassani -
Category
Software
-
view
283 -
download
0
Transcript of Arquitectura para artesanos
Arquitectura para
artesanos
Software Craftsmanship Barcelona 27.09.2015
Toni Tassani @atassani
Nada de tecnología Experiencia Niveles Relación con craftsmanship Ideas
Expectativas
Arquitecto
Arquitecto
“La relación de
componentes
que forman un
sistema y las
interrelaciones
entre ellos”
¿De qué hablo
cuando hablo de
arquitectura?
El tamaño
importa
Startup Corporación
Velocidad
Cambio
Riesgo
Inestabilidad
Eficiencia
Seguridad
Control
Rentabilidad
Rápida
Informal
Eficaz
Rigurosa
Formal
Precisa
La historia es
importante
Todo por decidir
Aplicaciones
y sistemas
existentes
Todo por decidir
Aplicaciones
y sistemas
existentes
el arquitecto hombre orquesta
Arquitecto en departamento de arquitectura
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
Estructuras muy formales
Organizaciones con mucha historia
Decisiones a muchos niveles
TTM “Time to Market”
TCO “Total Cost of Ownership”
Arquitecto
Normalizar Homogeneizar Controlar a los desarrolladores Facilitar cambios futuros Permitir multi-proveedor Evitar CVDD Industrializar
WTF!
The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary
by Eric S. Raymond
Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.
Aprendiz
Oficial
Maestro
Growing the
architecture
¿Qué podemos aprender?
We Software
¿Qué podemos aprender?
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
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
TOGAF
The Open Group
Architecture Framework
Alternativas: Zachman
IAF
Business Layer
Application Layer
Infrastructure Layer
ArchiMate
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
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 …
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 …
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
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
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
Arquitectura
como producto
App1 App2 App3 App4 AppN
ARQUITECTURA
SOFTWARE BASE
HARDWARE
Arquitectura
como producto
App1 App2 App3 App4 AppN
FONTANERÍA
SOFTWARE BASE
HARDWARE
Arquitectura en
Metodologías
ágiles
DSDM Atern
“Firm foundations”
Initial architectural envisioning “Architecture Owner” Agile DBAs Defer Commitment Agile Architecture
DAD
Arquitectos
Arquitecto como rol
Comunicar la arquitectura
Abstracción, reducir detalle
noUML
Verbo y nombre
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
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/
Niveles de arquitectura
Enterprise Architecture
Software Architecture
Comunicación
Abstracción
Respeto
TOGAF
ArchiMate
SAFe
Architecture runway
Architecture for
Developers
structrurizr
Firmitas
Utilitas
Venustas
Gracias
Toni Tassani @atassani