31
Arquitecturas que Crecen y Arquitecturas que No Agustín Ramos Fonseca

Arquitecturas que crecen y arquitecturas que no

Embed Size (px)

DESCRIPTION

Presentación dada en el marco de SHLCON 2010, Puebla, México. http://loseventos.de/springhispano/shlcon2010

Citation preview

Page 1: Arquitecturas que crecen y arquitecturas que no

Arquitecturas que Crecen y

Arquitecturas que No

Agustín Ramos Fonseca

Page 2: Arquitecturas que crecen y arquitecturas que no

¿Qué es Arquitectura?

Page 3: Arquitecturas que crecen y arquitecturas que no

¿De qué formas puede crecer un

sistema de software?

En la cantidad de…

Usuarios que lo usan

Datos que maneja.

Transacciones que procesa.

Funcionalidad que implementa.

Contextos en los que es usado.

Plataformas que soporta.

Page 4: Arquitecturas que crecen y arquitecturas que no

Metáforas

Page 5: Arquitecturas que crecen y arquitecturas que no

Un Organismo Vivo

Page 6: Arquitecturas que crecen y arquitecturas que no

El proceso biológico que lleva a un organismo a desarrollar su forma característica.

Morfogénesis

Page 7: Arquitecturas que crecen y arquitecturas que no

Se origina (una célula)

Se forma

Madura

Cambia constantemente.

Alcanza la vejez, y muere.

...¿Puede crearse software así?

¿Qué beneficios traería?

Ciclo de vida

Page 8: Arquitecturas que crecen y arquitecturas que no

Especialización y

restricciones

Page 9: Arquitecturas que crecen y arquitecturas que no

En las etapas embrionarias, muchas

criaturas son muy parecidas.

Conforme pasa el tiempo, se dan

eventos que dan forma y restringen el

conjunto de eventos que pueden

ocurrir despues, así como las formas

que se pueden alcanzar...

En software… ¿por qué tomar

decisiones anticipadas?

Especialización y

restricciones

Page 10: Arquitecturas que crecen y arquitecturas que no

El desarrollo depende del

contexto

En software… ¿Cuál es el contexto adecuado?

El entorno socio-económico y tecnológico en el cual se inserta… ¿Moraleja?

¡Release It!

Page 11: Arquitecturas que crecen y arquitecturas que no

Diseño de Lenguajes

Page 12: Arquitecturas que crecen y arquitecturas que no

¿Qué constituye un lenguaje?

Un vocabulario

if, for, public, myVar

Una sintaxis

válido: public void do() {}

Inválido: void public do() {}

Una semántica

Page 13: Arquitecturas que crecen y arquitecturas que no

Dos extremos

Lenguajes con muchas características

(Muy completos).

◦ Un amplio vocabulario.

◦ Una sintaxis muy elaborada.

Lenguajes pequeños pero extensibles.

¿Cuál es mejor?

Page 14: Arquitecturas que crecen y arquitecturas que no

Growing a Language

Guy Steele, OOPSLA 1998

“A language design can no longer be a thing. It must be a pattern—a pattern for growth—a pattern for growing the pattern for defining the patterns that programmers can use for their real work and their main

goal.”

“So I think the sole way to win is to plan for growth with help from users... Parts of the

language must be designed to help the task of growth. “

Page 15: Arquitecturas que crecen y arquitecturas que no

Christopher Alexander

y las 15 propiedades

Page 16: Arquitecturas que crecen y arquitecturas que no

No comprendimos a

Alexander Él hablaba de esto.

Page 17: Arquitecturas que crecen y arquitecturas que no

No comprendimos a

Alexander Pero interpretamos esto

Page 18: Arquitecturas que crecen y arquitecturas que no

Esto no puede crecer

Page 19: Arquitecturas que crecen y arquitecturas que no

Por eso reformuló su teoría

“The Nature of Order” (4 tomos)

"living structure, wherever it appears, is

composed of fundamental structural

features

-- roughly fifteen of them, at least."

Page 20: Arquitecturas que crecen y arquitecturas que no

Las 15 propiedades

1. Levels of scale.

2. Strong centers.

3. Boundaries.

4. Alternating repetition.

5. Positive space.

6. Good shape.

7. Local symmetries.

8. Deep interlock and ambiguity. .

9. Contrast.

10. Gradients.

11. Roughness.

12. Echoes.

13. The Void.

14. Simplicity and Inner Calm.

15. Not-separateness.

Page 21: Arquitecturas que crecen y arquitecturas que no

Ejemplo: Niveles de Escala

Page 22: Arquitecturas que crecen y arquitecturas que no

En software

Una arquitectura micro-kernel

Page 23: Arquitecturas que crecen y arquitecturas que no

Principios

Page 24: Arquitecturas que crecen y arquitecturas que no

Modularización

Sin una buena modularización, los sistemasson rígidos (difíciles de cambiar).

¿Qué es una buena modularización?

◦ Modularización Efectiva

http://slidesha.re/9siQFY

◦ Modular Architecture

http://modularity.kirkk.com/

Diseña explícitamente tus módulos, y cuidaque las propiedades esperadas de ellos se mantengan.

Page 25: Arquitecturas que crecen y arquitecturas que no

Ortogonalidad

Las responsabilidades de los

componentes deben tener fronteras

bien definidas.

Solo de esta manera se logra la

flexibilidad y reversibilidad requerida.

Page 26: Arquitecturas que crecen y arquitecturas que no

Decisiones Reversibles

Cuando se toma una decisión

tecnológica, es necesario evaluar si

esta podría cambiar en un futuro. De

ser así debemos introducir los

mecanismos necesarios para lograr

revertir la decisión.

◦ Abstracciones.

◦ Componentes débilmente acoplados.

◦ Intermediarios (Adapter, Proxy, etc)

Page 27: Arquitecturas que crecen y arquitecturas que no

Patrones Arquitectónicos

Page 28: Arquitecturas que crecen y arquitecturas que no

CQRS

Command Query Responsibility

Segregation

Page 29: Arquitecturas que crecen y arquitecturas que no

Actores

No hay un solo hilo de control.

“Objetos” que se comunican con mensajesasíncronos.

No hay estado compartido.

Cuando un mensaje es recibido, un actor puede◦ Cambiar su estado interno.

◦ Crear más actores.

◦ Enviar más mensajes

¿Qué ofrece?◦ Escalabilidad. Es un modelo natural de cómputo

distribuido.

◦ Tolerancia a fallas. Cuando un actor no funciona, se crea uno nuevo en su lugar.

Page 30: Arquitecturas que crecen y arquitecturas que no

Actores

¿Con qué experimentar?

◦ Erlang

◦ Scala

◦ Akka (librería Java)

◦ Gpars (Groovy)

Page 31: Arquitecturas que crecen y arquitecturas que no

¡Gracias!

Agustín Ramos Fonseca

@MachinesAreUs

[email protected]