Cercar en aquest blog

26/3/09

Arquitectura

El sistema que aquí es proposa està basat en una arquitectura orientada a serveis (SOA). Aquest tipus d’arquitectures segueixen una serie de premises, les quals les fan que actualment siguin les millors per aplicar en grans sistemes d’ informació.
Com a concepte defineix serveis per donar suport a les necessitats del negoci. Està demostrat que aquest tipus d’arquitectura facilita la escabilitat i reutilització de codi, la modularitat de les solucions i el desenvolupament de components, així com la interoperabilitat entre sistemes, ja siguin aquests de tercers. En un model basat en serveis web fins i tot s’estanderitza tant que facilita la interoperabilitat entre sistemes basats en tecnologies totalment diferents.
Podem definir el serveis com a funcions sense estat, que no tenen dependencia de cap altre servei, això no vol dir que no l'utilitzin, es poden orquestrar (sequenciar amb altres serveis) afegint la lògica necessària i mai portan un UI (user interface). Això si, faciliten una interfície de comunicació al consumidor (sempre i quan desenvolupem aquesta arquitectura amb eines d 'ultima generació, actuals)
Per tal de desenvolupar serveis, el més important es mentalitzar-se en aquesta arquitectura. Desenvolupar serveis comuns que seran secuenciats per clients. Quan es parla de SOA bàsicament parlem de protocols coneguts a Internet, i quan la gent (desenvolupadors) en parla ho fa referint-se a serveis web. SOA no és igual a Serveis Web. El concepte es més ampli. Els protocols més comuns i coneguts són HTTP, XML, SOAP, WSDL, UDDI, però això no vol dir que siguin requisit de l’arquitectura, ni que siguin els únics. Una cosa és la arquitectura SOA i una altre els protocols de comunicació.
Desenvolupar sistemes d'informació amb aquesta arquitectura porta els seus avantatges:
  • Millorar els temps en els canvis de procesos (facils de modificar)
  • Facilitar la adaptació a models de negoci de tercers.
  • Facilitar la colaboració amb procesos de negoci de tercers (altres proveidors)
  • Facilitar el desenvolupament en capes.
  • Facilitar la integració i la interoperabilitat amb tecnologies diferents.

Existeixen diferents tecnologies de desenvolupament, que faciliten, unes més que altres, el disseny SOA. Empreses com IBM, BEA, SUN o Oracle oferten eines de desenvolupament SOA. Ara bé Microsoft també, a partir de Framework 3.0 amb VS2005. Però amb el VS2008 i el Farmework 3.5, crec que podem anar bé, molt bé. De fet s' estan posant les piles, que ja era hora, pel que fa a entorns de desenvolupament competitius. Recordem que fins fa poc tenien VB6 i C++, quan la tecnologia Java (gratuita i amb IDE's gratuits com Eclipse o Netbeans) ja oferia tecnologia JSP, servlets, Struts, etc, ja oferia la posibilitat de crear Web Services (Axis) i utilitzar tecnologia AJAX en entorns "web" amb DWR (Direct Web Remoting) que començaven a tenir bona acceptació. Com a curiositat dir que GMAIL utilitza DWR com a framework AJAX. Bé dit això, repeteixo, VS2008 i Framework 3.5 són una molt bona opció per desenvolupar SOA, sobretot amb el WCF (Windows Comunication Foundation) i WWF (Windows WorkFlow Foundation). I si ens mirem el que vindrà aviat amb el Framework 4.0, no hi ha dubtes.

Un cop tinguem els serveis, aquest s'hauran de catalogar i allotjar. Per allotjar serveis s' utilitza el que anomenem un ESB (Enterprise Service Bus). Resumint podriem dir que es una "Aplicació" o s'allotgen els serveis, i aquesta facilita el descobriment d'aquest i la comunicació amb ells als clients. Podriem dir que és una evolució del EAI, però no, no són ben bé el mateix.

Ara bé, jo desestimo la opció d'un ESB en aquest moments, mirant el futur del .NET i els SO de Microsoft (Win Server 2008 + II7 + Oslo + Dublin + WAS + PowerShell + ...) crec que amb aquesta linia ens ho donaran fet.

Els serveis els podem catalogar en quatre grups:
Serveis de Negoci
Serveis que formen part del nucli de la empresa i el negoci, normalment identificats per usuaris no tecnics i casos d’ús o escenaris d’aquest. Estan molt lligats amb els verbs CRUD (create, read, update, delete). Un posible exemple seria (CrearClient….). Solen estan desenvolupats amb estandards (Web Services). Solen ser consumits per aplicacions que interactuen amb l’usuari, ja que com he dit complimenten els seus escenaris.
Serveis d’ Empresa
Serveis identificats pels membres del departament Sistemes d’Informació. Solen ser producte de la sequenciació de varis serveis (orquestració), o sigui serveis que fan servir altres serveis per donar una resposta. CalcularPressupost, ProcessarCuaPeticions, etc
Serveis d’ Aplicació
Serveis que no formen part del nucli però hi poden acabar. Són serveis especifics de la Aplicació en questió i es solen identificar amb aquesta. Un exemple actual seria GuardarAdreça de les agendes de la Empresa.
Serveis d’ Infraestructura
Serveis de suport a tots nivells. Logging, auditoria, seguretat. Solen ser identificats per desenvolupadors i gent de sistemes. Exemple EnviaMissatgeLog

I per acabar aquesta part només dir que com a possibles consumidors de serveis podem tenir:

  • Aplicacions
  • Serveis (altres serveis)
  • Dipositius: TAC, ECODOPPLERS, ELECTROS, CONTROLS DE PRESENCIA, PDA...., DOMOTICA,......,ALARMES, SENSORS, .....

Veien aquesta diversitat, crec que SOA es una molt bona opció.