Professional Documents
Culture Documents
Definiciones
BCCR: Banco Central de Costa Rica.
SINPE: El Sistema Nacional de Pagos Electrónicos (SINPE), es una plataforma
tecnológica desarrollada y operada por el BCCR, que conecta a las distintas entidades del
Sistema Financiero Nacional a través de una red privada de telecomunicaciones y ofrece
numerosos servicios financieros y de valores. Para mayor información, visite
http://www.bccr.fi.cr/SINPE/info.html.
Servicio SINPE: Un sistema financiero, de valores o de otro tipo que aprovecha la
infraestructura base del SINPE para brindar su funcionalidad.
Introducción
El establecimiento de una estrategia de integración continua para servicios de la nueva
plataforma web del SINPE se va a fundamentar en el análisis de requerimientos realizado
en este entregable.
Visión general
Este documento presenta una visión de la arquitectura y un inventario de los artefactos
que conforman un servicio. Luego, se indica los requerimientos de integración desde
diversos puntos de vista.
Visión de la arquitectura
Los servicios SINPE son expuestos a través de un front-end web de manera que pueda ser
accedido por el usuario final sin la necesidad de instalar una aplicación en su computador
de escritorio. Algunos servicios serán expuestos por Internet y otros por la extranet del
Banco Central de Costa Rica. De esta manera, se puede direccionar servicios a diferentes
usuarios meta, manteniendo una diferenciación entre servicios para entidades asociadas al
SINPE y servicios para ciudadanos.
Tecnología de la arquitectura
La tecnología del SINPE en infraestructura y software está mayormente sobre tecnologías
Microsoft. El sistema operativo en los clientes de desarrollo es Windows XP Service
Pack 3. Los servidores funcionan sobre Windows Server 2008. En materia del software
de aplicación desarrollado, este se implementa sobre el Microsoft Framework .NET 3.5,
procurando dar un buen uso de las últimas tecnologías disponibles. El ambiente de
desarrollo es Visual Studio 2008. En una sección posterior, se explicará cada tecnología
utilizada.
En general, se referirá por “componente” a cada archivo DLL de la plataforma .NET
utilizado. Cada componente contiene estructuras tales como clases e interfaces, siempre
dentro del paradigma orientado a objetos.
Aplicación web compuesta
Esta plataforma web tiene la necesidad de poder soportar múltiples servicios, pero
presentando siempre una solución de cliente web coherente. Su arquitectura debe ser
escalable debido a que siempre hay nuevos servicios en desarrollo, y debe permitir el
desarrollo e instalación de servicios SINPE de manera independiente.
Debido a estos requerimientos, se optó por utilizar el patrón llamado Aplicación web
compuesta. Este patrón permite tener una aplicación compuesta por una serie de piezas
independientes, pero integradas dentro de un solo entorno de servidor web.
Algunos de sus beneficios incluyen:
• Permite un alto grado de separación entre la infraestructura de la aplicación y la
lógica del negocio.
• El permite el desarrollo independiente de los componentes de lógica del negocio.
• Promueve la reutilización.
• Provee de una excelente arquitectura para ofrecer servicios de negocio integrados
para dar una experiencia unificada al usuario.
La figura anterior ilustra el entorno web en el que un servidor web presenta al usuario una
plataforma unificada y le ofrece servicios que internamente provienen de diversas
fuentes. Obtenga más información relacionada en el siguiente enlace:
http://websf.codeplex.com/Wiki/View.aspx?title=Composite%20Web%20Clients.
Debido a esta elección de arquitectura, se seleccionó el Web Client Software Factory
(WCSF) del equipo de Pattern and Practices de Microsoft para apoyar en su
implementación. El WCSF provee de herramientas automatizadas y guías para desarrollar
aplicaciones web empresariales, y facilita el crear aplicaciones compuestas de módulos
desarrolladores e instalados de manera independiente.
Los módulos son integrados en tiempo de ejecución por un marco común. Cada servicio
SINPE se implementa como un módulo de negocio (Business Module). El marco común
(o shell) es conformado por un Website principal y por un componente que coordina la
lógica de presentación común. Cada servicio SINPE implementa su capa de interfaz
como un subwebsite para el principal.
Las dos capas anteriores residen en el servidor que publica el contenido del sitio web, que
llamaremos servidor web.
Interfaz de servicios (Service Interface, SI): La capa de servicios de usuario se
comunica con la capa de interfaz de servicios par acceder a la lógica del negocio. Esta
capa se compone de una serie de servicios web («webservices») publicados en el servidor
de lógica del negocio. Los componentes que implementan esta capa no poseen lógica de
negocio, aunque sí contienen información acerca de la configuración del manejo de
errores y de transaccionalidad.
Servicios del negocio (Business Services, BS): Esta capa corresponde a los componentes
que coordinan e implementan los procesos del negocio. Para realizar un proceso del
negocio, esta capa puede requerir la comunicación con la cada de datos para acceder a
bases de datos, o puede invocar componentes de Interfaz de Servicios de otros servicios
SINPE.
Servicios de datos (Data Services, DS): Esta capa ofrece el acceso a la base de datos y el
mapeo Objeto-Relacional.
Contratos de datos (SI.Datos): La transferencia de datos entre todas las capas se realiza
a través de objetos tipo «entidad» que no contienen funcionalidad, sino que son
contenedores de información.
Base de datos: La persistencia de datos se realiza en una base de datos relacional. Por
directrices del área de base de datos, toda consulta u operación a la base de datos se
realiza a través de procedimientos almacenados.
• Archivo DLL: Una vez compilado el proyecto, se produce un archivo DLL que es
el binario que se instalará para el funcionamiento del sitio web.
• Páginas Aspx: Son páginas web dinámicas que responden a eventos del usuario.
• Web.config: Este archivo contiene la configuración del sitio web. Este archivo
normalmente es diferente dependiendo del ambiente en que se ejecute, es decir, el
archivo que se utiliza en Producción es diferente al usado en un ambiente de
Pruebas.
Además, el sitio web puede contener elementos propios de la tecnología web, tales como
páginas HTML, imágenes, archivos CSS o JavaScript, entre otros. Esta capa tiene
dependencia con los componentes (DLL) del Web Client Software Factory. La siguiente
imagen muestra un ejemplo de esta capa:
Todo servicio SINPE expone sus servicios por medio de la capa SI. Esta capa es
implementada en la tecnología Windows Communication Foundation (WCF), la cual es
un modelo unificado de programación para el desarrollo de servicios web. Dentro del
ambiente de desarrollo, la capa SI es un proyecto tipo “WCF Website?”.
Sus artefactos son:
Base de datos
La base de datos está alojada en el Microsoft SQL Sever 2008. Se cuenta con una base de
datos principal que es en donde se persiste los datos de los servicios SINPE en general,
aunque hay otras que existen para propósitos específicos, tales como servidos de reporte
o de inteligencia de negocios.
Como es sabido, la base de datos contiene objetos tales como tablas, llaves primarias,
llaves foráneas, índices, vistas, procedimientos almacenados y funciones. Además, los
datosque almacenan pueden verse como parte de los objetos que la componen.
En materia del desarrollo de la base de datos, se puede decir que los artefactos que se
administran para crear y mantener la base de datos son de dos tipos:
• Scripts SQL de definición de datos (DDL), los cuales crean las estructuras de la
base de datos.
Requerimientos de integración
Como se procesa cada capa para producir los binarios?
Dependencias
Integracion con la base de datos
Deployment
explicar deployment de cada capa
Requerimientos
Administración de múltiples archivos de configuración
- Requerimiento: Se debe tener un modelo del webconfig que debe usar un servicio
SINPE para incluir la configuracion de su
Para minimizar riesgos en las liberaciones, se debe reducir los cambios que haya que
hacer en estos archivos ya que actualmente los cambios se realizan manualmente.
El repositorio de control de versiones no tiene una version que cualquier developer pueda
bajar a su PC
- Requerimiento: El control de versiones debe ser autoritario, es decir, siempre debe tener
la ultima palabra en materia de como se puede obtener la ultima version estable de la
aplicacion. Si hay un error y se corrige en el sandbox, se debe incluir en el repositorio, y
comunicar al equipo del proyecto. Estos archivos no deben ser especificos para una sola
maquina de desarrollador, sino genericos para funcionen con todos.
- Requerimiento: Se debe contar con una manera automatizada de revisar o generar los
archivos de configuracion de cada ambiente, asi minimizando tareas tediosas y la
probabilidad de errores humanos.
Cuando un archivo se elimina del código fuente, no estamos eliminando el mismo del
ambiente de pruebas o producción. Por ejemplo, un asmx.
Test
explicar capas de pruebas y tipos.
Errores de deployment
7 de agosto - caso con gran urgencia acerca de un error en produccion ya que se le debia
generar un certificado digital al Director del MICIT en lo relacionado con Firma Digital.
La causa del error fue un error en la instalacion de un componente en el servidor de
logica del negocio. El componente registrado en el GAC era diferente al requerido por la
aplicacion.
Diseño: http://stackoverflow.com/questions/711721/automating-net-deployment-using-
cruise-control-net Una alternativa es que el build server cree el paquete de deploy, y que
este contenga los tasks requeridos para realizar el deploy. De esta manera, se mantiene
versionado incluso el script de liberación. Si en algún momento se da algún problema,
entonces se puede verificar el script usado para mejorarlo. Entonces, la tarea del personal
de instalación es ser los encargados de loguearse en el servidor dado, obtener la versión a
instalar, y ejeutar un deploy.bat que ejecute nant.
Diseño: La aplicación misma debe contar con un mecanismo que indique su "salud". Por
ejemplo, si es un sitio web, podría contar con un aspx que acceda a todas las capas y
retorne un XML con los resultados, y que pueda ser verificado visualmente por un
humano.
Reversar liberación
Diseño:
Requerimiento: Se debe poder saber la versión del servicio instalado en cada ambiente.
Se halla que
otros companeros han indicado que han tenido que arreglar defectos producto de software
que al ver el codigo, se nota a simple vista que este nunca fue ejercitado, ya que no pudo
haber funcionado en momento alguno.
Ademas, no hay revisiones de codigo que asegure el cumplimiento con buenas practicas
de diseno y de diseno de pruebas unitarias.
Verificación de instalaciones
Requerimiento: Una instalación de un sitio web, wcf y base de datos debe ofrecer un
medio para verificar lo exitoso de la instalación.
Build
Actualmente, se tarde muchos días configurando una máquina de desarrollo para poder
ejecutar exitosamente el sitio web del SINPE y ver un servicio. Hay muchos pasos
manuales, tediosos, y hay guías defectuosas.
Requerimiento
El sitio web principal del SINPE debe poder ser obtenido del repositorio de control de
versiones, ensamblado e instalado de manera ágil para que el desarrollador pueda
empezar a contruir software lo más pronto posible.
Diseno
Implementacion
Website principal
2. Configurar build para que al compilar envie los DLLs y contenido Web al IIS.
3. Ejecute el build
SubWebsite
1. Configurar build para que al compilar envie los DLLs y contenido Web al IIS.
2. Ejecute el build
Compruebelo:
http://www.codeplex.com/websf
http://www.microsoft.com/sql/default.mspx
http://websf.codeplex.com/Wiki/View.aspx?title=Composite%20Web%20Clients
http://msdn.microsoft.com/es-cr/library/dd943056(en-us).aspx