arquitecturas que crecen y arquitecturas que no

Download Arquitecturas que crecen y arquitecturas que no

Post on 09-Jul-2015

2.216 views

Category:

Technology

2 download

Embed Size (px)

DESCRIPTION

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

TRANSCRIPT

Arquitecturas que Crecen y Arquitecturas que No

Arquitecturas que Crecen y Arquitecturas que NoAgustn Ramos Fonseca

Qu es Arquitectura?De qu formas puede crecer un sistema de software?En la cantidad de

Usuarios que lo usanDatos que maneja.Transacciones que procesa.Funcionalidad que implementa.Contextos en los que es usado.Plataformas que soporta.

MetforasUn Organismo VivoEl proceso biolgico que lleva a un organismo a desarrollar su forma caracterstica.

MorfognesisSe origina (una clula)Se formaMaduraCambia constantemente.Alcanza la vejez, y muere.

...Puede crearse software as?Qu beneficios traera?

Ciclo de vidaEspecializacin y restricciones

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?

Especializacin y restriccionesEl desarrollo depende del contextoEn software Cul es el contexto adecuado?El entorno socio-econmico y tecnolgico en el cual se inserta Moraleja?Release It!

Diseo de LenguajesQu constituye un lenguaje?Un vocabularioif, for, public, myVar

Una sintaxisvlido: public void do() {}Invlido: void public do() {}

Una semnticaDos extremosLenguajes con muchas caractersticas (Muy completos).Un amplio vocabulario.Una sintaxis muy elaborada.

Lenguajes pequeos pero extensibles.

Cul es mejor?Growing a LanguageGuy Steele, OOPSLA 1998

A language design can no longer be a thing. It must be a patterna pattern for growtha 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.

Christopher Alexandery las 15 propiedadesNo comprendimos a Alexanderl hablaba de esto.

No comprendimos a AlexanderPero interpretamos esto

Esto no puede crecer

Por eso reformul su teoraThe Nature of Order (4 tomos)

"living structure, wherever it appears, is composed of fundamental structural features -- roughly fifteen of them, at least."

Las 15 propiedades1. 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.

Ejemplo: Niveles de Escala

En softwareUna arquitectura micro-kernel

PrincipiosModularizacinSin una buena modularizacin, los sistemas son rgidos (difciles de cambiar).

Qu es una buena modularizacin?Modularizacin Efectivahttp://slidesha.re/9siQFYModular Architecturehttp://modularity.kirkk.com/

Disea explcitamente tus mdulos, y cuida que las propiedades esperadas de ellos se mantengan.

OrtogonalidadLas responsabilidades de los componentes deben tener fronteras bien definidas.Solo de esta manera se logra la flexibilidad y reversibilidad requerida.

Decisiones ReversiblesCuando se toma una decisin tecnolgica, es necesario evaluar si esta podra cambiar en un futuro. De ser as debemos introducir los mecanismos necesarios para lograr revertir la decisin.

Abstracciones.Componentes dbilmente acoplados.Intermediarios (Adapter, Proxy, etc)

Patrones ArquitectnicosCQRSCommand Query Responsibility Segregation

ActoresNo hay un solo hilo de control.Objetos que se comunican con mensajes asncronos.No hay estado compartido.Cuando un mensaje es recibido, un actor puedeCambiar su estado interno.Crear ms actores.Enviar ms mensajesQu ofrece?Escalabilidad. Es un modelo natural de cmputo distribuido.Tolerancia a fallas. Cuando un actor no funciona, se crea uno nuevo en su lugar.

ActoresCon qu experimentar?ErlangScalaAkka (librera Java)Gpars (Groovy)

Gracias!Agustn Ramos Fonseca@MachinesAreUszentimental.software@gmail.com