aws elastic beanstalk + docker

13

Click here to load reader

Upload: mariano-german-egui

Post on 12-Jan-2017

261 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Aws Elastic Beanstalk + Docker

AWS Elastic Beanstalk

+ Docker

@EguiMariano

Page 2: Aws Elastic Beanstalk + Docker

About me...Mariano Germán Egui

Trabajo como desarrollador webMe gustan las buenas prácticasMe preocupa la seguridad de la aplicaciónParticipó de Meetups y voy a conferencias relacionadas a desarrollo e InfraestructuraSoy 100% amateur, programo en muchos lenguajes y me mande hacer el elefante de PHP

Twitter: @eguimariano

[email protected]

@EguiMariano

Page 4: Aws Elastic Beanstalk + Docker

Amazon Web Services (AWS) es una plataforma de servicios cloud que ofrece potencia de cómputo, almacenamiento en bases de datos, entrega de contenido y otra funcionalidad para ayudar a la creación de aplicaciones o servicios más flexibles, escalables y fiables.

¿Que es AWS?

Fuente: https://aws.amazon.com/es/what-is-aws/

@EguiMariano

Page 5: Aws Elastic Beanstalk + Docker

¿Que es Docker?

Docker permite empaquetar una aplicación con todas sus dependencias en una unidad estandarizada para el desarrollo de software.

Fuente: https://www.docker.com/what-docker

@EguiMariano

Page 6: Aws Elastic Beanstalk + Docker

AWS Elastic Beanstalk

Con AWS Elastic Beanstalk, puede implementar y gestionar aplicaciones en la nube de AWS de forma rápida sin preocuparse por la infraestructura que ejecuta estas aplicaciones. AWS Elastic Beanstalk reduce la complejidad de la gestión sin restringir la elección o el control. Sólo tiene que cargar su aplicación y AWS Elastic Beanstalk gestiona automáticamente los detalles de aprovisionamiento de capacidad, equilibrio de carga, la escala y vigilancia de la salud de la aplicación.

Fuente: https://aws.amazon.com/en/documentation/elastic-beanstalk/

@EguiMariano

Page 7: Aws Elastic Beanstalk + Docker

Beanstalk nos permite subir nuestras aplicaciones desentendiendo nos de su ambiente (infraestructura) de ejecución, estrategia de escalabilidad y monitoreo. Podemos subir directamente nuestro código PHP, Java, Node.Js, Python, Ruby e incluso “.NET”.

¿Pero es lo que realmente queremos?

Los que trabajamos en el caos (con VIM en producción) sabemos que la pérdida de performance, la posible caída de nuestra aplicación o la congestión de nuestro network, no siempre es la consecuencia de nuestro código, la coexistencia con proceso en el servidor (BATCH) y la configuración del mismo, nos recuerda que nuestra aplicación es dependiente de nuestro ambiente (infraestructura).

@EguiMariano

Page 8: Aws Elastic Beanstalk + Docker

¿Entonces por que Beanstalk?

@EguiMariano

Page 9: Aws Elastic Beanstalk + Docker

● Contiene la aplicación con su ambiente (code, runtime, system tools, system libraries)

Nos garantiza que siempre se ejecutará la misma aplicación, independientemente del entorno en el que se está ejecutando.

Beanstalk● Configurable● Sencillez para desplegar● Facilidades para escalar● Herramientas de monitoreo

Nos garantiza que nuestra aplicación este uptime y performe en caso de aumentar nuestro tráfico.

Docker

@EguiMariano

Page 10: Aws Elastic Beanstalk + Docker

Beanstalk + Docker

● Facil de configurar● Facil de desplegar● Facil de escalar● Facil de monitorear● Garantiza el ambiente de ejecución

@EguiMariano

Page 11: Aws Elastic Beanstalk + Docker

OK, let's go!

1. Instalar Docker2. Crea una imagen de Docker3. Subir imagen a Docker Hub

1. Crea una cuenta de AWS2. Crea y configura un

servicio de Beanstalk3. Adjunta el JSON que invoca

la imagen de Docker Hub

@EguiMariano

https://github.com/megui88/demo-docker

Page 12: Aws Elastic Beanstalk + Docker

Instalar Docker, crear y subir una imagen a Docker Hub~➤ sudo apt-get install docker.io

~➤ echo 'FROM ubuntu:14.04.4 MAINTAINER Mariano Egui <[email protected]>RUN apt-get updateRUN apt-get -y install apache2EXPOSE 80CMD /usr/sbin/apache2ctl -D FOREGROUND

' > Dockerfile

~➤ sudo docker build -t megui88/demo-apache . Sending build context to Docker daemon Step 0 : FROM ubuntu:14.04.414.04.4: Pulling from ubuntuc5bd5ad78820: Downloading [=======================> ] 55.67 MB/65.69 MBc0f170469eea: Download complete be70b523781c: Download complete

~➤ sudo docker images

~➤ sudo docker run -p 8080:80 -ti megui88/demo-apache

~➤ sudo docker tag imageID megui88/demo-apache:latest

~➤ sudo docker push megui88/demo-apache:latest The push refers to a repository [megui88/demo-apache] (len: 1)bfd32ee9f6f3: Image push failed Please login prior to push:Username: megui88Password: Email: [email protected]: login credentials saved in /home/megui/.dockercfg.Login SucceededThe push refers to a repository [megui88/demo-apache] (len: 1)bfd32ee9f6f3: Image already exists a800bc297d49: Image successfully pushed a6ee75b6a5af: Pushing [==> ] 262.1 kB/5.274 MB

https://hub.docker.com/r/megui88/demo-apache/

@EguiMariano

Page 13: Aws Elastic Beanstalk + Docker

AWS JSON Dockerrun.aws.json~➤ echo ‘

{ "AWSEBDockerrunVersion": "1", "Image": { "Name": "megui88/demo-apache", "Update": "true" }, "Ports": [ { "ContainerPort": "80" } ]}

‘ > Dockerrun.aws.json

@EguiMariano

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html