<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.0.0">Jekyll</generator><link href="https://javier.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://javier.dev/" rel="alternate" type="text/html" /><updated>2020-05-06T03:25:11+02:00</updated><id>https://javier.dev/feed.xml</id><title type="html">javier.dev</title><subtitle>Site Reliability Engineer at Payvision. Views expressed on this blog are solely my own, not those of present or past employers.</subtitle><author><name>Javier Revillas</name></author><entry xml:lang="es-ES"><title type="html">Boring stack y eficacia a corto plazo</title><link href="https://javier.dev/2020/05/06/boring-stack-y-eficacia-a-corto-plazo/" rel="alternate" type="text/html" title="Boring stack y eficacia a corto plazo" /><published>2020-05-06T00:00:00+02:00</published><updated>2020-05-06T00:00:00+02:00</updated><id>https://javier.dev/2020/05/06/boring-stack-y-eficacia-a-corto-plazo</id><content type="html" xml:base="https://javier.dev/2020/05/06/boring-stack-y-eficacia-a-corto-plazo/">&lt;p&gt;La historia de mi equipo es muy reveladora. Empezamos como una prueba de
concepto para modernizar parte del stack y mejorar la &lt;a href=&quot;https://oreilly.com/library/view/accelerate/9781457191435/&quot;&gt;deployment
frequency&lt;/a&gt; de
algunos productos. De esto hace ya dos años, aunque el primero no fue nada
fácil.
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Payvision era una organización con diez años de &lt;strong&gt;.NET&lt;/strong&gt;, &lt;strong&gt;SQL Server&lt;/strong&gt; y
&lt;strong&gt;Windows&lt;/strong&gt; a sus espaldas; un stack bien sólido. La infraestructura
—completamente on-premise— se administraba desde nuestra sede en Amsterdam.
Nuestro margen de maniobra estaba muy limitado y las herramientas de las que
disponíamos no resultaron efectivas fuera del mundo Microsoft.&lt;/p&gt;

&lt;p&gt;La estrategia no contemplaba adoptar &lt;a href=&quot;/2020/04/27/kubernetes-a-punetazos/&quot;&gt;Kubernetes a puñetazos&lt;/a&gt;; sin embargo, estos fueron los cimientos
de Atlas, la plataforma que operamos hoy en día. Virtualizamos sobre &lt;strong&gt;VMware&lt;/strong&gt;,
y &lt;strong&gt;Red Hat Enterprise Linux&lt;/strong&gt; es el sistema operativo donde corren los
contenedores que orquestamos a través de varios clusters de &lt;strong&gt;Kubernetes&lt;/strong&gt;.
Administramos nuestro propio registro de imágenes con
&lt;a href=&quot;https://goharbor.io&quot;&gt;&lt;strong&gt;Harbor&lt;/strong&gt;&lt;/a&gt; y mantenemos varios clusters de
&lt;strong&gt;Elasticsearch&lt;/strong&gt;. Los agentes de entrega continua y algún que otro producto de
seguridad cuelgan también de nuestro backlog.&lt;/p&gt;

&lt;p&gt;Trabajar con un stack «manejable» es sin duda alguna la lección más valiosa que
hemos aprendido. Nos movemos en un entorno donde la novedad golpea con una
frecuencia casi diaria; sin embargo, nos gustaría ser &lt;a href=&quot;https://en.wikipedia.org/wiki/Early_adopter&quot;&gt;early
adopters&lt;/a&gt; de muchos proyectos que
entran en la &lt;a href=&quot;https://www.cncf.io&quot;&gt;CNCF&lt;/a&gt;. La experiencia nos obligó a concretar
un &lt;strong&gt;budget de innovación&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Para materializar este nuevo balance revisamos una cláusula de nuestro contrato:
la que destina el 10 % de nuestro tiempo a formación. Tradicionalmente hemos
podido dedicar este tiempo a jugar con nuevas tecnologías, preparar charlas o
contribuir a proyectos open source. Nuestra propuesta para los &lt;strong&gt;viernes de
proyectos&lt;/strong&gt; se puede entender como una iteración sobre esta cláusula:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Todos los viernes.&lt;/strong&gt; Se trata de un esfuerzo significativo para cualquier
organización, ya que requiere casi un 20 % del tiempo del equipo.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Propuestas concretas.&lt;/strong&gt; La motivación, los objetivos y el scope de cada
proyecto quedan recogidos en un repositorio gestionado por el equipo. Los
resultados y las conclusiones de cada proyecto también forman parte de este
repositorio.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Aprobación del equipo.&lt;/strong&gt; El visto bueno necesario para empezar a trabajar en
un proyecto se otorga por unanimidad y ningún agente externo al equipo
interviene en la toma de decisiones.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Solo para proyectos.&lt;/strong&gt; Este plan se concibe con un enfoque pragmático y no
contempla cursos de formación ni certificaciones.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Completamente opcional.&lt;/strong&gt; Como estas condiciones no aparecen en nuestro
contrato, cada miembro del equipo es libre de adherirse o no a ellas. No se
trata de una imposición.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Me atrevería a definir esta iniciativa como una &lt;strong&gt;solución de compromiso&lt;/strong&gt;. De
lunes a jueves se trabaja por y para el backlog:
&lt;a href=&quot;https://stevebate.silvrback.com/go-is-boring&quot;&gt;boring stack&lt;/a&gt; y eficacia a corto
plazo. Los viernes, en cambio, quedan blindados para invertir en soluciones que
nos permitan mejorar como equipo y ampliar horizontes.&lt;/p&gt;

&lt;p&gt;Dios me libre de recomendar abiertamente este modelo, ya que todavía no
disponemos de métricas que respalden su eficacia. Hoy me limito a compartirlo
con el mundo, libre de toda responsabilidad.&lt;/p&gt;</content><author><name>Javier Revillas</name></author><category term="culture" /><summary type="html">La historia de mi equipo es muy reveladora. Empezamos como una prueba de concepto para modernizar parte del stack y mejorar la deployment frequency de algunos productos. De esto hace ya dos años, aunque el primero no fue nada fácil.</summary></entry><entry xml:lang="es-ES"><title type="html">Kubernetes a puñetazos</title><link href="https://javier.dev/2020/04/27/kubernetes-a-punetazos/" rel="alternate" type="text/html" title="Kubernetes a puñetazos" /><published>2020-04-27T00:00:00+02:00</published><updated>2020-04-27T00:00:00+02:00</updated><id>https://javier.dev/2020/04/27/kubernetes-a-punetazos</id><content type="html" xml:base="https://javier.dev/2020/04/27/kubernetes-a-punetazos/">&lt;p&gt;Organizaciones con objetivos diametralmente opuestos. De todos los tamaños,
países y sectores. Todas adoptando Kubernetes.
&lt;!--more--&gt;
Existen motivos —fuera del ámbito exclusivamente técnico— que respaldan la
brutal adopción de este popular orquestador. El objetivo de este post pasa por
compartir algunos de los más significativos.&lt;/p&gt;

&lt;p&gt;Despliegues manuales. Desarrolladores accediendo a entornos productivos. Scripts
que solo entiende aquel fulano que se fue de la empresa. Java. Una política de
versionado pobre o inexistente. Aquella caja de Pandora disfrazada de parche de
seguridad. Las &lt;strong&gt;historias de terror&lt;/strong&gt; pre-Kubernetes existen y están ahí para
movilizar a los managers.&lt;/p&gt;

&lt;p&gt;Por si fuera poco, las &lt;strong&gt;ofertas de empleo&lt;/strong&gt; continúan degenerando y ahora
parecen cartas a los Reyes Magos: AWS, Azure, OpenStack, Jenkins, Docker,
Kubernetes, Elasticsearch, Perl, Python, Ruby, Bash, Ansible, Puppet, Terraform,
Chef… El candidato idóneo está obligado a acumular experiencia sobre todas
estas tecnologías.&lt;/p&gt;

&lt;p&gt;El mercado se ha vuelto loco y el miedo a quedarse fuera por no dar la talla es
tan real como ridículo. Así pues, cada día más empresas se suman a esta
agotadora tendencia por sufrir el stack más absurdo.&lt;/p&gt;

&lt;p&gt;No obstante, la rigidez en el stack es un lujo al alcance de muy pocas
organizaciones. La ausencia de esta, en cambio, se suele disfrazar de “salario
emocional”. Este problema —aunque organizacional— encaja a la perfección con una
solución basada en contenedores.&lt;/p&gt;

&lt;p&gt;Las arquitecturas orientadas a &lt;strong&gt;microservicios&lt;/strong&gt; suelen favorecen una eventual
explosión del stack tecnológico. Cada pocos meses aparecerá la oportunidad de
emprender nuevas aventuras con un framework o lenguaje distinto. La distancia
aparente entre este nuevo juguete y el entorno de producción es un &lt;code class=&quot;highlighter-rouge&quot;&gt;Dockerfile&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Este esfuerzo por ampliar horizontes supone un &lt;strong&gt;coste operacional&lt;/strong&gt; difícil de
asumir. De ahí que Kubernetes también imponga sus propias normas con el objetivo
de automatizar y simplificar las operaciones:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Siempre son contenedores. Los artefactos, por lo tanto, siempre tienen la
misma forma: imágenes de Docker.&lt;/li&gt;
  &lt;li&gt;Los logs van a &lt;code class=&quot;highlighter-rouge&quot;&gt;stdout&lt;/code&gt; y &lt;code class=&quot;highlighter-rouge&quot;&gt;stderr&lt;/code&gt;. Un problema menos para la aplicación, ya
vendrá alguien a recogerlos.&lt;/li&gt;
  &lt;li&gt;Comprobar y exponer el estado de los procesos. ¿Está listo para atender
peticiones? ¿Hace falta otra instancia del proceso? Responder a estas preguntas
de manera programática permite a la plataforma tomar decisiones que hasta ahora
eran manuales.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El discurso de &lt;strong&gt;marketing&lt;/strong&gt; de los cloud providers ha calado. Ya no importa si
uno tiene la suerte de hacer negocio con un número modesto de peticiones y poco
tráfico. Si la API no está preparada para recibir una bestialidad de consultas
por segundo, parece que está mal diseñada. Para sorpresa de nadie, Kubernetes
complace esta ambición de escalar sin coste aparente. Todos los días pueden ser
como el Prime Day para Amazon, pero sin métricas.&lt;/p&gt;

&lt;p&gt;En definitiva, no acumular &lt;strong&gt;malas prácticas&lt;/strong&gt; es imposible y las más difíciles
de identificar están enquistadas en todo el sector. La falta de experiencia
acumulada hace que el factor humano sea problema y solución al mismo tiempo, no
existen respuestas absolutas. Amazon, Google y Microsoft marcan el ritmo, pero
resulta casi imposible diferenciar entre señal y ruido cuando todo es nuevo.&lt;/p&gt;

&lt;p&gt;Es difícil de percibir en un primer vistazo, pero tanto Kubernetes como otras
tecnologías complementarias se han diseñado con estas miserias en mente. No
están limitadas a un contexto estrictamente técnico, sino que acaban forzando un
modelo alternativo que obliga a rediseñar y transformar toda clase de procesos.
Ya sea a puñetazos o no, vale la pena estudiar el impacto de un producto así en
el entorno profesional.&lt;/p&gt;</content><author><name>Javier Revillas</name></author><category term="kubernetes" /><summary type="html">Organizaciones con objetivos diametralmente opuestos. De todos los tamaños, países y sectores. Todas adoptando Kubernetes.</summary></entry></feed>