Introducción a la arquitectura software

Post on 10-May-2015

97 views 0 download

description

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

Transcript of Introducción a la arquitectura software

Arquitectura SoftwareManual de supervivencia

Yeray Darias Camacho @ydarias

¿Quién soy?

ydarias@avantic.net @ydarias

Backend development Mobile

development

Training

No todo es arquitectura

Equipo

Metodología

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

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

Antes de proseguir ... yo uso el lenguaje que

más me conviene y punto.

¿Qué es la arquitectura del 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

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

“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

Las tres leyes de la optimización

#1 No optimizar

#2 No optimizar aún

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

Arquitectura web predominante hace 5 años

Petición HTTP

Respuesta HTML

Arquitectura web actual???

Petición AJAX

Respuesta JSON

Petición AJAX

Respuesta JSON

Petición HTTP (Ajax)

Respuesta JSON

Front-end

Back-end

Persistencia

Características ACID

Atomicity Consitency Isolation Durability

Teorema CAP

Consistency

Partition tolerance

Availability

Teorema CAP

Consistency

Partition tolerance*

Availability

*Se da por hecho en sistemas distribuidos modernos

Veamos que hay bajo el capó