"Platform as a Service" à l'exemple de Django on Beanstalk

Auteur

"Platform as a Service" (PaaS) offre aux entreprises une possibilité puissante d'avancer dans le développement de logiciels modernes et basés sur le cloud. L'élément déterminant est que les entreprises sont déchargées de la responsabilité de la gestion de l'infrastructure sous-jacente (généralement le matériel et les systèmes d'exploitation). L'avantage est ici particulièrement que les développeurs peuvent se concentrer sur le déploiement et la maintenance des applications. Le modèle Platform-as-a-Service permet d'être plus productif, car il n'est pas nécessaire de s'occuper de l'acquisition de ressources, de la planification des capacités, de la maintenance des logiciels, de l'application de correctifs ou d'autres tâches indifférenciées liées à l'exploitation d'une application. (source)

La " Platform as a Service " (PaaS) offre aux entreprises un moyen important de piloter le développement de logiciels basés sur le cloud. L’exemption de la responsabilité de gérer l’infrastructure sous-jacente (généralement le matériel et les systèmes d'exploitation) est un facteur déterminant pour les entreprises. De plus, les développeurs peuvent se consacrer sur le déploiement et la maintenance des applications, ce qui est un avantage considérable.

Le modèle Platform-as-a-Service permet aux entreprises d'être plus productives. En effet, elles ne se chargent plus de l'acquisition des ressources, de la planification des capacités, de la maintenance des logiciels, de l'application de correctifs ou encore d'autres tâches indifférenciées liées à l'exploitation des applications. Dans cet article, nous abordons en détail les utilisations et les avantages typiques.

AWS Elastic Beanstalk - une vue d'ensemble

AWS Elastic Beanstalk est une plateforme en tant que service qui permet de déployer et de mettre à niveau des applications et services Web écrits en plusieurs langages. Java, .NET, PHP, Node.js, Python, Ruby, Go et Docker sont les plus utilisées sur des serveurs bien connus comme Apache, Nginx, Passenger et IIS. Les développeurs téléchargent seulement leur code et Elastic Beanstalk se charge de tout le reste, y compris le provisionnement de la capacité, la répartition de la charge, l’auto-scaling et la supervision de l'état des applications. Par ailleurs, les utilisateurs conservent un contrôle total sur les ressources AWS qui alimentent leur application et garantissent l’accès à tout moment.

Elastic Beanstalk est gratuit, les utilisateurs ne paient que les ressources AWS dont ils ont besoin pour le stockage et l'exécution de leur application. (source)

Comment déployer une application Django sur Elastic Beanstalk ?

Cet article explique comment déployer un site web Django par défaut, généré automatiquement, sur un environnement AWS Elastic Beanstalk exécutant Python. Pour y parvenir, toutes les conditions prérequises Python courantes doivent être installées, notamment les packages suivants : Python 3.7 ou plus, pip, virtualenv et awsebcli. Dans le cadre de cet article, le framework python-Django sera installé.

Instructions générales étape par étape :

Étape 1 : Configuration d'un environnement virtuel Python
Étape 2 : Création d'un projet Django
Étape 3 : Configuration de l'application Django créée pour Elastic Beanstalk
Étape 4 : Utiliser l'interface de ligne de commande Elastic Beanstalk pour configurer le site Web

Étape 1 : Configurer un environnement virtuel Python

Créez l’environnement virtuel eb-virt avec la commande virtualenv et utilisez-le pour installer Django et ses dépendances. En utilisant un environnement virtuel, vous pouvez savoir exactement de quels packages votre application a besoin, afin que les packages requis soient installés sur les instnces Amazon EC2 exécutant votre application.

Ci-dessous les commandes à saisir pour les systèmes basés sur Unix. Pour Windows, les commandes se trouvent dans le Guide officiel du développeur AWS. (source)

Étape 2 : Créer un projet Django

Désormais, vous êtes prêt à créer un projet python Django et à l'exécuter dans l'environnement virtuel de cloud computing sur votre PC. Tout d'abord, il faut activer l'environnement virtuel eb-virt, puis il faut créer un projet python Django nommé ebdjango avec la commande django-admin startproject.  Enfin, avec manage.py runserver, vous pouvez démarrer votre site Django localement.

Pour voir le site, ouvrez http://127.0.0.1:8000/ dans un navigateur web. Pour voir le résultat de votre requête, consultez le journal du serveur. En appuyant sur Ctrl+C, le serveur web s'arrête et vous reconduit à votre environnement virtuel. (source)

Étape 3 : Configurer l'application Django créée pour Elastic Beanstalk

Pour démarrer l'application cloud Django, Elastic Beanstalk recherche par défaut un fichier nommé application.py. Comme il n’existe pas dans le projet Django que vous avez créé, vous devez apporter quelques modifications à l'environnement de votre application. Afin que les modules de votre application puissent être chargés, vous devez également définir des variables d'environnement.

Exécutez pip freeze, puis enregistrez les données de sortiedans un fichier nommé requirements.txt (EB l'utilise pour déterminer quel packageinstaller sur les instances EC2 qui exécutent l’application). Ensuite, créez un répertoire nommé .ebextensions et ajoutez un fichier de configuration nommé django.config (Exemple ~/ebdjango/.ebextensions/django.config, collez le texte ci-dessous dans le fichier) - EB l'utilise pour démarrer l'application. (source)

Étape 4 : Utiliser la CLI Elastic Beanstalk pour configurer le site web

Pour créer un environnement et déployer votre application Django, vous devez initialiser votre référentiel EB CLI avec la commande eb init. Cette commande crée  une application nommée django-tutorial, comme indiqué dans l'illustration ci-dessous). Si vous souhaitez accéder à l'instance EC2 via SSH, exécutez eb init et suivez les étapes pour configurer une paire de clés par défaut. Utilisez eb create pour créer un environnement et y déployer votre application (cette commande crée un environnement EB avec équilibrage de charge appelé django-env). Une fois l'environnement créé, déterminez le nom de domaine de votre nouvel environnement à l'aide de la commande eb status (valeur de la propriété CNAME).

L'étape suivante consiste à rechercher le paramètre ALLOWED_HOSTS dans le fichier settings.py du répertoire ebdjango, à y ajouter le nom de domaine de votre application et à l'enregistrer. Déployez ensuite votre application en exécutant la commande eb deploy. EB CLI regroupe alors le contenu du répertoire de projet et le déploie dans votre environnement. Une fois le processus terminé, ouvrez votre site web avec la commande eb open. (source)

Félicitations, vous venez de déployer votre application Django Cloud avec Elastic Beanstalk via le modèle Platform-as-a-Service. Ensuite, vous pouvez mettre à jour et redéployer l'application ou sa configuration pendant qu'EB fait le reste du travail. Lorsque vous avez terminé avec cette application, terminez votre environnement Elastic Beanstalk avec eb terminate pour économiser des heures d'instance et d'autres ressources AWS entre les sessions de développement. (source)

La plupart des fournisseurs de cloud proposent une forme ou une autre de plateforme en tant que service (PaaS), mettant ainsi les avantages susmentionnés à la portée de toute entreprise. D'autres exemples de PaaS sont Microsoft Azure App Services et Google App Engine. Vous en apprendrez davantage à ce sujet dans les prochains articles de blog.

Vers tous les articles