Sunday, August 19, 2018

Introducción Aplicaciones sobre la Nube

Sesión 1. Conceptos Básicos de aplicaciones sobre la Nube

(10 / Agosto 2018 )

La sesión I incluye los conceptos básicos de computación sobre la nube, los cuales son recopilados de las lecciones recibidas en la MCIC (Maestría de Ciencias de la Información y las Comunicaciones) de la Universidad Distrital en Bogotá-Colombia y de investigaciones adicionales.

Con el proposito de iniciar el estudio de computación en la nube es necesario comenzar con la definición de conceptos básicos que permitan su aplicación.

  • Computación sobre la nube
Como una visión general, la computación en la nube puede ser entendida a partir de la siguiente definición:

"Provisión bajo demanda de servicios relacionados con tecnologías de la información en un plataforma accesible a través de protocolos de red" Es un disciplina para diseñar, desarrollar, mantener y operar, dichos servicios.
Recopilando las definiciones dadas por los más influyentes prestadores de servicios en la nube (AWS, Google Cloud Platform, Azure, Alibaba), estos coinciden en considerar la computación en la nube como la entrega por "Demanda de recursos computacionales, almacenamiento de bases de datos, aplicaciones, y otros recursos IT, a través de plataformas de servicios en la nube".

Tipos Básicos de computación en la nube

Una vez definido el concepto general de "cloud computing", es importante considerar que todos las cargas de trabajo en un escenario en la nube utilizan recursos que son operados por proveedores de servicios, de manera que los modelos de servicios en la nube definen que recursos son manejados completamente por infraestructura propia o por los proveedores. 

Dentro de los modelos se tiene:
  • IaaS: Infraestructura como servicio. Para este enfoque la organización se encarga de la administración, mientras el proveedor por su parte le da a la organización la habilidad de crear y configurar recusos desde la capa de computación; esto incluye maquinas virtuales, contenedores, redes, accesorios, y otros recursos asociados con la infraestructura.
  • PaaS: Plataforma como servicio. En este caso la organización solo se preocupa por la instalación de la aplicación. Es decir que el proveedor brinda un ambiente de trabajo sobre el sistema operativo.
  • SaaS: Todo gestionado por terceros. Este modelo tiene los menores niveles de control por parte de la organización, de manera que no hay ningún control sobre el "backend", excepto por las tareas relacionadas con la aplicación.
Los conceptos anteriormente descritos se pueden entender mejor con la siguiente imagen:

Tipos Básicos de administración y despliegue en computación en la nube

Basicamente la administración y despliegue en la nube se categoriza en:

  • Nube ("Cloud"): Donde la aplicación es totalmente desplegada en la nube y todas las partes de la aplicación se ejecutan en la nube.
  • Hibrida ("Hybrid"): En este enfoque se conecta la infraestructura y las aplicaciones entre los recursos en la nube y los recursos existentes que no están localizados en la nube y que se alojan en una infraestructura "On-Premise".
  • Nube privada ("On-Premise"): Se despliegan los recursos de la organización, usando virtualización o herramientas de administración. En otras palabras la organización administra todos los recursos.tecnologias en la nube

Tecnologías

Dentro de las tecnologías aplicacadas en la nube, se pueden encontrar:
  • Virtualización.
  • Contenedores.
  • Big Data.
  • Fast Data: Procesamiento de datos de streaming.
  • Servicios Web.
  • Aprendizaje de Máquina.

Algunos Paradigmas

Gracias al florecimiento del "cloud computing" o impulsando su desarrollo, han surgido paradigmas para el desarrollo, pruebas y despliegue:  
  • DevOps (Desarrolllo y Operaciones).
  • CICD (Integración Contínua, Despliegue Continuo).
  • Control de Versiones.
  • Automatización de pruebas.
  • Arquitectura orientada a servicios y a microservicios.
  • Single Page Application (Aplicaciones de una sola página).
  • Desarrollo Ágil.

Servicios Básicos

Los servicios y recursos más comunes ofrecidos por los proveedores son, entre otros:
  • Cómputo
  • Almacenamiento: File System, Cache Storage, Object Storage.
  • Base de datos (SQL, NoSQL)
  • Red.
  • Aprendizaje de máquina.
  • Analítica.
  • Seguridad o gestión de identidad.
  • Realidad Aumentada, Realidad Virtual.
  • Integración de aplicaciones.
  • Internet de las Cosas.

Proveedores

Dentro de los proveedores de servicios en la nube más utilizados, se encuentran:

  • Amazon Web Services
  • Google Web Platform
  • IBM cloud
  • Azure
  • Alibaba Cloud
  • Oracle Infrastructure

Prestadores de servicios "Nubes Propias"

Se recomiendan especialmente en casos experimentales y académicos, pero no en proyectos empresariales, debido ol alto consumo de recursos y a la complejidad de su implementación.


Prestadores de servicios "Amazon Web Services" (AWS)

Entre las ventajas y herramientas que dispone AWS se encuentras:
  • Portafolio Diversificado.
  • Ideal para conocer aspectos fundamentales de la computación en la nube.
  • Gestión por API, Consola o Interfaz Web.
  • Cursos gratuitos.
  • Ruta de certificación.

Servicios de AWS

  • EC2.
  • Autoscaling.
  • Cloud formation.
  • AWS IAM.
  • Lambda (FaaS).
  • S3 (Almacenamieto).
  • Elastic Search (Análisis de Logs).
  • Cloud Watch (Monitoréo de recursos).
  • Kinesis.

Buenas Practicas de seguridad en AWS

Se recomienda habilitar MFA (Multifactor Authentication), ademas de administración de identidad y acceso IAM y limitar o restringir los permisos de roles y usuarios.

Para profundizar sobre los conceptos tratados en esta sesión se recomienda el siguiente video:






El primer Paradigma a considerar dentro del "desarrollo, pruebas y despliegue" de aplicaciones basadas en los recursos de la nube es:

DevOps

DevOps es un movimiento cultural que cambia el modo en el que los individuos piensan su trabajo, valora la diversidad del trabajo realizado, soporta intencionalmente los procesos, por los cuales las empresas generan valor, y mide los efectos del cambio social y técnico. Esta es una forma de pensar y de trabajar que permite a los individuos y organizaciones desarrollar y mantener practicas de trabajo sustentables. Es un marco cultural para intercambiar historias y desarrollar empatía, permitiendo a las personas y equipos practicar sus oficios de manera efectíva y duradera. (Davis & Daniels, 2016)⁠

DevOps en sí mismo es un acrónimo de "Desarrollo" y "Operaciones".


Desarrollo: "Plan, Code, Build, Test".
Operación: "Release, Deploy, Operate, Monitor".

En una sesión posterior será considerado con mayor profundidad DevOps.

Tecnologías en el flujo de trabajo de DevOps














Adicional (Solo para los intereses del curso presencial)

En el marco del curso de aplicaciones en la nube de la MCIC (Maestría de Ciencias de la información y las comunicaciones) se plantéa el proyecto final, que consiste en la desarrollo y produción de un sistema de reconocimiento facial en Trasmilenio (Transporte Masívo de la ciudad de Bogotá-Colombia). Desarrollado en el marco de tecnologías agiles aplicacdas en DevOps.

Taller 1.

Documento Visión (por ejemplo, basado en la documentación del metodo Open Up).


Referencias


Davis, J., & Daniels, K. (2016). Effective DevOps (Vol. 1).

AWS. (n.d.). What is Cloud Computing? - Amazon Web Services. Retrieved from https://aws.amazon.com/what-is-cloud-computing/


No comments:

Post a Comment

IoT en la Nube

Sesión 6. IoT en la Nube ( 14 / Septiembre 2018 ) En la  sesión VI se describen las características de la implementación de IoT sobr...