desarrollo de aplicaciones altamente escalables
Post on 16-Jul-2015
145 Views
Preview:
TRANSCRIPT
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.
Agenda
● Arquitectura de un Aplicación Básica
● Escalamiento
● Desarrollo Capa a Capa
● Ejemplo real
● Arquitectura en la nube
● ¿Preguntas?
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.
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.
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.
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.
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
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.
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.
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.
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.
● 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
Aplicaciones Escalables - Ejemplo Real - Arq alto nivel
Aplicaciones Escalables - Ejemplo Real - Esquema de colas
Aplicaciones Escalables - Apalancando en la nube
● EC2● Scaling groups● SQS● Elastic Load Balancer● Cache● RDS● S3● Zonas de disponibilidad
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
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
Gracias!Adrian Breitburd @abreitburdadrian@globant.com
top related