Mostrando entradas con la etiqueta Abstraction. Mostrar todas las entradas
Mostrando entradas con la etiqueta Abstraction. Mostrar todas las entradas

lunes, 7 de enero de 2019

Internet de las Cosas, no es conectarlo todo contra todo

Del ya algo lejano Lunes 15 al Jueves 18 de Octubre de 2018, tuvimos la oportunidad de asistir al evento Sinergias, en donde Tech Data, proveedores y asociados pudieron compartir experiencias, habilidades, conocimientos en pro no solo de la generación de negocios, sino también de consolidar la relación comercial agregando siempre ese valor agregado que da la experiencia.

Uno de los temas centrales fue, la Internet de las Cosas. Esa tecnología que la Transformación Digital arropa y complementa conjuntamente con otras tantas, que precisamente termina generando una Sinergia en la que, como lo menciona la definición de esta última, el resultado es mayor a la suma de las partes que la componen.

Dentro de la plática en la que se tocó de manera específica la Internet de las Cosas, se hizo mucho énfasis al hecho de que, el sólo conectar cosas hacia la Internet, no daba por resultado la implementación de la Internet de las Cosas.

Para entender mejor esto último, utilizaremos una analogía tal vez demasiado burda, pero creemos que sí dejará muy claro cuál es el papel de las Cosas, que se conectarán a la Internet. Para comenzar entonces, respondamos a la pregunta: ¿Cómo funciona el cuerpo humano?

Sin intentar rebajar al cuerpo humano con una máquina, diremos que para comenzar, nuestro cuerpo cuenta con un cerebro, que no solamente se encarga de las funciones más básicas que permiten que se preserve la hehomeóstasis o conjunto de fenómenos de autorregulación, conducentes al mantenimiento de una relativa constancia en la composición y las propiedades del medio interno de un organismo. También es responsable de entender el entorno que nos rodea y poder actuar en consecuencia, cuando el entorno interactúa con nosotros.

Así pues, el cuerpo humano cuenta con los cinco sentidos. Vista, oído, olfato, gusto y tacto son esos sensores que permiten al cuerpo humano tener esa esencial conciencia del entorno. Por sí mismos, los sentidos no sirven de nada sin la interacción con el cerebro. A modo de un muy sencillo y tal vez tétrico ejemplo hipotético, ¿qué sucede si se interrumpe por completo o se prescinde del nervio óptico, responsable de llevar las señales captadas por los globos oculares al cerebro? Lo que tenemos es ceguera total. Sin cerebro, no hay sentido de la vista aunque los ojos estén en perfectas condiciones.

Lo mismo sucede con los demás sentidos. Sin los nervios (la red) y el cerebro, no hay lo que se necesita para que esos sensores puedan realizar completa y cabalmente su trabajo.

Esto es lo que pasa si simplemente conectamos sensores electrónicos, magnéticos, mecánicos y/o de cualquier índole a la Internet. Estamos conectando los sentidos a un sistema nervioso y nada más, pero sin un cerebro que reciba esas señales, las analice y realice una acción correspondiente (que actúe en consecuencia), no tenemos absolutamente nada.

Al final del párrafo anterior mencionamos la palabra "actúe". Aquí entonces está el complemento perfecto para que la Internet de las Cosas realmente tenga sentido. Además de sensores, requerimos actuadores.

Se define estrictamente a un actuador como: -"...un dispositivo capaz de transformar energía hidráulica, neumática o eléctrica en la activación de un proceso con la finalidad de generar un efecto sobre un proceso automatizado."-

Algo que debe de hacer un actuador es: -"...recibir la orden de un regulador o controlador y en función a ella, genera la orden para activar un elemento final de control."- En resumen pues podemos decir que: -"...son los elementos que influyen directamente en la señal de salida del automatismo, modificando su magnitud según las instrucciones que reciben de la unidad de control."-

Volviendo a nuestra analogía del cuerpo humano, imaginemos por un momento que estamos conduciendo un vehículo. Somos ese elemento que controla las acciones de todo un ingenio mecánico compuesto por cientos de partes, en donde procesos físicos bien definidos actúan en conjunto para realizar una actividad concreta. En este caso, transportarnos a nosotros de un lugar origen a un sitio destino.

Nuestros ojos, nuestros oídos y nuestro cerebro, están en todo momento atentos a las condiciones que el camino y el entorno van presentando mientras que con nuestros brazos y piernas (los actuarodes en este ejemplo), aceleramos, frenamos, viramos y accionamos los señalamientos correspondientes como son las luces direccionales, etc.

Repentinamente aparece en nuestro campo de visión una pelota. Nuestro cerebro, el elemento de control por excelencia, sabe por un aprendizaje previo y por la experiencia que: -"...siempre detrás de una pelota, hay un niño que sin pensarlo dos veces y de manera espontánea, correrá tras ella para recuperarla"-.

Nuestros músculos se tensan y de inmediato nuestro pie derecho soltará el pedal del acelerador para accionar el freno, mientras que con nuestro brazo derecho accionaremos las luces intermitentes para dar a entender que nos detendremos. Todas estas acciones suceden en fracciones de segundo, casi en automático y como la experiencia y el aprendizaje de años lo indica, pudimos detener el vehículo un momento antes de que el niño apareciera en el campo de visión.

¿Qué hubiese pasado si en este ejemplo no hubiese estado presente el cerebro? Lo peor. El niño muy probablemente hubiese muerto arrollado por nuestro vehículo.

En este ejemplo es claro que de nada sirve la mejor vista, el mejor sentido del oído, los más fuertes músculos y huesos en el mundo, sin que un elemento de control (el cerebro) no se encargue del procesamiento que llega gracias a los sensores y sin el oportuno accionar de los actuadores (brazos, manos y piernas). Todo esto tras un aprendizaje y un adiestramiento adecuado que queda debidamente almacenado en nuestro cerebro.

Regresando entonces a la Internet de las Cosas, es entonces que debemos hacernos una pregunta clave, solo para empezar: ¿Cómo y en qué queremos aplicar la Internet de las Cosas? Todo depende entonces de la respuesta a esta interrogante, para determinar no solamente qué dispositivos serán necesarios involucrar como sensores y actuadores, sino también qué actuadores debemos añadir a la ecuación.

Claro es entonces que no es lo mismo un proceso de producción en una planta fabricante de productos químicos, una cervecería, una fábrica de productos de acero, una panadería, etc. Cada una de estas ramas de la industria tiene sus propios procesos.

También entonces debemos responder: ¿Queremos que los sensores sólo manden señal al elemento de control, o queremos que los sensores puedan tomar decisiones instantáneas? Aquí tocamos un tema que se ha dado en nombrar como "Edge Computing" o "Cómputo de Frontera". Un sensor puede ser por ejemplo un vil interruptor accionado por presión o por un campo magnético. Pero también pudiésemos involucrar a un circuito micro controlador (como Arduino por ejemplo) para que éste mismo tome decisiones y no necesite enviar la señal hasta el cerebro central para esperar que éste último tome la decisión correspondiente, enviando solamente qué decisión tomó y cuál fue el resultado final para que quede registrado en "bitácora".

Antes de continuar, vale la pena mencionar que Internet de las Cosas no debe venir sola. Debe de ser parte de toda una estrategia que involucra íntimamente a Siete Capas, que a saber son (de arriba hacia abajo):

7.- Colaboración y Procesos.- En donde se involucra directamente a personas y los ciclos del negocio.
6.- Aplicaciones.- Todo lo relativo a Reportes, Análisis, Control.
5.- Abstracción de los Datos.- Adición y acceso a datos generados por capas inferiores.
4.- Acumulación de los Datos.- Almacenamiento de datos generados por capas inferiores.
3.- Edge Computing.- Análisis y Transformación de los datos generados por la capa 1.
2.- Conectividad.- Unidades para comunicación y pre-procesamiento de los datos.
1.- Dispositivos y Controladores Físicos.- Las "Cosas" (sensores y actuadores).

Como podemos darnos cuenta, el concepto que muchos tenemos de Internet de las Cosas es solamente la capa 1, los Sensores/Actuadores.

La capa 1 es tal vez una de las partes más críticas y a la vez apasionantes de la Internet de las Cosas. El iniciar respondiendo las preguntas:

  1. ¿Para qué requiero utilizar Internet de las Cosas? No es lo mismo el aplicar Internet de las Cosas a un proceso fabril, que aplicarlo a un avión de pasajeros o a un avión de combate.
  2. ¿Qué es lo que requiero censar? Se puede censar ya prácticamente todo, desde temperatura, humedad, altura sobre el nivel del mar, posición geográfica, aceleración relativa, pulso, presión arterial, temperatura corporal, ritmo respiratorio, etc. Todo esto va muy de la mano con la respuesta a la pregunta anterior.
  3. ¿Cómo y con qué velocidad se deberá analizar la información? Dependiendo entonces de qué tan crítico o vital resultan las respuestas a las dos preguntas anteriores, se puede decidir por una Internet de las Cosas en modalidad "Pooling" (encuesta), en donde todo análisis de los datos y toma de decisión se debe llevar a cabo en un servidor central; o por el contrario se requiere toma de decisiones y acción a nivel del dispositivo "in situ" (edge o frontera).
  4. ¿Cómo y con qué velocidad se deberá actuar en consecuencia? Nuevamente recordemos que de nada sirve el sólo censar, registrar y analizar los datos, si no es posible actuar en consecuencia con éstos. De aquí depende y de las respuestas a las dos primeras preguntas, qué tipo de actuadores, qué tan rápidos, qué tecnología se debe escoger para éstos.

Cierto que aún así y con todo lo que hemos revisado hasta el momento, no podemos decir que ya tenemos la guía única y/o máxima para la implementación de Internet de las Cosas. Pero definitivamente ya contamos con un inicio muy sólido y las bases para desde este modesto punto, continuar con un círculo virtuoso que de por resultado una completa y correcta implementación de la Internet de las Cosas.

¿Qué haría falta entonces? Complementar con tomas de decisiones tan importantes como:
  • ¿Con qué plataforma (de hardware y sistema operativo) vamos a trabajar a nivel de la Capa 1?
  • ¿Qué tecnología podemos o debemos utilizar para dar conectividad a los sensores y actuadores?
  • ¿Contamos ya con la herramienta adecuada, tanto para nuestra insipiente estrategia de Internet de las Cosas como para nuestro proceso de negocio?
  • ¿Cómo registraremos todos los datos que vengan desde la Capa 1 y todas las decisiones tomadas por el sistema o sistemas de control? ¿Ya contamos con una Base de Datos Relacional confiable?
  • ¿Ya contamos con todos los elementos de seguridad y auditoría que garanticen la veracidad e integridad de los datos generados por el "día a día" de nuestra solución de Internet de las Cosas?
  • ¿Contamos ya con herramientas para el Análisis y Paneles de Control para visualizar en tiempo real y/o realizar reportes para toma de decisiones a mediano y largo plazo? ¿Es necesario Big Data?
  • ¿Cómo habremos de involucrar a personas y procesos de negocio existentes (o futuros)?

 ¿Verdad que no es algo tan sencillo como simplemente conectar "chunchitos" a una red? Es todo un procedimiento que debe ser analizado y ejecutado concienzudamente, pero que al final dotará a su negocio con los cimientos para aplicar Aprendizaje Automático, Inteligencia Artificial y por sobre todo, de esa agilidad tan necesaria para las empresas, organizaciones y instituciones de hoy.

¿Listo para comenzar con la Internet de las Cosas?

viernes, 17 de agosto de 2018

Hardware Abierto. Hardware definido por Software

Desde que se hizo presente la Virtualización en nuestras vidas, quienes veníamos de la Informática clásica, esa en la que nos inculcaron que el Hardware era rígido, concreto, tangible y el Software era abstracto e intangible, nos fue algo difícil ver en ese momento el inmenso potencial de una Máquina Virtual.

Ya de por sí el concepto de una Capa de Abstracción generada por un software no nos era extraño. El Firmware en contacto directo con el Hardware; el Sistema Operativo con su "Kernel" y sus "Drivers" como marco de trabajo y cimiento de los Servicios de Sistema, la Interfaz Gráfica y las Aplicaciones (de abajo hacia arriba apilados una capa sobre otra).

Ahora el Hipervisor se adueñaba de el Harware Físico y ponía los recursos a las órdenes de las Máquinas Virtuales, de manera dinámica y bajo demanda. Como en un Comunismo Utópico en el que todo es de todos, con ese dictador benévolo que se llama el Hipervisor otorgando dichos recursos a las Cargas Virtuales.

Todo esto dio por resultado poder tener Centros de Datos Definidos por Software (SDDC por sus siglas en inglés) y permitir que el consumo de recursos informáticos se convierta en una operación más inteligente, escalable, confiable, segura.

De los cuatro recursos físicos: Procesador, Memoria, Red y Almacenamiento, es el primero al que siempre consideramos como ese ente monolítico, inmutable y completamente necesario (indispensable) para la ejecución de lo que sea, desde el punto de vista de la Informática. Éste elemento ya diseñado y construido por un proveedor, permanece así como quedó manufacturado, con todos sus alcances y limitaciones. ¿Pero toda la vida tenía que ser así?

Algunos lectores ya se dieron cuenta por dónde vamos. Sí. Procesadores Definidos por Software. ¿En serio? Sí, ¿por qué no? Y mejor aún, todo ello en modalidad abierta. ¿Código Abierto? No. Hardware Abierto.

¿Asombrado, atónito, no das crédito al párrafo anterior? Es lógico. No se apure amigo lector. No estamos bajo el influjo de una droga o en un universo paralelo. Lo que más le va a asombrar es que todo lo mencionado ya existe.

Algo de Historia: Compuertas Lógicas, Micro Controladores y Procesadores

¿Cómo funcionan las Computadoras? Pregunta típica de un niño en los años setenta. Yo entre ellos. Las respuestas eran algo confusas, pero tras la recomendación de un magnífico libro titulado "Cibernética sin matemáticas" escrito por Henryk Greniewski y publicado por el Fondo de Cultura Económica en el año de 1965.

Me quedó claro que todo se basaba en una aritmética en la que a diferencia de nuestro sistema decimal basado en diez guarismos (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9) que se utilizan para representar cantidades, las computadoras utilizan un sistema binario. Dos guarismos o dígitos (0 y 1) son necesarios para representar cantidades.

Pero el 0 y el 1 también pueden ser utilizados para determinar la veracidad o falsedad de proposiciones lógicas. Conceptos como las Tablas de Verdad y los operadores lógicos del Algebra Booleana. ¿Qué es eso? En 1815 George Boole (matemático y lógico británico) propuso una herramienta matemática llamada Álgebra de Boole. Luego en 1938 Claude Shannon propuso que con esta álgebra es posible modelar los llamados Sistemas Digitales. El Álgebra de Boole es un sistema matemático que utiliza variables y operadores lógicos.

Así pues, ya teníamos algo que, con la manipulación, operación de tan solo dos dígitos, podíamos realizar complejas operaciones que imitaban en mucho al razonamiento humano. Qué decir de la realización de cálculos complejos con precisión y exactitud.

Sin entrar demasiado en teoría, la famosa máquina de Alan Mathison Turing usada para descifrar el cuasi indescifrable Código Enigma de los nacionales socialistas alemanes durante la segunda guerra mundial, utilizaba conmutadores electro-mecánicos para dar forma y contexto a los dígitos binarios "0" y "1". ¿Conmutador abierto (apagado)? CERO. ¿Conmutador cerrado (encendido? UNO.

Perfecto. ¿Prendiendo y apagando algo ya estoy haciendo cómputo? De manera muy básica y "rupestre", sí. Falta revisar los Operadores Lógicos o Booleanos:
  • NOT = Negación
  • AND = Conjunción
  • OR = Disyunción

Aquí anexo las "Tablas de Verdad" de cada uno de estos operadores básicos:

Platiquemos un poco del operador NOT, también conocido como INVERSOR. ¿Por qué inversor? Porque a toda entrada A que puede tener sólo los valores "0" (FALSO) o "1" (VERDADERO), corresponde como salida el valor contrario: 1 o 0 (VERDADERO o FALSO) respectivamente.

En el caso de la Conjunción o AND, aquí necesitamos al menos DOS entradas: "A" y "B". Observe que en la Tabla de Verdad, la única manera en la que el resultado es "1" o "VERDADERO" es cuando el valor de ambas variables "A" y "B" es "1" o "VERDADERO". De otra manera el resultado es "0" o "FALSO".

Por último en el caso de la Disyunción u OR, siempre que exista una entrada en "1" o "VERDADERO", el resultado será "1" o "VERDADERO". De otra forma será "0" o "FALSO".

¿Para qué me sirve esto? A modo de un ejemplo sencillo, imagine que tiene Usted el reto de crear un circuito lógico para un automóvil. Este circuito "inteligente" debe controlar cuándo SÍ se podrá poner en marcha el motor del vehículo y cuando no.

Para este ejemplo, imaginemos que el fabricante solicita que:
  1. El sensor del asiento del conductor "A" debe estar en "1" o "VERDADERO", pues hay alguien sentado en el.
  2. Al mismo tiempo, el cinturón de seguridad "B" deberá estar abrochado ("1").
  3. La palanca de velocidades "C" debe estar en posición "PARKING" o "P" ("1"). Cualquier otra posición de la palanca se considera que está en "FALSO" o "0".
  4. El freno de mano "D" podrá estar accionado ("1") o liberado ("0").

Este sería entonces el diagrama de este circuito lógico resultante:


Los elementos del diagrama "AND1" y los demás semejantes, son lo que se llaman Compuertas Lógicas. Estas se incluyen en Circuitos Integrados que ya no utilizan conmutadores electro-magnéticos, sino transistores.

Estos circuitos integrados, muy al principio denominados TTL (Transistor-Transistor Logic) fueron los que permitieron que el hombre llegara a la luna, que comenzáramos a gozar con juegos de video y que nuestros aparatos electrónicos, vehículos y electro-domésticos tuviesen "inteligencia".

Con un solo circuito integrado TTL 7408 de cuatro compuertas "AND" independientes de dos entradas cada una, es posible implementar el circuito arriba incluido y hasta sobraba una compuerta "AND".

Conforme se fueron haciendo más y más complejas las necesidades relativas al cómputo y a las compuertas lógicas, utilizar las compuertas lógicas ya no era conveniente. Era necesario contar con circuitos integrados más complejos para hacer cálculos y/o para añadir inteligencia a nuestros dispositivos industriales y/o domésticos. Nacen entonces dos nuevos componentes:

Microcontroladores

Un microcontrolador (abreviado μC, UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.

Algunos microcontroladores pueden utilizar palabras de cuatro bits y funcionan a velocidad de reloj con frecuencias tan bajas como 4 kHz, con un consumo de baja potencia (mW o microwatts). Por lo general, tendrá la capacidad de mantenerse a la espera de un evento como pulsar un botón o de otra interrupción; así, el consumo de energía durante el estado de reposo (reloj de la CPU y los periféricos de la mayoría) puede ser sólo de nanowatts, lo que hace que muchos de ellos sean muy adecuados para aplicaciones con batería de larga duración. Otros microcontroladores pueden servir para roles de rendimiento crítico, donde sea necesario actuar más como un procesador digital de señal (DSP), con velocidades de reloj y consumo de energía más altos.

Cuando es fabricado el microcontrolador, no contiene datos en la memoria ROM. Para que pueda controlar algún proceso es necesario generar o crear y luego grabar en la EEPROM o equivalente del microcontrolador algún programa, el cual puede ser escrito en lenguaje ensamblador u otro lenguaje para microcontroladores; sin embargo, para que el programa pueda ser grabado en la memoria del microcontrolador, debe ser codificado en sistema numérico hexadecimal que es finalmente el sistema que hace trabajar al microcontrolador cuando éste es alimentado con el voltaje adecuado y asociado a dispositivos analógicos y discretos para su funcionamiento.

Microprocesadores

El microprocesador (o simplemente procesador) es el circuito integrado central más complejo de un sistema informático; a modo de ilustración, se le suele llamar por analogía el «cerebro» de un ordenador.

Es el encargado de ejecutar los programas, desde el sistema operativo hasta las aplicaciones de usuario; sólo ejecuta instrucciones programadas en lenguaje de bajo nivel, realizando operaciones aritméticas y lógicas simples, tales como sumar, restar, multiplicar, dividir, las lógicas binarias y accesos a memoria.

Puede contener una o más unidades centrales de procesamiento (CPU) constituidas, esencialmente, por registros, una unidad de control, una unidad aritmético lógica (ALU) y una unidad de cálculo en coma flotante (conocida antiguamente como «coprocesador matemático»).

Tanto las Compuertas Lógicas, como los Microcontroladores y los Microprocesadores, están fabricados bajo un diseño específico que nunca cambiará. Será el ser humano el que deberá ingeniárselas para interconectar estos artilugios de silicio, oro, cobre y demás elementos químicos para que realicen una operación determinada.

FPGA. Matrices de Compuertas Programables "In Situ"

Una FPGA o matriz de puertas programables (del inglés field-programmable gate array) es un dispositivo programable que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada en el momento mediante un lenguaje de descripción especializado. La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip.

Las FPGA se utilizan en aplicaciones similares a los ASIC sin embargo son más lentas, tienen un mayor consumo de energía y no pueden abarcar sistemas tan complejos como ellos. A pesar de esto, las FPGA tienen las ventajas de ser reprogramables (lo que añade una enorme flexibilidad al flujo de diseño), sus costes de desarrollo y adquisición son mucho menores para pequeñas cantidades de dispositivos y el tiempo de desarrollo es también menor.

Ciertos fabricantes cuentan con FPGA que sólo se pueden programar una vez, por lo que sus ventajas e inconvenientes se encuentran a medio camino entre los ASIC y las FPGA reprogramables.

En pocas palabras, estas Matrices de Compuertas Programables o FPGAs, pueden ser configuradas por software para funcionar como Compuertas Lógicas, Microcontroladores o Microprocesadores. ¿Circuitos Integrados Definidos por Software? ¡¡¡ Sí !!!

Los alcances que tiene esta tecnología son sencillamente fabulosos y abren aún más las posibilidades para quienes los incluyen en dispositivos industriales, empresariales o domésticos.

¿Qué le parecería tener un dispositivo inteligente como una LapTop, una Tablet o un Teléfono Inteligente, que no solamente sea posible actualizar el Sistema Operativo con fines de mejorar su desempeño o arreglar posibles fallas de programación, sino que además ahora se pueda actualizar su hardwer sin necesidad de abrir el aparato.

Sí. El fabricante podrá manufacturar equipos todos idénticos, pero los alcances y limitaciones de éste dependerán de la configuración de sus FPGAs internas. Podemos comenzar adquiriendo la "licencia" o paquete "Starter", en la que la o las FPGAs se comportarán como un equipo económico de tan solo dos procesadores.

Con el pago de un paquete o licencia superior, podremos escalar a ocho procesadores, doce, diez y seis o más. Podremos añadir GPUs aceleradoras de video y poco a poco escalar hasta contar con un equipo con un desempeño inmenso y posibilidades más allá de lo que nuestra imaginación puede llega a visualizar.

¿Qué decir de otros dispositivos como computadoras de a bordo en aviones, automóviles, motocicletas? También electrodomésticos más y más versátiles e inteligentes que puedan realizar más funciones con más precisión, mayor exactitud y con un uso más inteligente y racional de energía eléctrica, agua, etc.

¿Qué tan posible, factible y/o a futuro es llegar a este punto? Ya llegamos desde hace tiempo. Sí. Hace apenas un mes que Massimo Banzi, cofundador y Director de Tecnología de ARDUINO, anunció la disponibilidad del ARDUINO MKR VIDOR 4000. Su corazón ya no es un microcontrolador, sino una FPGA. Tiene un costo de $60.00 USD y es posible acceder a ella a través de un conector Micro PCIe.

Gracias a los esfuerzos de Clifford Wolf con su proyecto IceStorm, Adrian Bowyer y sus tremendas contribuciones al Open Source Hardware y al Open Source y toda la comunidad Abierta, los avances en materia de FPGA son tales que ahora los fabricantes y proveedores de Hardware y Software, ya no piensan en Microcontroladores o Microprocesadores, sino en FPGA como el cimiento de sus desarrollos a mediano y largo plazo.

FPGA plantea una nueva forma de hacer las cosas. Un nuevo paradigma que como todos, subsana muchos de los requerimientos actuales en el campo de las Tecnologías de la Información, pero como es costumbre plantea nuevos retos.

Esta tecnología tiene la bondad de ofrecer una relación costo-beneficio muy positiva y como todo aquello que resulta económica y tecnológicamente rentable, trascenderá e incluso "amenaza" con sustituir a tecnologías que "a priori" ya se ven como obsoletas.

¿En conclusión? FPGA es el pasado cercano, presente y futuro a largo plazo de las nuevas Tecnologías de la Información basadas en plataformas Abiertas. ¿Ya conoce Usted FPGA?

martes, 29 de noviembre de 2016

Las palabras misteriosas de hoy son: Capa de Abstracción...

Hardware versus Software. Concreto versus abstracto. Tangible versus intangible. Estas dicotomías han prevalecido desde los inicios de lo que ahora conocemos como Tecnologías de la Información.

En los albores de los años ochenta, para ser más preciso en 1985, tuve la oportunidad de tener (por fin) acceso en exclusiva a una computadora Commodore 64. Un equipo de cómputo casero con la mejor relación costo-beneficio del mercado y la posibilidad para quien la operase, de jugar, trabajar y estudiar con ella.

Qué decir de el maravilloso libro de Larry Gonick "Aprenda Divirtiéndose: Computación" (editorial Edigonvill) con el que comencé realmente en la aventura de la Informática, los Sistemas de Cómputo y todo lo que de ello ahora conocemos y gozamos.

Con un estilo bastante "campechano", muy al estilo de "Los Agachados" de Rius (que en aquel entonces era lo más parecido) el Maestro Gonick nos llevaba de la mano desde conceptos tan "abstractos" como el Algebra Booleana, el concepto del Dígito Binario (Bit), el Byte y por sobre todo el Hardware y el Software.

Desde entonces y durante mucho tiempo, para todos y cada uno de los que nos dedicamos a las ahora llamadas Tecnologías de la Información, así como para el público en general que utilizó (y utiliza) los equipos de cómputo como herramienta de trabajo, centro de entretenimiento, etc. los conceptos de Hardware (aquello que se puede tocar y que es tangible) y Software (aquello que es abstracto en intangible pero que sin éste el Hardware no serviría para nada), quedaron como los opuestos naturales que se complementaban perfectamente para permitirnos convivir con el mundo de lo digital.

La Computadora Personal, como la conocemos, trajo consigo el Sistema Operativo. Ese -"...conjunto de programas y comandos internos y externos, que sirven de interfaz entre el ser humano y/o las aplicaciones y el hardware."- Un Software que creaba algo que ahora conocemos como Capa de Abstracción.

¿Qué es una Capa de Abstracción? Hablando concretamente dentro del ámbito de la informática, es algo que permite que una aplicación, un lenguaje de cómputo, etc. pueda ejecutarse indistintamente en cualquier equipo de cómputo (perdón por la redundancia), sin importar qué Hardware es el que lo ejecuta. Más específicamente, sin importar la marca, el modelo, la cantidad de memoria, procesador, etc. Con el hecho de que sea la plataforma adecuada (x86, Power, ARM, etc.) con los recursos informáticos mínimos recomendados por el proveedor, el aplicativo debe funcionar sin problema.

Una característica inherente del Software es que, entre otras cosas, se puede modificar para darle más propiedades, alcances, limitaciones, especificidad, etc. sin necesidad de hacer movimiento, adición y/o sustracción alguna en el Hardware. Por ello es que es muy común ver que en los mismos equipos de cómputo podamos ejecutar cada vez más y muy diversas aplicaciones.

Ya hemos mencionado que el concepto de Hipervisor no es nada nuevo. Que es un invento de la IBM en los años sesenta para permitir que sus monumentales "Mainframes" pudiesen ejecutar más de una aplicación a la vez. Aplicación y no un Sistema Operativo pues en esos entonces estos últimos aún no habían sido inventados. Desde entonces, ya se hablaba que el Hipervisor colocaba una Capa de Abstracción entre el Hardware y los aplicativos ejecutándose en simultáneo.

Sin entrar en demasiados detalles, podemos decir que la vertiginosa evolución de las Tecnologías de la Información ha regresado del pasado al Hipervisor y este a su vez, se ha convertido en la piedra angular de lo que se conoce ahora como Infraestructura como un Servicio, uno de los tres pilares fundamentales del Cómputo en La Nube.

Así pues, en lo que se refiere a los recursos de ejecución (memoria y procesador), almacenamiento y redes, el Hipervisor crea una nueva Capa de Abstracción que permite que las Máquinas Virtuales que se ejecutan sobre éste, se ejecuten indistintamente sin importar marcas, modelos e incluso cantidades y parámetros del Hardware Físico.

Como ya hemos mencionado, las cinco propiedades de la virtualización son:


  1. Particionamiento.- El poder ejecutar múltiples y muy diversas Máquinas Virtuales en un solo equipo físico anfitrión (Host).
  2. Encapsulamiento.- Todos los archivos que componen la Máquina Virtual están alojados en una misma entidad lógica (cápsula o directorio), lo que permite que ésta sea portátil.

  3. Aislamiento.- Cada Máquina Virtual es una entidad independiente y aislada de las demás que se ejecutan en el mismo equipo físico anfitrión (Host).
  4. Independencia del Hardware Físico.- Poder ejecutarse sobre cualquier equipo físico anfitrión (Host) de cualquier marca, modelo, etc. Sólo es necesario el Hipervisor para poder ejecutarse.
  5. Independencia de cambios en el Hardware Físico.- Poder seguir ejecutándose, inclusive si suceden cambios, adiciones o sustracciones de componentes en el equipo físico anfitrión (Host).

Todas estas en su conjunto es lo que permite afirmar (sobre todo las dos últimas) que ahora tenemos una Capa de Abstracción en donde mis Cargas de Trabajo (Máquinas Virtuales) pueden ejecutarse sin problema, siempre y cuando se respete la plataforma de cómputo.

Esto me otorga una libertad y flexibilidad, amén de posibilidades de tener Alta Disponibilidad, Tolerancia a Fallos, Balanceo de Cargas, Automatización y Administración basada en Políticas, orientada a las Máquinas Virtuales.

Así pues y entonces, podemos decir que gracias a la Virtualización, sea de los recursos de ejecución (procesador y memoria), red y almacenamiento, la posibilidad de administrarlos a través de políticas, automatizarlos y el hecho de que todo se basa en Software, llegamos a la conclusión de que podemos presumir que es posible construir Centros de Datos Definidos por Software (SDDC por sus siglas en inglés).

Aplicaciones, plataformas, infraestructuras. Todo "como un Servicio" (as a Services) gracias a esa maravillosa Capa de Abstracción que nos ofrece la Virtualización.

¿Ya cuentas con Virtualización, Administración basada en Políticas Automatización?

lunes, 1 de abril de 2013

Plataformas para Administrar La Nube...

En este Blog hemos abordado exhaustivamente el concepto de Cómputo en La Nube, así como también hemos hablado aquí mismo de los beneficios y de todos los servicios y productos de T.I. que uno a uno se añaden a este paradigma.

Otro punto muy importante que hemos tratado es el concepto de Capa de Abstracción y de cómo éste es fundamental para la existencia de lo que es propiamente el Cómputo en La Nube. ¿Pero qué es lo que pasa cuando nos enfrentamos a un ambiente híbrido (nube pública-nube privada, distintos productos y/o proveedores de virtualización, etc.)?

Para tal efecto existen ya las Plataformas para Administrar La Nube (Cloud Management Platforms o CMPs). Por definición y según Gartner, las CMPs -"...son productos integrados que permiten la administración de entornos de Nube públicos, privados e híbridos."-

Dentro de los requisitos mínimos con los que dichas plataformas deben de contar para ser incluidos en esta categoría, éstos deben incorporar interfaces de autoservicio (de preferencia vía navegador), imágenes para aprovisionamiento de sistemas virtuales, permitir la medición y facturación y proporcionar algún grado de optimización de la carga de trabajo a través de políticas y requerimientos establecidos.

En el caso de los CPMs más avanzados, deberán de poder integrarse con sistemas externos de gestión de la empresa, incluyendo catálogos de servicios, soporte a la configuración de los recursos de almacenamiento y de red, permitir mejorar la gestión de los recursos a través de las gobernabilidad de servicio, así como proporcionar supervisión avanzada para mejorar el rendimiento y la disponibilidad de las máquinas virtuales.

Actualmente ya existen disponibles alternativas OpenSource y aquellas que trabajan bajo el esquema de licenciamiento y código cerrado, mas es muy importante señalar que son precisamente las de Código Abierto las que encabezan las listas y los "Cuadrantes Mágicos".

Para ser mas concretos, mencionaremos las cuatro alternativas más importantes, sin importar si son Open Source o no por estricto orden alfabético:

Apache CloudStack.- Fue desarrollado originalmente por Cloud.com , antes conocido como VMOps. En mayo de 2010, Cloud.com liberó casi la totalidad del código de CloudStack como software libre bajo la Licencia Pública General de GNU , versión 3 (GPLv3). Citrix adquirió Cloud.com el 12 de julio de 2011, por aproximadamente $ 200 millones de USD. En agosto de 2011 Citrix lanzó el resto del código bajo GPLv3 y continuó avanzando hacia procesos más abiertos. En febrero de 2012, Citrix liberó CloudStack 3,0

Eucaliptus.- Plataforma Open Source para la implementación de computación en nube privada en clústers de ordenadores. Su nombre hace referencia al acrónimo "Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems" que puede traducirse como "Utilidad de arquitectura informática elástica para confiar sus programas a sistemas funcionales". Eucalyptus es compatible con Amazon Web Services (Amazon EC2 y S3).

OpenNebula.- Plataforma de código abierto para la gestión de ambientes heterogéneos distribuidos de centros de datos. El kit de herramientas OpenNebula gestiona infraestructuras virtuales del centro de datos para construir Nubes privadas, públicas e híbridas. OpenNebula orquesta almacenamiento, redes, virtualización, monitoreo y seguridad para aprovisionar tecnologías de varios niveles, como máquinas virtuales en infraestructuras distribuidas, combinando tanto los recursos del centro de datos y recursos remotos en La Nube, de acuerdo con las políticas de asignación.

OpenStack.- Proyecto liderado por la empresa Rackspace, que ha decidido liberar el código de sus servicios Cloud Files y Cloud Servers bajo una licencia Apache 2.0. Este código forma la piedra angular de OpenStack, ofreciendo la posibilidad a usuarios o empresas de crear sus propios servicios de Cómputo en La Nube.

Rackspace aporta la parte de almacenamiento, llamada Swift, la base de los servicios anteriormente citados. La NASA, que también participa en el proyecto, colabora con Nova, base de su plataforma NEBULA, ambos servicios están desarrollados utilizando Python.


Dos modelos diferentes Nube
Aunque hay tantas maneras de entender el Cómputo en La Nube, para este tema podemos dividir los alcances y objetivos de las CMPs en dos modelos:
  • La virtualización de centros de datos: Por un lado, hay empresas que entienden la nube como una extensión de la virtualización del centro de datos, por lo que busca un instrumento de infraestructura que permita la automatización para orquestar y simplificar la gestión de los recursos virtualizados.
  • Aprovisionamiento de infraestructura: En el otro lado, hay empresas que entienden la nube como una nube tipo Amazon Web Services (AWS), por lo que se requiere una herramienta de suministro para aprovisionar los recursos virtualizados bajo demanda (on-demand).

En la siguiente imagen podemos observar el Cuadrante Mágico en el que se muestran las cuatro alternativas arriba enumeradas, pero ahora desde el punto de vista de sus alcances y los dos modelos:


Al final del día, ahora las empresas que ofrezcan Hardware, Software y/o Servicios deberán de pensar muy seriamente cómo adoptar alguno de estos CPMs si es que desean realmente ofrecer soluciones completas para Centros de Datos.

Haciendo un resumen podemos mencionar que ahora y bajo estos nuevos paradigmas, se hace más patente aún la comoditización de los Centros de Datos, así como también el hecho de que el Código Abierto se ha adelantado a cualquier esfuerzo que cualquier compañía de Hardware, Software o Virtualización haya realizado o pretenda realizar.

¿Ya conoce Usted algunas de estas alternativas de Plataformas para Administrar La Nube?

jueves, 6 de septiembre de 2012

Capas de abstracción...

Ya en otras entradas de este Blog hemos mencionado algo denominado "Capa de Abstracción" o su plural "Capas de Abstracción", sobre todo cuando hablamos de temas como la Virtualización, el Cómputo en La Nube y/o en los nuevos equipos que ofrecen recursos de Tecnologías de la Información como si se tratasen de "Vending Machines".

Muchos lectores que nos hacen el honor de seguirnos a través de este Blog, así como quienes nos han acompañado en cursos, pláticas y talleres  nos han preguntado: -¿Y qué es eso de las Capas de Abstracción de las que tanto se habla?"- Para todos ellos y todos en general procederemos a explicar este maravilloso concepto.

Lo primero que haremos es acudir a la fuente más ortodoxa y natural para definir una palabra y/o un concepto: Wikipedia. Dice este prestigioso sitio que


  • Desde el punto de vista de Filosofía, -"...la abstracción es el acto mental en el que conceptualmente se aísla un objeto o una propiedad de un objeto."-
  • Para la Psicología, -"... la abstracción es el proceso que implica reducir los componentes fundamentales de información de un fenómeno para conservar sus rasgos más relevantes."-
  • En el ámbito de la Informática, -"... abstracción es poner más énfasis en el "¿Qué hace?", más que en "¿Cómo lo hace?"-. 


Todas estas acepciones de lo que es la abstracción nos viene perfectamente para explicar este concepto, del que de manera muy simplista diremos que -"Capa de Abstracción es la manera de ocultar los detalles de implementación de ciertas funcionalidades"-.

Este concepto no nos es nada ajeno. Lo que es más, este concepto es lo que ha permitido a inventos tan revolucionarios como El Automóvil hayan alcanzado tan enorme éxito. ¿No lo creen? Primeramente deseamos dar por entendido que al menos una vez en la vida, el lector ha conducido un vehículo automotor de cualquier tamaño y de cualquier cantidad de ruedas.

¿Qué es lo que debe de saber el conductor de un automóvil? Dónde se encuentra el volante, dónde está el pedal del acelerador y dónde el del freno, a donde se encuentra la palanca de cambios y el botón o el cerrojo que permiten la ignición del motor.

En el muy acotado ejemplo anterior, ¿Fue necesario que el conductor supiese cuántos cilindros tiene su motor, si dicho motor utiliza encendido electrónico o el cómo suceden los cuatro tiempos dentro del famoso "Ciclo de Carnot"? Todo lo mencionado es esencial para que un automóvil sea precisamente un vehículo que se propulsa por si mismo, pero para el Usuario Final eso no debe de ser algo que le interese saber.

¿Y cómo es entonces que el conductor puede conducir ese complejo artilugio lleno de tanta tecnología, incluso de manera cuasi automática? Gracias precisamente a una Capa de Abstracción que no es otra cosa que el volante, los pedales y el panel de indicadores e instrumentos que ofrecen información esencial al Usuario Final.

Como este ejemplo podemos encontrar muchos otros en muy diversos ámbitos del quehacer humano. Por ello entonces no era extraño que las Tecnologías de la Información evolucionasen a tal grado.

La popularización y "commoditización" de las Computadoras Personales vino en cuanto no era necesario tomar un curso para encenderla, instalar un programa y/o ponerlo en ejecución. En el caso de el cómputo a nivel de Centros de Datos, es precisamente ahora que se está dando también esa "commoditización", precisamente con la introducción de Capas de Abstracción entre lo que hace que las cosas funcionen y lo necesario para simplemente operar y administrar el Centro de Datos.

Si analizamos con cuidado cada etapa y cada componente que al final conforman al Centro de Datos, el Sistema Operativo es la primer Capa de Abstracción. Al Usuario Final y/o a los aplicativos que se ejecutan en el Servidor. No es necesario pues para los usuarios y los aplicativos pensar en "unos" y "ceros" o recordar cómo opera el procesador y/o los dispositivos físicos que conforman al Servidor.

Ahora con la Virtualización viene una siguiente Capa de Abstracción, pues ahora para el Usuario Final y los Aplicativos les es completamente ajeno el conocer qué marca o que tecnologías intervienen el el proceso de entregar recursos informáticos. Simplemente obtenemos los suficientes Gigahertz de procesador, Gigabytes de RAM, Terabytes de almacenamiento y Gigabits por Segundo de ancho de banda para nuestro aplicativo y todo está hecho.

Los Sistemas Expertos Integrados ofrecen una Capa de Abstracción adicional, convirtiendo a los Centros de Datos en esa enorme "Vending Machine" de la que a través de una interfase sencilla e intuitiva, ordenamos los Gigahertz, Gigabytes, Terabytes y Gigabits por segundo que necesitemos y "voilà !!!".

¿Más ejemplos de Capas de Abstracción? El navegador que nos permite de manera sencilla acceder a un basto universo de información, sin tener conocimiento alguno de cómo funciona una red de cómputo, así como tampoco en qué consisten las siete capas del modelo OSI-ISO para comunicación de datos.

En resumen, veremos como cada vez más podremos acceder y operar dispositivos y/o sistemas que ahora por el momento nos son demasiado complejos, gracias a las Capas de Abstracción, convirtiéndolos en "commodities".

¿Sabe Usted aprovechar las Capas de Abstracción?