[PYTHON] Problèmes et contre-mesures dans le développement de jeux d'applications pour smartphone Partie 2

Ceci est une suite de Problèmes et contre-mesures pour le développement de jeux d'applications pour smartphone, partie 1.

Je ne sais pas qui fait actuellement quelle tâche

Je suis actuellement responsable de l'équipe serveur, mais le problème est la gestion des tâches des membres.

Les tâches sont gérées sur le backlog en consultant le diagramme de Gantt chaque matin.

backlog_1.png

Même si vous créez une tâche de base, laissez le responsable non affecté et demandez au membre qui a terminé la tâche de mettre en œuvre la tâche qui n'est pas affectée au responsable.

La tâche créée sera attribuée aux membres et les transitions d'état suivantes se produiront.

statut La description
Défaut(rouge) État dans lequel la tâche a été créée. Même si le responsable est touché, il reste tel quel
En traitement(Bleu) 担当者がタスクを開始しだしたら、担当者がEn traitementにする
Traité(vert) 担当者がタスクを完了した場合、担当者がTraitéにする
Terminé 処理済みのものを、確認し、リーダがTerminéにする。担当者は実装した本人にし、変えない

En faisant ce qui précède, vous pouvez vérifier quelle tâche le membre a traitée ultérieurement en filtrant par responsable, ce qui est pratique pour regarder en arrière.

Les tâches à accomplir à l'avenir sont oubliées

Pour rappel, toutes les tâches à effectuer sont inscrites sur le backlog et sur le diagramme de Gantt du backlog avec une date appropriée dans le futur. Je n'oublierai jamais cela! Devrait être.

Le client dit qu'il y a une erreur sur le serveur, mais je ne sais pas quel type de demande a été faite

Un modèle courant est que le client a planté l'application (500 ou quelque chose est revenu) en raison d'une réponse du serveur, mais vérifiez-le. Dans certains cas, comme un rapport du débogueur, il y a un décalage dans le temps, il est donc difficile de savoir quelle demande. Même si vous obtenez un ** ID utilisateur **, il est difficile de rechercher à partir de nombreuses requêtes.

Les éléments suivants peuvent être considérés comme des mesures à cet effet.

Permettre de voir les demandes et réponses pour chaque ID utilisateur sur l'écran de gestion

Celui qui était à l'origine utilisé par d'autres équipes semblait pratique, alors je l'ai porté et j'ai demandé aux membres de l'équipe de l'améliorer.

Vous pouvez restreindre les demandes envoyées au serveur par ID utilisateur et effectuer une recherche. Il enregistre également le temps de traitement du serveur, vous pouvez donc filtrer les demandes avec une réponse lente.

api_res_1.png

Appuyez sur le menu ouvert pour voir le contenu de la demande et de la réponse.

api_res_2.png

Ce qui précède est utile car le client peut également voir intuitivement la demande et la réponse.

Autoriser Sentry à rechercher par ID utilisateur

La société utilise Sentry en tant que service pour détecter et enregistrer les exceptions.

Lors de l'envoi de ce journal Sentry, l'ID utilisateur peut également être envoyé sous forme de métrique personnalisée.

class ErrorHandleMiddleware(object):
    ...
    def process_exception(self, request, exception):
        if not self._can_emit(exception):
            return
        data = self._gen_data(request)
        if getattr(request, 'device_id', None):
            tags = {'device_id': request.device_id}
        else:
            tags = None
        client.captureException(data=data,
                                tags=tags,
                                exc_info=sys.exc_info())
    ...

Cela vous permet de trouver l'erreur en recherchant par ID utilisateur.

Lorsqu'une exception se produit, divers journaux sont envoyés à Sentry et peuvent être vus comme suit.

sentry_1.png

sentry_2.png

Vérifier les erreurs avec une nouvelle relique

Également dans New Relic [ici](http://qiita.com/wapa5pow/items/0a4132c62d807286af9d#%E3%82%B1%E3%83%BC%E3%82%B93-%E4%BE%8B%E5%A4% 96% E3% 81% 8C% E7% 99% BA% E7% 94% 9F% E3% 81% 97% E3% 81% 9F% E3% 81% A8% E3% 81% 8D% E3% 81% AB% E3% 81% 9D% E3% 81% AE% E3% 83% 97% E3% 83% AC% E3% 82% A4% E3% 83% A4% E3% 83% BCid% E3% 81% 8C% E7% Vous pouvez envoyer l'ID utilisateur en faisant quelque chose comme 9F% A5% E3% 82% 8A% E3% 81% 9F% E3% 81% 84).

Je souhaite identifier les API lentes et empêcher leur publication avant leur publication

[Écrit avant](http://qiita.com/wapa5pow/items/e3ef018af270cc2ad014#%E3%82%B1%E3%83%BC%E3%82%B91-%E3%82%A2%E3%83% 97% E3% 83% AA% E3% 82% B1% E3% 83% BC% E3% 82% B7% E3% 83% A7% E3% 83% B3% E3% 81% AE% E5% BF% 9C% E7% AD% 94% E3% 81% 8C% E9% 81% 85% E3% 81% 84% E3% 81% 91% E3% 81% A9% E3% 82% 82% E3% 81% A3% E3% 81% A8% E6% 97% A9% E3% 81% 8F% E3% 81% AA% E3% 82% 89% E3% 81% AA% E3% 81% 84% E3% 81% 8B) Je pense que tu devrais l'utiliser.

Je veux voir si les performances du serveur sortent

Je pense que vous devriez faire un test de charge. locust est écrit en python et ça fait du bien. J'écrirai ici le savoir-faire séparément.

Je souhaite reproduire l'utilisateur dans l'environnement de production dans l'environnement de développement

Lors du test dans un environnement de développement, vous souhaiterez peut-être utiliser les mêmes informations utilisateur que dans un environnement de production. Par exemple, le niveau a été augmenté ou l'unité spécifiée est en possession.

Ce qui précède peut être réalisé sur l'écran de gestion, et l'importation / exportation peut être effectuée avec json.

Recommended Posts

Problèmes et contre-mesures dans le développement de jeux d'applications pour smartphone Partie 1
Problèmes et contre-mesures dans le développement de jeux d'applications pour smartphone Partie 2
Problèmes et contre-mesures pour le débordement de la binarisation d'Otsu en Python
[Astuces] Problèmes et solutions dans le développement de python + kivy
Modulation et démodulation AM avec Python Partie 2
Test de charge de l'application de jeu pour smartphone Iroha
Débutant du développement d'applications GUI Raspberry Pi facile, partie 1
[Python] Développement d'applications IA Udemy Image Judgment - Partie 1
Débutant du développement d'applications GUI Raspberry Pi facile, partie 2