[Top 3 Tech Updates Mexico City] Desarrollo de aplicaciones altamente escalables:
Análisis de los factores que permiten a una aplicación escalar.
En un mundo tan conectado es imposible desarrollar aplicaciones para el público en general que no sean pensadas para escalar desde el primer momento. Los tiempos de respuesta y la disponibilidad son factores que pueden alejar a los usuarios tanto como una mala usabilidad.
En esta charla repasaremos cuales con los factores que permiten a una aplicación escalar, las buenas prácticas y de que manera los proveedores de servicios de cloud permiten a la infraestructura crecer al ritmo del numero d usuarios.
Speaker: Adrian Breitburd
3. Whoami
Adrián Breitburd
Technical Director, Big Data & High Performance Solutions Studio
● +15 Años de experiencia en aplicaciones con altos volúmenes de transacciones.
● Responsable Técnico de los proyectos de Google.
● Jefe de trabajos Prácticos de la cátedra de Sistemas Operativos en UTN-FRBA por 9
años.
● Desarrollador en mis tiempos libres.
4. Agenda
● Arquitectura de un Aplicación Básica
● Escalamiento
● Desarrollo Capa a Capa
● Ejemplo real
● Arquitectura en la nube
● ¿Preguntas?
5. Aplicaciones Escalables - Típica Aplicación Simple
Pros:
● Esta autocontenido.
● Simple de gestionar.
● Simple de armar el entorno de desarrollo.
● Costos asociados a las instancias al mínimo.
6. Aplicaciones Escalables - Típica Aplicación Simple
Pros:
● Esta autocontenido.
● Simple de gestionar.
● Simple de armar el entorno de desarrollo.
● Costos asociados a las instancias al mínimo.
Contras:
● Single Point of Failure.
● Competencia por los recursos.
● Si un servicio debe escalar en tamaño, debo
escalar todo junto.
7. Aplicaciones Escalables - Alternativas para escalar
Verticalmente:
● Simple de ejecutar.
● Típicamente es una migración o un upgrade.
● No requiere desarrollos específicos.
● Tiene un límite.
8. Aplicaciones Escalables - Alternativas para escalar
Especializar y escalar verticalmente:
● Simple de ejecutar.
● Típicamente es una migración o un upgrade.
● No requiere desarrollos específicos *
● También tiene un límite.
9. Aplicaciones Escalables - Alternativas para escalar
Escalar Horizontalmente:
● Requiere cuidado en la programación.
● Puede crecer o decrecer, aunque no automáticamente.
● La gestión se vuelve más compleja rápidamente.
● El entorno de desarrollo y testing es más complejo.
● Facilita la tolerancia a caídas
10. Aplicaciones Escalables - Capa de Http
Consideraciones especiales:
● Puedo sumarle para los archivos estáticos un CDN.
● En esta capa (o en el load balancer) se terminan los pedidos https..
● Sin single point of failure.
● Normalmente es muy sencillo escalarlo horizontalmente.
11. Aplicaciones Escalables - Capa de Aplicación
● Usualmente se le adiciona un Caché Distribuido.
● En un mundo ideal, las peticiones son independientes y sin estado.
● Es tal vez la capa más difícil de escalar Horizontalmente pero la que mejor lo aprovecha
● Edge side cache es una opción muy atractiva.
12. Aplicaciones Escalables - Capa de Base de Datos
● Hay muchas variantes de replicas, RW,RO,etc
● Solo se escribe en la master.
● Luego los cambios son propagados a las
réplicas.
● Las réplicas sirven aplicaciones como generación
de reportes, consultas, etc.
● En caso de desastre, se puede promover una
réplica a Master, usualmente con tiempo sin
servicio.
13. Aplicaciones Escalables - Capa de Base de Datos (cont.)
Particiones o Sharding
● La aplicación puede o no conocer las particiones
● Los datos se alojan en una o varias BD
● La elección del criterio de particionado es
determinante en la performance.
● A toda costa se deben evitar las consultas multi-
partición.
14. ● Plataforma para proceso masivo de SMS para programas de TV (Ej Gran Hermano)
● Debe soportar concursos y Trivias
● La performance de la plataforma impacta directamente en la facturación
● Solo se pueden descartar SMS como última alternativa
● No puede haber un single point of failure, ni caídas del servicio durante el programa en vivo
Aplicaciones Escalables - Ejemplo Real - Contexto
Requerimientos de Performance
● 70M Mensajes/Mes
● Picos de
○ 2M msg/hr
○ 400 msg/sec por operadora
● SMS turnaround time <10 segs
● Picos duran < 15 minutes
17. Aplicaciones Escalables - Apalancando en la nube
● EC2
● Scaling groups
● SQS
● Elastic Load Balancer
● Cache
● RDS
● S3
● Zonas de disponibilidad
18. Aplicaciones Escalables - Apalancando en la nube
Pros:
● Puedo escalar mi infraestructura a medida que la necesito.
● Es elástica, puede crecer por picos y luego decrecer.
● Se puede escalar tanto verticalmente como Horizontalmente.
● Puedo usar esta plataforma para hacer dimensionamiento de entornos propios.
● Esta probado
19. Aplicaciones Escalables - Apalancando en la nube
Contras:
● Como el entorno no esta 100% bajo mi control, la performance puede no ser
predecible. “Vecindario Ruidoso”.
● Una vez establecido el dimensionamiento es mas costoso que la infraestructura
propia.
● Todavia, pero no a es dificil migrar de proveedores