CursosEmpresasBlogLiveConfPrecios

Qué métricas usar para escalar

Clase 6 de 17 • Audiocurso de Fundamentos de Arquitectura de Alta Concurrencia

Clase anteriorSiguiente clase

Contenido del curso

Introducción a alta concurrencia
  • 1
    Sistemas de Arquitectura de Alta Concurrencia y DevOps

    Sistemas de Arquitectura de Alta Concurrencia y DevOps

    05:25
  • 2
    Fundamentos de Arquitectura de Alta Concurrencia

    Fundamentos de Arquitectura de Alta Concurrencia

    06:22
Escalabilidad
  • 3
    Escalamiento Vertical vs Horizontal: Cuándo y Cómo Usarlos

    Escalamiento Vertical vs Horizontal: Cuándo y Cómo Usarlos

    03:36
  • 4
    Diferencias entre servidores Stateless y Stateful en alta concurrencia

    Diferencias entre servidores Stateless y Stateful en alta concurrencia

    03:14
  • 5
    Resiliencia y pruebas en sistemas de alta concurrencia

    Resiliencia y pruebas en sistemas de alta concurrencia

    05:34
  • 6
    Qué métricas usar para escalar

    Qué métricas usar para escalar

    04:58
  • 7
    Manejando el tráfico por países

    Manejando el tráfico por países

    01:58
Herramientas
  • 8
    Linux en servidores y lenguajes para alta concurrencia

    Linux en servidores y lenguajes para alta concurrencia

    04:09
  • 9
    Manejar usuarios en entornos de staging y production

    Manejar usuarios en entornos de staging y production

    02:03
  • 10
    Orquestadores y serverless en de alta concurrencia

    Orquestadores y serverless en de alta concurrencia

    03:33
  • 11
    Motores de bases de datos y caché

    Motores de bases de datos y caché

    03:50
  • 12
    Uso de las CDN en alta concurrencia

    Uso de las CDN en alta concurrencia

    01:46
Seguridad
  • 13
    Cómo manejar ataques DDOS en alta concurrencia

    Cómo manejar ataques DDOS en alta concurrencia

    02:37
Protocolos
  • 14
    gRPC o REST en alta concurrencia

    gRPC o REST en alta concurrencia

    02:43
Negocios y casos de uso
  • 15
    Consideraciones de negocio para alta concurrencia y caso de uso

    Consideraciones de negocio para alta concurrencia y caso de uso

    03:39
  • 16
    Caso de uso: blog con enfoque en serverless

    Caso de uso: blog con enfoque en serverless

    01:45
Conclusiones
  • 17
    Conclusiones

    Conclusiones

    02:07
    Gonzalo Amador Hernández

    Gonzalo Amador Hernández

    student•
    hace 4 años

    Sino estas decidido si usar SQL o NoSQL, preguntate que operacion realizara mas tu app:

     

    • Si sera mas de lectura deberias usar NoSQL, por ejemplo twitter donde hay millones de usuarios leyendo tweets que usuarios escribiondolos
    • De lo contrario deberias usar SQL

     

    con base a mi experiencia SQL es mas facil de mantener y de verdad es rara la vez que necesitas NoSQL, son pocos las empresas con una demanda de lectura que lo requiera asi, quizas aplicaciones de IoT donde el tiempo de respuesta es importantge

     

    Una señal muy importante para usar una BD NoSQL es si notas que estas haciendo desnormalización en tus esquemas relacionales para ganar velocidad (ya que evitaras usar Joins en tus queries, por ende seran mas veloces), entonces es probable que sea hora de usar NoSQL

      Eduard Arias

      Eduard Arias

      student•
      hace 4 años

      Personalmente, pienso que los servicios NoSQL son mejores para el escalamiento horizontal o en sistemas distribuidos ya que no tienen un esquema fijo y puede adaptarse mientras el software crece.

    Gonzalo Amador Hernández

    Gonzalo Amador Hernández

    student•
    hace 4 años

    cuando pablo habla acerca de los indices, que deben ser usados bien es porque con ellos ganamos rendimiento a la hora de lecctura en las tablas, pero el costo es que estas agregando complejidad a la hora de la escritura

    ya que los indices literal son estructuras de datos que nos ayudan a la busqueda rapida, cuando esa estrucutura se tiene que atualizar (por cada registro agregado) entonces le costara mucho trabajo modificar dicha estructura.

     

    Usa los indices sabiamente

    Juan David Cajamarca Acuña

    Juan David Cajamarca Acuña

    student•
    hace 4 años

    Cuando estamos escalando una aplicación, también tenemos que escalar datos. ¿Qué tipo de escalado deberíamos hacer en el motor de bases de datos?

    Escalar en bases de datos siempre ha sido un problema, no es algo fácil y no es un problema fácil de resolver; es un problema relacionado con el equipo de SRE y SysAdmins.

    Algo que debemos tener muy presente, y por lo que se tiene que preocupar el equipo de desarrollo es por usar correctamente los índices.

    Una buena opción para escalar sistemas de bases de datos es utilizar réplicas de lectura. Es básicamente la creación de distintos servidores en donde, algunos se encargan de lecturas y escrituras, y otros se encargan solamente de las lecturas. Esta es una buena implementación en la mayoría de los casos, puesto que por lo general las aplicaciones suelen realizar más lecturas que escrituras en los sistemas de bases de datos. Siendo así, al multiplicar los servidores, se distribuye mucho mejor la carga.

    • Generalmente y de una manera manual, los desarrolladores pueden realizar las operaciones de lecturas a una réplica de lectura y las operaciones de escrituras a un servidor de escritura.
    • De manera automática, se puede interponer un proxy que nos ayudará a distribuir las operaciones de lectura y escritura de una manera inteligente; sin embargo, es una buena práctica la implementación manual de esta estrategia.

    Con respecto a los sistemas de bases de datos NoSQL, lo más común es hacer sharding, que es básicamente separar varias partes de la bases de datos en varios servidores. De esta manera, podemos tener colecciones que no interactúan tanto con las otras separadas en distintos servidores. Así podríamos escalar horizontalmente nuestros servidores de bases de datos.

    Escaladores automáticos

    Esto generalmente está más relacionado con el orquestador. El orquestador es quien se encarga de manejar los servidores en donde está corriendo nuestra aplicación, y estos servidores comúnmente son contenedores que pueden estar corriendo en muchos servidores. Este orquestador se va a encargar de decidir cuándo nuestra aplicación tiene que escalar horizontal o verticalmente; pero somos nosotros quienes definimos cuándo se debe escalar.

    Nuestra aplicación puede escalar de diferentes formas. Lo más común es escalar usando CPU o memoria como una métrica, y el orquestador conoce el comportamiento de estos recursos debido a que cuenta con un sistema integrado de monitoreo. Sin embargo, muchas veces desearemos escalar basándonos en otras métricas (pueden ser métricas de aplicación: cantidad de peticiones que llegan a nuestro servicio, cantidad de datos procesados, etc.). Otro ejemplo para esto puede ser una cola de mensajes; últimamente se maneja mucho la comunicación asíncrona entres servicios: un servicio recibe una petición, y en lugar de hacer otra petición a otro servicio que puede estar ocupado, la petición es almacenada en una cola de mensajes. De esta forma podemos escalar independientemente: puede que el servicio que recibe las peticiones no necesite tantos recursos, entonces podríamos utilizar la cola de mensajes para escalar el servicio que va a procesar estos mensajes.

    Estos son varios ejemplos que podemos utilizar para escalar nuestra aplicación.

      Harold Adrian Bolanos Rodriguez

      Harold Adrian Bolanos Rodriguez

      student•
      hace 3 años

      Super aporte, esta Genial

      Muchas gracias Juan David Cajamarca Acuña

      Nicolás Peralta Páez

      Nicolás Peralta Páez

      student•
      hace 3 años

      Uff, men, aportazo!

    Sebastián Ospino

    Sebastián Ospino

    student•
    hace 3 años

    Qué métricas usar para escalar

    • Existen dos tipos de bases de datos
      • SQL
        • Escalar este tipo de sistemas es muy dificil → normalmente lo hace el equipo de sysadmin o el equipo de SRE
        • Se puede usar el patrón master slave, pero implica la consistencia eventual, es decir, puede que exista inconsistencia en las slaves una vez se haya hecho una escritura en la master, puede pasar un tiempo hasta que esta inconsistencia desaparezca.
      • NoSQL
        • Para escalar, es común hacer sharding
          • Consiste en separar tu base de datos en distintos servidores o bases de datos. Por ejemplo, si dos tablas no tienen que ver la una con la otra, es decir, no tienen relaciones, pueden estar en dos bases de datos distintas. De esta manera el tráfico que tiene que ver con una tabla, no afecta al tráfico, totalmente independiente, de la otra tabla.
          • Permite escalar horizontalmente
      • Independiente del tipo de base de datos que se escoja, es super importante escoger bien los índices
      • Ambos tipos de bases de datos se pueden escalar usando réplicas de lecturas
        • Un servidor encargado para las escrituras y otro para las lecturas
        • Es común que las lecturas sean mucho más frecuentes que las escrituras
        • Se puede usar un proxy intermedio que ayude a identificar las peticiones de lectura y escritura, para que las redireccione al componente adecuado
    • Escalar automáticamente → normalmente, de esto se encarga el orquestador
      • El orquestador se encarga de manejar los servidores que están corriendo en la aplicación
      • Estos servidores son normalmente contenedores
      • El orquestador decide cuándo se debe escalar vertical u horizontalmente
      • El desarrollador debe decirle al orquestador que necesita escalar
      • Métricas para escalar
        • El orquestador tiene un sistema de monitoreo integrado que le permite ver, por ejemplo, el uso de CPU o memoria utilizado por cada servidor y evaluar si necesita escalar, ya sea vertical y horizontalmente
        • Latencia
        • Capacidad
          • Número de peticiones que se pueden resolver en determinada cantidad de tiempo
        • Existen criterios de aceptación o atributos de calidad para cada una de estas méticas, si ya no se cumplen, entonces quizá sea momento de escalar
          • Por ejemplo, que con un número concurrente de cien mil usuarios haciendo peticiones al componente A, estos reciban su respuesta en menos de un segundo. Si esto ya no se cumple, quizá toca escalar el componente de A de alguna manera
        • También pueden ser métricas de aplicación
          • Cantidad de request que están llegando a nuestro servicio
          • Cantidad de datos que hay que procesar
    • Colas de mensajes → normalmente se usa en arquitecturas orientadas a eventos y permite la comunicación asíncrona entre servicios
      • Un servicio o componente recibe una petición, y dicha petición requiere del servicio de otro componente, pero puede que este componente esté ocupado, por lo que se deja dicha petición en una cola de mensajes, entonces la petición espera en la cola hasta que el componente ocupado se desocupe y pueda sacarla de la cola.
      • Esto permite escalar el componente que está suscrito a la cola de manera horizontal y vertical.
    Nicolas David Pastran Zamora

    Nicolas David Pastran Zamora

    student•
    hace 4 años

    En el curso de bases de datos de aws hablan sobre las estrategias para aumentar el performance, tal como dice Pablo el uso de replicas de lectura. Acá les dejo la clase https://platzi.com/clases/1426-db-aws/15232-estrategias-de-performance-en-rds/

    Juan Manuel Hincapié

    Juan Manuel Hincapié

    student•
    hace 3 años

    Escalado en motor de bases de datos

    SQL

    Escalado complicado, replicas de lectura consiste en crear dos servidores uno con posibilidad de escritura y lectura y el otro sólo con posibilidad de lectura ya que es lo que generalmente más se usa para distribuir la carga, proxy para automatizar

    No SQL

    Lo más común es hacer una separación de la base de datos en diferentes servidores, es importante que los datos no se requieran entre si

    Orquestador encargado de manejar los servidores que corren mi aplicación, estos servidores generalmente son contenedores

    Métricas

    • Lo más común es escalar con un dato de uso de la máquina, si por ejemplo el servidor está usando mucha CPU o mucha Memoria el orquestador se entera de eso ya que tiene un servicio propio de monitoreo y lo que hace es crear nuevos servidores o los hace crecer.
    • Otra forma de escalar es con la cantidad de request que está recibiendo mi aplicación
    • Cola de mensajes para escalar independientemente cuando se crea debido a que el servidor no está disponible en ese momento
    Ricardo Tribaldos Hernández

    Ricardo Tribaldos Hernández

    student•
    hace 4 años

    Les recomiendo ProxySQL

    Rodmy Suarez

    Rodmy Suarez

    student•
    hace 4 años

    Para los casos en los que se realiza el escalamiento de bases de datos SQL el uso de replicaciones pueden generar Consistencia Eventual, ¿como se vende a los ejecutivos este concepto? ya que para una persona del negocio el concepto puede ser preocupante.

      Pablo Antipan Quiñenao

      Pablo Antipan Quiñenao

      student•
      hace 4 años

      Hola Rodmy! Asumiré que con "ejecutivos" te refieres a las personas encargadas de vender la idea? Si así fuese, me sentaría con ellos y les explicaría las implicancias del uso de replicaciones y que toca considerar un costo adicional para resolver los posibles issues. A mi entender, dado que ninguna tech es infalible, mas bien corresponde asistir a que se pueda tener la estructura de costos tan claro como sea posible!

      Saludos!

    Daniel Eduardo Rojas Pulido

    Daniel Eduardo Rojas Pulido

    student•
    hace un mes

    Usar orquestadores como kubernetes para escalar automáticamente.

    MARIA TERESA PANIAGUA RIVERA

    MARIA TERESA PANIAGUA RIVERA

    student•
    hace 3 años

    Gracias

    DAVID EDUARDO BAEZ SANCHEZ

    DAVID EDUARDO BAEZ SANCHEZ

    student•
    hace 4 años

    Buenas recomendaciones, casi siempre es por capacidad de los recurso-.

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads