Blog

Tecnología para Desarrollo

Spring Cloud Consul (2/2): Configuración centralizada

En la primera parte de Spring Cloud Consul vimos qué es Consul, cómo se puede utilizar para descubrir microservicios y cómo montar un sistema entre Consul y Spring Cloud para hacer uso de esta funcionalidad.

En esta segunda entrega, analizaremos la capacidad de Consul de almacenar pares clave/valor y su integración con Spring Cloud, lo que proporciona la potencia suficiente para gestionar la configuración de forma centralizada.

También veremos cómo funciona Consul KV Store y cómo interactuar con él. Para ello, aprovecharemos el ejemplo del artículo anterior, tanto para ver un servicio externo como uno registrado en Consul y recuperar así su configuración sin tenerla almacenada en el propio servicio usando Spring Cloud, y que ésta configuración sea gestionada desde un repositorio Git para tenerla versionada y controlada.

Al final del artículo dejaré enlaces al código fuente generado para que se descargue si se quiere jugar con él.

sigue leyendo…

Spring Cloud Consul (1/2): Descubrimiento de microservicios

En un ecosistema de microservicios, en el cual generalmente cada uno de ellos está desplegado en un contenedor independiente y efímero, es necesario mantener a todos los integrantes informados de la localización de sus similares.

Dentro del stack Spring Cloud Netflix, el encargado de llevar a cabo esta labor es Eureka. Hashicorp Consul, además de realizar las labores de descubrimiento de servicios, nos permite, en un mismo componente, mantener la configuración centralizada de las aplicaciones de todo el sistema.

En esta serie de dos artículos vamos a introducir Consul y su integración con Spring Cloud, para el descubrimiento de servicios y gestión de la configuración de forma centralizada.

Además, vamos a ver cómo un pequeño sistema de microservicios Java recogen sus valores de configuración y se comunican entre ellos gracias a Consul.

sigue leyendo…

7 consejos para obtener la certificación AWS Developer

Desde el cambio de paradigma de las tecnologías Cloud, cada vez es más importante estar familiarizado con estos servicios.

Uno de los más importantes en el sector es Amazon Web Services. Desde el punto de vista de los que implementan soluciones en su nube, los cuidan mucho creando una documentación muy extensa, muy clara y por la que se preocupan en tenerla continuamente actualizada.

Además, AWS han sido de los primeros en presentarnos certificaciones oficiales en diferentes sectores, ya sea como arquitecto, operaciones, desarrollador o DevOps.

Si decides aventurarte en prepararte una de estas certificaciones, notarás enseguida que, por la idiosincrasia de la temática, la mayoría de cursos, resolución de dudas y documentación (más allá de la de AWS) están principalmente enfocados a  arquitectos.

Pero, ¿qué pasa con los desarrolladores? ¿Es necesario tener el CNNA Cisco o la Linux LPIC? ¿Qué conocimientos del mundo de administración de sistemas necesita un programador para ser AWS Developer?

sigue leyendo…

Profundizando en API Gateway de AWS

Hoy en día mucho se ha estudiado (y comentado) sobre lo interesante y óptimas que son las arquitecturas basadas en microservicios serverless.

De hecho, en este mismo blog, varios de mis compañeros han hablando de las distintas formas de trabajar con arquitecturas serverless, incluso de la integración de los servicios Lambda.

Sin embargo, poco se ha profundizado sobre este último, que nos provee de una serie de funcionalidades y mecanismos para desplegar gestionar APIs bastante interesantes.

En el siguiente post veremos cómo el servicio de API Gateway de AWS nos simplifica la vida a la hora de desplegar y gestionar APIs ahorrándonos tiempo, algo que siempre se agradece.

sigue leyendo…

DDD, el Dominio implica “Crecer fuerte”

“Crecer fuerte” es el lema de la casa de Tyrell. Si eres fan de ‘Juego de Tronos’ conocerás a esta familia, una de las que forman el maravilloso entramado de la aclamada serie.

Si extrapolamos esta premisa al mundo IT, podríamos decir que, a partir de ese lema, se dan las pautas de lo que implica un proyecto desarrollado a partir del paradigma DDD (Domain-Driven Design), o lo que es lo mismo: diseño orientado al dominio.

En este post hablaré de mi experiencia personal con este paradigma o filosofía, y de cómo fue mi proceso de aprendizaje durante un proyecto en el que no tenía ni idea de qué implicaba a nivel de Desarrollo y Negocio.

sigue leyendo…

¿Es Python el lenguaje del futuro?

Python es uno de los lenguajes que más usamos en Paradigma junto con Java y Node.js. Desde hace años, hemos llevado a cabo exitosos proyectos desarrollados en este lenguaje.

Hace algunas semanas se publicó en el blog de Stackoverflow, la principal página de preguntas y respuestas sobre programación a nivel mundial, un interesante artículo reflexionando sobre el increíble crecimiento del uso del lenguaje de programación Python.

A raíz de este artículo, que ha tenido gran repercusión, queremos hacer un análisis más profundo sobre las causas que han llevado a Python a ser uno de los lenguajes más usados y qué perspectivas de futuro se plantean.

sigue leyendo…

Inyección de dependencias con Dagger 2

Cuando hace dos años revisaba el código que escribí hace cinco, me avergonzaba. Hoy me averguenzo del que escribí hace dos. Los programadores buscamos continuamente mejorar nuestro código. Más calidad de código significa menos errores, mantenimiento y evolución más sencillos y  el orgullo de un trabajo bien hecho.

Para conseguir un código de calidad debemos seguir los principios SOLID. Entre ellos el primero, “Single responsability”, consiste en que cada elemento de nuestro código, sea una clase o un método, se encargue de una sola cosa. Cumplir con este principio nos lleva a menudo a tener una gran cantidad de clases colaboradoras en las que delegamos responsabilidades concretas.

Manejar las instancias de estas clases no es fácil, y para ayudarnos está el quinto de los principios SOLID, “Dependency inversion”, que permite que nuestras clases no dependan de los colaboradores sino de abstracciones de estos. Hay diversas formas de conseguirlo, Factory classes, paso de dependencias por constructor, métodos inicializadores o inyección de dependencias (Dependency Injection o DI).

La inyección de dependencias es el más potente de estos métodos, pero tradicionalmente se ha visto como algo complicado. Gracias a Dagger 2 os enseñaré que nada más lejos. Programar es mucho más sencillo usando DI. En cuanto lo probéis no haréis jamás una aplicación, por simple que sea, sin DI.

sigue leyendo…

Testeo de API REST con Mocha y Chai-HTTP

A menudo, cuando desarrollamos una API, nos preguntamos qué podemos utilizar para hacer las pruebas. Este post va a explicar cómo llevar a cabo las pruebas de las principales peticiones HTTP (GET, POST, DELETE…) sobre una API node utilizando el framework de test MOCHA, la librería de aserciones CHAI y la librería que nos facilita las peticiones HTTP, Chai HTTP.

sigue leyendo…

Sácale más partido a tus proyectos con Git

Ya hemos hablado de qué es exactamente Git, y las ventajas que tiene, así como las buenas prácticas para empezar a usarlo en un proyecto.

Si bien aporta un control de versiones muy bueno a un proyecto, hay veces, sobre todo en proyectos grandes, que si no nos ceñimos a las buenas prácticas de Git, podemos acabar con un versionado caótico y difícil de gestionar. Vamos a ver algunas prácticas para poder exprimir Git al máximo.

sigue leyendo…

CSS: descargando actualizaciones

Cada día nos damos más cuenta de lo cambiante que es el mundo front, de un día para otro aparecen nuevas tecnologías.

Las hojas de estilo, sin embargo, siempre han llevado otra velocidad, pero eso también parece estar cambiando debido en gran parte a la revolución (o democratización) de los dispositivos móviles.

A continuación veremos unos ejemplos de propiedades que podríamos usar ya “sin miedo” y otras que dentro de muy poco tiempo podríamos empezar a usar.

sigue leyendo…