#12 Pourquoi un database developer devrait utiliser Microsoft SQL Server et Microsoft Azure ?
Le développeur base de données est un expert qui conçoit et gère des bases de données sur un ou plusieurs projets. Il doit travailler en collaboration avec tous les acteurs pouvant être impliqués dans un projet. Chez Technology Partner, Loïc est considéré comme le référent technique concernant les sujets de base de données.
Par cette interview, Loïc aborde plusieurs sujets intéressants dont celui de Microsoft SQL Server, un système de gestion de base de données incontournable pour tous database developer.
Loïc, quel est ton parcours professionnel ?
J’ai démarré mes études d’informatique par un DUT informatique à Belfort en 2008. Après d’autres tentatives professionnelles hors IT, je me suis finalement reconverti en 2019 en intégrant l’AFPA à Nancy. La formation était un titre professionnel concepteur développeur informatique. Pendant cette formation, j’ai effectué un stage chez 2DCOM en tant que développeur informatique.
Après avoir obtenu mon diplôme, Technology Partner m’a embauché en tant que développeur informatique.
Quelles sont tes missions quotidiennes chez Technology Partner ?
Depuis mon arrivée, mon rôle chez Technology Partner est :
- Le développement du Back end : développement d’API projets sur lesquels je travaille, principalement C# ASP.NET.
- L’architecture des bases de données : conception d’architectures et migration.
- D'être le référent base de données : intervention ponctuelle sur tous les projets nécessitant un besoin particulier.
Voici quelques exemples de projets sur lesquels j’ai travaillés :
- MyTax, une solution virtuelle de déclaration fiscale. (voir la fiche projet)
- JobSwitch, une plateforme de gestion de prêt personnel lors de la pandémie mondiale du Covid19. (voir la fiche projet)
- Foostix, un projet de refonte totale d’une plateforme de commande de repas en ligne (voir la fiche projet). Actuellement, c’est sur ce projet que je travaille chaque jour. Je m’occupe d’analyser l’ancienne version de la base de données pour la reproduire dans la nouvelle version. L’objectif est de la mettre à jour avec une nouvelle architecture, de nouvelles technologies et de la migrer sur le projet.
Quels sont les outils que tu utilises fréquemment ?
Les environnements de développement sont primordiaux lorsqu’on fait de la programmation, j’utilise principalement :
- SSMS (SQL Server management Studio) : qui permet la gestion de base de données : Architecture et programmation.
- Visual Studio : qui permet le développement du projet en backend en C#.
- Postman : qui permet l’exécution d’API web (qui font le lien entre le front et le back).
- SSMA (SQL Server Migration Assistant) : qui permet la migration d’un système de gestion de base de données vers un autre.
Quel est selon toi l’intérêt d’une bonne architecture de base de données ?
- Gain de Performance : Un mauvais schéma peut causer une baisse de performance lors des requêtes.
- Garantir l'intégrité des données et conserver sa cohérence
- Evolutivité : Il est plus facile de faire évoluer un schéma bien pensé et bien structuré
- Business Intelligence : Les points précédents amènent à pouvoir facilement faire de la BI avec divers comme Power BI
Selon toi, quels sont les avantages d’utiliser SQL server ?
SQL Server est le SGBD (Système de gestion de base de données) de Microsoft. Il gère l’ensemble des bases de données. Selon moi :
- Intégré à la stack Microsoft : facilité d’intégration a Azure, Entity Framework, C#, Power BI, etc.
- Robuste et performant
- Base relationnelle : Parfaitement adaptée à certains types de projets.
- Gestion des utilisateurs/droits : possibilité de se connecter au serveur par différents modes d'authentification, possibilité de gérer les droits pour chaque utilisateur et pour chaque élément.
- Partitionnement : Les tables peuvent être partitionnées : plusieurs fichiers pour une unique table, ceci permet par exemple, de stocker des données réparties par années comptables pour de meilleures performances.
- Compression des données : possibilité de compresser les données peu utilisées (archivage).
- Intégrité : MS SQL Server donne accès aux contraintes "check" qui permettent le contrôle de l'intégrité des données sur un enregistrement en écriture sans avoir à écrire de trigger, et si ce n’est pas suffisant, il est possible de coder des triggers.
- Programmation : possibilité de programmer des procédures stockées et des triggers compilés (plus performants) mais aussi des éléments plus avancés tels que les assembly, pouvant être programmé en C# et intégrés dans MS SQL Server permettant de stocker/utiliser des objets directement sur le serveur (exemple : geography, pour gérer des données géolocalisées).
- Requêtes récursives : MS SQL Server permet de coder les requêtes sous la forme de CTE (Common Table Expression), ce qui permet d'écrire des requêtes parfois plus lisibles mais aussi de donner accès aux requêtes récursives (par exemple pour gérer un système hiérarchique (système fichier/dossier) avec une profondeur non prédéterminée).
Pourquoi utiliser SQL server avec d’autres outils, comme Microsoft Azure ?
- Bon rapport qualité/prix : Grâce à l’avantage du PaaS Azure SQL Database, les coûts sont maîtrisés et plus abordables pour les entreprises.
- Scalabilité : MS SQL Server est un SGBD (Système de gestion de base de données) aussi bien adapté aux petites bases de données qu'aux volumineuses c’est à dire qu’il n’est plus nécessaire de se préoccuper des capacités techniques de la base de données pour le client, également, Azure ne facture que ce qui est utilisé en temps réel.
- Sécurité et chiffrage (Transparent Data Encryption) : La base de données est chiffrée coté serveur, les données sont déchiffrées de manière transparente lors des requêtes. De plus les fichiers de données peuvent être chiffré au repos (Encrypt at rest, activé par défaut sur Azure), il est alors plus complexe d’hacker un système chiffré de cette manière.
- Sureté et réplication : la réplication consiste à écrire les données à plusieurs endroits en même temps, permettant une plus grande disponibilité en cas d'indisponibilité d'un serveur mais aussi d'éviter une perte de données en cas de crash du disque.
- Géo réplication : En cas de panne régional ou à plus grande échelle, la géo réplication permet le basculement (manuellement) vers une base de données secondaire (voir : sureté et réplication) dans une autre région Azure.
- Restauration (Point in Time Restore) : Azure permet d'automatiser les backups de la base de données permettant un rollback (retour en arrière) en cas d'anomalie. Ces points de sauvegarde peuvent être très proches (moins d'une minute pour une petite base).
- Répartition de charge (Load Balancing) : division de la charge de travail sur plusieurs serveurs si nécessaires.
- Programmation : il y a la possibilité de programmer facilement des tâches (jobs) planifiées et récurrentes grâce aux Azure Fonctions (exemple : nettoyage de la base, …).
Ecrit par Loïc Tessier & Charline Pennisi