Charla impartida para CyLiconValley.
Los videos de las Demos están en esta lista de reproducción de Youtube => https://www.youtube.com/playlist?list=PL3428DhnIPQrv7MspVuU70iSD8IQF4avN
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
AWS para Torpes - Introducción a AWS
1. A W S P A R A T O R P E S
I N T R O D U C C I O N A A M A Z O N
W E B S E R V I C E S
2. I N D I C E
• Q u i c k I n t r o
• Q u e e s A W S
• S e r v i c i o s d i s p o n i b l e s
• P r e c i o s
• A P I s
• S 3
• E C 2
• R D S
• C l o u d w a t c h
• R o u t e 5 3
• C l o u d F r o n t
• B e a n s t a l k
• C l o u d F o r m a t i o n
49. • S c a l a b l e
• A l t a v e l o c i d a d y d i s p o n i b i l i d a d
• B a c k u p s
• A r c h i v o s d e 5 G b m a x
• N u m e r o i l i m i t a d o d e a r c h i v o s
• R e d u n d a n c i a e n Z o n a s y R e g i o n e s
• S i m p l e W e b i n t e r f a c e
• P r o v e e E n c r i p t a c i o n
• P r i v i l e g i o s d e a c c e s o
• 9 9 . 9 9 9 9 9 9 9 9 9 9 % D u r a b i l i t y
• N o e s u n F i l e S y s t e m
• W O R M ( W r i t e O n e R e a d M a n y )
50.
51.
52. E C 2 ( E L A S T I C C O M P U T E C L O U D )
55. T E R M I N O S
• Volumes (Persistentes y Volatiles)
• EBS Elastic Block Store
• Instancias optimizadas para EBS
• Elastic IPs
• Virtual Private Cloud
• CloudWatch
• Auto Scaling
• Elastic Load Balancing
• Security Groups
• Key Pairs .pem
• Snapshots
• AMIs
62. • S S D , I O P s A l t o r e n d i m i e n t o .
• T i p o s d e I n s t a n c i a s ( m 1 , m 2 , l a r g e , e t c )
• P a r c h e s a u t o m a t i c o s
• S n a p S h o t s ( B a c k u p s ) R e c o v e r y
• E s c a l a d o ( A l m a c e n a m i e n t o e I n s t a n c i a s )
• D i s p o n i b i l i d a d ( M u l t i p l e s Z o n a s )
• A P I s ( W E B C o n s o l e , C L I )
• P r e c o n f i g u r a d o ( p o r e l t i p o d e i n s t a n c i a )
• S u p e r v i s i o n , m e t r i c a s y n o t i f i c a c i o n e s
63.
64.
65.
66.
67. • M o n i t o r i z a c i o n e n t i e m p o
r e a l
• E C 2 y R D S
• C o s t e p o r u s o
• I n f o r m e s p o r u s o y t i p o d e
s e r v i c i o
• M o n i t o r i z a c i o n d e E L B
• G r a t u i t o ( B a s i c o )
• A l a r m a s c o n a c c i o n e s
a u t o m a t i z a d a s ( c o s t e )
80. P r o c e s o
• S u b i m o s e l c o d i g o
• A p r o v i s i o n a m i e n t o d e
r e c u r s o s
• I n s t a l a c i o n d e p a q u e t e s
p a r a e l S O
• D e p l o y d e l o s f u e n t e s
• E s c a l a d o a u t o m a t i c o
• M o n i t o r e o
91. C o n f i g u r a t i o n
M a n a g e m e n t
U s e r D a t a
92.
93. R e c u r s o s
www.lifeofpix.com
www.gratisography.com
www.flickr.com
aws.amazon.com
sketch-block.font
AWS in Plain English
Notes de l'éditeur
Quien Soy?
Trabajo en Osoco
Vicepresidente de CyLiconValley
Colaborador de AgileCyL
Desarrollador, Dev/ops…. de todo un poco.
Evolución de estados de los servidores en producción.
Antes era algo así para los administradores de sistemas
Cuando empecé a trabajar en GMV montaba Racks de servidores en Cluster, incluso Racks de bakups en otros centros. Desarrollaba Centros de control de satélites.
Tenía que montar todo el hardware, configurar el sistema completo, backups, etc
- En Deimos ya evolucionamos un poco y delegamos el alojamiento en un 3º (Housing) Pero esto seguía teniendo sus problemas. Toda la administración y instalación del hardware y sistema.
- Anda que no he echado yo horas arreglando cosas de producción así por que no había otro modo, colgadas las comunicaciones, ataques, virus, etc
- En Supertruper ya delegábamos toda la gestión del hardware en un 3º al principio
Al intentar entrar en otros países, necesitábamos más infraestructura, pero no sabíamos si iba a ser definitiva MVP.
Entonces pasamos a la nube de AWS, a continuación a DigitalOcean y algún servidor en Azure
Ahora en Osoco, tenemos todo automatizado en AWS. Con ejecutar un script en mi consola local o ejecutar una tarea de Jenkins, creo un stack completo de producción de un proyecto (Bases de datos, servidores webs, balanceadores de carga, autoescalado, etc)
En Supertruper buscábamos buen precio más que automatizar despliegues o servicios automatizados. Ahora en Osoco, buscamos más fiabilidad, escalabilidad y automatización.
Comparativa entre Servicios
Esta es mi opinión (Hasta que la cambie)
Azure: Por detrás de AWS en automatización y simplicidad
DigitalOcean: Barata pero pocos servicios
AWS: La más completa y avanzada
Amazon
Amazon Web Services
Amazon, nos podemos imaginar esto
Que es AWS?
Wikipedia: Es una colección de servicios web que en conjunto forman una plataforma de computación en la nube
Buffet Libre!
Lanzado oficialmente en 2006, casi 10 años.
Desarrollada para mantener la infraestructura de sus propios servidores.
En realidad son este tipo de edificaciones perdidas por la tierra
Entre 50,000 - 80,000 Servidores por datacenter
Todos los servicios de AWS
Servicios de computación
Almacenamiento y entrega de contenido
Bases de datos
Conexión y redes
Herramientas de Desarrollo
Herramientas de Gestión
- Seguridad e Identificación
Analíticas
Servicios para móviles
- Servicios para aplicaciones
Aplicaciones de empresa
Curiosidad de servicio => Amazon Mechanical Turk
Empresas que usan AWS
Nokia, Adobe, Nasa, Fútbol club Barcelona, Shazam, etc
Netflix basa todo su sistema en AWS y ha contribuido mucho con herramientas Open Source para ayudar a gestionar, mantener y securizar
Se dice que la mitad del tráfico de internet en USA es de Netflix
Probar la tolerancia a fallos de todo el sistema.
Asgard y muchas otras herramientas de ayuda open source en => http://netflix.github.io/#repo
En la imagen falta EU (Frankurt)
Dependiendo de a donde nos enfoquemos podemos elegir la región y la zona de disponibilidad. Cada región tiene varias zonas de disponibilidad.
Cada zona de disponibilidad se ejecuta en su propia infraestructura en ubicaciones físicas diferentes.
A más regiones y más zonas de disponibilidad ejecutando nuestra aplicación, menor latencia, mayor disponibilidad y mayor tolerancia a fallos.
Cuanto cuesta??
Es carillo… Cambia por regiones.
Precios => http://aws.amazon.com/es/pricing/
Calculadora de precios => http://calculator.s3.amazonaws.com/index.html
Precios de DigitalOcean => https://www.digitalocean.com/pricing/
Factura
Un par de servidores y sus discos EBS al mes
744Hrs = 31 días
Factura
Alarmas, dos stacks de 3 servidores (2x3 Small y 2x3 Medium) escalando si es necesario, balanceadores de carga, IP elástica, discos, bakups ,etc
Facturas
3 Instancias RDS con esclavos activados.
Web Console
Bueno id estirando que vamos a empezar con lo bueno!
Como lo usamos?
Recurso más socorrido para acceder a cualquier servicio de AWS
Referencia => http://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/getting-started.html
Demo => http://aws.amazon.com/es/
Cada servicio tiene su consola
Podemos hacer prácticamente de todo
Enseñar algunas consolas y ejemplos EC2, RDS, S3
Interfaz de linea de comandos => Herramienta unificada para gestionar los servicios de AWS
Se puede hacer de todo
Hay que configurar un par de variables de entorno al instalarlo y crear unas Access Keys
Configurar AWS CLI
Página principal
Documentación de referencia
Proyecto abierto
Demo
# aws help
# aws asdasas
# aws ec2 asdasdads
# aws ec2 describe-instances
# aws ec2 monitor-instances --instance-ids i-ede8e409
Con todo esto podemos crear scripts que hagan lo que queramos
API REST para algunas cosas
SOAP API también
Autenticación
Query Request API
Paso de hacer demo
SDKs y Tools
Referencias
http://aws.amazon.com/es/tools/
https://aws.amazon.com/developertools/
https://aws.amazon.com/code/
Cafe?
Amazon Simple Storage Service
Almacenamiento online que escalar muy rápido sin largos plazos para las actualizaciones.
Lo utilizan Dropbox, Spotify, etc
Sencilla interfaz que puede utilizarse para almacenar y recuperar la cantidad de datos que se desee
1º - Escribe, lee y elimina objetos que contengan desde 1 byte hasta 5 terabytes de datos. El número de objetos que puede almacenar es ilimitado (en un Bucket)
2º - Cada objeto está almacenado en un Bucket, y se recupera por medio de una clave exclusiva asignada por el desarrollador.
3º - Un Bucket puede estar almacenado en una de varias regiones. Puede elegir una región para optimizar la latencia, minimizar costes, etc
4º - Utiliza interfaces REST y SOAP
Sirve también archivos de audio o video, contenido estático, fronts de webs, etc
Los datos no se mueven de región a no ser que tu quieras.
S3 in plain English
Usos típicos:
Copia de seguridad y almacenamiento
Alojamiento de aplicaciones
Alojamiento multimedia
Suministro de software
Video S3 Demo
https://console.aws.amazon.com/s3/home?region=eu-west-1
Creamos un Bucket (El nombre debe de ser único): presentacion-charla-aws
Añadimos un archivo (seleccionamos permisos, añadimos metadatos (Clave,valor))
Ver detalles de un archivo y acciones
Demo CLI =>
# aws s3 ls
# aws s3 ls s3://presentacion-charla-aws/
# aws s3 cp README.txt s3://presentacion-charla-aws/README.txt
Ver en la consola que se ha subido y tenemos control total sobre él
Elastic Compute Cloud
Arquitectura web típica:
Creación de servidores bajo demanda
Rápido escalado, unos 2-3 minutos
Un año de uso gratuito para probar con una cuenta de AWS
Para hacerse una idea de lo que supondría una arquitectura un poco compleja.
EBS: Almacenamiento persistente independiente de las instancias de máquinas. Ahora SSD. Con ellas se pueden parar las máquinas y volver a arrancarlas. SSD, IOPS aprovisionadas (SSD) o discos magnéticos.
Elastic IP: No asociada a una instancia concreta, se pueden reasignar. Acordaros de cuando había que cambiar una ip de un servidor a otro antes :S
CloudWatch: Supervisión para las aplicaciones y los recursos de AWS, permite visualizar la utilización de recursos, el funcionamiento operativo y patrones de demanda en general (incluido el uso de CPU, las operaciones de lectura y escritura en disco y el tráfico de red). Puede obtener estadísticas, ver gráficos y definir alarmas para sus datos de métricas.
Auto Scaling: Permite escalar automáticamente la capacidad de Amazon EC2, para aumentarla o reducirla manualmente o según demanda. Servicio Gratuito
Elastic load Balancing: Balanceadores de carga que detectan el mal estado de servicios y redirige el tráfico hacia otras máquinas en ese caso, hasta que estas se recrean o se recuperan. Soporta SSL transparente para nosotros.
AMI: Podemos crear nuestras propias AMIs. Lista => http://alestic.com/ o https://aws.amazon.com/marketplace/ref=brs_navhdr_header
- http://www.ec2instances.info/?region=eu-west-1
Video de la Demo
Opción rápida, Opción a detalle (Instalar paso a paso ), AWSMarketPlace, BitNami
Demo
1º Crear una instancia paso a paso con el How to con un AMI con Wordpress.
2º Acceder a la máquina por ssh => # chmod 600 Downloads/wordpress-pruebas.pem; # ssh -i /path/to/private_key.pem ubuntu@ip
3º CLI:
# aws ec2 describe-instances
# aws ec2 describe-instance-status
# aws ec2 describe-volumes
Facilita las tareas de configuración, gestión y escalado de bases de datos relacionales
Backups, replicas, etc
Ahorro de tiempo de puesta en marcha, instalación, configuración y mantenimiento.
RDS nos proporciona instancias de bases de datos en pleno funcionamiento y con añadidos.
Podemos configurarlas, conectarnos a ellas desde cualquier cliente, realizar backups automáticamente, monitorizarlas, etc.
Podemos utilizar cualquier herramienta de gestión o análisis que estuviéramos usando previamente contra alguna de estas ddbb.
Diferentes precios => Dependiendo de licencias si es necesario como en Oracle.
Nueva Base de datos que va a soportar AWS, está en beta.
Estoy deseando probar si esos datos son verdad :D
Actualización: Parece que no!
AWS no soporta todos los motores de almacenamiento de todas las bases de datos que soporta.
Mysql no soporta bien MyISAM, puede ocasionar perdidas de datos y no se hacen backups de este motor de forma transparente como el resto. Utilizadlo revisando las limitaciones.
Creamos réplicas con un botón o un comando de consola. Perfecto para aplicaciones con lecturas intensivas
Pago por uso
Versiones desde la 5.1 a la 5.6.21 para Mysql
35 días máximo de retención de Backups
Restauración a un punto temporal
Sin Multi-AZ
Solo se puede promocionar a Master un servidor de manera manual, no automática si no lo tienes con Multi-AZ
Con Multi-AZ disponemos de una réplica latente en una zona de disponibilidad distinta que sustituirá automáticamente nuestra instancia master si esta entra en mantenimiento, falla o hay problemas en su AZ.
El despliegue Multi-AZ viene con un SLA garantizado del 99,95%
No sufre de picos de latencia cuando realizamos snapshots o copias de seguridad porque estos se hacen sobre la instancia latente.
Inconveniente: No podemos disponer de acceso a la instancia latente antes de que se produzca la caída de la principal, por lo que no nos permite descargarla de trabajo.
Video de la Demo
Consola WEB
Crear una con el How To. Enseñar todas las opciones
Dar acceso en el Security Group
Conectar desde máquina creada anteriormente con EC2.
Enseñar gráficas, Logs, SnapShots, Configuración de parámetros,
Crear una réplica de lectura
Servicio de supervisión de los recursos de AWS y de las aplicaciones que se ejecutan.
Métricas, hacer un seguimiento de las mismas, recopilar y supervisar archivos de registro y establecer alarmas. (CPU, Transferencia de datos, Disco) Básicas sin coste.
Puede supervisar instancias EC2 y RDS.
Métricas personalizadas generadas por las aplicaciones y los servicios
Supervisión de otros recursos de AWS
$3.50 por instancia al mes para la supervisión detallada con una frecuencia de 1 minuto
Supervisión de métricas personalizadas
$0.50 por métrica por mes
Definición de alarmas
$0.10 por alarma al mes
Visualización de gráficos y estadísticas
Tiene un API y te cobran por llamada
Video de la Demo
Consola WEB
Enseñar como es la consola web de CloudWatch
Enseñar las diferentes métricas
Enseñar como se crea una alarma EC2 y RDS
Servicio web DNS
Escalable y de alta disponibilidad
También puedes comprar y gestionar DNSes
Puedes apuntar a un balanceado de carga por DNS o a una máquina por IP o DNS
Redireccionado basado en latencia/geográfico.
También puedes comprar y gestionar DNSes
Redireccionado basado en latencia/geográfico.
Video de la Demo
Consola WEB
Muy sencillo
Admite todos los tipos de registros DNS: A, AAAA, CNAME, MX, NS, PTR, SOA, SPF, SRV, TXT
También lo podemos utilizar para apuntar a S3
Tiene varias herramientas disponibles
Servicio web de entrega de contenido de baja latencia y alta velocidad
Pago por uso
Sirve contenido estático (y dinámico)
Hace una copia de los contenidos en todas sus zonas para servirlos dependiendo de donde se le pidan geográficamente y dando un mejor servicio más rápido en respuesta.
http://docs.aws.amazon.com/gettingstarted/latest/swh/getting-started-create-cfdist.html
Usa un CDN con un solo DNS, AWS lo hace por ti.
Soporta Cookies y SSL
Sirve archivos de EC2 o S3
Web Console, API REST reference, Developer Guide
http://paulstamatiou.com/hosting-on-amazon-s3-with-cloudfront/
Carga aplicaciones y Elastic Beanstalk gestiona de forma automática los detalles
Aprovisionamiento de capacidad
Escalado automático
Supervisión del estado de la aplicación.
Admite aplicaciones web Java, Node.js, PHP, Python, Ruby .NET y contenedores Docker!
Apache Tomcat para aplicaciones Java
Apache HTTP Server para aplicaciones PHP y Python
Servidor HTTP Nginx o Apache para aplicaciones Node.js
Passenger para aplicaciones Ruby
Microsoft IIS 7.5 para aplicaciones .NET
Permite centralizar los logs en S3
Solo se cobra el uso de los servicios que se arranquen, no Beanstalk
Integración con repositorios Git
Autoescalado
Zero Downtime Deployment
Rollbacks al desplegar nuevas versiones con errores
Integración con RDS (Una nueva DDBB por environment, rehusar una existente y usar una alojada en un servidor EC2)
Video de la Demo
Web Console
Documentación
Creación de colecciones de recursos (Stacks) de AWS relacionados entre sí de una manera ordenada y predecible.
Definimos plantillas para describir los recursos de AWS a crear o modificar.
Totalmente gratuito, solo se paga lo que se cree.
Podemos crear Stacks completos para producción, testing o desarrollo con un solo click o desde Jenkins.
Un Stack se crea proporcionando una plantilla y todos los parámetros necesarios para AWS CloudFormation.
Según la plantilla y las dependencias especificadas en ella, AWS CloudFormation determina qué debe crearse y en qué orden.
Los Stacks se pueden modificar una vez creados.
Podemos crear Stacks idénticos o parecidos de manera automática para desarrollo o pruebas.
Podemos desplegar un nuevo Stack de producción para cambiar de versión de nuestra aplicación actual y no tener parada de servicio (Always Up!).
Uniendo esto al autoescalado, podemos tener 0 caídas de servicio :D
Una plantilla tiene la siguiente estructura de JSON de alto nivel:
Si la creación de un Stack falla, se destruirán todos los recursos creados hasta el momento y podemos volver a intentarlo manualmente.
Al destruir una pila se destruirán todos los recursos de esta.
Ejemplo sencillo en que se muestra cómo crear una instancia de EC2:
Web Console
Plantillas, Extractos
Developer Tools
Mostrar plantillas de ejemplo
API Query y AWS Cli
API Query Reference
Cli Parameters
Podemos hacer Scripts para automatizar la creación de stacks, interrogando a AWS por que recursos tenemos, como Backups, snapshots, AMIs, etc…
Podemos configurar los recursos una vez creados con CloudFormation utilizando herramientas de Control de Configuración como estas.
Podemos crear AMIs con las características del sistema como queramos.
User Data es un campo de recursos del Stack de CloudFormation, donde podemos definir comandos a ejecutar una vez levantado. Dark Side!
Video de Demo
Crear este Stack => Explicarlo por encima.
Web Console