SlideShare una empresa de Scribd logo
1 de 77
Descargar para leer sin conexión
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 minutos
Una
> 2 horas
Alguna
> a 1 hora
Parnin:10
10-15 Min
de recuperación
Luego de una interrupción
Parnin:10
15-30 Min
de recuperación
Luego de una interrupción
Parnin:10
57%
de las tareas
son interrumpidas
Mark:05 Czerwinski:04
2X
Tiempo
2X
Errores
1 de cada 10
retorna antes de
1 minParnin:10
CARGADEMEMORIA
TIEMPO
Iqbal:04
Alta Disrupción
Alto Impacto
en recuperación
Luego de una interrupción
Trafton:03
Menor Impacto
en recuperación
Luego 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/Complejidad
del Proyecto
Esfuerzo
de Navegación
Esfuerzo
de Navegación
Costo
de 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
Costo
de 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ódigo
DeLine: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 predecir
el desarrollo futuro.
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
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 MAP
Tiempo
ActividadesArtefactos
System
Outside the IDE
Debugging
Building
Coding
Solución
Proyecto
Archivo
Namespace
Clase
Método
Tiempo
ActividadesArtefactos
CODE TREE
TIMELINE
Tiempo
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ón
de las métricas
Adquisición
de los datos
Consolidación
de los datos
Procesamiento
de 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.
Persistente
No
Persistente
INFORMACIÓN
DERIVADA
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
¿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 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?
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 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?
¿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
Webrole
Primary
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
Horas
de actividad
Calidad
de conclusiones
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
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
[SPANISH ]Codealike en MUG Argentina

Más contenido relacionado

Similar a [SPANISH ]Codealike en MUG Argentina

Optimizacion de Modelos Multidimensionales con Analysis Services
Optimizacion de Modelos Multidimensionales con Analysis ServicesOptimizacion de Modelos Multidimensionales con Analysis Services
Optimizacion de Modelos Multidimensionales con Analysis ServicesMarco Tulio Gómez Reyes
 
Entorno de datos Microsoft Cloud
Entorno de datos Microsoft CloudEntorno de datos Microsoft Cloud
Entorno de datos Microsoft CloudJoseph Lopez
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?SolidQ
 
Dimensionado y gestión del entorno virtual
Dimensionado y gestión del entorno virtualDimensionado y gestión del entorno virtual
Dimensionado y gestión del entorno virtualOmega Peripherals
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Socialmetrix
 
Optimizando con Open Source y Postgres en espanol
Optimizando con Open Source y Postgres en espanolOptimizando con Open Source y Postgres en espanol
Optimizando con Open Source y Postgres en espanolEDB
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...SolidQ
 
Global Azure Bootcamp 2016 Bogota SQL2016 dba IaaS PaaS v4
Global Azure Bootcamp 2016 Bogota SQL2016 dba IaaS PaaS v4Global Azure Bootcamp 2016 Bogota SQL2016 dba IaaS PaaS v4
Global Azure Bootcamp 2016 Bogota SQL2016 dba IaaS PaaS v4Julián Castiblanco
 
Solid q healthcheck es-marketing presentacion-final2016
Solid q healthcheck es-marketing presentacion-final2016Solid q healthcheck es-marketing presentacion-final2016
Solid q healthcheck es-marketing presentacion-final2016Leonor Hidalgo Matías
 
Mañana empiezo un nuevo proyecto: ¿qué metodología ágil me pongo?
Mañana empiezo un nuevo proyecto: ¿qué metodología ágil me pongo?Mañana empiezo un nuevo proyecto: ¿qué metodología ágil me pongo?
Mañana empiezo un nuevo proyecto: ¿qué metodología ágil me pongo?Luis Antonio Salazar Caraballo
 
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...SolidQ
 
SQL Server 2014 y La Plataforma de Datos
SQL Server 2014 y La Plataforma de DatosSQL Server 2014 y La Plataforma de Datos
SQL Server 2014 y La Plataforma de DatosJoseph Lopez
 
Sql server 2014 y la plataforma de datos
Sql server 2014 y la plataforma de datosSql server 2014 y la plataforma de datos
Sql server 2014 y la plataforma de datosSpanishPASSVC
 
Casos de bodegas de datos con SQL Server
Casos de bodegas de datos con SQL ServerCasos de bodegas de datos con SQL Server
Casos de bodegas de datos con SQL ServerEduardo Castro
 
Seminario web: Simplificando el uso de su base de datos con Atlas
Seminario web: Simplificando el uso de su base de datos con AtlasSeminario web: Simplificando el uso de su base de datos con Atlas
Seminario web: Simplificando el uso de su base de datos con AtlasMongoDB
 
Dts y analysis services 2000
Dts y analysis services 2000Dts y analysis services 2000
Dts y analysis services 2000Salvador Ramos
 
Big Data - Desarrollando soluciones efectivas
Big Data - Desarrollando soluciones efectivasBig Data - Desarrollando soluciones efectivas
Big Data - Desarrollando soluciones efectivasJoseph Lopez
 
¿Cómo implementar la analítica empresarial en tiempo real?
¿Cómo implementar la analítica empresarial en tiempo real?¿Cómo implementar la analítica empresarial en tiempo real?
¿Cómo implementar la analítica empresarial en tiempo real?Denodo
 
Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...SolidQ
 

Similar a [SPANISH ]Codealike en MUG Argentina (20)

Optimizacion de Modelos Multidimensionales con Analysis Services
Optimizacion de Modelos Multidimensionales con Analysis ServicesOptimizacion de Modelos Multidimensionales con Analysis Services
Optimizacion de Modelos Multidimensionales con Analysis Services
 
Entorno de datos Microsoft Cloud
Entorno de datos Microsoft CloudEntorno de datos Microsoft Cloud
Entorno de datos Microsoft Cloud
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?
 
Dimensionado y gestión del entorno virtual
Dimensionado y gestión del entorno virtualDimensionado y gestión del entorno virtual
Dimensionado y gestión del entorno virtual
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
 
Optimizando con Open Source y Postgres en espanol
Optimizando con Open Source y Postgres en espanolOptimizando con Open Source y Postgres en espanol
Optimizando con Open Source y Postgres en espanol
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
 
Global Azure Bootcamp 2016 Bogota SQL2016 dba IaaS PaaS v4
Global Azure Bootcamp 2016 Bogota SQL2016 dba IaaS PaaS v4Global Azure Bootcamp 2016 Bogota SQL2016 dba IaaS PaaS v4
Global Azure Bootcamp 2016 Bogota SQL2016 dba IaaS PaaS v4
 
Solid q healthcheck es-marketing presentacion-final2016
Solid q healthcheck es-marketing presentacion-final2016Solid q healthcheck es-marketing presentacion-final2016
Solid q healthcheck es-marketing presentacion-final2016
 
Mañana empiezo un nuevo proyecto: ¿qué metodología ágil me pongo?
Mañana empiezo un nuevo proyecto: ¿qué metodología ágil me pongo?Mañana empiezo un nuevo proyecto: ¿qué metodología ágil me pongo?
Mañana empiezo un nuevo proyecto: ¿qué metodología ágil me pongo?
 
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
 
SQL Server 2014 y La Plataforma de Datos
SQL Server 2014 y La Plataforma de DatosSQL Server 2014 y La Plataforma de Datos
SQL Server 2014 y La Plataforma de Datos
 
Sql server 2014 y la plataforma de datos
Sql server 2014 y la plataforma de datosSql server 2014 y la plataforma de datos
Sql server 2014 y la plataforma de datos
 
Casos de bodegas de datos con SQL Server
Casos de bodegas de datos con SQL ServerCasos de bodegas de datos con SQL Server
Casos de bodegas de datos con SQL Server
 
Seminario web: Simplificando el uso de su base de datos con Atlas
Seminario web: Simplificando el uso de su base de datos con AtlasSeminario web: Simplificando el uso de su base de datos con Atlas
Seminario web: Simplificando el uso de su base de datos con Atlas
 
Dts y analysis services 2000
Dts y analysis services 2000Dts y analysis services 2000
Dts y analysis services 2000
 
Big Data - Desarrollando soluciones efectivas
Big Data - Desarrollando soluciones efectivasBig Data - Desarrollando soluciones efectivas
Big Data - Desarrollando soluciones efectivas
 
Xp
XpXp
Xp
 
¿Cómo implementar la analítica empresarial en tiempo real?
¿Cómo implementar la analítica empresarial en tiempo real?¿Cómo implementar la analítica empresarial en tiempo real?
¿Cómo implementar la analítica empresarial en tiempo real?
 
Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
Técnicas avanzadas para resolver tus problemas de sql server - SolidQ Summit ...
 

[SPANISH ]Codealike en MUG Argentina