CloudAPPi- Desarrollo en el mundo Cloud

Presentación de la Masterclass de DESARROLLO EN EL MUNDO CLOUD, jueves 19 de Marzo de 2020.

APis y Cloud hoy en día siempre van de la mano. Por lo tanto, debemos de entender bien las capacidades del mundo Cloud para que así podamos definir nuestras APis de una manera más eficiente.

Por lo tanto, hemos analizado:
- Introducción al mundo Cloud
- Tipos de Cloud
- IaaS, SaaS, PaaS
- Amazon Web Services
- Oracle Cloud
- Google Cloud Platform
- Microsoft Azure
- IBM Bluemix
- Consideraciones en el desarrollo
- Seguridad
- Ejemplos de arquitecturas Cloud
- DevOps
- SCI
- Herramientas de CI
- Tools
- Infraestructure as a code

Píldora de conocimiento: Kubernetes vs Docker

Ponente: Marco Antonio Sanz: CEO de CloudAPPi en España (una consultora especializada en el desarrollo de APIs dentro del mundo Cloud) y API Evangelist en ApiAddicts. Es uno de los mayores expertos en el mundo de Apigee.

Síguenos en nuestras redes sociales: https://www.linkedin.com/company/apiaddicts

¡Esperemos que os ayude!
Atentamente la Comunidad de APIAddicts!

Compartir en redes sociales

Compartir enlace

Usar vinculo permanente para compartir en redes sociales

Compartir con un amigo

Por favor iniciar sesión para enviar esto presentation por correo!

Publicar comentario con dirección de correo electrónico (se requiere confirmación de correo electrónico para publicar comentarios en el sitio web) o por favor iniciar sesión publicar comentario

DESARROLLO EN EL MUNDO CLOUD

¿Por qué es importante el mundo Cloud?

Demanda variable

Apis públicas

Backend

Demanda fija???

Apis internas

Apis partners

Source: http://media.amazonwebservices.com/AWS_Cloud_Best_Practices.pdf

¿Qué es el mundo Cloud?

Cloud Computing permite el aprovisionamiento dinámico de recursos (computación, almacenamiento…)

Características principales

Elasticidad

Pago por uso

Configurabilidad (API / web)

Seguridad

Asignación de recursos bajo demanda

¿Tipos de Cloud?

Cloud públicas

Pago por uso

Máximo grado de escalabilidad

Economía de escala

Fiabilidad

Flexibilidad

Independencia de localización

Cloud privadas

Mayor seguridad y privacidad

Mayor control

Aprovechamiento de infraestructura actual

Cloud híbridas

Aúna lo mejor de ambas soluciones, utilizando los

recursos de la cloud públicas sólo cuando es necesario

Fuente:http://www.interoute.es/cloud-article/what-hybrid-cloud

¿Tipos de Cloud?

No hay una regla fija

Dependerá del tamaño de la empresa y de la infraestructura

Dependerá de los conocimientos de administración y desarrollo

¿Qué tipo escojo para mi Api?

¿Iaas, Saas, Paas?

IaaS: Infraestructure as a Service

AWS

Windows Azure

Google Cloud Platform

PaaS: Platform as a Service

App Engine

Windows Azure

Heroku

SaaS: Software as a Service

Apigee

Amazon SES

¿Iaas, Saas, Paas?

¿Existe un administrador de sistemas?

¿Tengo conocimientos del PaaS?

¿qué presupuesto tienes?

¿qué flexibilidad necesitas?

¿Existe una política de no casarse con ningún cloud dentro de la organización?

¿Necesitas algún servicio que sólo te puede dar un determinado Cloud?

¿Qué escojo para mi Api?

¿Iaas, Saas, Paas?

AWS

¿Iaas, Saas, Paas?

Google

¿Iaas, Saas, Paas?

Windows Azure

¿Iaas, Saas, Paas?

Open Stack

¿Iaas, Saas, Paas?

Open Stack Red Hat

¿Iaas, Saas, Paas?

¿Cual escojo?

Coste (incluir costes de administración)

¿Mi Api necesita de algún servicio?

Requisitos legales

¿Qué control tengo que tener sobre los recursos?

¿Qué recursos necesitamos?

¿Qué conocimiento tienen los desarrolladores?

¿Qué requisitos de Big Data tengo?

Consideraciones en el desarrollo

Las Apis deben ser stateless

Autenticación y autorización. ¿Voy a utilizar un Api Manager?

Se debe utilizar el mínimo recurso de computo. ¿La Api necesita más recursos de memoria o de CPU?

Hay que tener cuidado a la hora de almacenar información. ¿Se pueden perder los datos al autoescalar?

Datos estáticos, utilizar un CDN

Normativa legal

Revisar los controles de elasticidad. ¿Podemos conocer la demanda?

Optimización de coste. Se desarrolla pensando en el Cloud

¿Quién no ha calculado el coste utilizando la calculadora de AWS?

Consideraciones en el desarrollo

Cálculo de costes y mejor instancia

Consideraciones en el desarrollo

Calcular estadísticamente qué servicios se van a utilizar.

Calcular número medio de peticiones hora

Estresar (normalmente una hora)

Instancia de más memoria

Instancia de más CPU

Sí con una instancia no se alcanzan las peticiones medias, probar la instancia mayor.

¿Qué obtenemos?

Coste por petición

Coste apróx

Verificando el cloud

Consideraciones en el desarrollo

Calculamos estadísticamente el máximo de peticiones /hora

Al redimensionar la infraestructura para peticiones media, deberíamos autoescalar

Comprobamos que se autoescala correctamente

Calculamos costes

¿Es seguro?

Seguridad

Estrictas normas reglamentarias

Herramientas de seguridad

WAF: permiten crear redes privadas y controlar el acceso a las instancias y aplicaciones

Los firewalls de red integrados

Cifrado en tránsito con TLS en todos los servicios

Opciones de conectividad que permiten establecer conexiones privadas o dedicadas desde su oficina o entorno local

¿Es seguro?

Seguridad

La disponibilidad tiene una importancia suprema en la nube. Los clientes aprovechan los beneficios de los servicios y las tecnologías de Cloud creados desde el principio para proporcionar resiliencia frente a los ataques DDoS.

Capa de seguridad adicional a sus datos en reposo en la nube mediante el suministro de características de cifrado escalables y eficientes.

Ejemplos

Gobierno de Apis

Ejemplos

DevOps

DevOps (acrónimo inglés de development -desarrollo- y operations -operaciones-) es una práctica de ingeniería de software que tiene como objetivo unificar el desarrollo de software (Dev) y la operación del software (Ops).

La principal característica del movimiento DevOps es defender enérgicamente la automatización y el monitoreo en todos los pasos de la construcción del software, desde la integración, las pruebas, la liberación hasta la implementación y la administración de la infraestructura.

DevOps - SCM

Software que gestiona la gestión eficaz del código fuente

Git (Github, gitlab, confluence, Azure Devops, AWS Code Commit…). Su característica principal es la gestión distribuida de repositorios.

Subversion. Gestión centralizada de resposotorios.

DevOps - Herramientas de CI

Herramientas que permiten hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes. Entendemos por integración la compilación y ejecución de pruebas de todo un proyecto.

Jenkins: De las más antiguas y más potentes, posee un conjunto de plugins que permite hacer una gran cantidad de operaciones.

Gitlab: Posee una interacción muy interesante con su repositorio de control de versiones, se basa en un fichero .gitlab-ci.yml de tu repositorio de código y se ejecuta en runner.

CircleCI: Herramienta muy sencilla para hacer entrega continua muy integrada con Github.

AWS Code Deploy

Azure reports

DevOps - Tools

Herramientas de automatización de scripts:

Puppet: Se instalan agentes en los servidores que descargan de un catálogo la lista de cambios (permite monitorizar los cambios aplicados). Más orientado a los administradores.

Chef: Basada en Ruby, permite generar recetas que son ejecutadas en los servidores. Más orientada a desarrolladores.

Ansible: Basada en Python, usa playbooks escritos en yaml que son ejecutados en los servidores (posee una estación con el mapa de los servidores a gestionar y listado de credenciales SSH)

DevOps - Infrastructure as a code

Permite gestionar tu infraestructura como si fuera código.

Terraform: Multi Proveedor, se está implantando en el mercado.

Cloud Formation: Disponible en AWS y fue el primer sistemas de estas características.

Píldora de conocimiento

Microservicios

Servicios “pequeños” y fáciles de abordar.

Cada servicio debe ser monolítico.

Píldora de conocimiento

Docker

Sistema de virtualización ligero

Permite realizar contenedores portables.

Lo están implementando los principales Cloud.

Ideal para microservicios

Kubernetes

Referido en inglés comúnmente como “K8s”, es un sistema de código libre para la automatización del despliegue, ajuste de escala y manejo de aplicaciones en contenedores1​ que fue originalmente diseñado por Google y donado a la Cloud Native Computing Foundation (parte de la Linux Foundation). Soporta diferentes entornos para la ejecución de contenedores, incluido Docker.

Píldora de conocimiento

Kubernetes

Referido en inglés comúnmente como “K8s”, es un sistema de código libre para la automatización del despliegue, ajuste de escala y manejo de aplicaciones en contenedores1​ que fue originalmente diseñado por Google y donado a la Cloud Native Computing Foundation (parte de la Linux Foundation). Soporta diferentes entornos para la ejecución de contenedores, incluido Docker.

Píldora de conocimiento

Ruegos y preguntas

Vistas

  • 2379 Vistas totales
  • 1986 Vistas del sitio web

Acciones

  • 0 Acciones Sociales
  • 0 Me gusta
  • 0 No me gusta
  • 0 Comentarios

Veces compartido

  • 0 Facebook
  • 0 Twitter
  • 0 LinkedIn
  • 0 Google+