20

Desarrollo de aplicaciones altamente escalables

  • Upload
    globant

  • View
    145

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Desarrollo de aplicaciones altamente escalables
Page 2: Desarrollo de aplicaciones altamente escalables
Page 3: Desarrollo de aplicaciones altamente escalables

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.

Page 4: Desarrollo de aplicaciones altamente escalables

Agenda

● Arquitectura de un Aplicación Básica

● Escalamiento

● Desarrollo Capa a Capa

● Ejemplo real

● Arquitectura en la nube

● ¿Preguntas?

Page 5: Desarrollo de aplicaciones altamente escalables

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.

Page 6: Desarrollo de aplicaciones altamente escalables

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.

Page 7: Desarrollo de aplicaciones altamente escalables

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.

Page 8: Desarrollo de aplicaciones altamente escalables

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.

Page 9: Desarrollo de aplicaciones altamente escalables

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

Page 10: Desarrollo de aplicaciones altamente escalables

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.

Page 11: Desarrollo de aplicaciones altamente escalables

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.

Page 12: Desarrollo de aplicaciones altamente escalables

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.

Page 13: Desarrollo de aplicaciones altamente escalables

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.

Page 14: Desarrollo de aplicaciones altamente escalables

● 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

Page 15: Desarrollo de aplicaciones altamente escalables

Aplicaciones Escalables - Ejemplo Real - Arq alto nivel

Page 16: Desarrollo de aplicaciones altamente escalables

Aplicaciones Escalables - Ejemplo Real - Esquema de colas

Page 17: Desarrollo de aplicaciones altamente escalables

Aplicaciones Escalables - Apalancando en la nube

● EC2● Scaling groups● SQS● Elastic Load Balancer● Cache● RDS● S3● Zonas de disponibilidad

Page 18: Desarrollo de aplicaciones altamente escalables

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

Page 19: Desarrollo de aplicaciones altamente escalables

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

Page 20: Desarrollo de aplicaciones altamente escalables

Gracias!Adrian Breitburd @[email protected]