Upgrade to Pro — share decks privately, control downloads, hide ads and more …

10 choses que j’ai apprises depuis que je travaille chez Deezer - 42

10 choses que j’ai apprises depuis que je travaille chez Deezer - 42

Christopher MANEU

June 01, 2016
Tweet

More Decks by Christopher MANEU

Other Decks in Technology

Transcript

  1. 10 choses que j’ai apprises depuis que je travaille chez

    Deezer Christopher Maneu Mobile Developer & Engineering Effectiveness Lead, Deezer.com @cmaneu – maneu.net 42 Paris – 01/06/2016
  2. 9 choses que j’ai apprises depuis que je travaille chez

    Deezer Christopher Maneu Mobile Developer & Engineering Effectiveness Lead, Deezer.com @cmaneu – maneu.net 42 Paris – 01/06/2016
  3. La localisation, c’est compliqué La neutralité du net Naviguer à

    large échelle Le petit-déjeuner, le repas le plus important de la semaine Wifi Camping Paradis Travailler comme un dev quand on n’est pas dev Les artistes ne sont pas bavards Le firmware qui reboot Les opérateurs nous mentent
  4. La neutralité du net Un pic sur les commentaires du

    store “Depuis ce week-end, l’application est marquee comme hors connexion, alors que je suis en 4G” La télémétrie ne montre rien Pas de nouvelles exceptions, pas de pics Notre jeu de test en local fonctionne bien
  5. La neutralité du net Après quelques jours, un utilisateur mentionne

    le nom d’un opérateur dans un commentaire du store Des tests sur certaines cartes SIM de cet utilisateur fonctionnent, pas d’autres.
  6. La neutralité du net private async Task<bool> HasAccessToDeezer() { …

    httpClient.Timeout = TimeSpan.FromMilliseconds(3500); using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, new Uri("http://api.deezer.com/robots.txt"))) …
  7. La neutralité du net private async Task<bool> HasAccessToDeezer() { if

    (disableCache) { request.Headers.Add("If-Modified-Since", DateTime.UtcNow.ToString("R", CultureInfo.InvariantCulture)); } httpClient.Timeout = TimeSpan.FromMilliseconds(3500); using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, new Uri("http://api.deezer.com/robots.txt"))) …
  8. La neutralité du net Sur les cartes SIM concernées, toute

    requête avec le header HTTP If-Modified-Since a une latence supérieure à 10 secondes.
  9. La neutralité du net - Learnings La télémétrie ne fait

    pas tout Surveiller les commentaires du store (appbot) Détecter si on a du réseau ou non est une tâche plus compliquée qu’il n’y paraît
  10. Wifi Camping Paradis - Learnings Ne pas se fier uniquement

    au statut HTTP ou au Content-Type dans vos clients HTTP Ayez un système de filtre des exceptions envoyées à la télémétrie (loghash.com)
  11. Le firmware qui reboot Nos serveurs Achat de matériel &

    installation Mise à jour du hardware Mise à jour de l’OS Mise à jour des frameworks, runtimes, etc… Déploiement du code Monitoring …
  12. Le firmware qui reboot Configuration « propre » des updates

    Recherche automatique des updates (contrôleurs RAID, etc…) Installation lors du reboot de la machine Les iDRAC sont mis à jour séparément
  13. Le firmware qui reboot Campagne de mise à jour des

    iDRAC Passage de 2.1x à 2.2x En parallèle, la version 2.3 est sortie. Tests sur quelques serveurs de la 2.3 => OK
  14. Le firmware qui reboot Lancement de la procédure de vérification

    Le bios des machines en 2.2 ont chargées la configuration des iDRAC Ils ne sont pas censés la prendre en compte
  15. Le firmware qui reboot - learnings Les updates automatiques ne

    doivent pas être planifiées en même temps sur tous les serveurs Site Reliability Engineering, O’Reilly http://www.opsschool.org/
  16. Le petit déjeuner, le repas le plus important de la

    semaine 0 50 100 150 200 250 300 350 400 450 2013 2014 2015 2016
  17. Le petit déjeuner, le repas le plus important de la

    semaine Lead Mobile Lead Android Dev Android Dev Android Lead iOS Dev iOS Dev iOS Lead Windows Dev Windows Dev Windows
  18. Le petit déjeuner, le repas le plus important de la

    semaine Team Ads Dev Android Dev iOS Dev Web Team User Engagement Dev iOS Dev Android Dev Data Science Team Playback Dev iOS Dev Android
  19. Le petit déjeuner, le repas le plus important de la

    semaine Team Ads Dev Android Dev iOS Dev Web Team User Engagement Dev iOS Dev Android Dev Data Science Team Playback Dev iOS Dev Android
  20. Le petit déjeuner, le repas le plus important de la

    semaine Deezer Weekly Breakfast Mobile Weekly Breakfast Tech Meetings Chan Slack Brown Bag Lunch …
  21. Naviguer à large échelle Les vues ne doivent pas naviguer

    vers des vues Une méthode unifiée d’accéder aux vues Pouvoir “deeplinker” une vue Pouvoir changer la vue cible en live (gatekeeping, A/B testing, …) S’intègre bien dans les frameworks natifs
  22. L’importance des deeplinks Faire revenir les utilisateurs dans l’application Transférer

    le trafic web vers les apps Gérer élégamment du contenu dynaique
  23. Naviguer à large échelle √ Les vues ne doivent pas

    naviguer vers des vues √ Une méthode unifiée d’accéder aux vues √ Pouvoir “deeplinker” une vue × Pouvoir passer un objet à une vue √ Pouvoir changer la vue cible en live (gatekeeping, A/B testing, …) √S’intègre bien dans les frameworks natifs
  24. Naviguer à large échelle I want to navigate to a

    view / an URI _navigationService.Navigate("deezer://www .deezer.com/artist/12741", null); I want to navigate to a view, but I already have this object _navigationService.Navigate(PageTokens.Ar tistPage, currentArtist);
  25. Naviguer à large échelle - Learnings Lister précisément les routes

    de vos apps Toujours utiliser un UriMapper Toutes vos pages/controler/activity doivent gérer un chargement avec un objet ou un id/paramètres
  26. Les artistes ne sont pas bavards Le livre du design

    et de l’ergonomie pour le développeur https://vimeo.com/88650145 Designing products people Love, O’Reilly Sprint, Jake Knapp (Google Ventures)
  27. Les opérateurs nous mentent Plusieurs commentaires du store Des retours

    d’autres employés Deezer « J’ai de la 4G, mais l’app Deezer est offline »
  28. Les opérateurs nous mentent - Learnings Les utilisateurs 4G sont

    parfois des utilisateurs 3G 3G > 2G, 2G > 0 L’erreur de connexion doit être la norme Les requêtes « interactives » doivent respecter le temps perçu Ces règles sont valables pour les devs web (services worker FTW)