4. Definiciones - Disponibilidad
• Disponibilidad esta relacionado con Dispuesto
• Dispuesto “Preparado para ser utilizado”
• POSIBILIDAD que ALGO esté preparado para un FIN.
• POSIBILIDAD se considerar como una métrica
• Entonces ALTA DISPONIBILIDAD que es?
5. Definiciones - Desempeño
• Habilidad en la realización de una actividad
• Logro de objetivos o de tareas asignadas
• Eficiencia de una maquina
• Eficiencia: Capacidad de disponer de alguien o de algo
para conseguir un efecto determinado
• Entonces ALTO DESEMPEÑO que es?
7. Definiciones
• SERVICIOS
• De forma coloquial que es un Servicio?
• Actividad en donde buscan responder a las
necesidades de un cliente
• Un servicio es intangible ……. Esto les suena?
8. Definiciones - Servicio
• Y en informática a que se refiere por Servicio?
• Pues es lo mismo que lo anterior!!
• Un programa o un software presta servicios
• Pero por si solo un programa lo hace? o hay mas cosas
en juego, cuales??
10. Definiciones - Servicio
• Entonces realmente quien presta el SERVICIO???
• Un SISTEMA con una ARQUITECTURA
• Software: • Hardware:
• Sistemas operativos • Servidores
• Web Servers • Procesadores
• RDBMS • Memoria
• Programas • Almacenamiento
• etc. • Redes
• etc.
12. Página web estática
• Para que una página web estática, funcione sobre
internet que necesitamos?
• Conexión a Internet, Dirección IP, un dominio
• Componentes de red
• Servidor físico / virtual, con sus respectivos
componentes
• Sistema operativo de red / linux, windows, bsd…
• Servidor web / apache, nginx, lighttpd, IIS…
• Capacidad de almacenamiento
• Falta algo?
13. Página web estática - HW
StooMathiesen - http://www.flickr.com/photos/stoo57/5395413052/in/photostream/
14. Página web estática
• Los anteriores componentes son requerimientos
• El software anteriormente listado tiene requerimientos,
entonces nos salen “requerimientos de los
requerimientos”.
• Incrementar capacidad de Procesamiento
• Incrementar capacidad de RAM
• Incrementar capacidad de Almacenamiento
15. Página web estática - HW
StooMathiesen - http://www.flickr.com/photos/stoo57/5395413052/in/photostream/
16. Página web estática
• Ahora la pagina web estática se pone en línea!!!
• Que pasa?
• Comienza a tener visitantes
• Las visitas se reflejan en carga, ocupación, consumen
recursos
• Que pasa si ingresa 1, 100, 1000, 10.000 usuarios?
• O Mas???
17. Página web estática - Interno
• Que cosas suceden internamente en este servicio?
1. Recibir solicitud por parte del usuario
• Adicionalmente se aplican: controles, verificaciones,
generación de bitácoras (logs), etc.
2. Colocar en cola
3. Localizar el recurso
4. Colocar el contenido en cola
5. Presentar o enviar el contenido
18. Página web estática - HW
• Incrementar de nuevo el hardware?
333 Mhz
666 Mhz 5400 RPM
1000 Mhz 7200 RPM
1333 Mhz 10000 RPM
15000 RPM
2 Mbps
10 Mbps
50 Mbps
StooMathiesen - http://www.flickr.com/photos/stoo57/5395413052/in/photostream/
19. Página web dinámica
• Ahora para esa misma página, se desea que sea
“Dinámica e Interactiva” o que preste un servicio
• Que se necesita para ello??
• Se debe programar! … en que?
• PHP
• RUBY
• PYTHON
• DOT NET
• JAVA
• Base de datos
• Falta Algo?
20. Página web dinámica - Interno
• Adicionalmente que ocurre en este nuevo servicio?
1. Recibir solicitud por parte del usuario
• adicionales como: controles, verificaciones, generación
de bitácoras (logs), etc.
2. Colocar en cola
3. Localizar el recurso
4. Colocar el contenido en cola
5. Presentar o enviar el contenido
21. Página web dinámica - Interno
• Adicionalmente que ocurre en este nuevo servicio?
1. Recibir solicitud por parte del usuario
• adicionales como: controles, verificaciones, generación
de bitácoras (logs), etc.
2. Colocar en cola
3. Localizar el recurso
4. PROCESAR – Ejecutar el programa especifico
5. Colocar el contenido en cola
6. Presentar o enviar el contenido
22. Página web dinámica - HW
• Que pasa con el hardware que tengo?
StooMathiesen - http://www.flickr.com/photos/stoo57/5395413052/in/photostream/
25. Crecimiento de HW
• En arquitectura de computo esto se le conoce como:
CRECIMIENTO VERTICAL
• Tiene limite el crecimiento vertical?
El tecnológico Actual
26. Algo anda Mal?
• Reflexionando, algo parece estar mal?
• Que puede ser?
• El desempeño actual no es el deseado o el
optimo
• Se queda corto?
27. Algo anda Mal?
• Cuales son las posibles razones?
u El software base puede estar fallando
u No estará bien configurado
u No estará bien optimizado
u No es el correcto para el propósito deseado?
u Será que nuestro programa esta mal desarrollado?
u Será que la arquitectura seleccionada esta
fallando?
33. Cifras – facebook.com
• + de 500’000.000 de usuarios registrados (2011)
• Usuarios tienen Actividad de 20 minutos por día
• 5.000’000.000 de objetos digitales compartidos por
semana
• 3.000’000.000 imágenes cargadas por mes
34. Cifras – facebook.com
• 250 aplicaciones poseen mas 1’000.000 de usuarios al
mes
• 80.000 aplicaciones conectadas
• 500.000 aplicaciones
• 2’000.000 desarrolladores registrados
• 150’000.000 operaciones por segundo de memcache
35. Cifras – facebook.com
• Miles de servidores de memcache con 10TB de
almacenamiento
• 200.000 eventos por segundo
• 20.000’000.000 de eventos por día
• 13’000.000 de queries por segundo
• Respuestas de los Query: 4ms lectura, 5ms escritura
• Picos de 38 GBps de transferencia de datos
36. Cifras – facebook.com
• Lenguaje de programación base: PHP
• Base de datos inicial MYSQL
• Base de datos actual CASSANDRA
• Web server propio escrito en PHP
• Y otro montón de tecnologías usadas
• Según estimaciones poseen mas de 60.000 servidores
38. Cifras - Google
• Google, el ultimo fallo de perdida de información
• Mas de 300.000 cintas de backup LTO2
• LTO2 (200 GB)
• Total de: 60.000.000 GB = 58.000 TB = 57 PB
40. Los problemas de un servicio
• Cuales son los dos principales problemas que se deben
resolver para prestar un servicio en línea (eso si
excluyendo la seguridad)
1. Que el servicio siempre este ahí, que funcione, que no
este por fuera!, que no se caiga!
2. Que le quepa toda la gente!, que funcione de forma
veloz!, que atienda a tiempo!, que no sea lentejo!
41. Los problemas de un servicio
• Que soluciona esos dos inconvenientes?
1. Alta disponibilidad
2. Alto desempeño
43. Alta disponibilidad
• Buscar asegurar un cierto grado absoluto de continuidad
operacional durante un período de medición dado
• Esto se logra aplicando REDUNDANCIA
• Pero a un servicio se puede considerar REDUNDANCIA
OPERACIONAL
44. Alta disponibilidad - Redundancia
• Ya antes se ha logrado redundancia pero en
componentes:
• Fuentes redundantes
• Alimentación redundante
• UPS redundantes
• Memoria redundante
• Almacenamiento redundante
• NICs redundantes
• Estos componentes poseen historial de fallas
46. Alta disponibilidad – Como?
• Hasta ahora la alta REDUNDANCIA seria administrada de
forma MANUAL
• Que se requiere para que sea TRASNPARANTE o
AUTOMATICA?
• Todo debe estar UNIFICADO
• Procesos Unificados (Comunicación)
• Sub servicios Unificados (Comunicación)
• Almacenamiento Unificado
• Hasta llegado el caso de tener la “mente compartida”
47. Alta disponibilidad – Como?
• Técnicas, Tecnologías, o Herramientas
• Comunicación entre todos los actores
• Comunicar que “estamos vivos”
• Comunicar que hacemos
• Se busca comportarse como un uno solo
48. Alta disponibilidad – Como?
• Almacenamiento Unificado
• Se puede manejar:
• Externalizándolo
• SAN (Storaga Area Network)
• Fiber Channel
• iSCSI
• Servidor de Almacenamiento
• iSCSI
• NFS
• CIFS
49. Alta disponibilidad – Como?
• Almacenamiento Unificado
• Compartiéndolo
• Sistemas de archivos dispersos por la RED
• Servidores independientes de sistemas de archivos.
o
• Los mismos servidores comparten su almacenamiento
52. Alta Disponibilidad - Ideal
• No todo es perfecto, solo algunos lo pueden hacer de
forma nativa y transparente:
• Java (Lenguaje de programación y arquitectura)
• Tomcat (Web Server – application server)
• Glassfish (Web Server – application server)
• JBOSS (Plataforma)
• Dot Net
• RUBY (Solo su ecosistema)
• PHP + Zend (Solo su ecosistema)
• PHP de facebook (servidor propio hecho en PHP)
• Erlang (Solo su ecosistema)
53. Alta Disponibilidad - Ideal
• RDBMS que soportan ALTA DISPONIBILIDAD
MYSQL / MariaDB / Percona / Drizzle
PostgreSQL
Ingres
VoltDB
FrontBase
SciMore
Cubrid
54. Alta Disponibilidad - Ideal
• Base de datos NO RELACIONALES
• Estas nacen de la necesidad de almacenar
CANTIDADES GIGANTESCAS DE INFORMACION
• Su característica primordial: Ser DISTRIBUIDAS
SimpleDB (Amazon)
Hadoop – Hbase (facebook)
Cassandra (Facebook)
FlockDB (Twitter)
Hypertable
55. Alta Disponibilidad - Ideal
• Base de datos NO RELACIONALES
Apache Jackrabbit
CouchDB
MongoDB
OrientDB
Terrastore
RavenDB
Voldemort
Sones
SciDB
56. Alta Disponibilidad - Ideal
• Sistemas de archivos en red distribuidos (o en cluster)
Ceph
dCache
Diaser
GFS
GlusterFS
Lustre
MooseFS
OCFS2 (Oracle)
OpenAFS
Tahoe - LAFS
57. Alta Disponibilidad – La realidad
• Actualmente NO todo el FLOSS que presta servicios
online soporta nativamente la alta disponibilidad.
• Apache, es un ejemplo!!
• Pero tiene solución!!
• La solución esta basada en el mismo ecosistema que
existe alrededor del FLOSS
• El sistema operativo debe hacerlo.
58. Alta Disponibilidad – La Solución
• Para que nuestro servicio soporte ALTA DISPONIBILIDAD
nos toca DARLE UNA MANITO
• Esto conlleva:
• Nuevos elementos en juego / Mas componentes / Mas servicios
• Consumo de mas recursos
• Mas monitoreo
• Mas puntos de falla (posiblemente)
• Cuesta hacerlo pero su precio se paga en beneficios
59. Alta Disponibilidad – La Solución
• Dentro del Ecosistema FLOSS existen dos componentes:
• DRDB
• Linux-HA / Pacemaker (OpenAIS)
• Ellos dotan al SISTEMA OPERATIVO de ALTA
DISPONIBILIDAD
61. Alta Disponibilidad – Linux-HA
• Su objetivo entregar un conjunto de componentes que
permita la construcción de BLOQUES de computo
CLUSTERS DE ALTA DISPONIBILIDAD
• Gestiona la comunicación
• Gestiona la pertenencia (Membresía)
• Gestiona y monitorea los recursos (CRM – Cluster
Resource Manager)
66. Alto Desempeño
• El crecimiento vertical posee un limite
• Los recursos físicos fijan un limite en prestación del
servicio
• Ejemplos:
• Cantidad de información a almacenar
• Cantidad de información a procesar
• Cantidad de información a transferir
• Cantidad de usuarios que se pueden atender
• Los servicios deben de funcionar pero con unos tiempos
de respuesta y desempeños deseados
67. Alto Desempeño
• Como se obtiene?
• Existen dos soluciones:
1. Revisando de nuevo que pasa al interior de nuestro
Software (No hay que ser voraces)
• Optimizando código
• Aplicando nuevas estrategias y tecnologías (NOSQL)
2. Buscar ESCALABILIDAD
• En infraestructura base – Hardware, SO , Servicios
• Desarrollando con enfoque a Middleware / SOA
68. Alto Desempeño - Escalabilidad
• El crecimiento ya sucede de forma HORIZONTAL
• Objetivo: atender MUCHOS USARIOS con CALIDAD
70. Alto Desempeño – Solución
• La solución esta netamente asociada a la
ARQUITECTURA Seleccionada
• Tanto de Infraestructura FISICA como LOGICA
• Listado de Tecnologías que se pueden usar:
71. Alto Desempeño – Tecnologías
• Balanceadores de Carga (Load Balancers)
• Despachadores
• Round Robin DNS (Técnica, configuración)
• CDN (Content Delivery Network)
• Almacenamiento
• NAS
• SAN
• Sistema de archivos distribuidos
• Base de Datos NO Relacionales (NOSQL)
72. Alto Desempeño – Tecnologías
• Desarrollando:
• Data Partitioning (Particionado de datos)
• Map Reduce (Batch parallel procesing)
• Cache Engine (Cache Dinámico) DATA y WEB
• Resource Pool
• DBSession (Conexiones TCP son costosas de crear, se
debe reutilizar)
• Calcular un resultado aproximado
• Filtrar desde la fuente
• Procesos Asincrónicos (Callback y Polling)
• Cambiar de lenguajes interpretados a compilados o
nativos
73. Alto Desempeño – Tecnologías
Y cualquier otra cosa que sirva!!!!!
• Por eso motivo GOOGLE, FACEBOOK, TWITTER,
AMAZON, NASA, MICROSOFT, etc. han estado
acelerando estos cambios.
74. Alto Desempeño – Tecnologías
• Algunas Implementaciones en FLOSS:
• Ultra Monkey (Balanceador de carga Capa 4)
• Balance (Balanceador de carga Capa 4)
• Zen Load Balancer (Balanceador de carga Capa 4)
• Estos implementan balanceo a nivel TCP, dando soporte
a múltiples servicios o protocolos
75. Alto Desempeño – Tecnologías
• Pound (Proxy)
• SQUID – Reverse Proxy
• Varnish (Cacheador, Proxy Reverse)
• Apache Traffic Server (gestor de trafico)
• Apache, NGINX, Cherokee, Ligthttpd (Mod proxy reverse)
• Apache, NGINX (Mod balanceadores de carga)
• Estos implementan balanceo a nivel HTTP, Capa 7
76. Alto Desempeño – Tecnologías
• Todo el ecosistema de servidores web, frameworks,
Servidores de aplicaciones, etc de:
• PHP (Zend)
• JAVA
• PYTHON
• RUBY
• EARLANG (Nativo)
• Middleware / SOA:
• Fundación APACHE
• JBOSS
• WSO2
• ObjectWeb
78. Virtualización
• La virtualización puede abstraer todo y entregar una
maquina virtual aparentemente infinitiva.
• AMAZON, han realizado pruebas de un ambiente con
10.000 Nucleos