viernes, 7 de diciembre de 2012



Integración de Sistemas de Seguridad en Grandes Instalaciones o Conjuntos de Edificios

En los últimos dos años, Scati Labs ha desarrollado un conjunto de tecnologías que permite realizar la integración de sistemas de seguridad en grandes instalaciones.  Esta empresa ha invertido esfuerzos para desarrollar un software de integración de controles de acceso y seguridad en los edificios llamado ISS (Integración de Sistemas de Seguridad).

El software de integración ISS es un programa que permite gestionar de forma unificada las soluciones de control de accesos existentes en la actualidad con las del campo de la seguridad y automatización. Además busca reducir en gran medida el número de falsas alarmas, ya que se puede realizar la confirmación visual de las mismas.

Ventajas que ofrece Scati Labs:
.
  • Integración de fabricantes: independencia respecto al hardware instalado.
  • Integración de soluciones: un único puesto de supervisión de controles de accesos, cámaras de circuito cerrado de TV, incendios, intrusión, iluminación, climatización sísmicos...
  • Escalabilidad: posibilidad de escoger los módulos que se necesitan.
  • Alarmas en tiempo real que podrán ser visualizadas en un mapa de las instalaciones desde cualquier ubicación, para rápidamente detectar la zona y ejecutar el protocolo establecido.
  • Integración multimedia.
  • Multiplataforma.
Este nuevo avance de tecnología coloca Scati Labs como una empresa innovadora que está  a la vanguardia de la integración de sistemas de seguridad y en el desarrollo de nuevos productos.

Si este artículo te pareció interesante y necesitas más información, visita:




jueves, 22 de noviembre de 2012

La catedral y el bazar





Este ensayo, compara el estilo de construcción de una Catedral y el de un Bazar Persa.  En el caso de la catedral existe un gran esfuerzo de diseño integral, mientras que en el bazar persa, cada comerciante se preocupa por su local, lo que genera aparente caos y descontrol.

Sin embargo, tanto la catedral como el bazar cumplen sus funciones de forma correcta, por lo que la discusión de los modelos de desarrollo e implementación de ambos puede resultar sumamente interesante.La lectura se encuentra orientada al desarrollo de Sistemas Operativos y compara la catedral con los sistemas operativos propietarios y al bazar con los sistemas operativos de código libre.A lo largo de su lectura, se comparte una serie de lecciones aprendidas que pueden aplicarse fácilmente a cualquier esfuerzo de desarrollo de software o de integración.


Algunas lecciones interesantes:


  • Las estructuras de datos inteligentes y el código burdo funcionan mucho mejor que en el caso inverso.
  • Con frecuencia, las soluciones más innovadoras y espectaculares provienen de comprender que la concepción del problema era errónea.
  • Todo buen trabajo empieza cuando uno tiene que rascarse su propia comezón

acceso al documento: http://www.porlacultura.cult.cu/pdf/ll0009.pdf


La orquestación de servicios y SOA


La orquestación de servicios y SOA
SOA: en términos simplistas, es una arquitectura que permite la interoperabilidad de  sistemas por medio de pequeñas piezas de software que realizan tareas específicas cuando son utilizadas.
Esta arquitectura surgió en el año 2000 y ha sido ampliamente adoptado,  lo que ha generado gracias a su reusabilidad, sin embargo, conforme se implementa, surgen nuevas necesidades, una de ellas conocida como Orquestación de Servicios.
Fiel a su nombre, la orquestación de servicios se refiere al esfuerzo de coordinar diferentes servicios para exponer un nuevo servicio que surge de la interacción de servicios básicos. Esta orquestación generalmente se realiza en base a mensajes y de la misma surgen términos como ESB: "Enterprise Service Bus"  o "Bus de integración", EAI: Enterprise application integration y otros.
Esta orquestación requiere de herramientas que se encuentran disponibles tanto en el mundo Open Source como en los productos privativos.  Estos productos, son los que finalmente, aprovechan o materializan las bondades y facilidad de crecimiento de la Arquitectura Orientada a Servicios SOA.

Tomado de http://www.mulesoft.com/service-orchestration-and-soa 

viernes, 16 de noviembre de 2012

Elección de herramientas de Integración Continua



Elección de herramientas de Integración Continua

La Integración Continua es un concepto ampliamente definido en el que básicamente se pretende automatizar la construcción/compilación e integración del desarrollo de un producto software, para agilizar el ciclo de diseño-ejecución-prueba, detectando de forma óptima los errores, bugs y fallos en dicho proceso de desarrollo.
En el caso de desarrollo de software realizado por un equipo, queremos integrar nuestro código propio con el que finalmente va a ser lanzado. Para la gestión del desarrollo de todo el equipo, la integración de código, su compilación y pruebas habrá que seguir ciertas directrices, que están dentro del concepto de Integración Continua.

Una de las grandes ventajas de la Integración Continua está en el hecho de probar nuestro código “en tiempo real”. Esto está dentro del concepto Kaizen o mejora continua, cuyas ventajas se reducen en gran parte a la reducción de tiempo de integración con una fiabilidad enorme.
Los aspectos a tener en cuenta en la Integración Continua pueden resumirse a:
  • Mantener un repositorio de código
  • Automatizar la compilación e integración
  • Hacer tus propios tests
  • Commits diarios
  • Cada commit debe compilar
  • Compilar rápida y ágilmente
  • Testar en clon de producción
  • Hacerlo fácil
  • Resultados accesibles por parte de todos
  • Automatizar despliegue
Basándonos entonces en estos aspectos es importante poder realizar las tareas necesarias para disponer siempre de una última versión de nuestro código que esté testada y probada. Para ello existen herramientas software que nos proporcionarán un Servidor de Integración Continua que nos facilite la realización de esas tareas basadas en los aspectos anteriormente comentados.
Por ello, es esencial la elección de la herramienta que utilicemos para desarrollar en un entorno de Integración Continua. Esta elección vendrá determinada por ciertos criterios de selección que marcarán nuestras necesidades de desarrollo y el entorno. Estos criterios tratarán de ser lo más objetivo posibles.
Nuestros criterios a la hora de la elección estarán basados en:
  1. Características de la herramienta software, como
    • Integración de sistema de control de versiones
    • Capacidad de manejo e integración de plataformas de construcción y despliegue (Maven, Ant)
    • Metodología de feedback e informes
    • Etiquetado
    • Si soporta dependencia de otros proyectos o no
    • Facilidad de extender
  2. Fiabilidad y rendimiento. Productos opensource nos permitirán hacer pruebas de rendimiento fiables.
  3. “Longevidad” del software. Sin perder la funcionalidad y robustez de una herramienta consolidada y establecida, hay que tener una visión de futuro y pensar a largo plazo (posibilidad de extender nuestro producto o modularlo).
  4. Entorno objetivo. Hay que tener también una visión más allá de la calidad del código y no perder de vista el entorno de producción, trabajo y ejecución. Tendremos que tener en cuenta entonces los sistemas operativos soportados por los servidores, los requerimientos del sistema, el versionado y el soporte de versionado.
  5. Facilidad de uso. Aunque a veces este criterio puede ser subjetivo, el uso de consolas web, configuración a través de edición de archivos, utilización de asistentes o paneles de control vendrán determinados por los usuarios de la herramienta-servidor que va a ser utilizada y administrada.
Estos criterios de selección no deben ser rígidos y buscamos un entorno lo más flexible posible. Pero el exceso de flexibilidad puede llegar a hacer nuestro sistema improductivo y algo caótico, provocando el efecto contrario al deseado y por tanto, algo de rigidez del sistema nos puede ayudar a establecer las líneas adecuadas de actuación.
Por estas razones y según los criterios que hemos expresado para la elección de nuestras herramientas en un entorno de Integración Continua, una buena elección será el uso de Hudson como “CI Tool” (herramienta de Integración Continua) y Maven como “Lifecycle Build Tool” (herramienta de construcción del ciclo de vida).
De forma resumida exponemos las ventajas y características de estas dos herramientas para la gestión de nuestro proyecto de desarrollo de software.

Maven

De forma más detallada a nuestra introducción anterior, Maven es una herramienta de gestión y comprensión de proyectos de desarrollo de software, normalmente en Java, que nos permite compilar, testar integridad y compilación, desplegar, documentar y gestionar las dependencias de código de forma sencilla y extendible.
Maven es una herramienta abierta y libre (pertenece al Proyecto Apache) claramente orientada al trabajo en equipo, siendo esta es una de las principales razones por las que la elegimos como herramienta ideal para metodologías agiles de programación y posterior Integración Continua con otras herramientas software.
La herramienta es compleja pero fácil de usar y muy rápida a la hora de compilar y desplegar proyectos. Entre las ventajas de usar Maven como herramienta de desarrollo en el trabajo en equipo, podemos destacar:
La dependencia entre proyectos no es problema
Un mismo proyecto se puede ejecutar en distintos entornos. Sólo hay que cambiar un archivo de configuración
La integración del trabajo de desarrolladores es transparente
Hay una maximización de la cohesión del código y una minimización del acoplamiento
Fácil reutilización del código

Para los desarrolladores familiarizados con herramientas similares, como Apache Ant, Maven ofrece las mismas funcionalidades, con la diferencia de gestionar las dependencias de proyectos de una forma mucho más sencilla y comprensible, optimizando notablemente el tiempo de desarrollo en trabajos multiproyecto.
El funcionamiento de Maven viene expresado según el siguiente diagrama:
Los cuadros grises son dados por el desarrollador, los rojos por la herramienta, y el marrón es la salida y resultado final (lo que en Maven se denominan Artefactos). Es decir, podemos comprobar que Maven es muy flexible a la hora de poder personalizar plugins para nuestro proyecto y también para gestionar las dependencias y configuraciones con un simple archivo POM (Project Object Model). Pero tampoco podemos olvidar que nos proporciona la rigidez suficiente con su arquitectura y metodología para no perder el foco y que los trabajos multiproyectos no se conviertan en los temidos “dinosaurios” difíciles de gestionar.
En definitiva y en nuestro caso, Maven nos proporciona una solución modular orientada al trabajo en equipo que elimina problemas de herramientas anteriores, como es la compleja resolución de dependencias, a la vez que nos permite integrar el trabajo con otras herramientas de Integración Continua. Es importante destacar para nuestro caso que se dispone de un plugin para proyectos JRuby.

Hudson

Esta herramienta de Integración Continua nos lleva un paso más allá de los resultados de nuestra solución de Ciclo de Vida, que es Maven. Es decir, ya no sólo se trata de paquetizar e integrar las distintas áreas de desarrollo de nuestro producto resolviendo las dependencias de código de los paquetes subdivididos, sino de que la integración sea efectiva, cumpla nuestros criterios de calidad y el tiempo empleado en la detección de errores y su resolución sea el menor posible. Hudson nos proporciona una solución sencilla para llevarlo a cabo.
Hudson es una herramienta libre y abierta relativamente nueva de Integración Continua muy utilizada y de gran éxito en el entorno de desarrollo del software. Su arquitectura basada en plugins y su fácil instalación la hacen una herramienta potente y fácil de usar. El desarrollo de plugins es una característica importante al destacar su flexibilidad.
Podemos comprobar las diferencias con otras herramientas CI (Integración Continua) en este link, comprobando que además de ser una de las más completas, su extensibilidad viene proporcionada por plugins, lo que la hace bastante modular y ligera si no se necesita de amplia funcionalidad.
Podemos comparar a Hudson con una de las herramientas CI más consolidadas actualmente, que es CruiseControl, comprobando que, además de ofrecer mayor amplitud de funcionalidad, sus características vienen determinadas por la instalación sencilla de plugins.
Resumiendo, parte de las ventajas de Hudson vienen determinadas por:
  • Fácil instalación y uso (un fichero WAR es toda la herramienta de instalación)
  • Plugins fácilmente extensibles
  • Soporte completo de Maven, lo que nos facilita enormemente la integración
  • Soporte para entornos “colaborativos” (múltiples equipos y grupos de proyectos)
  • Software Libre 100%
  • Sistema de alertas intuitivo para los desarrolladores
  • Muy pocos problemas “reportados” de esta herramienta
En definitiva, Hudson es una herramienta sencilla, de alta funcionalidad, abierta, bien documentada y con un futuro muy prometedor como CI Tool consolidada, y además, se integra muy bien con Maven. En nuestro caso cubre las necesidades, además de proporcionar un entorno “user-friendly”.

Fuente: Venera 7


martes, 13 de noviembre de 2012


Consejos para que pueda sobrevivir a una fusión

Las fusiones son un hecho de la vida corporativa.  También requieren que IT desempeñe un papel importante debido a que sistemas diferentes deben ser consolidados.  El trabajo que IT realiza en las fusiones se considera una misión crítica ya que si los sistemas no pueden ser fácilmente consolidados y hacer que trabajen juntos, la fusión podría ser cancelada.  No hace falta mencionar que el trabajo de IT en la fusión de sistemas es peligrosa - no sólo técnicamente, sino políticamente.  Aquí hay algunos temas que considerar si IT tiene la tarea de  una fusión.

Entender lo que está en juego
En las fusiones no solo están involucrados los procesos, si no también las personas de cada organización, lo que significa que no todos conservarán sus puestos de trabajo, incluyendo el personal de IT.
Para IT su tarea de fusión de sistemas es prioritario, sin embargo se encontrará con que los sistemas escasamente están documentados, y que las personas que conocen del mismo no son del todo colaboradores con la transición.
Es necesario conocer y estar consientes de la complejidad de la fusión y de los sistemas, lo cuál ayudará a que el encargado del proyecto sea capaz de resistir las presiones y conflictos que puedan surgir.
Considere la posibilidad de sabotaje
Se debe tomar en consideración que probablemente encontrará personal de IT que no coopera o que oculta información importante para llevar a cabo la fusión, lo cual puede ser considerado como un sabotaje silencioso.
Si se da el caso, esto afectará el tiempo planificado de ejecución del proyecto y posiblemente se requerirá de una extensión de tiempo.
Sepa cuándo es poco aconsejable realizar la integración de sistemas
 A veces, las organizaciones desean fusionarse, pero sus sistemas son tan incompatibles que no tiene sentido consolidarlos.  En estas situaciones, lo aconsejable es permitir a ambas compañías continuar funcionando con sus sistemas, e identificar  un "sistema a largo plazo" que todo el mundo finalmente utilizará. 
Comunicar
Aunque las noticias del proyecto no sean las mejores, se debe comunicar lo más directo y pronto posible.  El no transmitir las mala noticias solo empeorarán la situación.  Los ejecutivos con amplia experiencia saben que en los proyectos siempre existirán malas y buenas noticias.

Tenga un plan de reserva
Una vez que se haya realizado todas las pruebas y esté listo dejar los sistemas antiguos,  asegúrese de tener un "camino de vuelta" para la trasladarse en caso suceda un error inesperado.  Nunca está de más tener un plan B.

jueves, 8 de noviembre de 2012

Urgencia de Sistemas Integrados



Urgencia de Sistemas Integrados




El haber trabajado en diferentes empresas, tanto de iniciativa privada, estatales e incluso organizaciones no gubernamentales, me ha permitido conocer y administrar múltiples versiones de aplicaciones informáticas de todo tipo, la cuales van desde programas personalizados basados en el desarrollo “hecho en casa”, pasando además por las desarrolladas en código libre, sin contar las “heredadas” de alguna otra organización, por alguna fusión inesperada, hasta llegar a las soluciones “empaquetadas de fábrica” que tiene una función general y que no permiten realizar ningún cambio.  Y esta administración, se dificulta cuando todas estas variedades coinciden dentro de una organización. 

Sin embargo, la administración de estas tecnologías no es lo más preocupante, sino lo que esto conlleva y más aun sin que se tenga una visión clara de la dimensión de esta situación y sus repercusiones para la organización: la dispersión de los datos.

Esta dispersión de datos, no aporta valor agregado a la organización para tomar decisiones estratégicas sobre su futuro y  la gestión gerencial se dificulta enormemente al no contar con un insumo indispensable, como lo es la información.

Supongo que esta situación que ahora enfrentan las organizaciones, sin importar su giro de negocio o nivel de automatización alcanzado, tiene su origen en que dichas organizaciones y cada una de las entidades que las conforman, han afrontado y resuelto, “a su manera individual” la forma de realizar las actividades cotidianas y no se han permitido “pensar y meditar”  en alguna forma de invertir esfuerzos y recursos para dar un valor agregado al trabajo realizado, buscando que éste sirva como fuente de consulta para el futuro.  A esto hay que sumar el vertiginoso cambio tecnológico vivido en estas últimas décadas y cómo éstos repercuten en un todo, es decir en un sistema.  

En este contexto, la Gerencia de Sistemas, ha fungido como un “ente facilitador” y ha debido colaborar al alcance de los objetivos estratégicos, aunque esto pueda significar relegar a un segundo plano la aplicación de estándares, buenas prácticas y metodologías de desarrollo e implementación de programas.  Por ende, se vislumbra difícil, tan siquiera el sólo pensar en la palabra integración de aplicaciones y no digamos de sistemas complejos.

Si bien, en las organizaciones impera la necesidad de alcanzar los objetivos estratégicos y metas de productividad, es importante considerar que la definición correcta de éstos, proviene del trabajo de forma integrada y sistemática, buscando ver totalidades en los procesos que se realizan y la información que generan, la cual es un insumo indispensable para generar conocimiento y así poder tomar decisiones y  realizar una planificación efectiva y verdaderamente estratégica.

Es por esto, que la función de la Gerencia de Sistemas es trascendental dentro de las organizaciones y debe ir mas allá de apoyo a la gestión, éste debe involucrarse directamente y buscar la sistematización, automatización e integración de los procesos y servicios.

Debe ser un ente facilitador de servicios e información que permita a la alta dirección a contar con una mejor información para realizar sus estrategias de negocios, producir ingresos, hacer frente a los cambios y se obtendrán mejores resultados, cuando los gerentes intermedios y la gerencia de sistemas trabajen estrechamente relacionados.  Se requiere construir una infraestructura de información con bases de datos bien definidas, sistemas de información que apoyen a los procesos y estrategias del negocio y una infraestructura tecnológica de hardware y software que le de soporte a esta arquitectura de información. 

 

A menos que la Gerencia de Sistemas comience a diseñar ahora todos estos elementos bajo una visión integral, la organización no los tendrá disponibles cuando más los necesite, cuando la competencia sea más aguda y las necesidades de las estrategias empresariales de contar con tecnología integrada, así como información oportuna, veraz y confiable, sean más urgentes.


miércoles, 7 de noviembre de 2012

Más que un like en Facebook


Durante los últimos años  dentro del vocabulario de millones de usuarios en Internet ha aparecido una nueva expresión que describe el sentimiento de agrado hacia determinado artículo o contenido: like. Seguramente muchas veces la hemos utilizado ingenuamente para demostrar nuestra simpatía o agrado hacia nuestros amigos o páginas de preferencia.  


Y utilizo la palabra ingenuamente, por que hace poco tiempo recibí un correo donde los desarrolladores de google me informaban de sus últimos logros, entre ellos la integración de social networks con google analytics (para los que no saben google analytics es un servicio gratuito de estadísticas de sitios web). 
Lo sorprendente del caso es que ahora puedes saber la cantidad de likes que recibes en tu sitio web ó en tu fan page de facebook, por medio de tu cuenta de google analytics. Claro ahora se preguntaran de que nos sirve esto si los conteos los da la misma página de facebook. Pero lo interesante viene en la comparación que puedes hacer con los  otros datos que te genera google analytics y la comparación con la preferencia (por medio de likes) de tu sitio web. La integración es sumamente sencilla,  les dejo este link donde se explica en pocos pasos como realizarla. 



Finalmente la pregunta es que tanta información genera un solo like? y a quien le esta llegando esta información para conocernos mejor?  Por lo que les sugiero pensar dos veces antes de dar un like, y si tienes una página web o algún negocio, que aproveches para conocer a tu clientela mejor a un costo muy bajo e integrando las herramientas disponibles en el mercado.