Escalabilidad y arquitecturas de alto rendimiento

  • Desarrollo web
  • curso
  • 24

Cuando creamos una nueva aplicación o sistema web es muy habitual que uno de los requisitos imprescindibles del mismo es que sea escalable y también resiliente, o, lo que es lo mismo, que sea capaz de absorber picos de demanda sin ver afectado su rendimiento o disponibilidad.

En este curso veremos las distintas herramientas, arquitecturas y patrones que tenemos a nuestra disposición para conseguir que nuestras aplicaciones sean altamente escalables y resilientes.

Veremos cómo utilizar de forma efectiva arquitecturas como microservicios o “Saga Pattern”, soluciones de caché como Redis o Varnish y metodologías como 12factor. Además veremos cómo podemos monitorizar un sistema o realizar las pertinentes pruebas de carga para conocer su capacidad y poder actuar en consecuencia.

Objetivo

Dotar a los alumnos de las siguientes competencias:

  • Capacidad para producir código escalable, así como crear sistemas estables, tolerantes a fallos y económicamente viables. Teniendo en cuenta tanto la parte software como de sistemas y configuración.
  • Conocer las diferencias, así como los puntos fuertes y débiles de las distintas tecnologías y soluciones, ya sean lenguajes de programación, sistemas de bases de datos o tecnologías cloud.
  • Capacidad para monitorizar un sistema software y poder hacer frente a problemas en producción o caídas inesperadas de forma efectiva.

Audiencia

Desarrolladores, administradores de sistemas, otros profesionales técnicos, gestores de proyectos.

Prerrequisitos

Conocimientos básicos de programación y administración de sistemas.

  1. Escalado vertical vs horizontal
  2. Tipos de balanceo de carga
  3. Escalabilidad en bases de datos. Comparación de tecnologías disponibles teniendo de cuenta la escalabilidad:
    • SQL vs NoSQL
    • Teorema CAP
  4. Comparativa entre distintos lenguajes de programación (puntos fuertes y débiles de cada uno):
    • Java
    • .NET
    • PHP
    • Python
    • js
    • Go, Rust…
  5. Introducción a 12factor
  6. Optimizaciones de código: buenas prácticas
  7. Detección de cuellos de botella
    • Profiliing
  8. Condiciones de carrera. ¿Qué son? Detección y prevención.
  9. Comunicación asíncrona: introducción a las colas de mensajería.
    • Prevención de duplicados y/o mensajes desordenados
    • Políticas de reintentos
    • Colas dead-letter
  10. Sistemas avanzados de caché:
    • Caché de datos: Redis
    • Estampida de caché. ¿Qué es? Soluciones.
    • Caché HTTP (Varnish)
    • Buenas prácticas haciendo uso de caché.
  11. Midiendo la capacidad de nuestro sistema: pruebas de carga
    • Herramientas: K6, Autocannon
    • Buenas prácticas ejecutando pruebas de carga
  12. Arquitecturas avanzadas
    • CQRS pattern
    • Monolito, Microservicios, Monolito Modular, Serverless
    • Event Driven Architecture y Saga pattern.
  13. Técnicas de despliegue efectivo de nuevo código: blue/green, canary,…
  14. Ejercicio práctico: como soportar miles de request por segundo sin morir en el intento.

    Más información

    Envíanos tus datos y nos pondremos en contacto contigo para darte más información y ajustar el curso a las necesidades de tu empresa

    Datos del participante



    Datos de la empresa


    Empresa asociada al ITI SiNo

    He leído y acepto la política de privacidad

    Datos Básicos

    Duración: 24

    Formación personalizada

    ¿Te interesa que ITI proporcione este curso a medida para tu empresa? Rellena nuestro formulario de necesidades formativas y nos pondremos en contacto contigo.