Full Transcript

IntroducciónBloque 1Bloque 2Bloque 3Referencias Virtualización Introducción En la presente lectura definiremos los términos asociados a la virtualización. Para ello, comenzaremos por decir que virtualizar es mostrar algo que está en un estado como si estuviera en otro estado. Si buscamos el término...

IntroducciónBloque 1Bloque 2Bloque 3Referencias Virtualización Introducción En la presente lectura definiremos los términos asociados a la virtualización. Para ello, comenzaremos por decir que virtualizar es mostrar algo que está en un estado como si estuviera en otro estado. Si buscamos el término virtual en la Real Academia Española encontramos: Virtual Del lat. mediev. virtualis, y este der. del lat. virtus 'poder, facultad', 'fuerza', 'virtud'. 1. adj. Que tiene virtud para producir un efecto, aunque no lo produce de presente, frecuentemente en oposición a efectivo o real. 2. adj. Implícito, tácito. 3. adj. Fís. Que tiene existencia aparente y no real. (Real Academia Española) En el plano informático, podemos decir que virtualizar puede ser simular una computadora cuando se tiene múltiples computadoras subyacentes, o bien que obtenemos múltiples computadoras cuando, en realidad, hay una sola. 1. Antecedentes La virtualización no es un tema novedoso en informática; de hecho, se considera que existe, aproximadamente, desde hace cuatro o cinco décadas. Por aquel entonces y hasta hace pocos años era aplicada en ámbitos exclusivos, sólo prácticamente para los grandes centros de cálculo, tanto bancarios como militares y universitarios. Algunos de los usos pioneros de la virtualización incluyen al IBM 7044 (en el que la máquina física era la M44, que albergaba varias máquinas lógicas 44X para los procesos) el CTSS (Compatible Time Sharing System) es desarrollado por el MIT (Massachusetts Institute of Technology) en el IBM 7044, y el proyecto Atlas de la Manchester University (uno de los primeros supercomputadores del mundo, operativo en 1962), pionero en el uso de paginación bajo demanda y llamadas en modo supervisor. (Villar y Gómez, s. f., p. 2). El proyecto Atlas (ver figura 1) tuvo especial importancia ya que Christopher Strachey incluyó en él características novedosas para la época (años sesenta) y que venían a solucionar los graves problemas surgidos del uso común de un único ordenador por parte de muchos trabajadores a través de terminales. Básicamente consistía en un mecanismo para el reparto y uso al mismo tiempo de los recursos del computador (fundamentalmente procesador y disco), y la seguridad y fiabilidad de que el trabajo de un empleado no interfiriera en el de los otros. En la época de los mainframes, estas cuestiones superaban en importancia al rendimiento en la rapidez de los resultados. Así es como nació la virtualización, con la necesidad de particionar recursos de disco, memoria y capacidad de cómputo. Estas particiones (máquinas virtuales) podrían acoger una instancia de un sistema operativo, comunicarse a través de red, usar sus recursos o utilizar los del resto en el que caso de que no estén ocupados, se podrían tomar imágenes de su estado, o incluso ser migradas entre distintos servidores que las alojaran. (Villar y Gómez, s. f., p. 2). Figura 1: Computadora Atlas Fuente: [Imagen sin título sobre computadora Atlas]. (1963). Recuperada de https://bit.ly/2nP9roy 2. Virtualización asistida por hardware La arquitectura x86, de la palabra de máquina 32 bits, dispone de 4 anillos de protección, desde el nivel 0 (este nivel es el de mayor privilegio), en el cual se ejecutan normalmente las funciones del sistema operativo, hasta nivel 3 (menos privilegios), el cual soporta las aplicaciones, además de los niveles 1 y 2 en los que corren los servicios del sistema operativo. El inconveniente fue entonces identificado por las empresas que fabricaban el hardware, dado que las máquinas virtuales no trabajaban adecuadamente si no eran ejecutadas con suficientes privilegios y, por lo tanto, produjeron diseños que soportaran eficientemente y aceleraran la virtualización. La virtualización asistida por hardware, disponible desde décadas atrás en los mainframes de IBM, en los servidores Sun y otras máquinas, vivía así su gran relanzamiento en 2004 con la presentación de la tecnología VT de Intel, seguida después de la correspondiente AMD-V (ver Figura 2) de AMD en 2006 (Villar y Gómez, s. f.). Tanto Intel como AMD disponen de estándares que definen características implementadas en muchos de sus procesadores más usados en ámbitos empresariales que permiten que tecnologías o soluciones de virtualización que hacen uso de la paravirtualización (como Xen, por ejemplo) puedan virtualizar tal y como lo hacen los procesadores instalados en los mainframes, pudiendo realizar virtualización completa y usar como sistema operativo invitado en las máquinas virtuales cualquier sistema. (Villar y Gómez, s. f., p. 6). Las tecnologías que nos ponen a disposición la virtualización con un soporte hardware específico suelen tratar con características y funciones como el almacenamiento y recuperación del estado de la CPU en transiciones entre el sistema operativo invitado (guest que corre en la máquina virtual) y el VMM, esto es, el monitor de la máquina virtual, por sus siglas en inglés (virtual machine monitor). Se trata de una capa de virtualización que actúa como medio entre estos, el sistema operativo anfitrión (host) y el hardware real disponible, a la vez que gestiona todos los recursos y llamadas (interrupciones) (Villa y Gómez, s. f.). Figura 2: AMD-V Fuente: [Imagen sin título sobre AMD-V]. (s. f.). Recuperada de https://goo.gl/GFZjuq 3. Virtualización en la actualidad Actualmente, la virtualización es uno de los puntos en los que hay más desarrollos en el sector informático a nivel global. Cada vez más organizaciones virtualizan en todos sus niveles su infraestructura y la de sus servicios y servidores, centro de datos y los buenos resultados obtenidos, tras su implementación en la mayoría de ellas, lo expresa. La Figura 3 muestra entornos virtualizados que permiten montar diferentes sistemas operativos en el mismo sistema (Villar y Gómez, s. f.). Figura 3: Entornos virtualizados. Jon L. Jacobi Fuente: [Imagen sin título sobre entornos virtualizados]. (s. f.). Recuperada de https://bit.ly/2Pgxe0x La virtualización ofrece mejoras en rendimiento, portabilidad y flexibilidad, funcionalidades insignias también de GNU y Linux, por lo que la elección de soluciones de virtualización en sistemas que utilizan estas dos variantes hace que tengamos un gran repertorio de posibilidades para virtualizar según nuestras necesidades con la mayor libertad. La virtualización posibilita hacer un mejor uso de la infraestructura y permite mover recursos de un lugar a otro fácilmente ahorrando costos de hardware para nuevos proyectos, con la opción de reorganizar el hardware de manera diferente, flexible y a demanda, según las necesidades que tengamos (Villar y Gómez, s. f.). A través de la virtualización, se pueden obtener algunas ventajas: beneficios de las máquinas físicas sin el costo; cambios de la configuración sin la complejidad de tocar el hardware; máquinas virtuales con dispositivos virtuales preconfigurados, construidas con un propósito específico (utilización de plantillas); aplicaciones y sistemas operativos instalados y configurados out of the box (listos para usar). personalización y configuración limitada al usuario; instalación y configuración más simple y más fácil; no se necesita hardware dedicado para su ejecución (Villar y Gómez, s. f.). Las máquinas virtuales de hardware o de sistema operativo, que son las que conforman el núcleo del modelo de virtualización que será aplicado en el desarrollo del proyecto (virtualización de plataforma), son las que corren al mismo tiempo sobre una máquina física anfitrión o host, de manera que tienen acceso y hacen uso de los recursos hardware que son abstraídos de él. Cada máquina virtual es engañada, ya que cree que posee de forma exclusiva los recursos hardware de los que dispone, cuando, en realidad, lo hace de manera virtual, por cuanto ejecuta una instancia de sistema operativo sobre el que corren determinados servicios o aplicaciones tal y como consideremos necesario (Villar y Gómez, s. f.). Referencias [Imagen sin título sobre AMD-V]. (s. f.). Recuperada de http://i2.taimienphi.vn/tmp/cf/images/2017/download/65505/amd virtualization-technologyand-microsoft-hyper-v-system-compatibility check-utility-1.jpg [Imagen sin título sobre computadora Atlas]. (1963). Recuperada https://en.wikipedia.org/wiki/Atlas_(computer)#/media/File:University_of _Manchester_Atlas,_January_1963.JPG de [Imagen sin título sobre entornos virtualizados]. (s. f.). Recuperada https://images.techhive.com/images/article/2013/10/vb-4.31-100066678- gallery.jpg de Real Academia Española. (2014). Virtual. En Diccionario de la lengua española. Recuperado de http://dle.rae.es/?id=buDJhh3 Villar, E. y Gómez, J. (s. f.). Introducción a la virtualización. Recuperado de http://www.adminso.es/images/6/6d/Eugenio_cap1.pdf IntroducciónBloque 1Bloque 2Bloque 3Bloque 4Bloque 5Referencias Implementación de la Virtualización Introducción Actualmente, en la mayoría de las empresas se implementa alguna solución de virtualización tendiente a atender las necesidades de hardware de una manera ágil y dinámica, haciendo un análisis de costo y beneficio. 1. VSphere, una solución de VMware Una solución ampliamente difundida en la actualidad en las empresas es VMware vSphere, que utiliza la virtualización para convertir los centros de datos individuales en infraestructuras de cálculo agregadas que incluyen procesamiento (CPU, por las siglas en inglés central processing unit), almacenamiento (storage, por su traducción al inglés) y recursos de red (networking, también por su traducción al inglés). VMware vSphere administra estas infraestructuras como un entorno operativo unificado y les proporciona las herramientas para gestionar, de una manera fácil y dinámica, los centros de datos que participan en dicho entorno. La pila de VMware vSphere incluye capas de virtualización, administración e interfaz. Los dos componentes principales de vSphere son ESXi (por sus siglas en inglés elastic sky X integrated) y vCenter Server. ESXi es la plataforma de virtualización donde se crean y se ejecutan las máquinas virtuales y los dispositivos virtuales. vCenter Server es el servicio mediante el cual se administran los distintos servidores (hosts, por su traducción al inglés) conectados en una red y se agrupan los recursos del servidor (host). 2. Instalación En esta lectura daremos algunos detalles generales de cómo instalar VMware y de cómo implementar vCenter Server Appliance y ESXi. El objetivo es tener una noción sobre instalación y configuración de vSphere que está pensado para administradores experimentados que desean instalar y configurar vCenter Server, implementar y configurar vCenter Server Appliance (cuya traducción es dispositivo de servidor vCenter) e instalar y configurar ESXi. Esta tarea se llevará a cabo por administradores del sistema de Windows y Linux expertos que están familiarizados con la tecnología de máquina virtual y las operaciones de centro de datos. Los dos componentes principales de vSphere son VMware ESXi® y VMware vCenter Server®. ESXi es la plataforma de virtualización en la que puede crear y ejecutar máquinas virtuales y aplicaciones virtuales. vCenter Server es un servicio que funciona como un administrador central para los hosts de ESXi conectados en una red. vCenter Server permite agrupar y administrar los recursos de varios hosts. Puede instalar vCenter Server en una máquina virtual o servidor físico con Windows, o implementar vCenter Server Appliance. vCenter Server Appliance es una máquina virtual preconfigurada y basada en Linux optimizada para la ejecución de vCenter Server y los componentes de vCenter Server. Es posible implementar vCenter Server Appliance en hosts ESXi 5.0 o posteriores, o bien en instancias de vCenter Server 5.0 o posteriores. (VMware Inc., 2009, p. 11). ​ A partir de vSphere 6.0, todos los servicios de requisito previo para la ejecución de vCenter Server y los componentes de vCenter Server están integrados en VMware Platform Services Controller. Puede implementar vCenter Server con un Platform Services Controller externo o integrado, pero deberá siempre instalar o implementar el Platform Services Controller antes de instalar o implementar vCenter Server. (VMware Inc., 2009, p. 11). 3. Componentes y servicios de vCenter Server VCenter Server proporciona una plataforma centralizada para la administración, el funcionamiento, el aprovisionamiento de recursos y la evaluación del rendimiento de las máquinas virtuales y los hosts. Cuando instale vCenter Server con una instancia de Platform Services Controller integrada o implemente vCenter Server Appliance con una instancia de Platform Services Controller integrada, vCenter Server, los componentes de vCenter Server y los servicios incluidos en Platform Services Controller se implementan en el mismo sistema. Cuando instale vCenter Server con una instancia de Platform Services Controller externa o implemente vCenter Server Appliance con una instancia de Platform Services Controller externa, vCenter Server y los componentes de vCenter Server se implementan en un sistema y los servicios incluidos en Platform Services Controller se implementan en otro sistema. (VMware Inc., 2009, p. 11). Los siguientes componentes se incluyen en las instalaciones de vCenter Server y vCenter Server Appliance: El grupo de servicios de infraestructura de VMware Platform Services Controller (cuya traducción es Controlador de servicios de plataforma VMware) contiene vCenter Single Sign-On (cuya traducción es Ingreso único vCenter), el servicio de licencias, Lookup Service (cuya traducción es Servicio de Búsqueda) y VMware Certificate Authority (cuya traducción es Autoridad de Certificados VMware). El grupo de servicios de vCenter Server contiene vCenter Server, vSphere Web Client (cuya traducción es Cliente Web), Inventory Service (cuya traducción es Servicio de Inventario), vSphere Auto Deploy (cuya traducción es Despliegue Automático), vSphere ESXi Dump Collector (cuya traducción es Recolector de Estado de ESXi), VMware vSphere Syslog Collector (cuya traducción es Recolector de Logs de Sistemas vSphere) en Windows y VMware vSphere Syslog Service (cuya traducción es Servicio de Logs de Sistemas vSphere) para vCenter Server Appliance. (VMware Inc., 2009, p. 11). 4. Servicios instalados con VMware Platform Services Controller ☰ vCenter Single Sign-On El servicio de autenticación de vCenter Single Sign-On proporciona servicios de autenticación segura a los componentes de software de vSphere. Al utilizar vCenter Single Sign-On, los componentes de vSphere se comunican entre sí a través de un mecanismo de intercambio seguro de tokens, en lugar de requerir que cada componente autentique a un usuario por separado con un servicio de directorio como Active Directory. vCenter Single Sign-On implementa un dominio de seguridad interno (por ejemplo, vSphere.local), donde las soluciones y los componentes de vSphere se registran durante el proceso de instalación o actualización, lo que proporciona un recurso de infraestructura. vCenter Single Sign-On puede realizar la autenticación de los usuarios desde sus propios usuarios y grupos internos o puede conectarse a servicios de directorio externos de confianza como Microsoft Active Directory. A continuación, los usuarios autenticados pueden recibir asignaciones de permisos o roles registrados y basados en soluciones dentro de un entorno de vSphere. vCenter Single Sign-On está disponible y es un requisito con vCenter Server 5.1.x y versiones posteriores. (VMware Inc., 2009, p. 12). ☰ Servicio de licencias de vSphere El servicio de licencias de vSphere proporciona funcionalidades comunes de administración e inventario de licencias a todos sistemas vCenter Server que estén conectados a Platform Services Controller o varias instancias de Platform Services Controller asociadas. (VMware Inc., 2009, p. 12). ☰ VMware Certificate Authority VMware Certificate Authority (VMCA) aprovisiona cada host ESXi con un certificado firmado que tiene VMCA como la entidad de certificación raíz de forma predeterminada. El aprovisionamiento ocurre cuando el host ESXi se agrega a vCenter Server de forma explícita o como parte del proceso de instalación del host ESXi. Todos los certificados de ESXi se almacenan localmente en el host. (VMware Inc., 2009, p. 12). 5. Servicios instalados con vCenter Server “Estos componentes adicionales se instalan de forma silenciosa cuando se instala vCenter Server. Los componentes no pueden instalarse por separado, puesto que no poseen sus propios instaladores” (VMware Inc., 2009, p. 12). ☰ vCenter Inventory Service (Servicio de Inventario vCenter) “Inventory Service almacena los datos de configuración e inventario de vCenter Server, lo que permite buscar y acceder a objetos del inventario en instancias de vCenter Server” (VMware Inc., 2009, p. 12). ☰ PostgreSQL “Una versión integrada de la distribución de VMware de la base de datos de PostgreSQL para vSphere y vCloud Hybrid Services cuya traducción es Servicios Híbridos en la Nube” (VMware Inc., 2009, p. 12). ☰ VSphere Web Client vSphere “Web Client permite conectarse a instancias de vCenter Server mediante un explorador web y, de esta forma, podrá administrar su infraestructura vSphere” (VMware Inc., 2009, p. 12). vSphere ESXi Dump Collector Herramienta de soporte de vCenter Server. Puede configurar ESXi para guardar la memoria VMkernel (núcleo de la máquina virtual) en un servidor de red, en lugar de un disco, cuando el sistema detecta un error crítico. vSphere ESXi Dump Collector recopila los volcados de memoria en la red. (VMware Inc., 2009, p. 13). VMware vSphere Syslog Collector La herramienta de soporte de vCenter Server en Windows que permite la generación de registros de la red y la combinación de registros de varios hosts. Puede utilizar vSphere Syslog Collector para dirigir los registros del sistema ESXi a un servidor de la red, en lugar de a un disco local. La cantidad máxima recomendada de hosts admitidos para la recopilación de registros es 30. (VMware Inc., 2009, p. 13). Servicio de Syslog de VMware La herramienta de soporte de vCenter Server Appliance que proporciona una arquitectura unificada para la generación de registros del sistema, la generación de registros de red y la recopilación de registros de los hosts. Puede utilizar el servicio de Syslog de VMware para dirigir los registros del sistema de ESXi a un servidor de la red, en lugar de a un disco local. La cantidad máxima recomendada de hosts admitidos para la recopilación de registros es 30. (VMware Inc., 2009, p. 13). vSphere Auto Deploy La herramienta de soporte de vCenter Server que puede aprovisionar cientos de hosts físicos con software ESXi. Se puede especificar la imagen que se implementará y los hosts que se aprovisionarán con esa imagen. O bien, puede especificar perfiles de host para aplicar a los hosts y una ubicación de vCenter Server (carpeta o clúster) para cada host. (VMware Inc., 2009, p. 13). Referencias VMware Inc. (2009). Instalar y configurar vSphere. Recuperado de https://docs.vmware.com/es/VMware-vSphere/6.0/vsphere-esxi-vcenter server-602installation-setup-guide.pdf IntroducciónBloque 1Bloque 2Referencias Características de Virtualización con vSphere Introducción En la presente lectura analizaremos algunas características de la virtualización con vSphere por ser unos de los sistemas líderes en el mundo empresarial. 1. Descripción general de los certificados de seguridad de vSphere Los hosts ESXi y vCenter Server se comunican de forma segura a través de SSL, esto es, capaz de conexiones seguras (por sus siglas en inglés, secure sockets layer) para garantizar la confidencialidad y la integridad de los datos y la autenticación. En vSphere 6.0, VMware Certificate Authority (VMCA) aprovisiona cada host ESXi con un certificado firmado que posee VMCA como la entidad de certificación raíz de forma predeterminada. El aprovisionamiento se realiza cuando el host ESXi se agrega a vCenter Server de forma explícita o como parte de la instalación del host ESXi. Todos los certificados de ESXi se almacenan localmente en el host. Puedes utilizar certificados personalizados con una entidad de certificación (CA) raíz diferente. Todos los certificados para vCenter Server y servicios de vCenter Server se almacenan en VMware Endpoint Certificate Store (VECS), cuya traducción es almacén de certificado de terminales VMware. Puedes, además, reemplazar el certificado VMCA para vCenter Server por un certificado diferente firmado por una entidad de certificación (CA). Si deseas utilizar un certificado de terceros, instala Platform Services Controller, agrega el certificado raíz firmado por la entidad de certificación (CA) nueva a VMCA y, a continuación, instala vCenter Server (VMware, Inc., s. f.). Implementación híbrida Puede hacer que VMCA proporcione algunos de los certificados, pero, al mismo tiempo, certificados personalizados para otras partes de la infraestructura. Por ejemplo, dado que los certificados de usuarios de soluciones se usan solo para autenticar vCenter Single Sign-On, considere la posibilidad de hacer que VMCA aprovisione esos certificados Reemplace los certificados de SSL de máquinas con certificados personalizados para proteger todo el tráfico de SSL. (VMware Inc., 2009, p. 20). Reemplazar certificados de ESXi “Para los hosts ESXi, puede cambiar el comportamiento de aprovisionamiento de certificados desde vSphere Web Client” (VMware Inc., 2009, p. 20). Modo VMware Certificate Authority (valor predeterminado) “Cuando se renuevan certificados desde vSphere Web Client, VMCA emite los certificados para los hosts. Si cambió el certificado raíz de VMCA para incluir una cadena de certificados, los certificados del host incluyen la cadena completa” (VMware Inc., 2009, p. 20). Modo de entidad de certificación personalizada “Permite actualizar y usar manualmente certificados que no han sido firmados o emitidos por VMCA” (VMware Inc., 2009, p. 20). Modo de huella digital “Puede usarse para conservar los certificados de la versión 5.5 durante la actualización. Use este modo únicamente de manera temporal en situaciones de depuración” (VMware Inc., 2009, p. 20). Descripción general del modo vinculado mejorado El modo vinculado mejorado conecta varios sistemas vCenter Server por medio de una instancia de Platform Services Controller o más. El modo vinculado mejorado permite ver y buscar contenido en todos los sistemas vCenter Server vinculados y replicar roles, permisos, licencias, directivas y etiquetas. Cuando instala vCenter Server o implementa vCenter Server Appliance con una instancia de Platform Services Controller externa, primero debe instalar Platform Services Controller. Durante la instalación de Platform Services Controller, puede determinar si desea crear un nuevo dominio de vCenter Single Sign-On o unirse a un dominio existente. Puede seleccionar unirse a un dominio existente de vCenter Single Sign-On si ya instaló o implementó una instancia de Platform Services Controller, y si creó un dominio de vCenter Single Sign-On. Al unirse a un dominio existente de vCenter single sign-on, se replican los datos entre la instancia de platform services controller existente y la instancia de platform services controller nueva; de ese modo, los datos de infraestructura se replican entre las dos instancias de platform services controller. Con el modo vinculado mejorado, puede conectar no solo sistemas vCenter Server que ejecuten Windows, sino también una gran cantidad de instancias de vCenter Server Appliance. También puede tener un entorno en el que haya varios sistemas vCenter Server y vCenter Server Appliance vinculados juntos. Si instala vCenter Server con una instancia de Platform Services Controller externa, primero debe implementar Platform Services Controller en una de las máquinas virtuales o en el servidor físico y, a continuación, debe implementar vCenter Server en otras máquinas virtuales o en otro servidor físico. Durante la instalación de vCenter Server, debes seleccionar la instancia de platform services controller externa. Asegúrate de que la instancia de platform services controller que selecciones sea una instancia de platform services controller externa independiente. La selección de una instancia de platform services controller existente que forme parte de una instalación integrada no es compatible y no se puede volver a configurar después de la implementación (VMware, Inc., s. f.). 2. Ventajas e inconvenientes de la virtualización Los usos y ventajas que nos ofrece la virtualización de sistemas operativos son las siguientes: ☰ Ahorro de costes Es una de las cuestiones por las cuales más se han interesado las empresas en la virtualización, puesto que donde antes necesitaban 4 máquinas ahora se puede utilizar solo una. Además de lo que supone el ahorrar dinero y comprar menos Hardware, supone un ahorro en el aspecto energético. ☰ Compatibilidad de programas Cuando se utiliza un sistema operativo Linux o Mac, por ejemplo, a veces no es posible encontrar el programa que necesitamos para estas plataformas, por lo que o tenemos instalado Windows o nos buscamos otra alternativa. El tener virtualizado Windows dentro de nuestro Mac o Linux, es una solución que nos puede ahorrar una buena cantidad de problemas y tiempo buscando el equivalente de un programa para estos sistemas. ☰ Clonación y migración de sistemas en caliente Podemos ahorrar mucho tiempo gracias a la facilidad de administración o de clonación de los discos duros virtuales, que se realizaran como cualquier otro archivo, con las ventajas que esto tiene asociado. Otra de sus propiedades es la potabilidad, donde es posible la migración en caliente de máquinas virtuales (sin pérdida de servicio) de un servidor físico a otro, eliminando la necesidad de paradas planificadas por mantenimiento de los servidores físicos. ☰ Entornos de prueba Podemos usar la virtualización para prueba a Software de versiones beta o programas que pensamos que nos serán útiles. Otro ejemplo podría ser instalar un nuevo sistema operativo para probarlo antes de adquirirlo, como el nuevo Microsoft Windows 7 en nuestro PC personal, sin con ello afectar a la instalación actual de Windows, Linux o Mac que tengamos. ☰ Aislamiento y seguridad Las máquinas virtuales son totalmente independientes entre sí. Por tanto, un fallo en una aplicación o en una máquina virtual afectara únicamente a esa máquina virtual. El resto de las máquinas virtuales seguirá funcionando normalmente. De la misma forma cada máquina tiene un acceso privilegiado (root o administrador) independiente. Por tanto, un ataque de seguridad en una máquina virtual solo afectara a esa máquina. ☰ Flexibilidad y agilidad Podemos crear las máquinas virtuales con las características de CPU, memoria, disco y red que necesitemos, sin necesidad de adquirir un ordenador con esas características. Además, la creación de una máquina virtual es un proceso muy rápido, básicamente la ejecución de un comando. Por tanto, si necesitamos un nuevo servidor lo podremos tener casi al instante, sin pasar por el proceso de compra, configuración, etcétera. (López Medina, 2010, p. 7). Aunque parezca que la virtualización de sistemas operativos solo aporte ventajas, tiene algunos puntos débiles a destacar: ​ ☰ Rendimiento inferior Varios sistemas operativos virtualizados y ejecutados a la vez nunca alcanzaran las mismas cotas de rendimiento que si estuviera directamente instalado en el hierro. Dado que el virtualizador introduce una capa intermedia en la gestión del Hardware para gestionar las peticiones de acceso y la concurrencia al mismo, el rendimiento de la máquina virtual se ve afectado irremediablemente. Además, no todas las soluciones de virtualización obtienen el mismo rendimiento en las mismas operaciones. ☰ Limitaciones en el Hardware No es posible utilizar Hardware que no esté gestionado o soportado por el hipervisor. El Software de virtualización nos impondrá una serie de dispositivos virtuales como tarjetas de video y red de las que no podremos variar. ☰ Proliferación de máquinas virtuales Como no hay que comprar Hardware, el número de máquinas y servidores virtuales se dispara en todos los ámbitos. Los efectos colaterales se perciben después: aumenta el trabajo de administración, gestión de licencias y riesgos de seguridad. ☰ Desaprovechamiento de recursos Crear máquinas virtuales innecesarias tiene un coste en ocupación de recursos, principalmente en espacio en disco, RAM y capacidad de proceso. ☰ Centralización de las máquinas en un único servidor Una avería del servidor anfitrión de virtualización afecta a todas las máquinas virtuales alojadas en él. Para solventarlo hay que desembolsar un gasto extra de dinero en adoptar soluciones de alta disponibilidad como clustering y replicación para evitar caídas de servicio de múltiples servidores con una única avería. ☰ Portabilidad limitada entre virtualizadores Como cada producto de virtualización usa su propio sistema, no hay uniformidad o estandarización de formatos y la portabilidad entre plataformas está condicionada a la solución de virtualización adoptada. Elegir GNU/Linux, Mac OS X, Windows o Solaris como anfitrión es una decisión importante en entornos corporativos. Quizás interesaría migrar en el futuro. (López Medina, 2010, p. 7). Referencias López Medina, A. (2010). Análisis de la virtualización de los sistemas operativos (Tesis de grado). Universidad de Barcelona, España. Recuperada de http://www.maia.ub.es/~sergio/linked/an_lisis_de_la_virtualizaci_n_de_si stemas_operativos.pdf VMware, Inc. (2009). Instalar y configurar vSphere. Recuperado de https://docs.vmware.com/es/VMware-vSphere/6.0/vsphere-esxi-vcenter server-602installation-setup-guide.pdf VMware, Inc. (s. f.). VMware vSphere. Recuperado de https://docs.vmware.com/es/VMware-vSphere/index.html IntroducciónBloque 1Bloque 2Bloque 3Bloque 4Referencias Contenedores Implementados con Docker Introducción Docker es una plataforma para desarrolladores y para administradores de sistemas con la funcionalidad para desarrollar, desplegar y correr aplicaciones con contenedores. El uso de contenedores Linux para desarrollar aplicaciones es llamado containerization (conteinerización). Los containers no son nuevos, pero su uso para el despliegue fácil de aplicaciones lo es (Docker Inc., s. f.). La conteinerización es cada vez más popular porque los containers son: Flexibles: aun las aplicaciones más complejas pueden ser utilizadas con containers. Livianos: los containers comparten el núcleo del anfitrión. Intercambiables: se pueden desplegar actualizaciones (updates) y upgrades mientras el sistema corre. Portable: se puede construir localmente, desplegar en la nube y correr donde sea. Escalable: puede incrementar y distribuir copias del container. ∙ Apilables: se puede crear un stack (pila) de servicios verticalmente en línea (“Overview of Docker Edition”, s. f.). 1. Imágenes y containers Un contenedor es iniciado corriendo una imagen. Una imagen es un paquete ejecutable que incluye todo lo necesario para correr una aplicación: el código, los ejecutables, las variables de entorno y los archivos de configuración. Un container es una instancia ejecutable de una imagen; es, en suma, la imagen que se convierte en memoria cuando se ejecuta, es decir, una imagen con un estado, o un proceso del usuario. Puedes ver una lista de los containers ejecutándose con el comando docker ps, tal cual lo haría en Linux (Docker Inc., s. f.). 2. Containers y máquinas virtuales Un container corre código nativo en Linux y comparte el núcleo de la máquina anfitriona con otros containers. Se corre un proceso discreto, no tomando más memoria que otro ejecutable, cuya característica lo hace más liviano. ​ En contraste, una máquina virtual corre un sistema operativo completo con acceso virtual a los recursos del anfitrión a través de un hypervisor. En general, las máquinas virtuales proveen un entorno con más recursos que la mayoría de las aplicaciones necesitan (Docker Inc., s. f.). Hypervisor Un hypervisor o controlador de máquinas virtuales es un software o firmware o hardware que crea y corre máquinas virtuales. Un sistema que contiene el hypervisor y corre una o más máquinas virtuales es la máquina anfitriona (host), y cada máquina virtual es llamada máquina invitada (guest). El hypervisor le ofrece al sistema operativo invitado una plataforma virtual para operar y administrar la ejecución del sistema operativo invitado. Múltiples instancias de una variedad de sistemas operativos pueden compartir recursos de hardware virtualizado; así, por ejemplo, instancias de Linux, Windows y MacOS pueden correr en un solo sistema físico. Esto contrasta con la virtualización a nivel sistema operativo, donde todas las instancias (usualmente llamadas contenedores) deben compartir un solo kernel; por lo tanto, el sistema operativo del invitado puede utilizar un diferente espacio de usuario, tal como una distribución de Linux diferente con el mismo kernel. El término hypervisor es una variante del término supervisor, un concepto tradicional para el núcleo de un sistema operativo. El hypervisor, por su parte, sería el supervisor del supervisor, por eso utiliza el prefijo hyper. 3. Docker práctico Es tiempo de comenzar a construir una aplicación al estilo Docker. Comenzamos desde abajo de la jerarquía de una aplicación, que es un contenedor. Sobre este nivel está el servicio que define cómo se comportan los contenedores en producción, mientras que en el alto nivel se define cómo interactúan todos los servicios (Docker Inc., s. f.). Es decir: pila (stack); servicios; contenedores. Para crear el entorno, es necesario instalar Docker: sudo apt install docker.io (Docker Inc., s. f.). Cuando desarrolles una aplicación, si esta utilizará Python en la ejecución, una de las primeras instrucciones, desde luego, debería ser instalar Python, lo cual requeriría que todo funcione en su entorno de prueba y también en producción. En el pasado, si tú fueras a desarrollar una aplicación en Python, la primera acción sería instalar Python localmente, pero posiblemente tu entorno local no coincida perfectamente con el entorno de producción, cuyo escenario generaría algunos problemas. Con Docker, puedes conseguir una imagen con Python y ya no necesitarás ninguna instalación. Luego, tu proyecto entregable incluirá esa imagen con su código asegurando la aplicación y las dependencias irán juntas. Esta imagen portable se define a través del dockerfile (Docker Inc., s. f.). 4. Definir un container con el dockerfile El dockerfile define lo que va en el entorno dentro del container. El acceso a los recursos, como interfaces de red y unidades de discos, es virtualizado dentro del entorno, el cual es aislado del resto de los sistemas, por lo que necesitarás mapear los puertos hacia afuera y ser específico sobre qué archivos serán copiados dentro de dicho entorno. Sin embargo, luego de hacer esto, se espera que el dockerfile se ejecute tal cual es, en cualquier entorno (Docker Inc., s. f.). Ejemplo de dockerfile Crea un directorio vacío, cambia de directorio al nuevo directorio, crea un archivo llamado dockerfile, copia y pega el contenido del archivo: # Uso de una imagen oficial de Python como imagen base FROM python:2.7-slim ​# Establecer el directorio de trabajo a /app WORKDIR /app # Copiar el contenido de /app al container COPY. /app # Instalar todo el paquete necesario definido en requirements.txt RUN pip install --trusted-host pypi.python.org -r requirements.txt # Poner disponible el puerto 80 EXPOSE 80 # Definir una variable de entorno ENV NAME World # Correr app.py cuando el container se inicia CMD ["python", "app.py"] (Docker Inc., s. f.). La aplicación ​ Crearemos los dos archivos referidos en el dockerfile: requirements.txt Flask Redis ​app.py from flask import Flask from redis import Redis, RedisError import os import socket # Connect to Redis redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2) app = Flask(__name__) @app.route("/") def hello(): try: visits = redis.incr("counter") except RedisError: visits = "cannot connect to Redis, counter disabled" html = "Hello {name}!" \ "Hostname: {hostname}" \ "Visits: {visits}" return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits) if __name__ == "__main__": app.run(host='0.0.0.0', port=80) Vemos que pip install -r requirements.txt instala Flask y Redis para Python. La app muestra la variable name y también la salida de la llamada socket.gethostname (). Nota: ingresar el nombre del host dentro del container nos devuelve el container ID. ¡Listo! Correr la app y mapear el puerto 4000 al del container puerto 80 usando - p: docker run -p 4000:80 friendlyhello Ir a un navegador (browser) y hacer. http://localhost:4000/ Verás la siguiente imagen que se ilustra en la Figura 1. Hello world! Hostname: 6864de875790 Visits: cannot connect to Redis, counter disabled (“Overview of Docker Edition”, s. f.). Figura 1: Nuestra aplicación ¡Hola mundo! Fuente: [Imagen sin título sobre aplicación ¡Hola mundo!]. (s. f.). Recuperada de https://dockr.ly/2JPqkt3 Video conceptual Referencias [Imagen sin título sobre aplicación ¡Hola mundo!]. (s. f.). Recuperada de https://docs.docker.com/get-started/images/app-in-browser.png Docker Inc. (s. f.). Overview https://docs.docker.com/install/overview/ of Docker Edition. Recuperado de IntroducciónBloque 1Bloque 2Referencias Cloud computing Introducción En esta lectura definiremos los términos asociados a cloud computing o computación en la nube, esta tecnología propone un modelo de plug and play para compartir recursos informáticos que simplifica drásticamente el planeamiento de la infraestructura. Las ventajas de este modelo son la facilidad de uso y la efectividad de los bajos costos, aunque algunas cuestiones y aspectos relacionados con la seguridad merecen mayor atención. Cloud computing es un paradigma donde un gran grupo de sistemas informáticos están conectados entre sí, en redes públicas y privadas, para proveer una infraestructura escalable dinámicamente para nuestras aplicaciones, nuestros datos y nuestro almacenamiento. Con la llegada de esta tecnología, el costo de la computación, el alojamiento de aplicaciones y el contenido y la entrega de servicios debería reducirse drásticamente (ver Figura 1). La computación en la nube es una solución práctica para experimentar beneficios en los costos y establecer un centro de datos sin la necesidad de toda la inversión en infraestructura que estos equipos suponen. El centro de datos en la nube generará costos siempre y cuando se lo utilice, la clave es el reúso de las capacidades de tecnología informática. Figura 1: Cloud computing Fuente: Drouin, 2017, https://goo.gl/hQPJXU La diferencia que ofrece la nube es que en este caso compartimos recursos fuera de los límites de la empresa. Esto es una ventaja comparativa en relación con sistemas distribuidos, mallas de computadores y otras soluciones de paradigmas anteriores. 1. Modelos de computación en la nube Los proveedores de servicios en la nube pueden ser agrupados en tres categorías: 1. Software como un Servicio (en inglés, Software as a Service [SaaS]): en este modelo la aplicación completa es ofrecida a los clientes como un servicio bajo demanda. Una sola instancia del servicio corre en la nube y múltiples usuarios finales son servidos. Del lado de los clientes, no hay necesidad de invertir en servidores o licencias de software mientras el proveedor baja los costos, ya que se necesita almacenar y mantener una sola aplicación. Este servicio, SaaS, es ofrecido por empresas como Google, Salesforce, Microsoft, Zoho, etcétera. 2. Plataforma como Servicio (en inglés, Platform as a Service [PaaS]): aquí una capa de software o entorno de desarrollo es encapsulado y ofrecido como un servicio, sobre el que otros niveles superiores del servicio pueden ser construidos. El cliente tiene la libertad de construir sus propias aplicaciones, las cuales se ejecutan sobre la infraestructura del proveedor. Para alcanzar los requerimientos de administración y escalabilidad de las aplicaciones, los proveedores de PaaS ofrecen una combinación predefinida de sistemas operativos y servidores de aplicaciones, como la plataforma LAMP (Linux, Apache, MySql and PHP [Personal Hypertext Processor]), J2EE (Java 2 Platforms, Enterprise Edition, por sus siglas en inglés cuya traducción es Plataformas Java 2 Edición Empresarial), Ruby, etcétera. Algunos proveedores populares de PaaS, por ejemplo, son Google y Force.com. 3. Infraestructura como un Servicio (en inglés, Infrastructure as a Service [IaaS]): provee almacenamiento básico y capacidades de computación como servicios estándares sobre la red. Los servidores, los sistemas de almacenamiento, los equipos de red, los centros de datos, etcétera, son agrupados y puestos a disposición para manejar la carga de trabajo. El cliente típicamente despliega su propio software en la infraestructura; algunos ejemplos comunes son Amazon, GoGrid, 3 Tera, etcétera. Tabla 1 Categoría Descripción SaaS Aplicaciones basadas en Internet altamente escalable, almacenadas en la nube y ofrecidas como Ejemplo Google Docs, acrobat.com, Salesforce.com. PaaS IaaS servicio al usuario final. Son las plataformas usadas para diseñar, desarrollar, construir y probar las aplicaciones. Estas plataformas son provistas por la infraestructura en la nube. Este es el modelo pague por lo que usa: los servicios como el almacenamiento, la administración de una base de datos y las capacidades de computación son ofrecidos a demanda. Azure Service Platform, force.com, Google App Engine. Amazon Web Services (AWS), GoGrid, 3 Tera. Fuente: elaboración propia Figura 2: Aplicaciones en la nube Fuente: Rawpixel.com, s. f., https://goo.gl/8QtgSU 2. Nubes privadas y públicas Las empresas pueden elegir dónde desplegar sus aplicaciones, ya sea en nubes públicas, nubes privadas o nubes híbridas. Los arquitectos de la nube pueden jugar un rol vital a la hora de determinar la nube correcta para cada organización. 1. Nube pública Las nubes públicas son propiedad de terceros, y son administradas por ellos. Estas proveen una escala de economía mayor, ya que los costos de la infraestructura son distribuidos entre la variedad de usuarios, lo que le da a cada cliente individual un servicio de bajo costo, con el modelo pague por lo que usa. Todos los clientes comparten la misma infraestructura con configuración limitada, protecciones de seguridad y disponibilidad. Las nubes son administradas por el proveedor de nube. Una de las ventajas de la nube pública es que puede ser mayor que una nube de la empresa y proveer, así, la habilidad de escalar sin ninguna interrupción bajo demanda. 2. Nube privada Las nubes privadas son construidas exclusivamente para una sola empresa. Ellas apuntan a cuidar la seguridad de los datos y a ofrecer mayor control, que es típicamente lo que le falta en una nube pública. Cuando hablamos de nubes privadas, podemos encontrar dos tipos, que desarrollaremos a continuación. a. Nube privada en la empresa (on premise) Son conocidas como nubes privadas o nubes internas y se alojan dentro del centro de datos de la empresa. Este modelo ofrece más procesos estandarizados y más protección, pero tiene limitaciones de escala y tamaño. Hay que considerar que el departamento de tecnología informática, para ofrecer este modelo, va a necesitar invertir en infraestructura, mayores costos operaciones, costos de recursos físicos y su mantenimiento. Este escenario es más adecuado para aplicaciones que requieren control total y la posibilidad de configurar la infraestructura y la seguridad. b. Nube privada alojada externamente Estas nubes se encuentran alojadas externamente con un proveedor de nube; este facilita un entorno exclusivo con garantía total de privacidad. Este escenario es el más adecuado para empresas que no quieren una nube pública porque, de esa forma, compartirían recursos físicos. 3. Nube híbrida Este tipo de nubes combinan ambos modelos, las nubes públicas y las privadas. Con una híbrida, los proveedores pueden obtener servicios de nube de terceros de una forma total o parcial y, así, aumentar la flexibilidad de la computación. El entorno de nube híbrido es capaz de proveer la habilidad de escalar a demanda. Esta habilidad de aumentar una nube privada con los recursos de una nube pública puede ser usada para administrar cualquier carga de trabajo que surja inesperadamente. Referencias Drouin, B. [Uploader]. (2017). [Imagen sin título sobre red]. Recuperado de https://cdn.pixabay.com/photo/2017/06/14/16/20/network 2402637_1280.jpg Rawpixel.com [Uploader]. (s. f.). Cloud Computing Network Online Internet Storage Concept [Imagen]. Recuperado de https://www.shutterstock.com/image-photo/cloud-computingnetworkonline-internet-storage 267534365? irgwc=1&utm_medium=Affiliate&utm_campaign=Hans%20Bra xmeier%20und%20Simon%20Steinberger%20GbR&utm_source=44814&ut m_term= Bloque 1Bloque 2Referencias Beneficios y Desafíos de la Nube 1. Implementación de la virtualización Introducción En esta lectura analizaremos los beneficios que presenta la tecnología de computación en la nube para las empresas, ya que este modelo ayuda mucho al desarrollo de los negocios. También presentaremos algunos desafíos por venir y áreas en las que las tecnologías y las leyes vigentes necesitan avanzar para integrar mejor los derechos de las personas, como es el caso de la privacidad y la confidencialidad con la nueva tecnología. Beneficios de cloud computing Las empresas necesitan alinear sus aplicaciones para obtener los mayores beneficios que la arquitectura de la nube ofrece. Algunos de ellos se exponen a continuación: ☰ Reducción de costo Hay muchos motivos que atribuyen a la tecnología de computación en la nube una reducción de costos. La forma de facturación basada en el uso que se le da a la infraestructura, sumado a que la infraestructura no es comprada por la empresa y su mantenimiento está incluido en la facturación por uso, hace comprender que efectivamente la computación en la nube plantea una fuerte reducción de costos. Figura 1: Reducción de costos Fuente: [Imagen sin título sobre reducción de costos]. (s. f.). Recuperado de https://goo.gl/Ya9VrA ☰ Aumento del almacenamiento Con la infraestructura fenomenal que es ofrecida por los proveedores en la nube hoy en día, el almacenamiento y el mantenimiento de grandes volúmenes de datos es una realidad. Actualmente, se generan datos que requieren mayor almacenamiento: las imágenes con mayor resolución y los videos de alta calidad y alta definición aumentan la necesidad de un mayor espacio para almacenamiento. Las cargas de trabajo altas y repentinas pueden manejarse efectiva y eficientemente, ya que la nube puede escalar dinámicamente, y esto representa un beneficio muy importante para las aplicaciones que se desarrollan en la actualidad. Figura 2: Almacenamiento en la nube Fuente: Monkographic, s. f., https://goo.gl/8A6KyV ​ ☰ Flexibilidad Esta característica es de vital importancia, ya que las empresas siempre tienen que adaptarse, cada vez con más rapidez, a los cambios en las condiciones de los negocios, por lo que una mayor velocidad para entregar los productos se vuelve crítica. La computación en la nube pone el acento en obtener aplicaciones listas para el mercado muy rápidamente, a través del uso de la construcción de bloques necesarios para el desarrollo. La flexibilidad es clave en entornos que rápidamente cambian y definen nuevos requerimientos que deben atenderse adecuadamente. Figura 3: Flexibilidad Fuente: GzP_Design, s. f., https://goo.gl/bWDeak 2. Desafíos de la computación en la nube A pesar de que su influencia está en continuo crecimiento, todavía existen preocupaciones respecto de la computación en la nube. En ese sentido, los beneficios superan a los puntos débiles y vale la pena explorar el modelo. Algunos desafíos comunes de la computación en la nube son: ☰ Protección de los datos La seguridad en los datos es un elemento crucial que se garantiza con un análisis profundo. Las empresas son reacias a la hora de comprar un seguro de los datos del negocio a terceras partes. Las empresas, en general, temen perder información en manos de la competencia, y los datos confidenciales de los clientes tienen un valor muy grande. En muchos casos el lugar concreto de almacenamiento de los datos no se es publicado, debido a las preocupaciones e inquietudes lógicas de cualquier empresa. El modelo actual incluye firewalls a través de los centros de datos, cuya propiedad la tienen las empresas. Proteger la información sensible es vital. En el modelo de la nube, los proveedores de servicios son responsables por el mantenimiento de la información segura, y las empresas tienen que confiar en ellos. Figura 4: Protección de datos Fuente: Rawpixel.com, s. f., https://goo.gl/7tNgXi ☰ Disponibilidad y recuperación de la información Todas las aplicaciones comerciales tienen un acuerdo en el nivel de servicio que es estrictamente respetado. El equipo de operaciones juega un rol clave en la administración del acuerdo del nivel de servicio, sumado al soporte operacional que la empresa va a recibir. La creación de clústeres apropiados, los mecanismos para superar una falla, la réplica de datos, el sistema de seguimiento, el control de transacciones, los registros de ejecuciones y otros registros son necesarios, al igual que es necesario contemplar una política de mantenimiento para la ejecución, un plan de recuperación ante desastres, la administración de la capacidad y el rendimiento del sistema. Si alguno de estos servicios está prestado de manera ineficiente por el proveedor de la nube, el impacto y el daño puede ser severo. ☰ Administración de capacidades A pesar de la existencia de múltiples proveedores de servicios en la nube, la administración de la plataforma y la infraestructura son, en muchos casos, tecnologías que requieren aún más maduración. Algunas características, como el escalamiento automático, por ejemplo, son cruciales para muchas empresas. Hay un gran potencial para mejorar la escalabilidad y el balanceo de cargas. ☰ Restricciones regulatorias En algunos países europeos, las regulaciones del Gobierno no permiten que la información personal esté alojada físicamente fuera del Estado o del país. Para cumplir este requerimiento, los proveedores de la nube necesitan establecer centros de datos exclusivamente en algunos países para cumplir con este requerimiento. Esto representa un desafío para los proveedores de nube, ya que estas cuestiones no permiten agrupar fácilmente a los usuarios de cada servicio. Referencias GzP Design [Uploader]. (s. f.). Elastic icon, vector illustration [Imagen]. Recuperado de https://image.shutterstock.com/image-vector/elastic-icon vector-illustration-450w1065872735.jpg [Imagen sin título sobre reducción de costos]. (s. https://image.shutterstock.com/image-photo/red-arrow-graph-on 454737817.jpg f.). Recuperado de background-450w- Monkographic [Uploader]. (s. f.). Concepts cloud storage. Header for website with computer, laptop, smartphone on blue background. Design for landing page. 3d isometric flat design. Vector illustration [Imagen]. Recuperado de https://image.shutterstock.com/image-vector/concepts cloud-storage-header-website-450w-1045190272.jpg Rawpixel [Uploader]. (s. f.). Data security system shield protection verification [Imagen]. Recuperado de https://image.shutterstock.com/image-photo/data-security-system-shield protection-450w-619615334.jpg IntroducciónBloque 1Bloque 2Bloque 3Bloque 4Referencias La Nube en AWS y su Servicio EC2 Introducción En esta lectura hablaremos específicamente del proveedor de servicios en la nube AWS (por sus siglas en inglés, Amazon Web Services, esto es, servicios web de Amazon) y su servicio EC2 (por sus siglas en inglés, Elastic Compute Cloud, es decir, nube de cómputo elástico), uno de los servicios más populares en la actualidad que permite desplegar instancias en la nube fácilmente. 1. ¿Por qué AWS? Se escogió AWS por ser uno de los proveedores líderes en la actualidad, al 2018, la nube de AWS incluye 55 zonas de disponibilidad distribuidas en 18 regiones geográficas y en 1 región local en todo el mundo, con planes anunciados para crear 12 zonas más y cuatro regiones adicionales en Baréin, Hong Kong, Suecia y una segunda región AWS GovCloud en los EE. UU. GovCloud es una región aislada utilizada por el gobierno de los EE. UU. para mover información sensible entre agencias y departamentos de dicho gobierno. (Amazon Web Service, 2018a, https://goo.gl/SRZE8q). ¿Que resuelve la nube? La nube resuelve escenarios donde necesitamos que la infraestructura escale ascendente o descendentemente en cuestión de segundos. Si planteamos una infraestructura física, por ejemplo, un centro de datos con entornos que pueden crecer y decrecer rápidamente significaría tener mucho hardware ocioso en momentos de poca necesidad y de uso exhaustivo en momentos en que haya una gran demanda. Este último escenario no es desventajoso, pero claramente va a tener un límite impuesto por el hardware que tengamos, mientras que en la nube, por el contrario, se puede seguir creciendo continuamente. ¿Qué es Amazon EC2? Amazon Elastic Compute Cloud (Amazon EC2) proporciona capacidad de computación escalable en la nube de Amazon Web Services (AWS). El uso de Amazon EC2 elimina la necesidad de invertir inicialmente en hardware, de manera que puede desarrollar e implementar aplicaciones en menos tiempo. Puede usar Amazon EC2 para lanzar tantos servidores virtuales como necesite, configurar la seguridad y las redes, y administrar el almacenamiento. Amazon EC2 le permite escalar hacia arriba o hacia abajo para controlar cambios en los requisitos o picos de popularidad, con lo que se reduce la necesidad de prever el tráfico. (AWS, 2018c, https://goo.gl/PGAtAq). Ejemplos de uso de servicio EC2 Las instancias de EC2 se pueden utilizar para albergar una serie de contenedores usando, por ejemplo, la plataforma Docker. Estos contenedores se comunicarán entre sí y ofrecerán diferentes servicios. A su vez, estas instancias de EC2 podrían ser hosts dedicados con ventajas sobre las instancias comunes por cuanto pueden alojarse todas estas instancias juntas, físicamente próximas, en dichos hosts dedicados. 2. Características de Amazon EC2 Amazon EC2 ofrece las siguientes características: Entornos informáticos virtuales, conocidos como instancias Plantillas preconfiguradas para las instancias, conocidas como imágenes de máquina de Amazon (AMI), que empaquetan las partes que necesita para el servidor (incluido el sistema operativo y el software adicional) Varias configuraciones de CPU, memoria, almacenamiento y capacidad de red de las instancias, conocidos como tipos de instancias. Información de inicio de sesión segura para las instancias con pares de claves (AWS almacena la clave pública y usted guarda la clave privada en un lugar seguro) Volúmenes de almacenamiento para datos temporales que se eliminan cuando detiene o termina la instancia, conocidos como volúmenes de almacén de instancias Volúmenes de almacenamiento persistente para los datos usando Amazon Elastic Block Store (Amazon EBS), conocidos como volúmenes de Amazon EBS Varias ubicaciones físicas para los recursos, como las instancias y los volúmenes de Amazon EBS, conocidas como regiones y zonas de disponibilidad Un firewall que permite especificar los protocolos, los puertos y los rangos de direcciones IP que pueden alcanzar las instancias mediante el uso de grupos de seguridad Direcciones IPv4 estáticas para informática en la nube dinámica, conocidas como direcciones IP elásticas Metadatos, conocidos como etiquetas, que se pueden crear y asignar a los recursos de Amazon EC2 Redes virtuales que puede crear que están aisladas lógicamente del resto de la nube de AWS y que, opcionalmente, puede conectar a su propia red, conocidas como nubes privadas virtuales (VPC). (AWS, 2018c, https://goo.gl/od6kci). Servicios relacionados “Puede aprovisionar los recursos de Amazon EC2, por ejemplo, las instancias y los volúmenes, usando directamente Amazon EC2. También puede aprovisionar los recursos de Amazon EC2 usando otros servicios de AWS” (AWS, 2018c, https://goo.gl/Mfe1AB). Los servicios referenciados son los siguientes: Amazon EC2 Auto Scaling (Escalabilidad Automática). AWS CloudFormation (Construcción en la nube). AWS Elastic Beanstalk (Orquestador de servicios). AWS OpsWorks (Administrador de Infraestructura). https://goo.gl/Mfe1AB). (AWS, 2018c, Para distribuir automáticamente el tráfico entrante en la aplicación entre varias instancias, utilice Elastic Load Balancing (Balanceador de Cargas Elástico, por sus siglas en inglés ELB). Para monitorear las estadísticas básicas de las instancias y los volúmenes de Amazon EBS (Elastic Blocks Store, Almacenamientos de Bloques Elástico), utilice Amazon CloudWatch (Monitor de Nube). Para automatizar acciones como activar una función Lambda siempre que se inicie una instancia Amazon EC2 o se llame a SSM Run Command (Systems Manager Agent, Agente de Manejo del Sistema de ejecución de comando) cada vez que se active un evento en otro servicio de AWS, use Amazon CloudWatch Eventos. Para monitorear las llamadas efectuadas a la API de Amazon EC2 de la cuenta, incluidas las llamadas realizadas por la Consola de administración de AWS, las herramientas de línea de comandos y otros servicios, utilice AWS CloudTrail. (AWS, 2018c, https://goo.gl/Mfe1AB). Para conseguir una base de datos relacional administrada en la nube, use Amazon Relational Database Service (Amazon RDS) para lanzar una instancia de base de datos. Aunque puede configurar una base de datos en una instancia EC2, Amazon RDS ofrece la ventaja de administrar las tareas de administración de la base de datos, como los parches de software, los backup y su almacenamiento. Para importar imágenes de máquinas virtuales (VM) desde el entorno local en AWS y convertirlas en instancias de AMI listas para utilizar, utilice VM Import/Export. (AWS, 2018c, https://goo.gl/Mfe1AB). 3. Acceso a Amazon EC2 Amazon EC2 proporciona una interfaz de usuario basada en web, la consola de Amazon EC2. Si se ha inscrito en una cuenta de AWS, podrá obtener acceso a la consola de Amazon EC2 iniciando sesión en la Consola de administración de AWS y seleccionando EC2 en la página de inicio. Si prefiere utilizar una interfaz de línea de comandos, dispone de las siguientes opciones: Interfaz de línea de comandos (CLI) de AWS. Amazon EC2 ofrece un API de consulta. Estas solicitudes son solicitudes de HTTP o HTTPS que utilizan los verbos GET o POST de HTTP y un parámetro de consulta denominado Action. (AWS, 2018c, https://goo.gl/Mfe1AB). Instancias y AMI Una imagen de máquina de Amazon (AMI) es una plantilla que contiene una configuración de software (por ejemplo, un sistema operativo, un servidor de aplicaciones y aplicaciones). Desde una AMI, se lanza una instancia que es una copia de la AMI que se ejecuta como un servidor virtual en la nube. Las instancias siguen en ejecución hasta que las detiene o las termina o hasta que se produce un error en ellas. Si una instancia falla, puede lanzar una nueva desde la AMI. (AWS, 2018b, https://goo.gl/nf6fG5). Instancias Puede lanzar distintos tipos de instancias desde una única AMI. Básicamente, un tipo de instancia determina el hardware del equipo host utilizado para la instancia. Cada tipo de instancia ofrece diferentes capacidades de memoria y computación. Seleccione un tipo de instancia según la cantidad de memoria y de potencia de computación que precise para la aplicación o el software que tiene previsto ejecutar en la instancia. Después de lanzar una instancia, su aspecto es el de un host tradicional y puede interactuar con ella como lo haría con un equipo. Tiene control total de las instancias; puede usar sudo para ejecutar comandos que requieren privilegios de root. La cuenta de AWS tiene un límite de instancias que se pueden tener en ejecución. (AWS, 2018b, https://goo.gl/nf6fG5). 4. Prácticas recomendadas de seguridad Utilice AWS Identity and Access Management (IAM) para controlar el acceso a los recursos de AWS, incluidas las instancias. Puede crear usuarios y grupos de IAM en la cuenta de AWS, asignar credenciales de seguridad a cada uno y controlar el acceso de cada uno a los recursos y servicios. Restrinja el acceso permitiendo solo el acceso a los puertos de la instancia a redes u hosts de confianza. Por ejemplo, puede restringir el acceso SSH restringiendo el tráfico entrante en el puerto 22. Revise las reglas de los grupos de seguridad con regularidad y asegúrese de que aplica el principio de privilegio mínimo; abra únicamente los permisos que necesite. También puede crear diferentes grupos de seguridad para trabajar con instancias que tienen distintos requisitos de seguridad. Considere la creación de un grupo de seguridad bastión que permita inicios de sesión externos y mantenga el resto de las instancias en un grupo que no permita los inicios de sesión externos. Deshabilite los inicios de sesión basados en contraseña para las instancias lanzadas desde la AMI. Las contraseñas se pueden encontrar o revelar, y constituyen un riesgo para la seguridad. (AWS, 2018b, https://goo.gl/nf6fG5). Parar, comenzar y terminar instancias Parar una instancia: cuando se para una instancia, se lleva a cabo un cierre normal y después una transición a un estado stopped. Todos los volúmenes de Amazon EBS se mantienen adjuntos y puede iniciar la instancia de nuevo más adelante. No se cobra por el uso adicional de la instancia mientras se encuentre en un estado detenido. Se cobra un mínimo de un minuto por cada transición del estado detenido al estado en ejecución. Si el tipo de instancia cambió mientras estaba detenida, se cobrará la tasa del nuevo tipo de instancia después de que la inicie. Todo el uso de Amazon EBS asociado de la instancia, incluido el uso del dispositivo raíz, se factura según los precios habituales de Amazon EBS. Cuando una instancia está en estado detenido, puede adjuntar o separar volúmenes de Amazon EBS. También puede crear una AMI desde la instancia y cambiar el kernel, el disco RAM y el tipo de instancia. Terminación de una instancia: cuando se termina una instancia, esta se cierra de forma normal. El volumen de dispositivo raíz se elimina de forma predeterminada, pero cualquier volumen de Amazon EBS adjunto se conserva de forma predeterminada, determinada por la configuración de atributo deleteOnTermination de cada volumen. La propia instancia se elimina y no podrá iniciarla de nuevo en un momento posterior. Para evitar que la instancia termine de forma accidental, puede deshabilitar su terminación. Si lo hace, asegúrese de que el atributo disableApiTermination está establecido en true para la instancia. Para controlar el comportamiento del cierre de una instancia, como shutdown -h en Linux o shutdown en Windows, establezca el atributo instanceInitiatedShutdownBehavior de la instancia en stop o terminate como se desee. (AWS, 2018b, https://goo.gl/nf6fG5). Video conceptual Referencias Amazon Web Services (AWS). (2018a). Infraestructura global de AWS. Recuperado de https://aws.amazon.com/es/about-aws/global infrastructure/ AWS. (2018b). Instancias y AMI. Recuperado de https://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/ec2instances-andamis.html AWS. (2018c). ¿Qué es Amazon EC2? Recuperado https://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/concepts. html de IntroducciónBloque 1Bloque 2Referencias Proveedores de Servicios en la Nube y Seguridad Introducción En la presente lectura, analizaremos algunas características de los diferentes proveedores de servicio en la nube, en conjunto con los diferentes modelos de servicios que se pueden obtener. También consideraremos las diferentes opciones y la seguridad que cada servicio brinda. 1. Proveedores de servicio en la nube Cada proveedor de la nube sirve a una función específica, dándole a los usuarios más o menos control sobre la nube dependiendo de su tipo. Cuando se elige a un proveedor, se comparan las necesidades que tenemos con los servicios disponibles. ​ Las necesidades de nube variarán dependiendo de cómo se pretenda usar el espacio y los recursos asociados a la nube. Si este va a tener un uso personal u hogareño, existirán diferentes necesidades del tipo de nube y el proveedor que surgirá si se usa la nube en un entorno empresarial. Debes considerar que tu proveedor de nube te cobra según la utilización del servicio; esto significa que, si tus necesidades tecnológicas necesitan cambiar en algún punto en cualquier momento, se puede comprar más almacenamiento (o menos, según corresponda) al proveedor de nube. Hay tres tipos de proveedores a los cuales puedes subscribirte, estos son: Software como un Servicio (en inglés, Software as a Service [SaaS]), Plataforma como un Servicio (en inglés, Platform as a Service [PaaS]), e Infraestructura como un Servicio (en inglés, Infrastructure as a Service [IaaS]). Estos tres tipos de proveedores de nube difieren en la cantidad de control que poseen sobre la información y, desde otro punto de vista, en cuánto se puede esperar que cumplan con nuestros requerimientos. Brevemente, esto es lo esperado de cada tipo: ☰ SaaS Un proveedor SaaS da acceso a los subscriptores a ambos recursos y aplicaciones. SaaS hace innecesario que se tenga una copia física del software por instalar en sus dispositivos y produce que fácilmente se tenga el mismo software en absolutamente todos los dispositivos, de una sola vez y accediendo desde la nube. En un acuerdo con un proveedor de SaaS se tiene el menor control sobre la nube. ☰ PaaS Un sistema PaaS está a un nivel superior en la configuración respecto de SaaS. Un proveedor PaaS les da a los suscriptores acceso a los componentes que ellos requieren para desarrollar y operar aplicaciones en Internet. ☰ IaaS Un acuerdo IaaS, como lo sugiere el nombre, administra la infraestructura computacional. En un acuerdo IaaS, el suscriptor terceriza totalmente el almacenamiento y los recursos, tales como el hardware, el software y otros recursos que son necesarios. ¿Cómo elegir al proveedor correcto? A medida que vamos del 1 al 3, los suscriptores obtienen mayor control sobre lo que ellos pueden hacer dentro del espacio/servicio de la nube que adquirieron. El proveedor de nube tiene menos control en un sistema IaaS que dentro de un acuerdo SaaS. ¿Qué significa esto para el usuario hogareño o para el hombre de negocios que busca utilizar la nube? Significa que se puede elegir el nivel de control sobre la información y los tipos de servicios que queremos obtener de un proveedor de nube. Por ejemplo, si estamos iniciando un pequeño emprendimiento, sería muy difícil y costoso comprar todo el hardware y el software necesario para comenzar y estar en un nivel competitivo en tecnología de acuerdo con el mercado en cuestión. Al suscribir un servicio de nube IaaS, somos capaces de mantener un nuevo negocio con mucha capacidad computacional al nivel de una compañía mayor y más establecida, mientras solamente pagamos el almacenamiento que utilizamos y el ancho de banda que consumimos. Sin embargo, este sistema puede requerir gastar más recursos en el desarrollo y la operación de sus aplicaciones. Como se puede ver, se deberían evaluar los recursos computacionales presentes y el nivel de control que se quiere tener, la situación financiera y también el camino que se desea recorrer en la empresa antes de cerrar un acuerdo con un proveedor de nube. En cambio, si eres un usuario doméstico, estarás buscando servicios gratuitos o de bajo precio, como algunos basados en un servicio de e-mail, y no te complicarás con escenarios más complejos de ofertas y análisis costo beneficio que incluyen a los proveedores de nube. Después de haber analizado profundamente en donde estás y hacia dónde vas, puedes seguir investigando sobre cada proveedor de servicios de nube, que te darán una mejor idea de qué es lo mejor en tu caso. 2. Seguridad La información almacenada en la nube es, a menudo vista, como muy valiosa para personas con malas intenciones. Hay mucha información personal que las personas almacenan en sus propias computadoras y ahora esa información está siendo transferida a la nube. Esto hace muy crítico entender y buscar una forma de medir la seguridad que el proveedor de nube tiene; de igual modo, es necesario tomar precauciones personales para asegurar los datos valiosos. ​ Lo primero que debe evaluarse son las medidas de seguridad que el proveedor de nube ya tiene. Estas varían de un proveedor a otro y también según el tipo de servicios de nube disponibles. Figura 1: Seguridad de acceso a la nube Fuente: Ekaphon maneechot, s. f., https://goo.gl/NK3pwr Preguntas para tener en cuenta ¿Qué hacen los métodos de encriptado que tienen los proveedores de nube? ¿Qué métodos de protección tienen en funcionamiento para el hardware real en el que los datos estarán almacenados? ¿Tendrán respaldos y backups de los datos? ¿Tendrán firewall configurados? Si tiene una comunidad en la nube, ¿qué barreras hay establecidas para mantener la información separada de otras compañías? ​ Muchos proveedores de nube tienen términos y condiciones estandarizados que pueden responder estas preguntas, pero, en el caso de un usuario doméstico, se puede considerar que tendrá poco espacio de negociación en un contrato por servicios en la nube. Un usuario de un pequeño negocio puede tener un poco más de margen de negociación para discutir los términos del contrato con el proveedor. Hay más preguntas que se pueden hacer; siempre es recomendable elegir un proveedor de servicio de nube que considere seriamente la seguridad. Sin importar cuán cuidadoso seas con la información personal, al suscribir un servicio en la nube estarás dejando una parte del control a una fuente externa. Esta distancia entre tú y la ubicación física de los datos crea una barrera. Esto también puede generar más lugares para que un tercero acceda a tu información. Sin embargo, para sacar provecho de los beneficios de la nube, deberás dar control de tus datos de una forma concienzuda. Desde otra perspectiva, ten en cuenta que la mayoría de los proveedores en la nube tendrán una forma para mantener sus datos seguros. Probablemente un proveedor de nube tiene más recursos y experiencia que el usuario promedio para hacer más seguras sus máquinas y sus redes. Conclusión Para resumir, la nube provee muchas opciones tanto para los usuarios de sistemas cotidianos como para los negocios grandes y pequeños. La nube abre el mundo de la computación a un gran número de usos y aumenta la facilidad para dar acceso simplemente a través de Internet. Sin embargo, este aumento en la facilidad también trae aparejado puntos débiles: tienes menos control sobre la forma de acceder a la información y puedes saber poco sobre dónde está almacenada, por lo que deberás estar al tanto de los riesgos de seguridad al tener toda la información almacenada en la nube. La nube es el gran objetivo para personas con malas intenciones debido a que se puede acceder a la misma a través de conexiones inseguras que pueden ser vulneradas. Si estás considerando usar la nube, deberás estar seguro de que identificas qué información estás poniendo en la nube, quién va a acceder a esta información y qué habrá que hacer para asegurarse de que la información esté protegida. Adicionalmente, deberás conocer las opciones para determinar qué tipo de nube será la mejor para cumplir con los requerimientos del proyecto, qué tipo de proveedor de nube será más útil y cuál es la reputación y la responsabilidad de los proveedores que estás considerando antes de firmar el trato. Referencias Ekaphon maneechot [Uploader]. (s. f.). Clouds and network security concept on Chicago city with connection concept [Imagen]. https://image.shutterstock.com/image-photo/clouds-network-security 557663191.jpg Recuperado de concept-on-450w- IntroducciónBloque 1Bloque 2Referencias Sistemas operativos embebidos Introducción Un sistema operativo embebido, también conocido como empotrado, integrado o incrustado, es un sistema operativo producido para ejecutar un conjunto de operaciones en una plataforma determinada. 1. Implementación Los sistemas operativos embebidos se desarrollan para ejecutarse en plataformas que cuentan con recursos de hardware limitados. Estos están programados para realizar una o pocas operaciones para cumplir con su objetivo específico. Generalmente, son un componente de un sistema heterogéneo más grande, que incluye partes mecánicas, eléctricas, etcétera. En la actualidad, los sistemas embebidos o empotrados están en muchísimos lugares. Continuamente, nos encontramos expuestos a ellos en nuestra vida diaria. La mayoría de las personas, a las que la palabra computadora les trae la imagen de una computadora personal (en inglés, PC) o una laptop, no dimensiona la ingente cantidad de dispositivos que forman parte importante de cada ambiente en el que nos movemos. En una oficina, se pueden encontrar fotocopiadoras con lector de tarjetas, puertas que se abren reconociendo características biométricas de las personas, luces que se encienden con sensores que detectan el movimiento, sistemas de intercomunicación, dispositivos que están en la red como escáneres, cámaras de seguridad, monitores, detectores de humo, expendedoras de café, lavavajillas programables, etcétera. El amplio rango de dispositivos y aplicaciones abarca desde comunicaciones, productividad, entretenimiento y confort, incluyendo vigilancia, seguridad, salud y protección al medio ambiente. Saliendo de la oficina, nos encontramos con otros aparatos que tienen sistemas operativos empotrados como dispositivos de red celular, cajeros, transporte urbano, relojes personales, semáforos, luces automáticas, entre otros. Un sistema operativo embebido está integrado por un chip programable que realiza determinadas funciones puntuales, una memoria flash o memoria de solo lectura (ROM), un circuito impreso correspondiente y un código que mantiene todo funcionando, el firmware. Este software, en general, se ejecuta sobre una placa programable de propósito general adaptada a una necesidad puntual. La aplicación desarrollada para un sistema operativo embebido es diferente a las aplicaciones tradicionales; algunas de las características distintivas son: Este software es muy cercano al hardware del dispositivo al que está íntimamente relacionado; el lenguaje de programación utilizado para desarrollarlo en la mayoría de los casos es de mediano o bajo nivel. Al ser tan acotado su campo de acción, se pueden tomar medidas para lograr un software más efectivo y puntual, ya que la plataforma es muy conocida y confiable para estos fines. Una consideración importante para lograr los objetivos de un sistema operativo embebido, es producir sistemas altamente efectivos que administren con eficiencia la interfaz con el hardware (plataforma) y todos los dispositivos de entrada y salida alrededor del sistema, como placas, sensores, interruptores, etcétera. Las soluciones se deben pensar desde un punto de vista integral. Los escenarios más comunes que observamos son los que existen limitantes en los dispositivos que usamos, como una velocidad o una memoria reducidas. La mayoría de las veces es necesario incluir alguna capacidad de verificación automática del dispositivo en cuestión, tanto chequeo sobre el hardware, como sobre el software. La confiablidad de los sistemas operativos empotrados debe ser alta, ya que no es un comportamiento esperado que el usuario actualice constantemente su software, aunque es una posibilidad en los dispositivos que tienen acceso a internet. Sin embargo, para los aparatos sin acceso a internet, se enfatiza la necesidad de un software robusto y, sobre todo, tolerante a fallos durante su ejecución. Existen diferentes niveles en los sistemas operativos empotrados que se pueden diferenciar: 1. Un sistema operativo embebido con el firmware específico para el dispositivo en cuestión, desarrollados conjuntamente con el hardware del dispositivo y entregados al mercado en el mismo momento de salida del dispositivo a la calle. Estos sistemas tienen un alto precio que supera el análisis entre el costo y el beneficio en situaciones donde muchos dispositivos son puestos a disposición del usuario con ese software. Una nueva versión de este se espera que se entregue con un nuevo dispositivo. 2. Otros sistemas similares al apartado anterior incluyen una capacidad extra, que es la posibilidad de realizar determinados ajustes en el sistema que permitan que el dispositivo cumpla con alguna regulación o capacidad necesaria. Estas adaptaciones constituyen una mejora. 3. Otros sistemas operativos empotrados están administrados desde un sistema central dedicado a esto y tiene a cargo la gestión y la administración de ítems de red o dispositivos destinados a proveer interconexión y servicios relacionados con las comunicaciones. Un sistema de este tipo permite el funcionamiento de una red. En la realidad, con frecuencia, existen aparatos que tienen diferentes características, con distinta generación tecnológica en un mismo sistema; esta situación conlleva un esfuerzo de sintonía de configuraciones y adaptación para que todo funcione correctamente. La gestión de software embebido tiene algunas consideraciones específicas: ∙ Es necesario estar familiarizado con todos los componentes que integran el sistema; esto hace que quienes mantengan el sistema deban ser trabajadores calificados. ∙ En general, no es una opción la preparación de personas que se ocupen únicamente de una especialidad. 2. Windows 10 IoT Enterprise Windows 10 IoT Enterprise es una versión completa de Windows 10 que provee la posibilidad de administrar y proveer seguridad a soluciones IoT (internet of things o internet de las cosas) con software embebido. Windows 10 IoT Enterprise comparte con nosotros todos los beneficios del ecosistema Windows que tanto conocemos. Es un equivalente en binario, por lo que se pueden utilizar las mismas herramientas que empleamos en Windows para desarrollar y administrar (Clay, Baker, & Kedia, 2017). Comenzar a utilizar Windows 10 IoT Enterprise Se recomienda trabajar con los dispositivos sugeridos por Microsoft. Se puede cargar a nuestra PC o a algún dispositivo para evaluar una copia de Windows 10 para utilizarlo como prototipo en nuestro desarrollo (Clay et al., 2017). Consideraciones Para utilizar Windows 10 IoT, es necesario abonar una licencia. Vale la pena mencionar que Windows es ampliamente difundido por sus capacidades de gestionar una PC en un entorno familiar, lo que tiene menos difusión es que también Windows es utilizado en muchos cajeros automáticos, terminales de punto de venta, sistemas en la industria de la automatización, clientes livianos, dispositivos médicos, firma digital y otros equipos de propósito fijo. Windows 10 IoT Enterprise permite construir un software empotrado de propósito fijo con habilitaciones y restricciones de acuerdo con la licencia que se elija. Un dispositivo de propósito fijo difiere de un dispositivo de propósito general en la siguiente forma: El dispositivo está enfocado en realizar solo una serie de aplicaciones. El dispositivo se enciende inmediatamente en la aplicación del usuario final, evitando el ciclo tradicional de inicio de Windows, lo que se logra configurando el equipo. Los teclados, los puertos USB (universal serial bus) y las políticas sobre los dispositivos están bloqueadas o no según el propósito fijo del dispositivo. Las licencias de fabricantes de equipos originales (OEM, por sus siglas en inglés: original equipment manufacturer) proveen un soporte completo al cliente final, incluyendo las funciones del sistema operativo (Clay et al., 2017). Canal de servicio de largo plazo El LTSC, por sus siglas en inglés: long-term servicing channel, o canal de servicio de largo plazo se ofrece para sistemas especializados que lo requieran, como las computadoras personales que incluyan equipamiento de control médico, los sistemas de punto de venta y los cajeros automáticos, entre otros. Estos aparatos típicamente ejecutan una sola tarea importante y no necesitan parches tan frecuentes como los otros dispositivos en la organización. Es más importantes que estos equipos permanezcan estables y seguros sin cambios en la interfaz de usuario. El servicio de LTSC evita que estos aparatos reciban nuevas entregas de software, salvo en los casos de que sean entregas críticas. Con esto en mente, las nuevas versiones se ponen a disposición de los clientes, pero ellos pueden diferirlas hasta el momento adecuado (Clay et al., 2017). Video conceptual Referencias Clay, S., Baker, K., & Kedia, N. (2017). An overview of Windows 10 IoT Enterprise [Revisión de Windows 10 IoT Empresarial]. Recuperado de https://docs.microsoft.com/en-us/windows/iot-core/windows-iot enterprise IntroducciónBloque 1Bloque 2Bloque 3ConclusiónReferencias Sistemas Operativos Embebidos en la actualidad Introducción En la presente lectura, analizaremos los sistemas operativos embebidos a los que estamos expuestos en la vida real, aun cuando a menudo estos son prácticamente invisibles, pero asimismo son ubicuos, es decir, están presente en casi todos los ambientes en nuestra vida cotidiana. Los sistemas operativos embebidos están presentes en muchas industrias en la actualidad, tales como la industria automotriz, la defensa, el transporte público y el transporte aeroespacial. Por ejemplo, en la NASA (en inglés, Administración Nacional de la Aeronáutica y del Espacio), el Path Finder para Marte cuenta con sistemas embebidos; también los sistemas de Lockheed Martin de guiado de misiles y la empresa automotriz Ford contiene numerosos sistemas operativos embebidos. A diario, la gente alrededor del mundo utiliza sistemas operativos embebidos aun sin conocerlo. De hecho, los sistemas embebidos suelen estar de manera imperceptible, disfrutamos de mucha tecnología y sus ventajas sin percibir todos los detalles tecnológicos. Los sistemas embebidos se destacan por ser altamente adaptables y versátiles, muchos de estos sistemas están presentes en nuestro hogar, en nuestro trabajo y también en los dispositivos que usamos para recrearnos. De hecho, es difícil encontrar alguna parte de nuestro día que no estemos envueltos en algún entorno con algún sistema embebido de alguna forma. Algunos de los sistemas embebidos más populares son descriptos a continuación. 1. Sistemas embebidos en el hogar Ocultos convenientemente en numerosos dispositivos de uso doméstico, los sistemas embebidos están por toda la casa, los consumidores disfrutan del menor esfuerzo requerido para utilizar estas características y de los beneficios de la tecnología de sistemas embebidos. En la siguiente figura, podemos ver algunos de los sistemas operativos embebidos disponibles en el hogar, en los hornos y las cafeteras programables, en heladeras que ejecutan funciones de ahorro de energía, en hornos de microondas. Además de los dispositivos que intervienen en la seguridad de la casa, los equipos para televisión por cable o satelital, el teléfono y el contestador, la tecnología de sistemas embebidos continuamente innova y nos ofrece más prestaciones en el hogar (Qing Li, 2003). Figura 1: Electrodomésticos con sistemas embebidos Fuente: Hébert, 2017, https://bit.ly/2LcmjyV 2. Sistemas embebidos en el lugar de trabajo Los sistemas embebidos han cambiado la forma en la que la gente conduce los negocios. Quizás el ejemplo más significativo es internet. Internet es, en realidad, un conjunto grande de sistemas embebidos que están interconectados usando varias tecnologías de red (Qing Li, 2003). En la próxima figura, podemos observar dispositivos de red interconectados. Figura 2: Sistemas embebidos en el trabajo Fuente: Carlisle, 2018, https://bit.ly/2SC90ft Comenzando desde varias terminales de red como impresoras, cable módem y routers de red corporativa hasta la columna principal de los switches gigabit, la tecnología de embebidos ha ayudado a hacer que el uso de internet sea necesario hoy para llevar adelante cualquier modelo de negocio. Los routers de red y los switches troncales gigabit son ejemplos de sistemas embebidos. Los avances hacen de internet una red confiable y eficiente a pesar de la cantidad de paquetes de voz y datos que circulan por este (Qing Li, 2003). 3. Sistemas embebidos en la industria del ocio En el hogar, en el trabajo, aun cuando nos divertimos, los sistemas embebidos aparecen y se multiplican. Se encuentran en el juguete de un niño cuando este inesperadamente cobra vida; en los automóviles equipados con sistemas de navegación que transportan gente a su destino de una manera segura y eficiente; al escucharla música favorita con libertad, lo que es totalmente alcanzable gracias a los sistemas embebidos integrados en reproductores de música portable; en los navegadores que integran GPS (sistema de posicionamiento global) en los vehículos (Qing Li, 2003), entre tantos otros casos, tal como se muestran en la Figura 3. Figura 3: Sistemas de navegación GPS y sistemas integrados Fuente: Cruz, 2017, https://bit.ly/2ACUey0 Aun un dispositivo de computación portable, como la tablet mostrada en la siguiente imagen, es un sistema embebido. Figura 4: Tablet y periféricos Fuente: Oluwagbemiga, 2018, https://bit.ly/2yH74tG Los sistemas operativos embebidos también trabajan en equipo con otras tecnologías que entregan beneficios. El GPS, por ejemplo, utiliza satélites para identificar ubicaciones con una precisión de centímetros, lo que permite que los ciclistas y otros entusiastas de actividades del exterior cuenten con dispositivos que muestren su ubicación sin perderse. Hasta los pescadores utilizan GPS para identificar y guardar lugares de buena pesca (Qing Li, 2003). Los sistemas embebidos también están a cargo de los aviones y sus controladores de radio tradicional, autos de carretas, etcétera (Qing Li, 2003), tal como muestra la Figura 5. Figura 5: Controles de avión Fuente: Sterk, 2017, https://bit.ly/2PvCGfh Conclusión Como hemos observado, en la actualidad, estamos rodeados de sistemas operativos embebidos; de esta forma, esta tecnología cobra dimensión y, al integrarse los sistemas, surgen nuevas prestaciones y, a la vez, más necesidades de desarrollo en el campo de los sistemas operativos integrados a distintas plataformas. Referencias Carlisle, J. (2018). DIY Electrical Board at Craft Lake City [Hágalo Usted Mismo, Tablero Eléctrico en la Feria de la ciudad Salt Lake City] [Imagen]. Recuperado de https://unsplash.com/photos/l090uFWoPaI Cruz, M. (2017). Dashboard wheel traffic [Comandos del Vehículo] [Imagen]. Recuperado de https://unsplash.com/photos/z5QwjwMzPdY Hébert, N. (2017). Kitchen [Cocina] [Imagen]. Recuperado de https://unsplash.com/photos/MP0bgaS_d1c Oluwagbemiga, J. (2018). Apple Products [Productos Apple] [Imagen]. Recuperado de https://unsplash.com/photos/n86hjWsgJW8 Qing Li. (2003). Real-Time Concepts for Embedded Systems [Conceptos de tiempo real para sistemas embebidos]. Recuperado de http://www.embeddedlinux.org.cn/rtconforembsys/5107final/LiB0006.html Sterk, B. (2017). Flight Deck [Tablero de Vuelo] [Imagen]. Recuperado de https://unsplash.com/photos/jMpLgHLeXZQ IntroducciónBloque 1Bloque 2Bloque 3Bloque 4Referencias Un Proyecto de Aplicación con Sistemas Embebidos Introducción En la presente lectura, analizaremos un proyecto que propone aplicar sistemas embebidos en los clásicos autos de carrera en una pista, un juego mundialmente conocido por todos. El desafío es incorporar sistemas embebidos para obtener la información del camino, controlar los autos individualmente y detectar y modificar el diseño y la implementación del hardware. Qué se debe implementar en hardware, qué en firmware y qué en aplicaciones de software será la pregunta principal. Como candidato para software embebido, será Windows y Windows Embedded. Manejaremos todo el espectro desde el hardware como infraestructura para modificar los sistemas operativos existentes o utilizaremos los comerciales. El objetivo es entender el tema de cada área, tomar decisiones de diseño, utilizar herramientas y técnicas de desarrollo, implementarlas, para luego demostrarlo y evaluarlo. En la Figura 1, se muestra una pista de autos que será el proyecto por implementar con sistemas embebidos. Figura 1: Carrera de autos Fuente: Bain, s. f., https://shutr.bz/2EV8shG 1. Punto de partida Los autos de carrera han estado ya varios años entre nosotros. Comenzaron como un sistema analógico donde los autos solo podían utilizar un carril; luego, evolucionaron a sistemas digitales con cruces, intersecciones y otros segmentos especiales del camino. El uso de un protocolo digital permitió más de dos jugadores compitiendo al mismo tiempo (Hentschel, Richter, & Polze, 2014). En esta lectura, vamos a proponer la creación de aplicaciones de control más complejas, partiendo desde las más simples para medir la velocidad máxima para conducir en modo seguro, o más sofisticadas, en el caso de buscar un camino más óptimo. El camino El camino está hecho de segmentos con dos carriles metálicos. Los autos obtienen energía del carril y siempre están ubicados sobre este. Hay caminos de diferente largo, curvas, tramos rectos, etcétera. Se pueden crear caminos complejos. Los sistemas digitales permiten que varios autos usen el mismo carril. Además de los segmentos sin funciones, hay otros que son controlados por un transistor de luz y un decodificador. El transistor recibe la luz infrarroja de abajo del auto; el decodificador puede identificar el auto que pasa. Identificado el auto, se decide si el camino cambia o no para este (Hentschel et al., 2014). Los autos Los autos tienen un motor que mueve las ruedas. La energía se obtiene de los carriles metálicos. Cada auto recibe una señal digital. Hay 15 niveles de velocidad y un nivel de frenado disponible (Hentschel et al., 2014). Sensores Hay sensores de posición en el camino que reconocen al auto. Estos permiten variar el camino o no (Hentschel et al., 2014). Mejora agregando un dispositivo Android El teléfono se conecta a una computadora por wifi y puede acelerar o desacelerar el auto. El celular también puede proveer más energía al auto a través de un controlador conectado a la pista que permite mayor velocidad. Mejora con unidad de control Un uso de la unidad de control mide las fuerzas centrifugas en el auto y, basándose en eso, acelera. Otro uso es disponer de una cámara sobre el camino que, utilizando procesamiento de imágenes, observa la posición del cambio y hace una simulación para obtener la velocidad. Mejora con giroscopio Se agregó un giroscopio al chasis y un sensor al eje. El giroscopio es usado para detectar el curso del camino y para identificar segmentos rectos y curvos. El sensor fotoeléctrico cuenta la rotación de los ejes que es proporcional a la velocidad. Usando estas dos medidas, es capaz de estimar la posición en el camino y ajustar la velocidad. Sin embargo, con estos aparatos, el auto no puede ser controlado por una persona. 2. Detección de señales Para un software de control para tomar decisiones basadas en la información que disponemos, necesitamos detectar señales: La unidad de control transmite señales del camino, voltaje, información de cada auto, velocidad, si cambió de carril y más datos del camino, por ejemplo, el ritmo del auto manejando alrededor nuestro. Cuando un auto sobrepasa a otro, el sensor lo identifica. Con la combinación de la señal del camino y las de posición, somos capaces de crear un modelo de cuán rápido un auto está viajando y donde está en el camino. A continuación, describiremos la detección y la decodificación de estas señales (Hentschel et al., 2014). Solución general Ambas señales están conectadas a un tablero de control. El tablero interpreta las señales y las presenta al firmware. También el controlador puede generar interrupciones cuando cambian las señales. Esto permite tres soluciones diferentes para la decodificación. 1. Round-robin sin interrupciones: lee los valores y remplaza los valores previos. Este modelo es simple y fácil de entender. Desventaja: puede haber cambios con alta frecuencia y se pueden perder datos. 2. Solamente interrupciones. Una interrupción es generada en cada pin de entrada; estas se ejecutan cuando la señal cambia, mediante un procesamiento similar al round-robin. Ventaja extra: solo se actualiza cuando hay cambios. También podríamos perder señales. 3. Híbrido. Round robin con interrupciones: combinamos los dos anteriores, se agrega un buffer para guardar señales para procesar. Baja la posibilidad de que perdamos señales. Se hace complejo el código (Hentschel et al., 2014). 3. Señales del camino: código Manchester La detección de la señal del camino es hecha por una combinación de interrupciones y round-robin. Dentro del gestor de interrupciones, el código Manchester es interpretado y almacenado en un buffer. El código Manchester es recibido y al guardar el último bit, se mide el tiempo hasta que la próxima señal ocurra. Si este periodo es calculado y conocido, el nuevo bit es el inverso del previo guardado. La otra forma es tener dos límites con una medida corta de tiempo, entonces el nuevo valor traducido es igual al previo. Cada bit es insertado en el buffer para ser procesado luego. Si no hay señal de límite, se puede indicar con una bandera (Hentschel et al., 2014). Sensores de Posición La señal de posición también es procesada mediante un round-robin con interrupciones. Se pueden mapear las señales para determinar la ubicación exacta (Hentschel et al., 2014). Transmisión de datos Los datos entre la computadora personal y los controladores son transmitidos por USB (universal serial bus). Hay dos protocolos separados para el sensor de datos de tráfico y para el control de tráfico (Hentschel et al., 2014). Protocolo de datos del sensor El tablero recibe información del sensor de posición y sigue las señales del camino. Este procesa las señales y crea paquetes de datos que eventualmente son enviados a la PC (computadora personal). Hay cuatro tipos de paquetes: 1. Sensor de posición: el paquete tiene el ID (identificador) del sensor de posición por el que pasaron y el ID del controlador que pasó por ese sensor. 2. Estado del controlador: el paquete contiene el estado que es enviado por la unidad controladora. 3. Información de control: el paquete contiene información de control que es enviada por la unidad controladora. 4. Información de la actividad: el paquete contiene información de la actividad que es enviada por la unidad controladora (Hentschel et al., 2014). 4. Implementaciones Aplicamos dos versiones de software de control que se comunican con el controlador para recibir datos desde el sensor de la pista, pero corre en diferentes plataformas. La primera versión fue escrita en C# en Windows 8 Profesional. La otra es una consola Windows escrita en C++, usando Windows Embedded Compact 7 (Hentschel et al., 2014). Resultados de la comparación Para comparar ambas versiones, se midieron los tiempos que tomó cada una para un viaje completo en la pista (Hentschel et al., 2014). Configuración experimental En el experimento, el software maneja los dos autos alrededor de la pista con velocidad fija. Cuando un auto pasa por el sensor de posición, este manda el ID del auto al software de control; luego, el software de control envía un paquete comando al tablero solicitando que el auto pare. Más adelante, el software recibe un paquete de estado con el ID del auto para medir el tiempo que le tomó la vuelta completa y le solicita al auto que continúe andando. El pasaje de las señales y de los mensajes por un sensor se describe a continuación: 1. 2. 3. 4. 5. 6. Un auto pasa su posición. El sensor genera una señal, la que se interpreta en el tablero. 3. El tablero le informa a la aplicación vía USB. La aplicación guarda la hora. La aplicación manda la señal a la unidad de control. La unidad de control manda una señal a la pista, que puede ser interpretada de nuevo por el tablero. 7. El tablero hace un nuevo paquete y lo manda a la aplicación (Hentschel et al., 2014). Evaluación Luego de unas jugadas, se observa que ambas versiones C++ y C# no tienen un tiempo constante para procesar los sensores de pase. Desgraciadamente, no se puede determinar el componente que causa la desviación, pero la sospecha recae sobre las conexiones USB entre el tablero y controlador. Llama la atención que en la función de distribución acumulada esperábamos mejores resultados para C# por su forma de programación y recolección de basura; sin embargo, no pudimos determinar que el recolector de basura tuviera algún efecto en el tiempo en la aplicación en C#. Como vemos, en la implementación de sistemas embebidos para un simple juego intervinieron un conjunto de dispositivos y diferentes formas de comunicación, decodificación e integración, junto con limitaciones de hardware y software. Queda pendiente la implementación de otras soluciones con sistemas embebidos para las actividades cotidianas, para obtener beneficios o nuevas experiencias, como en este caso, que plantea la automatización en un popular juego de carreras de autos (Hentschel et al., 2014). Referencias Bain, K. (s. f.). A studio photo of an electric slot car set [Una foto de un juego de pistas de carrera] [Imagen]. Recuperado de https://www.shutterstock.com/es/image-photo/studiophoto-electric-slot car-set-664495456 Hentschel, U., Richter, D. & Polze, A. (Eds.). (2014) Embedded Operating System Projects [Proyectos de sistemas operativos embebidos]. Brandeburgo, DE: Universidad de Potsdam. Recuperado de https://publishup.uni-potsdam.de/opus4ubp/frontdoor/deliver/index/docId/7063/file/tbhpi90.pdf Bloque 1Bloque 2Bloque 3Referencias Sistemas Operativos Embebidos en una PC 1. Implementación de sistemas operativos embebidos en una computadora personal (PC) Introducción Los sistemas operativos embebidos o empotrados llevan ya varios años disponibles en la industria tecnológica y científica; ellos no representan una novedad en estos tiempos, puesto que ya hemos vistos sistemas operativos embebidos en un número importante de equipos que permiten algunas tareas específicas en recursos limitados de hardware. Muchos dispositivos manuales, tales como asis

Use Quizgecko on...
Browser
Browser