domingo, 26 de marzo de 2017

DevOps y Docker


No lo parece, pero la aplicación de Docker en un entorno de producción requiere de un cambio importante de mentalidad.

Dicho así, suena raro, pero las ventajas de docker tienen mucho que ver con una manera de trabajar más colaborativa, que se identifica con una filosofía DevOps más que con una visión más clásica de la infraesctructura. Al menos es mi visión, y me voy a explicar.


Yo vengo del mundo de sistemas y siempre he trabajado con una filosofía según la cual no podía tocar ni una línea de código; en general la idea es provisionar entornos y entregarlos al equipo de desarrollo correspondiente para que haga su magia, y a partir de ahí ponerte la gorra de policía. Con la llegada y la implantación de la filosofía DevOps, la infraestructura ha pasado a ser parte del código, y se actualiza y modifica de la misma manera. Y estos modelos requieren de herramientas que permitan que estos cambios se hagan de la manera más fluida posible, y que los equipos se fusionan, integrando miembros multidisciplinares y que sepan jugar en equipo.Están empezando a llegar nuevos aires, y esto va a cambiar mucho los modelos que hemos tenido hasta ahora.

Alguien puede decirme que esta manera de trabajar es algo puntual (aunque lo he vivido en diferentes empresas) o el resultado de una mala (o buena) gestión; yo no voy a entrar en eso, sólo quiero explicar mi experiencia y cómo lo he visto yo.


Un saludo!

martes, 7 de febrero de 2017

Pinceladas de Docker (III) - Ventajas que te puede aportar Docker

Quería haber escrito y publicado esta entrada mucho antes, pero un accidente me ha dejado fuera de circulación durante unos meses, así que perdonad si llega un poco tarde pero tenía muchas ganas de seguir con esta serie.

Según lo veo yo, estas son las ventajas que (en este mismo momento) creo que son más... eso, ventajosas de utilizar docker en diferentes entornos

  • Docker se puede ver como un pequeño "ordenador" dentro de tu equipo: un pequeño entorno virtual con lo justo para que puedas ejecutar tu código o lanzar tus scritps. Las imágenes de docker se pueden tratar como pequeñas instancias virtuales, que podrás compartir con el resto del equipo de manera que todos tengáis el mismo entorno de trabajo independientemente de la plataforma que utilizéis.
  • Esto es gracias a que Docker tiene  una "cross platform architecture", una arquitectura de plataforma cruzada que permite que la misma imagen se pueda ejecutar igualmente sobre Windows o Linux. En equipos multidisciplinares, es ideal ya que todos podrán trabajar con el mismo entorno.
  • Al ser imágenes, las subidas a producción también son más sencillas y rápida, sin tener que entrar en configuraciones y dependencias de otros módulos del sistema, lo que permite implementar más fácilmente modelos de integración contínua que tanto se buscan en este momento.
  • Las diferentes imágenes son directamente las versiones de tu producto totalmente paquetizada y con la seguridad de que va a funcionar en cualquier entorno.
  • Gracias a herramientas como DockerFile, podemos automatizar y  desplegar entornos utilizando recetas y, de la misma manera que se hace con el código, mantener un control de versiones de nuestra infrastructura.


 Seguro que me salen más ventajas, os las iré comentando


Saludos!

jueves, 21 de julio de 2016

Pinceladas de Docker (II) - Docker HUB

La comunidad Docker es enorme, y crece cada día que pasa.
Sólo pásate por
https://hub.docker.com

para comprobar la cantidad de imágenes que hay, ya no sólo oficiales sino de gente que las sube para compartirlas.

Una de las ventajas principales que tiene docker sobre los entornos virtuales y que no comenté en el primer artículo que con Docker se acaba eso de "es que en mi local funciona!" que tantas veces hemos escuchado; todo el mundo podrá trabajar sobre el mismo entorno ya que docker permite la distribución de contenedores idénticos que los programadores podrán utilizar en local. Ahorran así tiempo en configuración y mantenimiento, además de unificar criterios.

En el próximo artículo intentaré recopilar todas las ventajas que yo veo que aporta Docker y que te pueden aportar mucho en tu día a día


Un saludo!

miércoles, 29 de junio de 2016

Pinceladas de Docker (I)

A estas alturas de la película, quien más y quien menos ha escuchado hablar de Docker, esa tecnología que ya lleva tiempo entre nosotros y que cada vez está más presente. De la misma manera, esta entrada no busca ser un tutorial o una guía muy exhaustiva, pero sí dar cuatro pinceladas a este producto que tanto está revolucionando.

Si habéis buscado en internet, habréis visto que la idea de fondo de los contenedores es similar a la de las máquinas virtuales; la gran diferencia es que las máquinas virtuales emplean recursos asignados en correr un segundo sistema operativo sobre el host que corren, mientras que los contenedores se aprovechan del sistema operativo subyacente y comparten algunas librerías y recursos con él, de manera que nos ahorramos recursos que podemos dedicar a levantar más contenedores.

En esta imagen se ve bastante claro lo que os decía

(fuente)
En el caso de las máquinas virtuales, sobre el SO tenemos el hipervisor que nos permite virtualizar el hardware e instalar diferentes instancias, cada una con sus sistema operativo propio, binarios, librerías y las aplicaciones que deseamos correr sobre ellas. De esta manera se hace un uso intensivo de los recursos del hardware que tenemos.
El caso de los contenedores es similar, pero nos permite aprovechar mejor los recursos; sobre el sistema operativo instalamos el motor de Docker, y encima desplegamos los contenedores y nuestras aplicaciones. Estos contenedores son imágenes relativamente pequeñas comparadas con un sistema operativo (llegando a unos pocos MB), y a nivel de recursos no tienen el mismo gasto que si fuera un sistema operativo completo.

Otra de las ventajas de docker sobre máquinas virtuales es que no requiere del gasto que implica la compra o alquiler de hardware para poder virtualizar instancias, sino que se puede desplegar tanto en entornos físicos como virtuales.


Un saludo!

lunes, 2 de mayo de 2016

Alta de usuarios en MySQL (|II)

Esta es una actualización de mi chuleta, y para el que lo necesite



A estas alturas ya sabemos que podemos definir los permisos que un usuario tiene a una base de datos (o tabla, o donde sea) usando GRANT; hay muchos tipos de privilegios pero los los más típicos que yo me encuentro son estos
  • SELECT: acceso sólo de lectura
  • INSERT: se permiten hacer inserts en la(s) tabla(s) seleccionada(s)
  • UPDATE: se permiten hacer updates en la(s) tabla(s) seleccionada(s)
  • DELETE: se permiten hacer delete de las filas que hay en la(s) tabla(s) seleccionada(s)
  • USAGE: no se permite nada, es un sinónimo para "sin privilegios".
  • ALL PRIVILEGES: todos los privilegios (no sólo incluye estos cuatro; aquí podéis encontrar un listado más completo)
Y para qué todo esto? Pues porque quiero actualizar ms notas

Esto es suficiente para dar de alta un nuevo usuario

 GRANT xxxxx on database.table to 'user'@'host' identified by 'password';

donde xxxxx son los permisos de los que os hablaba arriba.
Si además, queremos limitar el número de conexiones de ese usuario, añadimos al final la limitación, y quedaría de esta manera

 GRANT xxxxx ON database.table TO 'user'@'host' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS #;

El cambio de contraseña para un usuario, queda así

SET PASSWORD FOR 'user'@'host' = PASSWORD('yyyyyyyyyyyy');

Y qué hago si quiero saber qué privilegios tiene un usario, sobre qué y cómo esan definidos? Pues con este comando, que últimamente estoy utilizando bastante

SHOW GRANT FOR 'user'@'host';

que nos devolverá todos los permisos de ese usuario concreto; si  no le pasas el usuario (sólo "SHOW GRANT") te devolverá los privilegios del usuario con el que estás conectado.

martes, 15 de marzo de 2016