Just Code or How I learned to write code and stop worrying about the environment

Post on 13-Jun-2015

548 views 0 download

Tags:

description

Cómo crear un entorno de desarrollo que pueda ser llevado a producción

Transcript of Just Code or How I learned to write code and stop worrying about the environment

Just CodeHow I learned to write code and stop worrying

about the environment

¡Hola !

Enrique SánchezTester & Automation EngineerPhD Student

• Technical Team Leader y Responsable Técnico del Área de Testing en

!!!• Más de 3 años de experiencia en testing en empresas como !!

!• Evangelista BDD y Agile

¿Quién soy?

¿Por qué esta charla?

¿Cuántas veces hemos intentado probar un “juguete” nuevo y hemos dejado el ordenador lleno de basura?

¿Cuántas veces tenemos que luchar contra configs porque tenemos una versión de SO “especial”?

¿Por qué si intentamos subir a producción/integrado/el ordenador de al lado un código que en nuestro local funciona pero que mágicamente deja de funcionar?

¿¿¡¡Por qué no puedo sólo programar!!??

Pongamos un Caso PrácticoEl extraordinario caso de Joan y Enric

Joan y Enric son dos colegas que tienen una idea…

Crear un programa con las tecnologías más

hipsters del momento y vendérselo a

Enseguida empiezan a pensar y les salen unas cuantas tecnologías que pueden usar:

Tras arduas discusiones deciden que usarán un SO concreto para desarrollar

!

!

Y llevarán su aplicación a Amazon Web Services

¿Problemas?

Hacer pruebas ahí es muy caro

Tienen que estar conectados por ssh constantemente

Es un engorro tener que pusiera constantemente a un repo para hacer pruebas en remoto. ¿Qué pasa si se rompe algo?

Virtualización

Enric investiga por Internet y descubre algo llamado

¿Qué es Vagrant?

Vagrant es un gestor de máquinas virtuales

Permite provisionar las máquinas mediante un archivo de configuración llamado Vagrantfile

Puede ser provisionado usando: Bash,Puppet,Chef,Docker…

Permite tener versionado la forma en la que se provisiona una máquina (virtual o física)

Pueden hacer pruebas en local sin miedo a romper nada

Además descubre una cosa llamada

¿Qué es Packer?

Packer is a tool for creating identical machine images for multiple platforms from a single source

configuration.

Packer permite crear una máquina virtual precompilada

Puedes tener la misma versión para producción (Amazon) y para local (Vagrant)

Packer +Vagrant + Puppet

Demo I

Joan y Enric están muy felices y contentos, tienen un entorno para jugar y hacer experimentos

Joan se encargará del Front y Enric del Back

Joan decide usar                  y

!

Enric piensa que NodeJS es muy bonito pero que prefiere y que mejor usa

Joan y Enric se paran a pensar y dibujan un esbozo de cómo sería la arquitectura

Fron

t End

Back

End

Hype

Queu

eDB

JHipster

http://jhipster.github.io/

¿Cómo metemos esto en una VM?

¿Puppet, Chef, Bash? Están bien para pequeñas cosas pero levantar un servicio es un “poco” más complejo de lo que parece

Además, ¿qué pasa si queremos que las BBDD estén en otra máquina?

Docker is an open platform for developers and sysadmins to build, ship, and run distributed

applications.

Extiende LXC (contenedores que corren en paralelo sobre la misma máquina anfitriona)

No emula una máquina virtual completa ni corre un sistema operativo íntegro dentro de ella, a costa de quedar “atado” al sistema operativo anfitrión, que se expone a las aplicaciones

¿Cómo gestionan el software?

flow

Vagrant + Puppet + Docker + stack

Demo II

Pero el código aumenta y hackear en paralelo a ver qué se consigue deja de ser una opción si quieren conseguir algo más estable.

Pero el código aumenta y hackear en paralelo a ver qué se consigue deja de ser una opción si quieren conseguir algo más estable.

Integración

Continua

¿Qué es IC?

Continuous Integration is a software development practice where members of a

team integrate their work frequently (…)

Each integration is verified by an automated build (including test) to detect integration errors

as quickly as possible

Un job para Máster …

otro que pruebe Release …

otro para Develop/Rama …

otro para desplegar el código en los entornos

Una vez que el software funciona hay que desplegarlo en Amazon…

Una vez que el software funciona hay que desplegarlo en Amazon…

Artefactos, versiones del front…

Rock’n’roll

Demo III

Preguntas?Gracias!

Enrique Sánchez | hola@enrique-sanchez.me | @EnriqueSanchezB