Publicar versión nueva de Classic y Online con el servicio de Actualización

Antes de tener una versión actualizada de los sistemas y bases de datos debemos tener en cuenta lo siguiente:

En el motor SQLServer de desarrollo se encuentran 2 bases de datos nuevas (INFORMAC_UPDATE y DATOS_UPDATE) estas bases de datos serán actualizadas con los cambios que hay en INFORMAC_DESARROLLO y DATOS_DESA solamente se copiaran cambios de estructura. Para lograr esto en la Solución de VB Studio 2013 que nombramos en la Entrada  “Generar versión del servicio de actualización del sistema”. El proyecto DbUpdater.Console se encargara de esto.

Este proyecto se encuentra en el SourceSafe bajo el proyecto “DbUpdater.root\DbUpdater Sin FirstUpdate” listo para utilizar. Al iniciar este proyecto se copiara toda la estructura principal de las bases de Desarrollo a las de Update y se generaran 2 bases backups en esta ruta del servidor Bg-srv07 “C:\Program Files\Microsoft SQL Server\MSSQL10.DESARROLLO\MSSQL\Backup” estas mismas bases seran luego subidas al Package de actualizacion en el FTP.

Al finalizar este proceso se verán que cosas se han borrado de las bases de desarrollo, deberán ser borradas manualmente de las bases de Update, previo chequeo con el resto del equipo de desarrollo

El nuevo actualizador funciona de la siguiente forma:

Todos los días a las 21 hs el servicio, previamente configurado (en otra entrada se explica como), chequeara en el FTP si hay una nueva versión subida.

En el caso de que exista una nueva versión, esta se descarga y descomprime en la carpeta que se le haya asignado, luego de eso se actualizaran las bases y los archivos.

Una vez claro estos puntos procedemos a los pasos para generar una versión.

  • Luego de actualizar las bases INFORMAC_UPDATE y DATOS_UPDATE, los archivos de backup se generan automáticamente en la carpeta por defecto de backup de SQL Server, podremos proceder a subir estos mismos a la carpeta del FTP designada para esta nueva versión, la carpeta para estos archivos es “DataBasesUpdated”
  • Tambien se deberan subir los archivos de IGGlobal Classic, estos pueden ser los que estan en “IG_GLOBAL_SETUP_V8\Global\Sistema”, la carpeta designada en el FTP es “UPDATE_PACKAGE\Sistema”
  • Y por ultimo tambien es necesario tener generada una version de IGGlobal OnLine, La carpeta designada en el FTP es “UPDATE_PACKAGE\IGGLOBAL_Online”

 


Generar version del servicio de actualizacion de Sistema

Con la Finalidad de tener un nuevo y mas eficiente actualizador de version, se desarrollo un servicio que chequea los cambios que se realizaron en las bases de datos y solo copia dichos cambios. Para poder tener una version de este actualizador se deben llevar a cabo los siguientes pasos.

  • Descargar del Github el proyecto “DbUpdater”

Dicha solución consta de los siguientes proyectos

–DatabaseCompare: Tiene 2 proyectos de comparacion propios del VbStudio 2013 para comparar estructura de las bases de datos Informac_Desarrollo Con Informac_Update y Datos_Desa con Datos_Update

–DbUpdater.Console: Proyecto de consola que en caso de ponerlo como proyecto de inicio y correrlo se copian todos los cambios nuevos que hay en desarrollo a las bases de produccion (Informac_Update y Datos_Update). Tambian genera el backup de estas bases para luego poder subirlas manualmente al FTP, estos backups se crean en la carpeta por defecto para backup del motor SQLServer.

–DbUpdater.Core: Proyecto nucleo del actualizador, toda la logica y procesos estan dentro de el.

–IGGLOBAL.Updater: Proyecto de tipo Servicio que corre sobre windows y genera un mini sitio (IIS). REST Service Web Api. Este proyecto tiene controladores y HTML con javascript para generar una pagina y se conecta al Core.

–IGGlobal UpdateServices Setup: Proyecto de tipo InstallShield LimitedEdition, genera el setup para instalar el servicio. Para esto se descargo la extension para vb Studio del InstallShield, este paquete esta descargado en la carpeta \\BG-SRV03-FS\FileServer\Groups\Desarrollo\InstallShield2015LimitedEdition.Exe

Una vez generado el Setup se instala en el servidor. Requisitos de instalacion

  • Windows Server 2008
  • Framework .NET 4.5 o superior

Seguridad en botones u otros controles (instructivo)

Como ejemplo, aplicamos seguridad por usuario y empresa para ocultar – mostrar un botón

Ocultaremos un botón en:

/Crm/Cuenta

Vista:

en “Helpers.vbhtml” agregamos un helper.

@helper button_new_contact(ByVal baseWebPage As IGGlobal.Mvc.CustomMvcViewPageBase, ByVal field As String)

@<button @baseWebPage.GetNgHideAttr(field) ng-click=“nuevoContacto()” style=float: right; class=“btn btn-outline btn-primary btn-sm” type=“button”>

Nuevo

</button>

End Helper

En “cuenta.vbhtml”

Reemplazamos :

<button ng-click=”nuevoContacto()” style=”float: right;” class=”btn btn-outline btn-primary btn-sm” type=”button”>

Nuevo

</button>

por:

@Helpers.button_new_contact(Me, “button_new_contact”)

Controlador JS:

Nada nuevo, obviamente existe la función “nuevoContacto()”

Controlador MVC (VB.net):

Nada nuevo.

Base de datos:

insertar dos registros:

Definimos: Base de datos, Usuario, URL, IdNombre, el “1” representa “Invisible”

insert into Info_Seg_Formularios_Sistema_Defaults

values (‘BARRIOS_PRIVADOS’,‘SUPERBP’,‘/Crm/Cuenta’,‘button_new_contact’,,0,1,,)

Definimos:  URL, IdNombre,Descripción

insert into Codigos_Seg_Formularios_Sistema_Campos

values(‘/Crm/Cuenta’,‘button_new_contact’,‘button_new_contact’)

—-Fin—-


Nuevo proceso de actualización de IGGLOBAL

Desafíos

  • Minimizar tiempos del proceso actual de actualización de los componentes de IGGLOBAL.
  • Mejorar el proceso de distribución de versiones y cambios a los clientes que utilicen IGGLOBAL.
  • Generar la infraestructura necesaria para proveer una actualización OTA de los componentes de IGGLOBAL.
  • Minimizar complejidad, y por ende mitigar riesgos de fallos en el proceso de actualización.

Características

El diseño inicial del nuevo proceso de actualización consta de:

  • Un servidor centralizado que almacenará el paquete del update, el cual incluye: cambios en bases de datos, componentes ejecutables y nuevos recursos multimedia.
  • Un servicio de actualización automática instalado en todos los servidores de bases de datos de los clientes en modalidad “Hybrid” y “On-Premise”. En caso de los clientes en modalidad “Cloud”, la infraestructura del servicio es provista por BASE GLOBAL.

Arquitectura SaaS – Multi-Tenant para IGGLOBAL

Objetivos

El presente proyecto tiene como objetivo extender la arquitectura actual de IGGLOBAL para tener la posibilidad de entregar el software en la modalidad SaaS (Software as a Service).

Dentro de las modificaciones a realizar se deberán tener en cuenta los siguientes requerimientos:

  • Los clientes del servicio podrán optar por ubicar físicamente la base de datos de la empresa (IGGLOBAL EDB) en servidores propios (on-premise) o bien alojarlos en algún proveedor de hoting/cloud.
  • Deberá darse soporte de multi-tenancy a todas las aplicaciones móviles de IGGLOBAL.
  • Se deberá poder llevar el control de acceso al servicio desde el departamento de implementación de BASE GLOBAL.
  • Será necesario optimizar y automatizar las rutinas de actualización de los componentes del software, de forma centralizada y transparente al cliente.

Implementación

Actualmente se están realizando los primeros diseños y pruebas del proyecto, las cuales implican cambios en las bases de datos existentes del sistema, generación de servicios autónomos que se instalarán en los servidores de los clientes y los ajustes a las arquitecturas de las aplicaciones.

A su vez, se están evaluando los beneficios y posibles desafíos de implementar ésta arquitectura.

Estado: En Proceso


Generación Setup IGGLOBAL Cloud Services

La Generación del Setup para instalar el servicio IGGLOBAL Cloud Service esta compuesta de los siguientes proyectos.

  • IGGlobal.CloudServices.Jobs (Dll que ejecuta las tareas de QUARTZ.Net)
  • IGGlobal.CloudServices.Service (Es el servicio en si mismo, se inicia y queda corriendo disparando las tareas)
  • IGGlobal CloudServices Service Setup (Instala el servicio y sus dependencias)

 

Consideraciones a tener en cuenta.

  • Se deben Generar los 3 proyectos si se modifican y siempre generar el Setup
  • En el proyecto del servicio se encuentra la inicializacion de la tarea de notificaciones de IGGLOBAL Classic, también lo integra una clase que hará de las veces de formulario de configuración de la base de datos que aparece en el asistente del setup. Esta compuesto ademas por un archivo xml App.Config que guarda la configuración del servidor.
  • El proyecto del Setup tiene una particularidad que si se compila en la versión de VB2013 solo funciona en equipos con Windows 7 en adelante, para que funcione en Win xp o server 2003 se debe pegar la siguiente DLL “dpca.dll” de vb2010 en esta ruta “C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\VSI\bin”. La dll se encuentra en “\\baseglobal.ar\fileserver\Groups\Desarrollo\__Dll VB2010 dpca”

 


Desarrollo de Tareas Programadas

En este tutorial se detallan que pasos seguir para desarrollar nuevas tareas en el Framework QUARTZ.NET e implementarlas en el servicio de IGGLOBAL CLOUD SERVICES

En el controller “SchedulingController.vb” se deben desarrollar que tareas disparara y en que momentos lo hara el ya mencionado Framework.

Del lado cliente el controller principal sera “JobCtrl.js” este tiene comunicacion mediante un servicio de Angular con “SchedulingController.vb”

Las tareas agregadas tendran su logica de negocios en el proyecto/dll de la solucion “IGGlobal.CloudServices.Jobs”. Aqui es donde QUARTZ.NET ejecuta las tareas que se hayan programando dependiendo del momento en que este previsto que se ejecuten.

Para poder hacer debug de este proyecto debemos ir al menu “Depurar > Asociar al proceso” y seleccionar “IGGlobal.CloudServices.Service.exe”, esto probablemente obligue a reiniciar el Visual Studio.

Los errores del servicio se grabaran en el visor de eventos de windows en la sección  de “Aplicación” con la clave “IGGlobal CloudServices Service”

1

El desarrollo de las Notificaciones de IGGLOBAL CLASSIC esta diagramado de la siguiente manera.

3

Puntos a tener en cuenta sobre esta ultima tarea.

  • Recordar configurar la URL de IGGLOBAL Online en la ruta de IGGLOBAL Classic. Formato “http://web.com”

2

  • Verificar que el servicio este corriendo
  • IGGlobalOnlineSendNotificationFromVB6.vb Ejecuta la tarea dentro del Proyecto JOBS.
  • Antes se deben configurar en “Classic” en Auditoria Operativa lo que se quiera enviar a IGGLOBAL Online y luego en Notificaciones de “Online”
  • Classic solo notifica como supervisor

Setup IGGLOBAL CLOUD SERVICE

Servicio de tareas programadas de IGGLOBAL On-line.

Este servicio se encarga de disparar las tareas programadas de IGGLOBAL

Requerimientos:

  • Windows Server 2003 en adelante (Windows Xp, Windows 7, Windows Server 2012)
  • Windows Installer 4.5
  • Microsoft .NET Framework 4

Instalación inicial “IGGlobal CloudServices Service Setup.msi”

1

 

Configurar acceso al servidor SQL Server y a la base de Configuración.

3

2

 

Una vez instalado el servicio se procederá a “Iniciar” dicho servicio en la sección de servicios de Windows.

Los errores del servicio se grabaran en el visor de eventos de Windows en la sección  de “Aplicación” con la clave “IGGlobal CloudServices Service”

4

 

Desinstalación/reinstalación del servicio.

Para poder realizar la desinstalación primero se debe detener el servicio desde servicios de Windows. Luego de esto se podrá proceder a reinstalar, siguiendo los pasos mencionados en el punto anterior.