Introducción a la arquitectura software

34
Arquitectura Software Manual de supervivencia Yeray Darias Camacho @ydarias

description

This is my keynote for the Tenerife Lan Party 2014, talking about software architecture.

Transcript of Introducción a la arquitectura software

Page 1: Introducción a la arquitectura software

Arquitectura SoftwareManual de supervivencia

Yeray Darias Camacho @ydarias

Page 2: Introducción a la arquitectura software

¿Quién soy?

Page 4: Introducción a la arquitectura software

Backend development Mobile

development

Training

Page 5: Introducción a la arquitectura software
Page 6: Introducción a la arquitectura software
Page 7: Introducción a la arquitectura software
Page 8: Introducción a la arquitectura software

No todo es arquitectura

Page 9: Introducción a la arquitectura software

Equipo

Page 10: Introducción a la arquitectura software
Page 11: Introducción a la arquitectura software

Metodología

Page 12: Introducción a la arquitectura software

http://www.flickr.com/photos/quique_fs/

Page 13: Introducción a la arquitectura software

http://www.flickr.com/photos/betsyweber/

Page 14: Introducción a la arquitectura software

Antes de proseguir ... yo uso el lenguaje que

más me conviene y punto.

Page 15: Introducción a la arquitectura software

¿Qué es la arquitectura del software?

Page 16: Introducción a la arquitectura software

1. “A formal description of a system, or a detailed plan of the system at component level to guide its

implementation.”

The Open Group Architecture Framework

Page 17: Introducción a la arquitectura software

2. “The structure of components, their inter-relationships, and the principles and guidelines governing their design and evolution over time.”

The Open Group Architecture Framework

Page 18: Introducción a la arquitectura software

“In most successful software projects, the expert developers working on that project have a shared

understanding of the system design. This shared understanding is called “architecture.” This understanding

includes how the system is divided into components and how the components interact through interfaces. These components

are usually composed of smaller components, but the architecture only includes the components and

interfaces that are understood by all the developers ... Architecture is about the important stuff. Whatever that

is.”

Martin Fowler

Page 19: Introducción a la arquitectura software

Las tres leyes de la optimización

Page 20: Introducción a la arquitectura software

#1 No optimizar

Page 21: Introducción a la arquitectura software

#2 No optimizar aún

Page 22: Introducción a la arquitectura software

#3 Si optimizas hazlo en función de una medida

Page 23: Introducción a la arquitectura software

Arquitectura web predominante hace 5 años

Petición HTTP

Respuesta HTML

Page 24: Introducción a la arquitectura software
Page 25: Introducción a la arquitectura software

Arquitectura web actual???

Petición AJAX

Respuesta JSON

Petición AJAX

Respuesta JSON

Page 26: Introducción a la arquitectura software
Page 27: Introducción a la arquitectura software

Petición HTTP (Ajax)

Respuesta JSON

Page 28: Introducción a la arquitectura software

Front-end

Back-end

Persistencia

Page 29: Introducción a la arquitectura software

Características ACID

Atomicity Consitency Isolation Durability

Page 30: Introducción a la arquitectura software

Teorema CAP

Consistency

Partition tolerance

Availability

Page 31: Introducción a la arquitectura software

Teorema CAP

Consistency

Partition tolerance*

Availability

*Se da por hecho en sistemas distribuidos modernos

Page 32: Introducción a la arquitectura software
Page 33: Introducción a la arquitectura software
Page 34: Introducción a la arquitectura software

Veamos que hay bajo el capó