Depuis le temps qu’on fait des applications ce devrait être plus facile!

Ce matin, nous faisions le bilan d’un projet de développement d’une application web dans Azure et plusieurs commentaires autour de la table m’ont laissés perplexe. Celui dont je voudrais vous entretenir en particulier aujourd’hui est le suivant :

«  Depuis le temps qu’on fait des applications ce devrait être plus facile »

En effet, depuis plus 60 ans que l’on fait des programmes informatiques. Ça devrait être simple maintenant! Bien que la technologie ait beaucoup évolué depuis les premiers programmes Cobol, le principe de base d’un programme est sensiblement le même. On affiche une interface à l’utilisateur, on applique des règles d’affaires (validations, calculs, transformations) et on sauvegarde des données dans un support comme un fichier ou une base de données.

Ce qui a grandement changé est les outils avec lesquels nous travaillons. Il est vraiment loin derrière nous le temps où un développeur n’avait qu’à connaître un seul langage travaillait toute sa carrière à faire un seul type d’application. De plus le niveau de connaissance de la base des processeurs et des systèmes d’exploitation nécessaires pour programmer est de moins en moins élevé. Ceci est dû au haut niveau d’abstraction des nouveaux langages et frameworks que l’on utilise.

De plus, les applications de nos jours sont faites à l’aide de plusieurs technologies différentes et dans des styles architecturaux complexes et variés. Quand je suis sorti de l’école en 1997 et que j’ai décroché mon premier mandat, je me souviens de l’architecte logiciel du projet qui me demandait si je savais ce qu’était une application N-Tiers. Il a dû être bien découragé quand je lui ai répondu « N-Quoi ??? ». À l’époque, les principes d’architecture multitiers n’étaient pas du tout enseignés dans les écoles. Mais est-ce mieux aujourd’hui en 2017? Je n’en ai pas l’impression. Avec la pénurie de main-d’œuvre en informatique, nous engageons fréquemment des finissants collégiaux et universitaires. Lorsque je leur donne des formations en .net et en architecture, la plupart ne savent que vaguement ce qu’est une architecture N-Tiers. De plus ils ont vraiment du mal à saisir le pourquoi du comment dans ce genre d’architecture.

Dans les années 2000, lorsque Microsoft a accouché son nouvel environnement de développement qu’est Visual Studio.NET et le framework.NET, le niveau d’abstraction avait encore fait un bon vers l’avant, mais s’était une très bonne chose! Une même personne pouvait facilement faire une application Windows, une application web, des services web et bien plus. Visual Studio était un outil extrêmement rapide et efficace pour construire nos applications. Par contre avoir un outil fantastique ne garantit pas le succès. Imaginer que l’on invente un outil de menuiserie super technologique et performant qui peut faire l’équivalent d’un marteau, d’un tournevis, d’une scie, d’un galon à mesurer et d’autres fonctionnalités. Demandez-moi de vous construire une maison avec cet outil et je vais juste être en mesure de construire extrêmement rapidement une grosse maison tout croche… L’architecture du bâtiment sera certainement déficiente aussi (je ne suis évidemment pas menuisier). Cette analogie n’est malheureusement pas de moi. C’est comme ça que nos amis du Pattern and Practices de Microsoft expliquent leur raison d’être. Leur mission est de mettre de l’ordre dans le chaos en fournissant de la documentation et des guides pour bien utiliser cet outil qu’est Visual Studio.

Lorsque je donne de la formation, je conseille toujours fortement à mes étudiants de lire le Microsoft Application Architecture Guide, 2nd Edition  (https://msdn.microsoft.com/en-us/library/ff650706.aspx )

Microsoft définie ce guide comme étant : « Le guide destiné à aider les développeurs et les architectes de solutions à concevoir et à construire des applications efficaces et de haute qualité en utilisant la plateforme Microsoft et le .NET Framework plus rapidement et avec moins de risques; Il fournit des conseils sur l’utilisation des principes d’architecture, des principes de conception et des modèles éprouvés et fiables. »

Originalement paru en 2002, en 2009 une 2e édition de ce guide nous a été fournie pour prendre compte de nouveau concept comme l’infonuagique. Mais l’infonuagique apporte une autre belle couche d’abstraction qui nous éloigne encore de la machine de base… et encore une fois c’est une bonne chose. Il est maintenant plus facile que jamais de construire des applications disponibles mondialement, qui sont performantes et hautement disponibles, et ce à des coûts raisonnables. Malheureusement en 2009 lorsque ce guide a été révisé, Microsoft n’en était qu’au début de l’aventure avec Azure et ne couvrait que très peu les notions infonuagiques.

Lors d’une formation que j’ai donnée le mois dernier, nous avons passé un peu plus de 4 heures à parler de modélisation objet, d’architecture N-Tier et de notions d’architecture orientée service. Vous auriez dû voir la fasse des gens dans la salle lorsque je leur ai dit que ça, c’était de l’histoire ancienne! Oui tout ça est encore nécessaire et utile lorsqu’on construit des applications traditionnelles. Mais aujourd’hui avec l’infonuagique, on doit connaître la différence entre IaaS, PaaS, SaaS, FaaS et CaaS pour être en mesure de faire une bonne solution. Que ce soit pour une application en mode « Serverless », une approche « Microservices » ou du déploiement par « Container », les connaissances à acquérir sont nombreuses.

Le hasard fait drôlement les choses, mais un courriel de Microsoft ce matin annonçait la disponibilité d’un tout nouveau guide gratuit sur l’architecture des applications dans Azure. Le  Cloud Application Architecture Guide est un livre électronique de 300 pages qui se concentre sur l’architecture, la conception, la mise en œuvre et les considérations qui s’appliquent quelle que soit la plate-forme infonuagique choisie. Le livre est disponible ici :

https://azure.microsoft.com/en-us/campaigns/cloud-application-architecture-guide/?wt.mc_id=azurebg_ENAzureNewsletter_December&mkt_tok=eyJpIjoiWWpZd05XUXlNMkkwTW1SbSIsInQiOiJJSEdlQ3BZY0F5R2I2MzM3Nzh6R1pJMmxOZEJHc1BZeEwrVnV0SHVhbVZhM1J0RGYyTm9jMEl0bmoxUmg2R3ZwMEsxVGhFa0EzR2lxdzRHM3lcL3NtdWxZaXRSdTlzK1g5V1ZtQUFqZHZVS0x6TGRDK2RoSW82OHJib2swd1BYOXdZVlpkWnFqNHpoWExyczVCZWJqUjZNZllLUUxvNmFqaUpjMWhUa1c4N2M0PSJ9

Donc que pensez-vous maintenant du commentaire «  Depuis le temps qu’on fait des applications ce devrait être plus facile » … On fait tellement d’abstractions maintenant qu’un seul développeur peut à lui seul créer son infrastructure de développement, provisionner les services nécessaires dans Azure (Web App, Base de données SQL, Service d’authentification, processus de backup, etc.), programmer son application à l’aide de Visual Studio et déployer le tout lui-même en production (dans Azure). On demande donc à une personne d’être architecte techno, architecte logiciel, programmeur, expert en sécurité et en performance. Mon avis final sur la question « est-ce plus facile qu’avant ? »… oui c’est beaucoup plus facile et rapide qu’avant pour faire une belle grosse maison tout croche! Par contre, en prenant le temps de faire une bonne analyse, une bonne architecture et une bonne équipe sur un projet… Sky is the limit!

Comment créer un nouvel usager dans votre Azure Active Directory

Avec votre compte Azure, vous avez accès à Azure Active Directory (Azure AD) qui est la version infonuagique du service de gestion des identités et des répertoires de Microsoft. Je vous propose de faire un exemple simple d’ajout d’un usager dans votre Azure AD. Ça ne devrait prendre que quelques minutes à faire. (niveau débutant)

Pour avoir une explication sommaire de ce qu’est Azure Active Directory, je vous suggère le lien suivant: https://docs.microsoft.com/en-us/azure/active-directory/active-directory-whatis

Comme toujours, vous devez tout d’abord vous brancher sur votre portail Azure. (http://portal.azure.com ). Cliquez sur « Azure Active Directory » dans le menu de gauche.

Avant de créer un nouvel usager, une brève explication du domaine auto généré pour votre AD s’impose. Étant donné que le compte relié à ma souscription Azure est attaché au courriel agirard@cofomo.com, Azure AD a automatiquement ajouté un nom de domaine dans mon Azure AD qui est agirardcofomo.onmicrosoft.com. Si votre adresse de courriel est toto@patates.com votre domaine sera donc totopatates.onmicrosoft.com. À noter qu’il est possible d’acheter un nom de domaine spécifique et de l’associer à votre Azure AD via le panneau « Custom domain names »… mais c’est hors de la portée de cet article.

Pour créer un nouvel usager dans votre domaine @votrecompte.onmicrosoft.com, cliquez de nouveau sur « Azure Active Directory » dans le menu de gauche. Vous trouverez dans les « Quick tasks » l’option « Add a user ». Noter que vous pouvez aussi ajouter un usager qui utiliserait une adresse hotmail ou gmail en choisissant « Add a guest user ».

Vous n’avez qu’à donner le nom complet (dans mon exemple : Chuck Yeager). Son « User Name » sera structuré comme une adresse courriel. Étant donné que mon domaine est agirardcofomo.onmicrosoft.com l’adresse de Chuck sera ChuckYeager@ agirardcofomo.onmicrosoft.com. Dans le Profile vous pouvez entrer plus d’information sur Chuck comme son travail et à quel département il appartient.

Un mot de passe sera auto généré. Cliquer sur « Show Password » et copier le mot de passe. Vous en aurez besoin pour le communiquer à l’utilisateur. À sa première connexion, il devra le changer son mot de passe.

La façon la plus simple de tester votre usager est de s’en servir pour vous brancher dans le portail Azure (http://portal.azure.com). Vous verrez alors que cette personne a maintenant un accès à votre compte Azure mais avoir des droits très limités. Pour lui permettre de provisionner des services, vous allez devoir lui donner des droits supplémentaires, et ce préférablement via un groupe de ressource spécifique à un projet (mais ça, c’est un beau sujet pour un autre article).

Comment créer une base de données SQL sur Azure en quelques minute

Voici un court article qui explique comment créer une base de données SQL sur la plateforme infonuagique de Microsoft qu’est Azure. L’idée ici de faire un exemple simple et de base, facile à suivre.

Si vous n’avez pas de souscription Azure, vous pouvez facilement en avoir une via le lien suivant : https://azure.microsoft.com/fr-ca/free/services/sql-database/ . Vous aurez alors droit à un crédit $250 pour le premier mois.

Étape 1 : Branchez-vous sur votre portail Azure : http://portal.azure.com

Étape 2 : Création de la base de données SQL

  • Cliquez sur le symbole SQL dans la marge de gauche. Faire le « +Add »
  • Donner un nom à votre base de données… J’ai nommé la mienne « SQLExempleAzureAD » car cette BD servira pour mon futur article sur l’utilisation de Azure AD pour sécuriser un site web Azure.
  • Choisir votre souscription.
  • Associer votre BD à un « Resource group » . Un groupe de ressources sert à regrouper différents services Azure utilisés par une application. Cela sert aussi entre autres à gérer de façon commune l’accès à ces services via des groupes de sécurités créés dans votre Azure AD.
  • Laisser la source de base de donnée à « Blank database ». Vous pourriez aussi sélectionner « AdventureWorksLT » qui est une bd de démonstration utilisée dans le site web d’exemple bien connue du même nom.
  • Vous devez cliquer ensuite sur « Server, Configure required settings » et de façon à créer un nouveau serveur SQL. Lui donner un nom et configurer les infos de l’utilisateur administrateur. Ces infos vous serviront à vous connecter à la BD via un outil comme Microsoft SQL Server management Studio. (Dans mon exemple … sqlexempleazuread.database.windows.net)
  • Reste plus qu’à choisir le plan de prix (Pricing tier) selon vos besoins. Pour ma démo, j’ai choisi le plan le moins dispendieux (Basic pour 6.07 CAD par mois).
  • Cliquer sur « Create ». Un délai de quelques minutes est nécessaire pour créer la base de données. Une notification apparaîtra en haut à droite dans le portail Azure.

Étape 3 : Votre base de données est maintenant prête à être utilisée.

Une toute nouvelle fonctionnalité qui est présentement en « Preview » est le « Data Explorer » qui vous permet facilement de faire des requêtes et voir vos données sans être obligé de passer par Microsoft SQL Server management Studio. Dans votre cas, votre base de données est présentement vide… mais l’image suivante démontre à quoi ça ressemble quand il y a des tables de disponibles.

Il ne vous reste plus qu’à utiliser votre base de donnée dans votre application. Pour ce faire, vous aurez besoin de connaître la string de connexion à la base de données…

Vous n’avez plus qu’à copier la string de connexion et de remplacer le username et le password par des informations d’un user valide qui a accès à votre BD.

Un dernier petit détail avant de terminer… la BD est visible par les autres services Azure. Toutefois, elle ne l’est pas pour les services et applications en dehors d’Azure, ce qui inclut vos applications ou services web qui roulent dans votre infrastructure d’entreprise. Pour les rendre accessibles, vous devez ajouter les adresses IP des service/app externe dans le firewall de SQL Azure. Ceci est aussi vrai pour utiliser Microsoft SQL Server management Studio sur votre poste local.

Vous pouvez permettre une seule adresse (comme dans l’exemple ici) ou un range d’adresse IP.

Vous êtes en voiture maintenant !