Depuis cette semaine vous pouvez voir, si vous êtes matinal, ces messages en jeu :
Une sauvegarde du serveur est en cours... Vous pouvez continuer de jouer, mais l'accès au serveur est temporairement bloqué. La connexion sera de nouveau possible d'ici quelques instants. Merci de votre patience.
Puis, après quelques minutes...
La sauvegarde du serveur est terminée. L'accès au serveur est de nouveau possible. Merci de votre compréhension.
Ce nouveau système enfin rodé permet de sauvegarder beaucoup plus sécuritairement les données qu'auparavant.
Historiquement, les sauvegardes du jeu effectuées en cours de journée ne prenaient pas en compte les éléments 'en jeu', en cours de modification. Seules les données hors jeu étaient sauvées dans leur état final. Pour illustrer cet exemple, un cas simple, la sauvegarde d'un inventaire. Les inventaires sont sauvés toutes les X minutes, plus lors de la déconnexion. En cas de crash serveur, certaines données peuvent donc ne pas être à jour dans la base de données. Par exemple, vous prêtez votre Bora à un ami, vous vous déconnectez, vous êtes sauvegardés sans le Bora. Le serveur crashe avant que votre ami ne soit sauvé, il n'est pas sauvé avec, au final le Bora disparait. Inversement, vous prêtez ce même Bora, vous restez en jeu, votre ami se déconnecte. Il est sauvé avec, vous n'êtes pas sauvé sans. Le serveur crashe, le Bora est dupliqué.
Seules les sauvegardes lors de l'extinction, les mardis et vendredis, étaient fiables à 100%, car toute activité sur le serveur était nulle lors de l'extinction.
Bref, cette histoire est désormais révolue. Les sauvegardes sont désormais inclues dans le jeu, l'état des personnages est figé quelques dixièmes de seconde, le temps de préparer la sauvegarde, puis tout est sauvé proprement.
Le prix de cette sauvegarde est minime. Pendant le temps qu'elle dure, nous devons refuser les connexions au serveur. En effet, pour éviter que des données soient modifiés en cours de route, la base de données est figée, autant en lecture qu'en écriture.
Dans l'immédiat, nous prévoyons une sauvegarde par jour, autour de 6h du matin. Nous étudions à quels autre moments lancer d'autres sauvegardes, idéalement vers 11h du matin, puis vers 17h. L'idée est d'avoir des points de sauvegarde réguliers, pour qu'en cas de crash (que nous préférons éviter), le rolback soit de quelques heures tout au plus. Ainsi, plus de pertes massives dans ces cas.
Le blocage de connexion étant un minimum génant, nous devons éviter les périodes de forte affluence. Les pics de connexion se trouvant, en semaine, autour de 12h et entre 18 et 22h.