API with Express, Mongoose & MongoDB

Cuando queremos tener una arquitectura desacoplada o, cuando necesitamos tener un acceso programático a nuestro producto y/o servicio, lo más normal y común es tener un servicio de API. Concretamente una API RESTful para, por ejemplo, poder ofrecer servicios como: GET para consultar y leer, POST para crear, PUT para editar y DELETE para eliminar. Bien, uno de los lenguajes más famosos y, recomendable, para poder construir nuestra API RESTful es NodeJS y más concretamente su Framework Express que nos proporciona muchas herramientas útiles para poder organizar nuestra aplicación. [Leer más]

Building Web APIs with Flask RESTful and API Kong Gateway

Ya anteriormente hemos hablado de API Kong en varias ocasiones, por ejemplo: Reference Architectures Kubernetes o Microservicios usando API Gateway Kong. Hoy vendremos a presentar un caso Real donde de manera muy fácil y rápida podremos tener una API construída con Python Flask en pocos minutos con un key-auth mediante API Kong Gateway. Veamos brevemente el índice de pasos a seguir: Construiremos dos Docker: uno con el software de API Kong y otro con un PostgreSQL para hacerle de base de datos. [Leer más]

Linkerd, Service Mesh microservice management

Las Arquitecturas basadas en Microservicios han facilitado y continúan facilitando mucho todos nuestros desarrollos, puestas en producción y release management, pero ciertamente se puede continuar mejorando y una forma es implementando un Service Mesh. ¿Qué es un Service Mesh? Pero: ¿Qué es un Service Mesh?. En modo resumen rápido podemos decir que es una infraestructura, basada en software, encargada de manejar las comunicaciones entre microservicios y/o distintos componentes. Para explicarlo mejor podemos ver unas funcionalidades ejemplos donde podríamos implementarlo: [Leer más]

OpenFaaS, Serverless Functions Made Simple for Docker & Kubernetes.

OpenFaaS es un marco para “empaquetar” código, binarios o contenedores como funciones sin servidor en cualquier plataforma: Windows o Linux. Hasta aquí, “parece fácil” pero realmente es una maravilla ya que nos elevará a un nuevo nivel. Veamos sus principales Highlights: Podremos crear funciones desde plantillas de código. Contruir funciones como se fueran imagenes Docker. Hacer Push de estas imagenes a Docker Registry. Hacer Deploy de las funciones. Invocar las funciones. [Leer más]

Instalación y Configuración de Hortonworks Sandbox en Docker

Muchas veces nos proponemos usar las soluciones PaaS de nuestros variados y distintos proveedores de Cloud, pero, es interesante pensar en que las soluciones pueden ser agnósticas del mismo proveedor, como por ejemplo: cuando tenemos la necesidad de montar un Clúster de Hadoop. Una buena solución es montarlo en Docker, ya que en caso de salida de un proveedor de Cloud, podremos mover muy fácilmente nuestros contenedores y levantarlo allá donde vayamos muy rápidamente, como también, poderlo tener en Alta Disponibilidad levantando contenedores en más de un proveedor de Cloud, etc… [Leer más]

Instalación y Configuración de HTTPie (alternativa a cURL)

HTTPie es un cliente HTTP de línea de comandos con una interfaz de usuario muy intuitiva, compatibilidad con JSON, resaltado de sintaxis, descargas muy similares a wget y unos cuantos complementos más y plugins que podremos utilizar. Una más que buena alternativa a cURL. A continuación mostraremos su Instalación y Configuración usando el post anterior de Kong API Gateway como API de llamada. Instalación y Configuración de HTTPie Instalaremos en un contenedor Docker la última versión de HTTPie para poder realizar las llamadas de prueba entre la API que publica y el API Gateway (Kong). [Leer más]

Instalación y Configuración de FluentD con Elasticsearch + Kibana

FluentD se divide en tres bloques: filtro y envío de datos a un buffer, transforma o simplemente recoge los datos para una cadencia continua y los enruta o envía a otro destino. En nuestro caso, instalaremos y configuraremos FluentD para enviar los datos a un servicio de Elasticsearch que almacenará los eventos que ocurran. Luego mostraremos la información de manera legible con Kibana. ¿Qué información puede recoger? No hay límites, ya que está preparado un gran volúmen de datos pero, en caso de tener múltiples orígenes de datos, siempre es mejor utilizar FluentD Aggregator entre FluentD Agent y Elasticsearch. [Leer más]

Instalación + Configuración Apache Kafka en Docker

Kafka, sin ir más lejos, es un proyecto de intermediación de mensajes de código abierto desarrollado por la Apache Software Foundation y escrito en Scala. Entre sus características principales, podremos realizar: Publicación y suscribción de flujos de registros (Bastante similar a una cola de mensajes o un sistema de mensajería). Almacenar flujos de registros tolerante a fallos (Sistema de Buffer con un periodo de retención de mensajes). Procesar flujos de registros a medida que ocurren. [Leer más]

Instalación + Configuración de ELK (Elasticsearch + Logstash + Kibana)

ELK, que es la composición de Elasticsearch + Logstash + Kibana es una más que correcta solución para, por ejemplo, crear un sistema de Control de Eventos y/o Logs. Por ejemplo, si queremos monitorizar en Realtime nuestras aplicaciones o sistemas podemos implementar el Stack de ELK para embeber nuestros logs, ya sean generados por el Framework del código (Symphony, Laravel, Spring, etc…) o bien, por el log de Apache, Nginx, etc… el que corresponda a nivel de Sistema Operativo. [Leer más]

Panamax, Local Development Environment by Docker

Panamax.io. Es más que una brillante solución para tener un entorno de desarrollo (local) con Docker. Estamos hablando de poder crear, muy fácilmente, contenedores a partir de imágenes descargadas de otras fuentes, por ejemplo: Docker Hub. También, como no, podemos usar un fichero Docker Composer YAML u otras Templates para crear/automatizar el proceso de puesta en marcha de contenedores. Por ejemplo, en mi caso, me ha permitido poder crear un entorno semejante al de Producción, creando muy rápidamente y usando los ficheros YAML de Producción para levantar contenedores que tienen instaladas las mismas versiones. [Leer más]