Está en la página 1de 6

Arquitectura DDD (Domain Driven Design) en

Windows Azure
Caso de xito

Web CMS migrado con xito a la Plataforma


Windows Azure usando una arquitectura
DDD (Domain Driven Design)

Resumen
Pas: Espaa
Industria: ISV
Perfil
Fundada en 1997, SOFTENG es una
consultora e ingeniera de software
experta en tecnologas Microsoft y
especializada en cloud: Sistemas crticos y
Office365, Intranets colaborativas con
SharePoint y desarrollo de proyectos Web
externos con Softeng Portal Builder.
Situacin
Las aplicaciones de gestin de contenidos
tradicionales se basan en soluciones on
premise, presentando mayores costes de
propiedad y ofreciendo escasa
rentabilidad y productividad para la
gestin de los sitios web.
Solucin
Softeng Portal Builder es la evolucin de
los sistemas tradicionales de gestin de
contenidos hacia una plataforma
empresarial para llevar a cabo proyectos
web en la nube de forma rentable,
ayudando a impulsar a las empresas a
travs de la Web y ofreciendo autonoma
y productividad en la gestin del sitio con
bajos costes de propiedad.
Beneficios
Impulsa a las empresas mediante la Web
Productividad
Autonoma
Menor coste de propiedad

Ofrecemos la primera plataforma CMS del mundo


basada en SaaS funcionando sobre Windows Azure, cuya
robustez y fiabilidad nos ha permitido poner en marcha
decenas de proyectos para el sector pblico y privado.
Carlos Colell Sorinas, Director General, SOFTENG

Por regla general, las aplicaciones tradicionales de gestin de


contenidos estn limitadas a la creacin de sitios corporativos
sencillos basados en plantillas predefinidas, por lo que no estn
diseadas para crear sitios web ms a medida, ni para que stos
sean gestionados con autonoma y productividad por parte de los
usuarios de negocio. Asimismo, las aplicaciones clsicas no suelen
contemplar aspectos necesarios para crear sitios pblicos como la
mejora del posicionamiento en buscadores, la traduccin
simultnea a otros idiomas, la facilidad para conectarse con otras
aplicaciones de negocio ni la inclusin de sistemas para mejorar la
conversin de visitantes en nuevos clientes.
Softeng Portal Builder es una plataforma innovadora optimizada
para funcionar en la nube y que cubre todos los aspectos
anteriores de forma flexible y sencilla. Adems, al basarse en las
ltimas tecnologas de desarrollo cloud sobre la Plataforma
Microsoft Windows Azure, Portal Builder tambin da un paso
adelante en este aspecto con respecto a los CMS clsicos ya que
vive en la nube y se ofrece mediante suscripcin.

Al contar con Windows


Azure ofrecemos una
solucin ms econmica
que las propuestas onpremise e incluso que las
basadas en open source,
debido a que hemos
eliminado los costes de
migracin de versiones y
la prdida de
oportunidades durante la
espera entre las mismas
Carlos Colell Sorinas
Director General de SOFTENG

Situacin
SOFTENG es una empresa de capital
100% espaol, que desde 1997 viene
ofreciendo a sus clientes soluciones en el
sector de las Tecnologas de la
Informacin. Tras centenares de
proyectos desarrollados con xito, se ha
consolidado en el mercado como una
gran eleccin para llevar a cabo
proyectos que requieren de tecnologa
novedosa para su realizacin. Para ello,
utiliza su experiencia y conocimiento
acumulado durante todos estos aos,
refrendado por su certificacin como
Gold Certified Partner de Microsoft, su
posicin entre los top partners de
Microsoft en Espaa y su programa
interno de formacin continua e I+D.
Softeng est constituida por un equipo
multidisciplinar de profesionales
altamente cualificados, al que pertenecen
diseadores, consultores, ingenieros y
arquitectos de software certificados y con
gran experiencia en mltiples
tecnologas, todos ellos con talento para
ofrecer soluciones creativas a
necesidades complejas.
En este perodo de tiempo, SOFTENG ha
obtenido importantes reconocimientos
de Microsoft, el Ministerio de Ciencia e
Innovacin y la Generalitat de Catalunya,
por dedicar una parte importante de sus
recursos a tareas de investigacin y
desarrollo. Gracias a todo ello, SOFTENG
ha logrado posicionarse como un
referente en su sector al aportar nuevas e
innovadoras soluciones para la industria.

Solucin Softeng Portal Builder + Windows Azure

Sus propuestas estn enfocadas a las tres


reas que conforman los retos que
plantean sus clientes: Desarrollo de
proyectos Web mediante Softeng Portal
Builder, Intranets colaborativas mediante
SharePoint, e Ingeniera de sistemas
crticos (que abarca el diseo, despliegue
y administracin de infraestructuras
robustas con tecnologa Microsoft, tanto
on-premise como en la nube).

A la primera rea pertenece su solucin


Softeng Portal Builder, una plataforma
concebida para el desarrollo y gestin de
proyectos Web empresariales,
evolucionada hacia la nube
aprovechando los beneficios que ofrece
Windows Azure de Microsoft y
desarrollada usando una arquitectura
orientada a dominio (DDD).
El punto de partida antes de esta
evolucin era una aplicacin de
arquitectura compleja que poda estar
instalada en los servidores del centro de
datos de SOFTENG, en los del propio
cliente o en un ISP, pero que no poda
funcionar de forma ptima en la nube
pues para ello, requera un gran
consumo de recursos para que su
rendimiento fuera el deseado.

Construye, Gestiona y
Conecta
Lanzado en noviembre del 2008, Portal
Builder es una plataforma en la nube
destinada a construir cualquier tipo de
aplicacin Web por compleja que sea,
facilitando la integracin con otras
aplicaciones empresariales. En un mbito
ms de portal, permite posicionar un sitio
web en los principales buscadores as
como generar nuevas oportunidades de
negocio, aumentando la conversin de
visitantes a nuevos clientes mediante
herramientas de Marketing Online.
Tambin ofrece sistemas de anlisis del
comportamiento de los usuarios y una
gestin muy productiva de contenidos
mediante una poderosa edicin visual
desde el propio site (Edit-in-Place) as
como capacidades de traduccin
simultnea (manteniendo los contenidos
en un nico idioma y difundindolos en
varios).

ARQUITECTURA
Bien implementado,
DDD resuelve la mayor
pesadilla de una gran
aplicacin: Que su
complejidad acabe
impidiendo realizar
eficazmente
ampliaciones en el
software sin tener un
impacto imprevisible y
negativo, convirtindose
en una aplicacin
obsoleta.
Christian Rodrguez
Arquitecto de Softeng Portal Builder

Migrando a una arquitectura


orientada al dominio

Aplicacin de ejemplo como


base del proyecto

Los fabricantes de software desarrollan


aplicaciones para cumplir requisitos
funcionales. No obstante, la arquitectura
del software tiene como finalidad hacer
cumplir los requisitos no funcionales (o
de calidad de servicio QoS), lo que en
parte no deja de ser paradjico. Por
tanto, una buena arquitectura debe
apoyar los requisitos funcionales de una
aplicacin con requisitos no funcionales:

Softeng se entusiasm con la aplicacin


de ejemplo, la NLayerApp V 0.9, que
actualmente se encuentra en V2.0 beta.
La primera ventaja que se obtuvo fue la
estructuracin lgica del proyecto y
ejemplos de colaboracin de servicios,
entidades del dominio y repositorios. La
divisin lgica en carpetas virtuales
(Solution Folders) es excelente y la
divisin en Proyectos muy buena. La
aplicacin actual 2.0 beta ofrece
excelentes ejemplos de un buen modelo
del dominio, identificando ejemplos de
agregados, entidades del dominio, value
objects y repositorios por cada agregado
raz. Adems muestra una excelente
distincin entre las responsabilidades de
servicios del dominio y servicios de
aplicacin.

Rendimiento
Escalabilidad
Robustez
Extensibilidad
Productividad en desarrollo:
- Adaptando funcionalidades
- Desarrollando nuevas prestaciones
- Resolviendo bugs
Los requisitos funcionales y los no
funcionales son como el ying-yang de
una aplicacin. Uno no puede existir sin
el otro. Softeng Portal Builder encaja muy
bien en la candidatura de una aplicacin
con arquitectura DDD: Una aplicacin
grande, con lgica compleja y un ciclo de
vida largo, con constantes cambios,
mejoras y ampliaciones.
Haca tiempo que el equipo de Softeng
estudiaba aplicar un enfoque DDD as
que cuando la compaa decidi cambiar
la arquitectura para que Softeng Portal
Builder funcionara de forma ptima en
Windows Azure, se decidi que era el
momento idneo para tomar este
camino.

Gestin de versiones desde BackOffice Studio

Durante la fase de incepcin de la nueva


arquitectura, Softeng tom contacto con
la versin beta de la Gua de
Arquitectura N-Capas orientada al
Dominio con .NET 4, creada por
Microsoft Ibrica. Si bien an estaba
madurando, esta gua mostr un claro
mapa de arquitectura DDD relacionada
con las tecnologas de Microsoft
disponibles para realizar el trabajo.

Otro beneficio de utilizar como base la


NLayerApp fue aprovechar la
implementacin del patrn repositorio
utilizando Entity Framework (EF) que
propone el ejemplo. El equipo de
ingenieros de Softeng cambi el tipo de
entidades de EF a POCO en
contraposicin a las IPOCO (Self-Tracking
Entities) que propona en aquel entonces
la aplicacin, ya que despus de
prototipos e investigacin los POCO
parecan ms adecuados para entornos
Web Forms y MVC que los que ofreca la
aplicacin en aquel entonces. Con el
tiempo la aplicacin NLayerApp "migr"
tambin a entidades POCO Code First
de EF 4.1, tecnologa mucho ms
adecuada para un proyecto DDD por la
flexibilidad que ofrece
Adems, la Gua de Arquitectura y la
aplicacin de ejemplo de Microsoft
tambin ayud a los ingenieros de
Softeng a cubrir aspectos importantes de
arquitectura que no se cubren en el libro
original de Eric Evans, tales como la
inyeccin de dependencias (DI) e
inversin de control (Ioc) utilizando
Microsoft Unity. Bien utilizado sirve para
seguir el principio de diseo Open

Closed Principle o Protected Variations,


importante principio de diseo que
permite flexibilidad y extensibilidad.

DDD: Retos y ventajas

Integracin de herramientas de Marketing Online

Edicin desde el propio Site mientras se navega

Anlisis visual del comportamiento de los usuarios

La implementacin efectiva de una


arquitectura DDD no es tarea fcil. No se
trata de coger la aplicacin de ejemplo y
cambiar un par de nombres. Requiere
cierta formacin y conocimientos tanto
tericos como prcticos. Es
imprescindible utilizar la experiencia para
reconocer las ventajas que proporciona
la orientacin al dominio y los problemas
que resuelve. Lamentablemente, muchas
veces no hay otra manera de aprenderlo
que equivocarse y rectificar. Por lo tanto,
es necesario disponer de un equipo de
ingenieros con buenas habilidades en
Anlisis y Diseo Orientado a Objetos
(OO A/D) muy implicado y dispuesto a
formarse en tcnicas de DDD. Asimismo
fue clave que el equipo aprendiera las
virtudes de un modelo rico, la separacin
de responsabilidades de aplicacin (el
QUE) y de dominio (el COMO). Los
patrones y bloques de construccin
utilizados en DDD (Agregados, Entidades,
Objeto-Valor, Servicio del Dominio,
Factora, Repositorio, etc.) deben, como
todo patrn de diseo, servir como
lenguaje de comunicacin entre los
desarrolladores. Por lo tanto, conviene
que todo el equipo de ingenieros tenga
muy claro cules son las
responsabilidades de cada capa o patrn,
celebrando tambin reuniones de
"brainstorming" cuando hay dudas o
solapamientos. Un detalle significativo en
el proyecto de Softeng Portal Builder fue
que a diferencia de otras aplicaciones, el
dominio es muy tcnico: Analticas de
Web, Optimizaciones para motores de
bsqueda, procesado de html, etc, por lo
que surgan muchas dudas de qu era
dominio, aplicacin o infraestructura.
Por otra parte, es importante mantener al
equipo formado en la ventaja de un
modelo rico para evitar caer en
peligrosos anti-patrones como Anemic
Domain Model o Fat Service Layer. Caer
estos patrones nos puede llevar, como
bien nos advierte Martin Fowler, a tener

el coste que representa una arquitectura


DDD sin aprovechar ninguna de sus
ventajas.
Una arquitectura orientada a DDD no
resuelve todos los problemas, no existen
las "Balas de plata", pero ayuda a que
puedan resolverse. Los Bugs siguen
existiendo, pero pueden resolverse
mejor. Los problemas de rendimiento
siguen apareciendo, pero pueden
solventarse. Las Refactorizaciones a un
modelo ms profundo con mayor
entendimiento del dominio siguen
siendo necesarias, pero tambin pueden
llevarse a cabo con menor impacto.
Sin embargo, segn Christian Rodriguez,
, bien implementado, DDD resuelve la
mayor de todas las pesadillas que
conlleva una gran aplicacin: Que la
complejidad acabe por convertirla en una
aplicacin obsoleta que ya no puede
crecer, debido a que su complejidad
interna es demasiado grande para realizar
modificaciones y nuevos desarrollos sin
tener un impacto imprevisible y negativo
en la aplicacin.

Diagrama 1 Arquitectura de
Softeng Portal Builder.

Nuestra plataforma est


encuadrada en el estadodel-arte de la Tecnologa,
y su arquitectura DDD
junto a Windows Azure
contribuyen en gran
medida a lograrlo.
Carlos Colell Sorinas
Director General de SOFTENG

Diagrama 2 Cmo se distribuye la arquitectura de


Softeng Portal Builder en Azure

Para Ms Informacin
Para ms informacin sobre los
productos y servicios de Microsoft llame
al telfono de Atencin al Cliente: 902
197 198.
Para acceder a ms informacin sobre los
productos y servicios de Microsoft
consulte nuestra Web en
www.microsoft.es
Para ms informacin sobre los
productos y servicios de SOFTENG,
puede llamar al telfono +34 93 237 59
11 o visitar su sitio web en:
www.softeng.es

Recursos Adicionales:
Puede visitar: Descarga: Kit de Formacin
de la Plataforma Windows Azure
Puede Visitar: Arquitectura y Desarrollo
para Windows Azure

La Plataforma Windows
Azure
La plataforma Windows Azure
proporciona una excelente base para
ofrecer productos y servicios online. Los
componentes principales incluyen:
Windows Azure. Windows Azure es
el entorno de desarrollo, de servicios
de alojamiento y de gestin en la
nube. Proporciona a los
desarrolladores potencia y
almacenamiento a la carta para
albergar, escalar y administrar
aplicaciones Web en Internet
desplegadas dinmicamente en los
Datacenters de Microsoft.
AppFabric: Windows Azure satisface
las necesidades de conectividad de
los desarrolladores a travs de los
siguientes servicios:
o El Service Bus conecta los
servicios y aplicaciones ms all
de los lmites de la nube para
ayudar a los desarrolladores a
crear aplicaciones distribuidas
entre diferentes datacenters.
o El Servicio de Control de Acceso
proporciona control de acceso
federado, basado en seguridad
basada en CLAIMS y entidades
SAML 2.0 y ws-security.
o AppFabric Cache: Ofrece
almacenamiento en cach
distribuido.
Microsoft SQL Azure. Ofrece el
primer servicio de bases de datos
relacional y autogestionado en la
nube, basado en SQL Server.
Para aprender ms sobre la plataforma
Windows Azure, visite:
www.windowsazure.com

Software y Servicios
Plataforma Windows Azure
Windows Azure
Microsoft SQL Azure
Microsoft Visual Studio
Microsoft Visual Studio 2010

2011 Microsoft Corporation. Todos los derechos


reservados. Este documento se ha elaborado con fines
meramente informativos. MICROSOFT NO OFRECE
GARANTIAS, NI EXPRESAS NI IMPLICITAS, EN ESTE
RESUMEN.
Documento publicado en Octubre de 2011

Tecnologas
Microsoft ASP.NET
Microsoft MVC
Microsoft .NET Framework 4.0