Slide 1

Slide 1 text

¿Qué pasa luego de salir a producción? mDevConf 2020

Slide 2

Slide 2 text

Sobre mí ● Facundo Rodríguez Arceri ● Buenos Aires, Argentina ● Android Developer en Ring (Amazon) ● Docente e instructor ● Experiencia desarrollando en Android desde 2011 ● @facundomr

Slide 3

Slide 3 text

Introducción ● Esta es una charla sobre conceptos generales. ● ¿Dónde nos enseñan esto?

Slide 4

Slide 4 text

Agenda ● Nombrando versiones ● Distribución ● Lanzamiento progresivo ● Reseñas en la consola ● Usuarios libres de fallos ● Adopción ● Feature flags ● A/B Testing

Slide 5

Slide 5 text

Nombrando versiones ● versionCode+versionName / Version+Build Number ● IntelliJ Idea: 2020.3 ○ Año.Version ● Ubuntu 20.10 ○ Año.Mes ● macOS: 11.0.1 ○ Mayor.Minor.Fix

Slide 6

Slide 6 text

Distribución ● Producción: Play Store / App Store ● ¿Y para test? ○ Firebase App Distribution ○ HockeyApp ○ Visual Studio App Center

Slide 7

Slide 7 text

Distribución

Slide 8

Slide 8 text

Lanzamiento progresivo ● Debemos salir a producción de a poco. ● El mundo real es distinto a nuestros ambientes de pruebas. ○ Marcas y modelos de dispositivos. ○ Calidades de conexión a Internet. ○ Versiones de sistemas operativos. ○ Idiomas / encoding de los dispositivos. ○ Zonas horarias.

Slide 9

Slide 9 text

Lanzamiento progresivo

Slide 10

Slide 10 text

Reseñas en la consola ● Interacción humana ● Requiere trabajo y constancia para revisar periódicamente. ● No necesariamente apunta a aspectos técnicos. ○ Conviven tecnología y gestión del producto ❤ ● Lo bueno, lo malo y lo feo.

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Encontrando valor ✅

Slide 14

Slide 14 text

● Porcentaje de los usuarios diarios de una versión (Daily Active Users) que no han experimentado ningún error fatal (crash) durante toda su sesión de uso en la app Usuarios libres de fallos (Crash-free users)

Slide 15

Slide 15 text

Usuarios libres de fallos (Crash-free users)

Slide 16

Slide 16 text

Adopción ● ¿Qué porcentaje de los usuarios activos diaros (DAU) utilizan determinada versión? ● Cuanto más alto es este valor, menos influye el azar sobre las demás métricas. ● Debe acompañar el lanzamiento progresivo.

Slide 17

Slide 17 text

Adopción

Slide 18

Slide 18 text

¿Y si algo sale mal luego de un lanzamiento exitoso?

Slide 19

Slide 19 text

Feature flags ● Son parámetros que nos permiten habilitar o deshabilitar funcionalidades en forma remota, sin necesidad de publicar/distribuir una nueva versión de la app.

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

Feature flags ● Nunca dependas directamente de un servicio que provea esta funcionalidad. ○ Patrón Proxy ● Se incrementa la complejidad para probar ⚠ ○ Preference screen para poder sobre-escribir valores ● ¿Y si necesitamos que el FF dependa de varias cosas? ○ Sistema operativo ○ Versión de la app ○ Propiedades del usuario

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

A/B Testing ● Es la práctica de realizar distintos experimentos en la app para ver cuál de ellos es más efectivo. ● Antes de hacer A/B testing hay que tomar algunas decisiones ○ ¿Qué implica cada experimento? ○ ¿Qué significa que un experimento es más efectivo que el otro?

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

A/B Testing ● Similar a un feature flag ○ El código incluirá condiciones para bifurcar el camino (patrón Strategy) ○ Los experimentos se configuran remotamente. ○ Se recomienda poder sobre-escribirlos localmente. ● Generan trabajo adicional cuando la decisión ya está tomada. ○ Borrar la implementación que se descarta. ○ Muy probablemente la funcionalidad termine quedando detrás de un Feature Flag.

Slide 26

Slide 26 text

¿Preguntas?

Slide 27

Slide 27 text

¡Gracias!