
Dans cette première partie d'une série d'articles "Citymobil - un manuel pour améliorer la disponibilité au milieu de la croissance des entreprises pour les startups", je vais expliquer comment nous avons réussi à augmenter considérablement la disponibilité des services Citymobil. L'article s'ouvre sur l'histoire de notre entreprise, notre tâche, la raison de cette tâche pour augmenter la disponibilité et les limites. Citymobil est un agrégateur de taxis à croissance rapide. En 2018, il a augmenté de plus de 15 fois en nombre de voyages réussis. Certains mois ont montré une augmentation de 50% par rapport au mois précédent.
L'entreprise a grandi comme une mauvaise herbe dans toutes les directions (elle le fait toujours): il y a eu une augmentation de la charge du serveur, de la taille de l'équipe et du nombre de déploiements. Parallèlement, de nouvelles menaces à la disponibilité des services sont apparues. L'entreprise était confrontée à une tâche de la plus haute importance: comment augmenter la disponibilité sans compromettre la croissance de l'entreprise. Dans cet article, je vais parler de la façon dont nous avons réussi à résoudre cette tâche en un temps relativement court.
1. Définir une tâche: que voulons-nous exactement améliorer?
Avant d'améliorer quelque chose, nous devons apprendre à le mesurer afin d'enregistrer les améliorations. Plus la valeur mesurable est proche des conditions commerciales, mieux c'est. En termes de succès, notre paramètre le plus important est un certain nombre de voyages réussis (ci-après "nombre de voyages"). Il s'agit du paramètre que les investisseurs examinent lorsqu'ils prennent une décision concernant un investissement. Plus il y a de voyages, plus l'entreprise a de la valeur.
Certains voyages sont rentables, certains rapportent une perte. Mais nous nous soucions également de tous les voyages, même ceux qui ne sont pas rentables car ils permettent à la part de marché d'augmenter (en fait, cette perte est un paiement pour l'augmentation de la part de marché). Par conséquent, chaque voyage supplémentaire est une bonne chose; et tout perdu - ne l'est pas. Tous les voyages sont égaux en termes de réussite commerciale.
Nous avons maintenant un critère de mesure de la disponibilité facile à comprendre: nombre de voyages perdus - ce sont les voyages que nous avons définitivement perdus en raison de problèmes techniques. Par «problème technique», nous entendons, par exemple, un bug de code, une erreur de 500 serveurs internes, un accident d'infrastructure, une intégration endommagée avec notre service partenaire (par exemple Google Maps).
2. Comment compter les voyages perdus?
Parfois, il est facile de compter les voyages perdus, et parfois c'est difficile. Par exemple, en cas de défaillance totale du service, lorsque rien ne fonctionne (cogner sur le bois), il est très facile de compter les déplacements perdus. Nous connaissons la tendance du graphique du nombre de voyages avant le crash; nous voyons cette tendance graphique après le crash; nous traçons une ligne entre le point où le temps d'arrêt a commencé et le point où il s'est terminé. Le graphique du nombre de trajets sous cette ligne complétée représente nos déplacements perdus.
Dans le graphique ci-dessous, la ligne noire montre les voyages d'un jour et la verte - les voyages de la semaine dernière. Sur l'axe des x - temps. Sur l'axe des y - nombre de déplacements à une certaine fenêtre de temps autour du point x. Vous pouvez voir une baisse évidente sous la forme d'un triangle à angle aigu. Cette zone triangulaire est le nombre de déplacements perdus. Naturellement, c'est un nombre approximatif, car c'est un graphique fluctuant. Cependant, nous comprenons que même une précision de 10 à 20% suffit pour évaluer l'ampleur de l'accident pour l'entreprise.

Si les temps d'arrêt ne sont pas totaux mais partiels (encore - on frappe au bois), l'évaluation est un peu plus compliquée. Par exemple, s'il y a un bug provoquant la situation où 10% des commandes ne sont pas distribuées le long des véhicules, alors dans le graphique de trajet, nous voyons un ravin puis rebondissons (après la correction du bug). Dans cette situation, les trajets perdus sont représentés par la zone séparée par la ligne de tendance en haut, le graphique du nombre de trajets réels en bas, le début du temps d'arrêt à gauche et la fin du temps d'arrêt à droite.
Comme le montre le graphique ci-dessous, le pic descendant n'est pas si évident, mais le nombre de voyages au cours de la semaine précédente sans pics descendants permet de comprendre que ce pic descendant signifie une perte. En fait, la comparaison des trajets pendant la journée et au même jour la semaine dernière montre clairement que le pic le plus à droite ne montre pas les trajets perdus, mais un ravin commun pour cette heure de la journée, car il est corrélé à la semaine précédente.

Une ligne de tendance est généralement difficile à construire, car il s'agit d'une dent de scie. C'est à ce moment que la comparaison d'une semaine à l'autre est utile. Si nous dessinons deux lignes dans le même graphique - la semaine dernière et le courant, nous voyons que les deux courbes sont presque similaires, et la seule différence est que l'une est située au-dessus de l'autre (généralement la semaine en cours est plus élevée que la précédente; bien que des exceptions arrive). La comparaison d'une semaine à l'autre est très importante car chaque jour de la semaine, pour diverses raisons, a une forme de graphique différente. Lorsque nous regardons le graphique d'une semaine à l'autre, nous pouvons dire l'emplacement de la ligne de tendance des voyages d'aujourd'hui.
De toute évidence, un voyage perdu en soi présente un problème beaucoup plus important qu'un seul voyage perdu. Un client qui a besoin d'un trajet trouvera un chemin à parcourir; par exemple, elle peut utiliser un service compétitif et ne nous reviendra pas plus tard. Ou elle le fera, mais seulement après avoir été déçu de notre concurrent, ce qui est peu probable car nos concurrents sont forts. Plus que cela, même si la concurrente déçoit le client, ce n'est pas donné que le client décide de nous revenir: elle va croire que tout le monde a un mauvais service et il n'y a pas de raison de passer d'un service à un autre.
Par conséquent, un voyage perdu en raison de problèmes techniques signifie, en fait, plusieurs voyages perdus.
Pour ne pas être confus en termes, appelons les voyages perdus en raison de problèmes techniques réels,
les voyages perdus primaires; et les voyages perdus à cause d'un client nous quittant pour notre concurrent -
voyages perdus secondaires.Idéalement, pour estimer la perte totale d'entreprise d'un seul voyage perdu, nous devons déterminer le nombre de voyages perdus secondaires qu'elle a générés. Donc, nous devons multiplier un certain nombre de voyages perdus principaux par un coefficient
K qui peut être calculé en fonction du taux d'utilisation moyen des services et du temps moyen nécessaire à un client pour revenir après nous avoir quitté pour notre concurrent.
En supposant que
K ne change pas beaucoup avec le temps, il nous suffirait pour comprendre la tendance des pertes de voyages de compter les principaux voyages perdus puisque la corrélation de période en période entre les principaux voyages perdus sera la même que la période corrélation inter-périodes entre les déplacements secondaires perdus. Exemple: si nous avons perdu 1000 voyages primaires le mois dernier, alors nous avons perdu 1000 *
K voyages secondaires et 1000 * (1+
K ) au total. Si, encore une fois, nous avons perdu 500 voyages principaux ce mois-ci, alors nous avons perdu 500 *
K voyages secondaires et 500 * (1+
K ) au total. Cela dit, malgré la valeur du coefficient
K , nous perdons maintenant 1000 * (1+
K ) / (500 * (1+
K )) = 2 fois moins de déplacements.
Même si le coefficient
K change avec le temps (en fonction du temps: K (t)), nous souhaitons toujours réduire le nombre de déplacements primaires perdus. Car si K (t) augmente avec le temps, nous devons certainement faire des efforts pour perdre moins de voyages primaires, car la perte financière causée par chacun d'entre eux est de plus en plus importante. D'un autre côté, si K (t) diminue avec le temps, cela signifie que pour une raison quelconque, nos utilisateurs nous deviennent de plus en plus fidèles, ce qui signifie que nous devons absolument répondre à leurs attentes!
Pour résumer: nous nous efforçons de réduire la perte de déplacements primaires. Dans la partie suivante, je vais parler du fonctionnement de notre processus et de ce que nous avons fait pour l'améliorer. Restez à l'écoute!