Aplicando Big Data, noSQL y Machine Learning para ayudar a la productividad de los desarrolladores de Software 2 de Julio de 2014
Jun 14, 2015
Aplicando Big Data, noSQL y Machine Learning para ayudar a la productividad de los desarrolladores de Software
2 de Julio de 2014
Time to Market reduction
Solutions to complex specific
problems
Efficient work allocation
Through fast lean processes, we find smart answers using highly specialized skills.
Diego Evin
RESEARCHER
Sebastián Fernández Quezada
FOUNDER
Las Interrupciones
Complejidad y Extensión del
Código
Visibilidad desde y hacia
el Equipo
Recordar lo que hice
Las Interrupciones
Complejidad y Extensión del
Código
Visibilidad desde y hacia
el Equipo
Recordar lo que hice
0 2412
Jornada de trabajo típica de un desarrollador
Varias sesiones de
15 a 30 minutosUna
> 2 horasAlguna
> a 1 hora
Parnin:10
10-15 Minde recuperaciónLuego de una interrupción
Parnin:10
15-30 Minde recuperaciónLuego de una interrupción
Parnin:10
57%de las tareas
son interrumpidasMark:05 Czerwinski:04
2XTiempo
2XErrores
1 de cada 10retorna antes de
1 minParnin:10
CA
RG
A D
E M
EM
OR
IA
TIEMPO
Iqbal:04
Alta Disrupción
Alto Impactoen recuperaciónLuego de una interrupción
Trafton:03
Menor Impactoen recuperaciónLuego de una interrupción
7 Minutos
Trafton:03
Las Interrupciones
Complejidad y Extensión del
Código
Visibilidad desde y hacia
el Equipo
Recordar lo que hice
Kersten:06
>90%
de commits
con cambios en más de un archivo
25%de
transacciones
con cambios ramificados
Necesidad de
navegar código
Tamaño/Complejidaddel Proyecto
Esfuerzode Navegación
Esfuerzode Navegación
Costode Interrupción
• Edición, concurrente y múltiple
• Navegación y búsqueda
• Fases de comprensión de control de flujo y datos
Fogarty:05
Costode Interrupción
Las Interrupciones
Complejidad y Extensión del
Código
Visibilidad desde y hacia
el Equipo
Recordar lo que hice
Información de navegación de colegas para entender
el códigoDeLine:05
Información instantánea sobre cambios de otros
desarrolladores en el código común
Hattori:09
Las Interrupciones
Complejidad y Extensión del
Código
Visibilidad desde y hacia
el Equipo
Recordar lo que hice
Robbes:07
El campo de evolución del software, usa la historia del software como un activo para
entender el estado actual y para predecirel desarrollo futuro.
RefactorizaciónCantidad 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
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
Siegmund:14
Iqbal:04
Parnin:11
Jesica Fera
R&D ENGINEER
Federico Lois
FOUNDER
Practice makes perfect, but mastery might require something more than 10,000 hours of trying.
Dan Vergano
Deliberate practice is a highly structured activity engaged in with the specific goal of improving performance.
Corbett Barr
Pomodoro GTD Get Things Done
Don’t break the chain
¿Qué tienen las metodologías de productividad más populares en común?
Disminuir interrupciones
Medir en tiempos cortos los resultados
Métricas nuevas, fehacientes y precisas.
Tiempo
ActividadesArtefactos
Tiempo
ActividadesArtefactos
Tiempo Real
En la nube
Comportamiento
DISPERSION MAPTiempo
ActividadesArtefactos
System
Outside the IDE
Debugging
Building
Coding
Solución
Proyecto
Archivo
Namespace
Clase
Método
Tiempo
ActividadesArtefactos
CODE TREE
TIMELINETiempo
ActividadesArtefactos
+ 50,000 Hs.de actividad detallada+130
países + 7M de actividades
+ 1M de artefactos
Duplicando la cantidad cada 6 meses
3
Velocidad Volúmen Variedad
Cómo resolvemos el problema de Big Data
Visualizaciónde las métricas
Adquisiciónde los datos
Consolidaciónde los datos
Procesamientode los datos
¿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.
¿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
¿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.
¿Cómo se consolidan los datos?
El volumen de datos de entrada excede la capacidad de indexación
instantánea.
PersistenteNo
PersistenteINFORMACIÓN
DERIVADA
Ejemplo: Informaciónde Ranking derivada apartir de datos deactividad.
“Si cambiamos lafunción de cálculo deRanking, debemosmantener los datospersistidos sin volver arecalcularlos. Sólo serecalcula a futuro.”
¿Cómo se consolidan los datos?
Información derivada persistente
¿Cómo se consolidan los datos?
Información derivada persistente
¿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”
¿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.
¿Cómo se procesan los datos?
Ejemplo de agregación por tiempo
Meses
Semanas
Días
Horas
Minutos
Segundos
Agrupación
Visualización
¿Cómo se procesan los datos?
Ejemplo de agregación por tiempo
Meses
Semanas
Días
Horas
Minutos
Segundos
Agrupación
Visualización
TIMEZONES
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
Escalabilidad horizontal
• División de roles: Primary Storage Roles, Failover Roles, Computational StorageRoles;
• Replicación master-master con afinidad en roles primarios: requiere definición deestrategias 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?
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?
• Procesamiento cercano a los datos: el procesamiento debe hacerse evitandoel input/output a través de la red;
• Escalabilidad elástica: en cualquier momento se puede cambiar el tamaño deuna VM “on the fly” para soportar niveles altos de procesamiento(mantenimiento de índices, corrupción de índices, replicación a una nuevainstancia, actualización de la versión del motor de BD)
¿Cómo se procesan los datos?
¿Cómo escalar el procesamiento?
¿Cómo se procesan los datos?
Procesamiento cercano a los datos
Webrole
Webrole
Webrole
Failover Node
Failover Node
Primary Node
Primary Node
¿Cómo se procesan los datos?
Infraestructura completa
WebrolePrimary Node
Primary Node
Entorno de Testing
Entorno de Producción
Visualización
Visualización
jFlot, Mustache,
etc.
jQuery / AJAX
MVC4
Visualización
Visualización
Análisis
Predicción
Visualización
Horasde actividad
Calidadde conclusiones
Visualización
Minutos Días MesesHoras Semanas
On-Fire Meter Timeline
Productivity Pattern
Focus &Interruptions Time by ActivityCode
Tree
Codeusage
Your Facts
Ranking – Compare - Teams
DashboardInterruptions
Visualización / On-fire Meter
Visualización / Focus & Interruptions
Visualización / Timeline
Visualización / Code Usage
Visualización / Code Usage
http://cor.to/ca-research