Arquitectura para artesanos

Post on 16-Feb-2017

284 views 0 download

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