Blog

Tecnología para Desarrollo

Parlamento, el código de honor de los javeros

De un tiempo a esta parte, con la experiencia de los últimos proyectos en los que he trabajado, me he dado cuenta de que al inicio de un proyecto (y en fases regulares del mismo) es muy importante establecer unas convenciones de código y de diseño.

Aunque sea algo que en apariencia se presupone, no deberíamos de tomarlo como tal, ya que en muchos casos no se lleva a cabo.

Como bien se decía en la saga “Piratas del Caribe”, es fundamental “parlamentar” para establecer una reglas mínimas con el acuerdo de todos los miembros técnicos del equipo.

¿En qué consiste esta problemática? ¿Qué podemos hacer para darle solución? Veamos algunas pautas que podemos tener en cuenta como una sencilla y breve guía.

sigue leyendo…

Despliega tu chatbot en una hora con Dialogflow

En más de una ocasión, hablando con los compañeros de la oficina, nos hemos dado cuenta de que muchas veces nos perdemos meetups de gran interés. No es algo que nos haya pasado una vez ni dos. Por desgracia, es algo que nos ha ocurrido con frecuencia, bien porque nos enteramos tarde (a veces el mismo día) o incluso a toro pasado.

Por eso, nos propusimos tratar de solucionar este tema de alguna manera, ya que las newsletter de algunos meetups no siempre funcionan o no se les presta la debida atención.

Para resolver este problema, empezamos a pensar en una solución de bajo coste: una pizarra + post-it/rotulador (esto es algo rápido y se puede validar rápidamente si funciona o no).

Pero para que tenga éxito hay que buscar un sitio de paso en el que la gente se detenga delante del tablón a leer la información (no nos vale con que simplemente pasen de largo).

Poner una pizarra de estas características es complicado. Los mejores sitios impactan mucho en la estética de la oficina, así que hemos empezado a abordar otras soluciones de carácter más tecnológico. ¿Cuál ha sido el resultado final? Veámoslo paso a paso.

sigue leyendo…

Microservicios 2.0: Spring Cloud Netflix vs Kubernetes & Istio

Hace ya casi tres años que comenzó el boom de las arquitecturas de microservicios. Todavía recuerdo, allá por 2015, cuando redacté el que fue mi primer post sobre los componentes de la arquitectura de microservicios de Spring Cloud Netflix.

Con el paso del tiempo, la arquitectura ha ido madurando y se han ido incorporando por parte de Spring Cloud a la misma nuevas soluciones que solventan problemáticas típicamente cloud. Es el caso, por ejemplo, de Sleuth, Zipkin, Contract

Pero hoy en día la arquitectura está tendiendo a evolucionar hacia algo diferente. En este post vamos a analizar cuál ha sido el recorrido de la arquitectura de microservicios hasta ahora y cuáles son las herramientas y tecnologías que nos acompañarán en el futuro.

sigue leyendo…

Pipelines de Jenkins: evolución del Continuous Delivery

Cada vez es más frecuente escuchar la palabra “Pipeline” y, a su vez, es más común ver proyectos que tienen sus pipelines desarrollados con Jenkins.

Hace no mucho, me tocó adentrarme en el mundo de los pipelines de Jenkins y, por este motivo, me he decidido a escribir este post con las conclusiones que he sacado durante este tiempo de aprendizaje.

sigue leyendo…

Gomezh, creando un service mesh desde cero

Ya hemos hablado en el blog de qué es el Service Mesh y cómo puede ayudar a nuestras arquitecturas de microservicios. En este post nos embarcamos en la creación de un pequeño service mesh que potencie nuestra arquitectura de microservicios (MSA) haciendo uso del patrón sidecar.

Los objetivos que tenemos con este desarrollo son, por un lado, conocer los mecanismos usados por este tipo de componentes para hacer que las aplicaciones y los desarrolladores se centren en la lógica de negocio y se puedan olvidar de temas complejos inherentes a los microservicios.

Por otro, ofrecer ayuda a equipos de desarrollo centrados en funcionalidad y no en características técnicas y adentrarnos en uno de los lenguajes de moda para entornos cloud, Golang.

sigue leyendo…

Primeros pasos con AMP⚡(Accelerated Mobile Pages)

En los dos últimos años habrás notado que tanto en los resultados de los buscadores como en determinados enlaces publicados en redes sociales aparece un pequeño rayo . Esos contenidos están haciendo uso de la tecnología AMP.

AMP (Accelerated Mobile Pages) es una iniciativa open-source impulsada en un primer momento por Google y promovida por varias compañías. Pretende ser un estándar para la creación de contenidos de consumo ultra rápido dentro del universo de los dispositivos móviles.

Veamos qué sectores son los que más utilizan este tipo de tecnología y qué ventajas les aportan.

sigue leyendo…

Stencil.js: crear web components nunca fue tan fácil

Hace unos meses en la Polymer Summit 2017 desde el equipo Ionic lanzaban una pequeña bomba. Y es que Ionic 4 dejará de estar atado a Angular y podrá ser usado con la librería/framework que queramos. Es decir, que podremos usar Ionic con Angular (como venía siendo hasta ahora), con Vue.js, React o lo que queramos.

¿Por qué han tomado a esta decisión? Porque han visto que el camino que está siguiendo ahora mismo el universo Front es el de crear componentes reutilizables y agnósticos a cualquier framework. En este post nos centraremos en Stencil.js como una de las posibles soluciones.

sigue leyendo…

Cómo optimizar tu aplicación Java en Docker (2/2)

En nuestro anterior post hablamos de las diferentes memorias que componen la JVM y de la problemática de Java 8 y los cgroups.

Al final de nuestro viaje habíamos acotado todas las memorias, pero nos seguíamos encontrando en la situación en que después de cierto tiempo los consumos seguían excediendo los límites establecidos.

Habíamos llegado a una situación que empezaba a tomar matices de Expediente X. El proceso Java seguía consumiendo más memoria de la que reportaban tanto jConsole como jcmd. ¿Cómo era eso posible? Fue entonces cuando tocó adentrarse en lo desconocido…

sigue leyendo…

Cómo optimizar tu aplicación Java en Docker (1/2)

Seguro que alguna vez has tenido que desplegar una aplicación java en un docker. Si lo has hecho en cualquier tipo de infraestructura cloud que utilice esta tecnología, te habrás encontrado con la sorpresa de la cantidad de memoria que consume.

Incluso, muchas veces, con una gran cantidad de memoria, al cabo de un tiempo (días o semanas) el docker termina cayéndose como consecuencia de la solicitud de más memoria: el temido OOM Killed (Out of Memory Management).

Antes de meternos en harina con la parte técnica, pongámonos en contexto. Durante mi experiencia profesional he trabajado en diversos proyectos construidos con la arquitectura de microservicios de Spring Cloud Netflix, desplegando en algún cloud basado en Docker (generalmente Openshift). En todos ellos ha existido siempre el problema con el consumo de memoria que hacía la aplicación.

Por si fuera poco, no es una situación que se produzca solo con microservicios funcionales (que se podría achacar a un mal desarrollo o una mala gestión de la memoria que hace el equipo), sino que incluso aplicaciones como eureka-server o config-server elevan sus consumos por encima de lo esperado para aplicaciones de tan pequeño tamaño.

Este post trata todo el proceso llevado a cabo, desde las herramientas que utilizamos para el diagnóstico hasta las diversas soluciones aplicadas. ¡Empecemos!

sigue leyendo…

Cypress, un framework de pruebas todo en uno

Cuando comenzamos un proyecto es normal que no sepamos con qué tecnologías desarrollar las pruebas unitarias o las pruebas e2e. En un entorno front, las decisiones son aún más complicadas por el gran número de librerías que existen.

Por ejemplo, para las pruebas unitarias tenemos a Mocha, Jasmine o Karma que pueden ser firmes candidatos. Además, los podemos acompañar de Chai como librería de aserciones (y que nos permite completar los tests).

Otras de las pruebas clave en nuestros proyectos son los mocks de datos. Una de las grandes alternativas es SinonJs, una librería potente y muy utilizada.

Dejo para el último lugar las e2e automáticas. En este punto suele aparecer habitualmente Selenium, con alguna envoltura más como Protractor o Nightwatch.

Pero, ¿no hay nada, en el mundo de los frameworks, que nos haga la vida más fácil? La respuesta, afortunadamente, es sí. ¿Quieres saber qué herramienta se va a convertir a partir de ahora en tu mejor amiga? ¡Sigue leyendo!

sigue leyendo…