Top Banner
Aplicando Big Data, noSQL y Machine Learning para ayudar a la productividad de los desarrolladores de Software 2 de Julio de 2014
77

[SPANISH ]Codealike en MUG Argentina

Jun 14, 2015

Download

Software

Codealike

Aplicando Big Data, noSQL y Machine Learning para ayudar a la productividad de los desarrolladores de Software
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: [SPANISH ]Codealike en MUG Argentina

Aplicando Big Data, noSQL y Machine Learning para ayudar a la productividad de los desarrolladores de Software

2 de Julio de 2014

Page 2: [SPANISH ]Codealike en MUG Argentina
Page 3: [SPANISH ]Codealike en MUG Argentina

Time to Market reduction

Solutions to complex specific

problems

Efficient work allocation

Through fast lean processes, we find smart answers using highly specialized skills.

Page 4: [SPANISH ]Codealike en MUG Argentina
Page 5: [SPANISH ]Codealike en MUG Argentina

Diego Evin

RESEARCHER

Sebastián Fernández Quezada

FOUNDER

Page 6: [SPANISH ]Codealike en MUG Argentina
Page 7: [SPANISH ]Codealike en MUG Argentina

Las Interrupciones

Complejidad y Extensión del

Código

Visibilidad desde y hacia

el Equipo

Recordar lo que hice

Page 8: [SPANISH ]Codealike en MUG Argentina

Las Interrupciones

Complejidad y Extensión del

Código

Visibilidad desde y hacia

el Equipo

Recordar lo que hice

Page 9: [SPANISH ]Codealike en MUG Argentina

0 2412

Jornada de trabajo típica de un desarrollador

Varias sesiones de

15 a 30 minutosUna

> 2 horasAlguna

> a 1 hora

Parnin:10

Page 10: [SPANISH ]Codealike en MUG Argentina

10-15 Minde recuperaciónLuego de una interrupción

Parnin:10

Page 11: [SPANISH ]Codealike en MUG Argentina

15-30 Minde recuperaciónLuego de una interrupción

Parnin:10

Page 12: [SPANISH ]Codealike en MUG Argentina

57%de las tareas

son interrumpidasMark:05 Czerwinski:04

2XTiempo

2XErrores

Page 13: [SPANISH ]Codealike en MUG Argentina

1 de cada 10retorna antes de

1 minParnin:10

Page 14: [SPANISH ]Codealike en MUG Argentina

CA

RG

A D

E M

EM

OR

IA

TIEMPO

Iqbal:04

Alta Disrupción

Page 15: [SPANISH ]Codealike en MUG Argentina

Alto Impactoen recuperaciónLuego de una interrupción

Trafton:03

Page 16: [SPANISH ]Codealike en MUG Argentina

Menor Impactoen recuperaciónLuego de una interrupción

7 Minutos

Trafton:03

Page 17: [SPANISH ]Codealike en MUG Argentina

Las Interrupciones

Complejidad y Extensión del

Código

Visibilidad desde y hacia

el Equipo

Recordar lo que hice

Page 18: [SPANISH ]Codealike en MUG Argentina

Kersten:06

>90%

de commits

con cambios en más de un archivo

25%de

transacciones

con cambios ramificados

Necesidad de

navegar código

Page 19: [SPANISH ]Codealike en MUG Argentina

Tamaño/Complejidaddel Proyecto

Esfuerzode Navegación

Page 20: [SPANISH ]Codealike en MUG Argentina

Esfuerzode Navegación

Costode Interrupción

Page 21: [SPANISH ]Codealike en MUG Argentina

• 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

Page 22: [SPANISH ]Codealike en MUG Argentina

Las Interrupciones

Complejidad y Extensión del

Código

Visibilidad desde y hacia

el Equipo

Recordar lo que hice

Page 23: [SPANISH ]Codealike en MUG Argentina

Información de navegación de colegas para entender

el códigoDeLine:05

Page 24: [SPANISH ]Codealike en MUG Argentina

Información instantánea sobre cambios de otros

desarrolladores en el código común

Hattori:09

Page 25: [SPANISH ]Codealike en MUG Argentina

Las Interrupciones

Complejidad y Extensión del

Código

Visibilidad desde y hacia

el Equipo

Recordar lo que hice

Page 26: [SPANISH ]Codealike en MUG Argentina

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.

Page 27: [SPANISH ]Codealike en MUG Argentina

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

Page 28: [SPANISH ]Codealike en MUG Argentina

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

Page 29: [SPANISH ]Codealike en MUG Argentina
Page 30: [SPANISH ]Codealike en MUG Argentina

Siegmund:14

Page 31: [SPANISH ]Codealike en MUG Argentina

Iqbal:04

Page 32: [SPANISH ]Codealike en MUG Argentina

Parnin:11

Page 33: [SPANISH ]Codealike en MUG Argentina

Jesica Fera

R&D ENGINEER

Federico Lois

FOUNDER

Page 34: [SPANISH ]Codealike en MUG Argentina

Practice makes perfect, but mastery might require something more than 10,000 hours of trying.

Dan Vergano

Page 35: [SPANISH ]Codealike en MUG Argentina

Deliberate practice is a highly structured activity engaged in with the specific goal of improving performance.

Corbett Barr

Page 36: [SPANISH ]Codealike en MUG Argentina
Page 37: [SPANISH ]Codealike en MUG Argentina

Pomodoro GTD Get Things Done

Don’t break the chain

¿Qué tienen las metodologías de productividad más populares en común?

Page 38: [SPANISH ]Codealike en MUG Argentina

Disminuir interrupciones

Medir en tiempos cortos los resultados

Page 39: [SPANISH ]Codealike en MUG Argentina
Page 40: [SPANISH ]Codealike en MUG Argentina

Métricas nuevas, fehacientes y precisas.

Page 41: [SPANISH ]Codealike en MUG Argentina

Tiempo

ActividadesArtefactos

Page 42: [SPANISH ]Codealike en MUG Argentina

Tiempo

ActividadesArtefactos

Tiempo Real

En la nube

Comportamiento

Page 43: [SPANISH ]Codealike en MUG Argentina

DISPERSION MAPTiempo

ActividadesArtefactos

System

Outside the IDE

Debugging

Building

Coding

Page 44: [SPANISH ]Codealike en MUG Argentina

Solución

Proyecto

Archivo

Namespace

Clase

Método

Tiempo

ActividadesArtefactos

CODE TREE

Page 45: [SPANISH ]Codealike en MUG Argentina

TIMELINETiempo

ActividadesArtefactos

Page 46: [SPANISH ]Codealike en MUG Argentina

+ 50,000 Hs.de actividad detallada+130

países + 7M de actividades

+ 1M de artefactos

Duplicando la cantidad cada 6 meses

Page 47: [SPANISH ]Codealike en MUG Argentina

3

Page 48: [SPANISH ]Codealike en MUG Argentina

Velocidad Volúmen Variedad

Page 49: [SPANISH ]Codealike en MUG Argentina

Cómo resolvemos el problema de Big Data

Visualizaciónde las métricas

Adquisiciónde los datos

Consolidaciónde los datos

Procesamientode los datos

Page 50: [SPANISH ]Codealike en MUG Argentina

¿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.

Page 51: [SPANISH ]Codealike en MUG Argentina

¿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

Page 52: [SPANISH ]Codealike en MUG Argentina

¿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.

Page 53: [SPANISH ]Codealike en MUG Argentina

¿Cómo se consolidan los datos?

El volumen de datos de entrada excede la capacidad de indexación

instantánea.

PersistenteNo

PersistenteINFORMACIÓN

DERIVADA

Page 54: [SPANISH ]Codealike en MUG Argentina

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

Page 55: [SPANISH ]Codealike en MUG Argentina

¿Cómo se consolidan los datos?

Información derivada persistente

Page 56: [SPANISH ]Codealike en MUG Argentina

¿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”

Page 57: [SPANISH ]Codealike en MUG Argentina

¿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.

Page 58: [SPANISH ]Codealike en MUG Argentina

¿Cómo se procesan los datos?

Ejemplo de agregación por tiempo

Meses

Semanas

Días

Horas

Minutos

Segundos

Agrupación

Visualización

Page 59: [SPANISH ]Codealike en MUG Argentina

¿Cómo se procesan los datos?

Ejemplo de agregación por tiempo

Meses

Semanas

Días

Horas

Minutos

Segundos

Agrupación

Visualización

Page 60: [SPANISH ]Codealike en MUG Argentina

TIMEZONES

Page 61: [SPANISH ]Codealike en MUG Argentina

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

Page 62: [SPANISH ]Codealike en MUG Argentina

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?

Page 63: [SPANISH ]Codealike en MUG Argentina

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?

Page 64: [SPANISH ]Codealike en MUG Argentina

• 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?

Page 65: [SPANISH ]Codealike en MUG Argentina

¿Cómo se procesan los datos?

Procesamiento cercano a los datos

Page 66: [SPANISH ]Codealike en MUG Argentina

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

Page 67: [SPANISH ]Codealike en MUG Argentina

Visualización

Visualización

jFlot, Mustache,

etc.

jQuery / AJAX

MVC4

Page 68: [SPANISH ]Codealike en MUG Argentina

Visualización

Visualización

Análisis

Predicción

Page 69: [SPANISH ]Codealike en MUG Argentina

Visualización

Horasde actividad

Calidadde conclusiones

Page 70: [SPANISH ]Codealike en MUG Argentina

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

Page 71: [SPANISH ]Codealike en MUG Argentina

Visualización / On-fire Meter

Page 72: [SPANISH ]Codealike en MUG Argentina

Visualización / Focus & Interruptions

Page 73: [SPANISH ]Codealike en MUG Argentina

Visualización / Timeline

Page 74: [SPANISH ]Codealike en MUG Argentina

Visualización / Code Usage

Page 75: [SPANISH ]Codealike en MUG Argentina

Visualización / Code Usage

Page 76: [SPANISH ]Codealike en MUG Argentina

http://cor.to/ca-research

Page 77: [SPANISH ]Codealike en MUG Argentina