Arquitectura

Demo del AWS Application Load Balancer

Ay sí: el vídeo lleva grabado dos semanas pero la verdad es que en navidades he estado haciendo otras cosas y no encontré el rato para hacer la producción. ¡Pero ya está! En menos de media hora te explico cómo utilizar la última versión del Application Load Balancer de AWS.

No te lo tomes solo como un ejercicio práctico (que lo es). También debería servirte para interiorizar una pieza clave de cualquier arquitectura y si tienes dudas sobre cómo aplicarla no dejes de visitar el episodio anterior sobre cómo escalar a un millón de usuarios :)

Por cierto, estoy intentando conseguir que los vídeos puedan seguirse como audios con un mínimo de dignidad. ¡Necesito tu feedback! Así que coméntame por aquí o por twitter si te parece práctico generar los dos formatos ¿ok?

RSS para podcatcher

alojado en archive.org

Instagram: Escalando a un millón de usuarios

¡wuaaaaaaaaaaaaaah!

TL;DR: El truco básico para conseguir escalar es añadir más hierro, no hierro más grande. Y cuando lo haces la forma más sencilla de distribuir el tráfico es utilizar balanceadores de carga.

RSS para podcatcher

alojado en archive.org

Venga, voy a contarte una historia, que hace tiempo que no te explico ninguna. Tiene moraleja, claro: que esto no deja de ser un curso y por lo tanto vas a tener un diablillo detrás de la oreja diciéndote lo que no tienes que hacer y cómo solucionar tus problemas de arquitectura. ¡Pero no se gana el trivial y se triunfa en la tertulia de los amiguetes hablando de escalabilidad horizontal y balanceadores de carga sin más! Así que vamos a hablar un rato de Kevin, Mike y su pequeño proyecto.

Demo del Api Gateway Kong

¡Volvemos a tener vídeo! Esta semana vamos a poner en práctica lo que hemos explicado sobre seguridad en el post con el glosario y en el que hablaba sobre implementaciones .

Configuraremos el API gateway Kong para que nos autentifique mediante API Key. En el post puedes ver todos los comandos que he usado así que no hay excusa para no ponerte manos a la obra y probarlo :)

Cómo implementar la seguridad de tu API (Segunda parte)

Beware of the cat

TL;DR: Access key/Secret key es un mecanismo de autentificación muy popular pero JWT tiene ventajas al proporcionar más información sobre el usuario. Puedes centralizar la seguridad utilizando un API Gateway o implementarla en todos y cada uno de tus microservicios.

RSS para podcatcher

alojado en archive.org

Vale, esta es la segunda parte del post en el que hablo de seguridad desde el punto de vista del desarrollador. Nos vamos a centrar en explicar tanto el acceso mediante Access Key como los detalles sobre JSON Web Token y hablaremos de las alternativas que tienes a la hora de implementar la autenticación incluyendo el uso de API gateways. ¡No lo pierdas!

Cómo implementar la seguridad de tu API (Primera parte)

Beware of the cat

TL;DR: Basic Auth no es adecuado para autenticar usuarios en APIs. OAuth2 sirve para delegar, no para autenticar. Y todo tiene que ir por TLS. ¡Ah! Y nada de cookies. Ok, ahora me explico con más detalle.

RSS para podcatcher

alojado en archive.org

Como decía la semana pasada, hoy vamos a hablar de seguridad. ¡La semana pasada! ¿Lo pillas? Ay… en serio, he echado de menos escribiros y espero que vosotros también os hayáis acordado de mi. Para compensar vuelvo con un capítulo súper práctico y detallado que espero que aclare todas las dudas que tienes sobre un pilar fundamental de tu arquitectura como es la seguridad. Vamos a ello.

Cómo implementar HATEOAS en tus APIs

Multiversos enlazados

TL;DR: Los hiperenlaces tienen un papel tan importante en las APIs como en las pantallas para humanos y sin embargo casi nunca se implementan correctamente. Te cuento cómo solucionar este problema.

RSS para podcatcher

alojado en archive.org

Open source on Github

HATEAOS es un término inglés que traducido significa “Estoy desesperado buscando un acrónimo con gancho y no lo consigo encontrar”. Pero detrás esta palabra encontrarás lo que durante veinte años ha sido el core de la web: el hipertexto, los enlaces.

Cómo documentar un microservicio (SpringRESTdocs)

Documentación electrónica

TL;DR: Genera documentación de forma casi automática, minimizando el repeat yourself casi a cero y estructurándola de forma que tenga sentido y coherencia. ¡Ah! Y llénala de ejemplos, maldita sea. Con Spring REST docs.

RSS para podcatcher

alojado en archive.org

Cómo documentar un microservicio (incluyendo Swagger)

Papiro de Ani

TL;DR: Nos pagan por entregar valor. Invertir tiempo en crear documentos que nadie va a leer no tiene sentido pero publicar un API sin explicar cómo funciona es aún peor. Te cuento cómo encontrar el equilibrio entre ambos extremos y te explico por qué NO usarás Swagger (a medio plazo).

RSS para podcatcher

alojado en archive.org

Tests de integración

traffic light tree

TL;DR: Es imposible mantener la calidad del producto si los errores no se detectan inmediatamente. Una de las herramientas más potentes que tienes son los tests.

RSS para podcatcher

alojado en archive.org

Voy a decirte por primera vez algo: no, no, en realidad llevo dándote la paliza con lo mismo desde el primer post y es que el código tiene que estar en producción para que aporte valor. Y el problema principal que te vas a encontrar si en lugar de una release al mes haces cuatro (o diez, o cien) es que tienes cuatro, diez o cien veces más oportunidades de liarla. Cualquier error que hayas introducido en tu código potencialmente puede terminar impactando al usuario mucho antes y provocar un retraso en cascada de nuevos despliegues. Voy a explicarte cómo evitar esta situación y de paso también te contaré algunas cosas sobre las lechugas.

Cómo crear una API REST

un banco en el parque

TL:DR; Diseña un API de la misma manera que diseñas una pantalla: pensando en la comodidad de quien la va a utilizar, no en tu conveniencia.

RSS para podcatcher

alojado en archive.org

Vamos a ponernos el gorrito de un miembro del equipo, en concreto la persona que se haya asignado la tarea de implementar la historia de usuario PROGRESO_CURSOS. ¿La recuerdas del post anterior ? Decía algo así:

  • Como administrador de cursos deseo poder obtener una visualización global de la utilización de cada curso y unidad didáctica para conocer su popularidad y actuar en consecuencia.*

Bien, manos a la obra: tendremos que detectar los recursos a manipular, definir unas rutas HTTP claras para invocar operaciones sobre ellos y generar la respuesta deseada. No problem. O sí.

Arquitectura del primer proyecto

Dos cabras escocesas

TL:DR; Se aprende haciendo: aquí tienes la descripción de un pequeño (pero realista) proyecto.

RSS para podcatcher

alojado en archive.org

¿Qué vamos a hacer?

Primero voy a ponerme distintos gorritos para ir presentándote un proyecto. Lógicamente es una caricatura (espero que seas indulgente con los detalles) pero tendrá la suficiente complejidad como para que vayamos practicando los patrones de los que quiero hablar.

Microservicios en el mundo real

Amazon front page

TL:DR; Las aplicaciones cloud nativas basadas en microservicios no son una moda o un ejercicio teórico. Los sistemas de Amazon, Netflix, Spotify, Soundcloud, etc se basan en estos patrones.

RSS para podcatcher

alojado en archive.org

Quizá no te suene la pantalla que ves arriba. Porque hace unos años te secuestró una nave extraterrestre y acabas de regresar con otras 4399 personas. En caso contrario seguro que has visitado Amazon en alguna ocasión: es el retailer de referencia en el mundo y ya hemos hablado de ellos antes.

Bueno, pues algún detalle extra: ¿cuántos microservicios crees que se coordinan para generar esa pantalla? ¿20? ¿50? Venga, en serio, piensa un número.

¿Qué son los microservicios?

Micromachines

TL:DR; Piensa en productos, no en servidores o proyectos. Crea programas independientes para cada pieza y únelos con mecanismos simples y tontos.

RSS para podcatcher

alojado en archive.org

Por qué NO iba a escribir este post

¡Porque ya sabes qué es un microservicio! Ok, el término es relativamente reciente (2013 o 2014) pero a estas alturas seguro que has estado expuesto o expuesta a él. Además no voy a ser yo quien mejore la descripción que hace de esta arquitectura Martin Fowler que es un tipo al que hay que escuchar a pesar de que escriba libros técnicos.

Entonces ¿Qué me hizo cambiar de opinión? Exacto: el SEO de Google, principalmente. Bueno, y también el saber que existe una remota posibilidad de que aunque tengas nociones sobre la terminología no acabes de tener claro que entra dentro de la definición y qué no. Así que vamos allá y concretemos un poco.

Desde monolíticas hasta microservicios

almacén lleno de stock

TL;DR: Tenemos que ser conscientes de que seguimos pensando igual que hace unos años cuando las limitaciones tecnológicas son ahora otras.

RSS para podcatcher

alojado en archive.org

¿Cuánto tiempo llevas en el negocio? ¿Recuerdas cuando los servidores eran máquinas con dos procesadores y 128MB de RAM? Párate un momento a pensar sobre esto porque es importante: hace unos años era difícil conseguir hardware e incluso el que utilizábamos en producción tenían menos potencia que el teléfono que llevas en tu bolsillo. Además el acceso a internet era limitado y las aplicaciones que desarrollábamos solían trabajar en red local y soportar un número pequeño de usuarios. Teníamos que aprovechar al máximo el hierro disponible y por ejemplo en entornos Java no podíamos arrancar más de una máquina virtual en un ordenador porque no teníamos suficiente RAM. Por ello nació el concepto de servidor de aplicaciones que básicamente permitía ejecutar de forma más o menos aislada varios componentes dentro de la misma java virtual machine.