Cercar en aquest blog

30/3/10

Nova Web Microsoft d'Arquitectura en Castellà

Microsoft ha estrenat una nova web d'aquitectura de software en castellà i ha publicat un llibre amb un exemple associat, molt interessant.(Enllaç)

29/3/10

Capes i Nivells, no són el mateix.

Moltes vegades quan parlem de capes (layers) o nivells (tiers), en parlem com si d'una mateixa cosa es tractessin. Però realment, no tenen el mateix significat dins l'arquitectura de software.
Les capes donen una visió més de la divisió de la lògica i la funcionalitat dels components, sense tenir en compte la seva ubicació física, en quins servidors es troben. Per altre banda els nivells, si que tenen que veure més en una representació de ubicació física dels components que no pas de la lògica o funcionalitats d'aquests.

24/3/10

Transició entre sistemes: Convivència entre un sistema nou i un de caducat.

Després d'un temps dissenyant i implementant dos components molt importants del sistema, el gestor d'events i el getor d'identitats (més endevan en parlaré), cal reflexionar una mica (molt) sobre com fer conviure el moduls que vagin apareixen del nou sistema, amb el sistema existent.
  
Fem memòria, partim d'un dinosaure gegant, monolític, sense capes, tot barrejat, visualitzacions, lògica de negoci, persistència de dades, lògica d'autentificació i accés, un sistema NO transaccional, etc; caducat, difícil d'escalar, poc flexible i costós d' integrar amb altres sistemes. El sistema que dessitjem és totalment el contrari, distribuit, flexible, transaccional, modular, basat en serveis i amb les diferents lògiques (capes) ben diferenciades.
  
La ideia és definir diferents dominis d'aplicació, implementar-los i posar-los en producció. Cada domini en producció haurà de conviure amb el sistema "vell". El mecanisme que utilitzem per fer possible aquesta convivència ha de ser transparent tant pel sistema nou, com pel vell, ja que un cop desaparegui el sistema vell, aquest mecanisme ha de parar-se (desapareixer) i el nou sistema n'hi s'ha d'inmutar.
  
Per entendren's, imaginem-nos que tenim els següents dominis d'aplicació identificats:

  • Peticions: Proves, consultes, visites, etc. 

  • Agendes: Mèdiques, de recursos (TAC, ECO), sessions rehabilitació, ......

  • Llista Espera: Gestió de la llista de peticions en espera de citació.

  • Hospitalització: Gestió de la assistència d'un ingrés.

  • Urgències: Gestió de la assitència d'una urgència.

  • Consultes Externes: Gestió de la assitència d'una consulta externa.

  • Gestió Administrativa del Pacient: Expedients, Històries Clíniques, ingressos administratus, altes administratives , etc.

  • Gestió Activitat: Control de la activitat que és realitza.

  • Facturació: Facturació de la activitat.

  • etc, etc, etc.
  
Evidentment, aquests dominis existeixen en el sistema vell. El procés serà, conectem el domini d'aplicació nou, i desconectem el vell. Però, que passa amb la resta de dominis, han de seguir convivim amb el nou i aquest amb els vells.
I com podem fer que aquesta convivència sigui el més transparent possible. Si fem refèrencia a un post d'aquest blog La Capa de Coneixement podem trobar una solució bona si la barrejem amb el gestor d'events.

Sempre que s'estigui executant un procés, utilitzaria el gerundi del verb que identifica la acció sobre el nom o objecte. Per exemple "guardant" i un cop acabat el participi, "guardat". En ambdós casos dispararia un event que informés al gestor d'events i aquest decidís si s'ha de fer alguna cosa.



Amb aquesta ideia, l'aplicació nova només ha d'informar sempre del que fa, el que escolta o els que escolten, capturen aquesta informació i actuen. En aquest cas actuen informant al sisteam vell. I per tant les aplicacions noves només ha de dir: Guardant_Peticio_10000, Guardada_Peticio_10000, Actualitzant_Cita_3456, Actualitzada_Cita_3456, etc. Evidentment, un cop llançat un event, pot ser recullit per moltes coses diferents, per comunicar a una altre aplicació, per contabilitzar-lo, per fer auditories, logs, etc. També potser que un event no l'escolti ningú. Però tant si escolten els events d'una aplicació o no, aquesta segueix funcionant i donant a conéixer que fa.