Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
[SPANISH ]Codealike en MUG Argentina
1. Aplicando Big Data, noSQL y Machine Learning para ayudar a la
productividad de los desarrolladores de Software
2 de Julio de 2014
2.
3. Time to Market
reduction
Solutions to
complex specific
problems
Efficient work
allocation
Through fast lean processes, we find smart answers using highly specialized skills.
26. Robbes:07
El campo de evolución del software, usa la
historia del software como un activo para
entender el estado actual y para predecir
el desarrollo futuro.
27. Refactorización
Cantidad de Clases
o Métodos
De creación o
modificación de
artefactos
Cantidad de
cambios
Longitud temporal
De modificaciones
que cambian
artefactos una o
varias veces de
forma repetitiva
Robbes:07
28. Planificación basada en la evidencia
• Información histórica de tiempo, gente y esfuerzo
real de proyectos empleada para estimar costos y
velocidades de desarrollo
• Agregar trazabilidad a la cadena de producción
Spolsky:07
49. Cómo resolvemos el problema de Big Data
Visualización
de las métricas
Adquisición
de los datos
Consolidación
de los datos
Procesamiento
de los datos
50. ¿Cómo se adquieren los datos?
A través de Extensiones instaladas en el entorno del desarrollador.
Desafío: ¿Cómo logramos medir el milisegundo evitando generar una baja
de performance en el IDE?
• Aprovechando los eventos que el IDE nos notifica;
• Reduciendo al mínimo la carga ante cada evento: los datos se guardan
temporalmente para luego ser procesados y enviados en batch;
• Trabajando fuera del thread de UI: esto asegura que cualquier procesamiento se
haga en background y evita bloquear el control del IDE
• Reduciendo el procesamiento del lado del cliente: sólo se empaquetan los eventos
y estados en “crudo” para hacer más eficiente el envío.
51. ¿Cómo se consolidan los datos?
Desafío: ¿Cómo integrar datos en volumen en (soft) Real Time?
• Base de datos de tipo documental (noSQL): vs. Base de datos relacional.
• Consistencia eventual vs. ACID
• Escalabilidad horizontal vs. Escalabilidad vertical.
• Optimizando el input-output de la base de datos:
• Tenants/BDs separados de acuerdo al tamaño de los datos que almacenan
• Diferentes motores de Storage de acuerdo al tipo de datos y procesamiento
sobre los mismos
• Compresión al momento de almacenamiento
52. ¿Cómo se consolidan los datos?
Desafío: ¿Cómo integrar datos en volumen en (soft) Real Time?
• Reduciendo el impacto del indexado de los datos:
• Guardando la información derivada crítica de forma persistente.
• Para volúmenes manejables, acceder directamente la data “cruda” mediante el
uso de “keys derivables”
• Utilización de referencias.
53. ¿Cómo se consolidan los datos?
El volumen de datos de entrada
excede la capacidad de indexación
instantánea.
Persistente
No
Persistente
INFORMACIÓN
DERIVADA
54. Ejemplo: Información
de Ranking derivada a
partir de datos de
actividad.
“Si cambiamos la
función de cálculo de
Ranking, debemos
mantener los datos
persistidos sin volver a
recalcularlos. Sólo se
recalcula a futuro.”
¿Cómo se consolidan los datos?
Información derivada persistente
56. ¿Cómo se consolidan los datos?
Información derivada no persistente
Ejemplo: Información derivada que sumariza la actividad por tipo y
tecnología.
“Si cambiamos la forma en que se agregan, o
agregamos nuevos tipos de datos, debemos recalcular”
57. ¿Cómo se procesan los datos?
Desafío: ¿Cómo procesar datos en volumen en (soft) Real Time?
• Utilizando “Workers” de tipo Map-Reduce para generar información derivada:
Particionamiento Map Reduce
por lapso de
tiempo, por
artefacto, por tipo
de datos, etc.
cartesianos, lineales,
etc.
por tiempo, por tipo
de actividad, por
usuario, etc.
58. ¿Cómo se procesan los datos?
Ejemplo de agregación por tiempo
Meses
Semanas
Días
Horas
Minutos
Segundos
Agrupación
Visualización
59. ¿Cómo se procesan los datos?
Ejemplo de agregación por tiempo
Meses
Semanas
Días
Horas
Minutos
Segundos
Agrupación
Visualización
61. Ejemplo: Utilización de
tecnología a lo largo del
tiempo.
¿Cómo se procesan los datos?
Agregación por artefacto/tiempo
Meses
Semanas
Días
Horas
Minutos
Segundos
Tecnologías
File
Estado
62. Escalabilidad horizontal
• División de roles: Primary Storage Roles, Failover Roles, Computational Storage
Roles;
• Replicación master-master con afinidad en roles primarios: requiere definición de
estrategias de manejo de conflictos;
• Sharding: distribución física de ciertos tipos de datos
• Distribución de datos de procesamiento;
• Distribución para ofrecer distintos niveles de servicio (por ejemplo, usuarios
Premium vs. usuarios free).
¿Cómo se procesan los datos?
¿Cómo escalar el procesamiento?
63. Webrole
Webrole
Gateway
Esquema Master-
Master de Storage
Webrole
Failover
Node
Failover
Node
Primary
Node
Sharding en nodos de
procesamiento
Primary
Node
¿Cómo se procesan los datos?
¿Cómo escalar el procesamiento?
64. • Procesamiento cercano a los datos: el procesamiento debe hacerse evitando
el input/output a través de la red;
• Escalabilidad elástica: en cualquier momento se puede cambiar el tamaño de
una VM “on the fly” para soportar niveles altos de procesamiento
(mantenimiento de índices, corrupción de índices, replicación a una nueva
instancia, actualización de la versión del motor de BD)
¿Cómo se procesan los datos?
¿Cómo escalar el procesamiento?
70. Visualización
Minutos Días MesesHoras Semanas
On-Fire Meter Timeline
Productivity Pattern
Focus &
Interruptions Time by ActivityCode
Tree
Code
usage
Your Facts
Ranking – Compare - Teams
Dashboard
Interruptions