HEROKU

INTRODUCTION

Le domaine de l'informatique évolue constamment vers une plus grande indépendance vis-à-vis des contraintes matérielles. En effet, le matériel informatique devient rapidement obsolète et est sujet à des pannes régulières. Afin de contourner ces limitations, une tendance émerge consistant à décentraliser les ressources, qu'elles soient matérielles ou logicielles, sur plusieurs ordinateurs ou serveurs plutôt que de les centraliser dans une seule structure ou machine. Concernant les ressources logicielles, la notion de virtualisation a été initialement introduite. Elle permet à des systèmes et des applications de s'exécuter dans des environnements virtuels, indépendamment du système hôte. Plus tard, le concept de "cloud computing" est venu améliorer la virtualisation en permettant l'exécution d'applications informatiques sur des serveurs distants. Ainsi, le cloud computing peut être défini comme un concept qui autorise le fonctionnement de systèmes, d'applications et de divers services informatiques sur des serveurs distants, tout en offrant une grande flexibilité. C'est dans cette optique que de nombreuses plateformes offrant des services de cloud computing ont vu le jour et continuent de se multiplier au fil des années. Dans le cadre de ce chapitre, nous allons mettre en pratique le concept de cloud computing en examinant le fonctionnement de la plateforme Heroku pour créer des services. Notre travail se concentrera principalement sur le développement d'une application mobile et le déploiement de sa partie back-end.

             

 

 

I-      GENERALITES SUR LE CLOUD COMPUTING

1- Définition

Le cloud computing est un concept qui consiste à déporter sur des serveurs distants des stockages et des traitements informatiques traditionnellement localisés sur des serveurs locaux ou sur le poste de l'utilisateur. Selon la National Institute of Standards and Technology (NIST), le cloud computing est l'accès via le réseau, à la demande et en libreservice, à des ressources informatiques virtualisées et mutualisées.[1] Le terme cloud computing est traduit en français comme suit : informatique en nuage, informatique dématérialisée, stockage dans les nuages, stockage à distance ou encore infonuagique.

Pour le groupe de travail de CIGREF[2], qui a publié un rapport sur le fondamentaux du cloud computing, un cloud est avant tout une solution de stockage d’informations (au sens large du terme…) sur une ou plusieurs machines qui n’ont pas d’attribution fonctionnelle particulière : elles peuvent se substituer les unes aux autres. Selon le même rapport, un cloud computing est caractérisé par quatre points :

  • Un cloud est toujours un espace virtuel.
  • Un cloud contient des données qui sont fragmentées.
  • Les fragments de données sont toujours dupliqués et répartis dans cet espace virtuel.
  • Un cloud possède une fonction de restitution permettant de reconstituer les données.
  • Image1

 

Figure 1 : Les 4 points permettant d'identifier un cloud

2- Les différents services du cloud computing

Le concept de cloud vient principalement répondre aux exigences de continuité et de qualité du service. Pour approcher de ces objectifs, des travaux ont été commencé afin de trouver des méthodes dans tous les niveaux impliqués en vue d'établir un service entre un client final et un fournisseur de service. Ces niveaux sont :

  • L’application ; qui est en contact avec le client ;
  • La plateforme qui exécute l’application ;
  • L’infrastructure ; qui est le support de la plate-forme.

La figure ci-dessous l’illustre clairement :

 

Image2 1 

Figure 2: les niveaux du cloud

Ainsi, le cloud est la mise en disponibilité de ces niveaux. Le modèle de cloud computing est capable de traiter indifféremment les trois niveaux souvent utilisées du modèle de service : le Software as a Service (SaaS), le platform as a service et l’Infrastructure as a Service (IaaS).

En résumé, un cloud est donc une solution qui fournit un espace dans lequel il est possible de placer de manière virtuelle des infrastructures serveur ou réseau et des plateformes de développement ou d’exécution. Un cloud est ainsi capable de traiter les différentes couches du modèle « as a service », de l’infrastructure jusqu’à l’utilisateur.

2.1-  Software as a Service (SaaS) 

Dans ce type de service, des applications sont mises à la disposition des consommateurs. Ces applications peuvent être manipulées à l'aide d'un navigateur web, et le consommateur n'a pas à se soucier d'effectuer des mises à jour, d'ajouter des patches de sécurité et d'assurer la disponibilité du service. Gmail est un exemple de tel service. Il offre aux consommateurs un service de courrier électronique et le consommateur n'a pas à se soucier de la manière dont le service est fourni. D'autres exemples de logiciels mis à disposition en SaaS sont Google Apps, Office Web Apps, Adobe Creative Cloud ou LotusLive (IBM).

 

2.2- Platform as a Service (PaaS)

Le cloud de niveau PaaS concerne les développeurs et les producteurs d’applications. Il permet de mettre à disposition des développeurs par exemple un framework de développement adapté à leurs besoins. Il permet aussi de donner aux applications un cadre d’exécution qui produira des services SaaS. 

En clair, les offres de plate-forme en tant que service fournissent principalement un environnement dans lequel développer, déployer et exploiter des applications. Elles impliquent généralement diverses infrastructures logicielles d’application (middleware[3]), y compris les plateformes d’applications, d’intégration, d’analyse commerciale, des services de diffusion d’évènement et services back-end mobiles.

 

2.3- Infrastructure as a Service (IaaS)

Il consiste à offrir un accès à un parc informatique virtualisé. Des machines virtuelles sur lesquelles le consommateur peut installer un système d'exploitation et des applications. Le consommateur est ainsi dispensé de l'achat de matériel informatique. Ce service s'apparente aux services d'hébergement classiques des centres de traitement de données, et la tendance est en faveur de services de plus haut niveau, qui fait d’avantage abstraction de détails techniques.

2.4- Synthèse

Le PaaS peut être mis en contraste avec les offres SaaS : en ce sens que le SaaS offre un ensemble fixe de fonctionnalités d’applications tandis que la PaaS prend en charge la création et l’utilisation de code d’application avec l’ensemble des fonctionnalités requises. Le besoin de code spécialisé est très général et il est révélateur que de nombreuses offres SaaS fournissent des API spécifiquement pour permettre l’adaptation, la personnalisation et même l’extension à l’aide d’applications basées sur une PaaS.

De même, la PaaS peut être comparée aux offres IaaS : IaaS fournit une infrastructure fondamentale mais laisse l’installation, la configuration et l’utilisation des piles de logiciels nécessaires entre les mains du client au service cloud. De plus, une offre PaaS fournit des piles de middleware d’application prêtes à l’emploi et gérés par le fournisseur tandis que les offres IaaS permettent un contrôle étendu des ressources pour certaines applications, mais au prix d’un effort considérable de la part du cloud service client.

D’une manière générale, on peut faire une comparaison explicite des niveaux de gestion entre une solution traditionnelle et une solution cloud comme l’illustre la filière cidessous :

 

Image3 1

Figure 3: Vue d'ensemble sur la politique de gestion des services du cloud

 

3- Typologies et modèles de déploiement de cloud

Les travaux de recherche qui ont été effectué sur ce domaine ont abouti à poser deux questions essentielles :

  • Qui gère le cloud ?

On parle ici de la région responsable de la gestion du cloud : l’entreprise elle-même ou un opérateur cloud.

Dans le cas où c’est l’entreprise qui est responsable de la gestion du cloud avec ses propres ressources ; c’est-à-dire lorsqu’elle met en œuvre son propre système de cloud computing : on parle de cloud interne.

Dans le cas où c’est un prestataire opérateur de cloud qui est responsable de la gestion du cloud avec ses propres ressources, on parle de cloud externe.

  • Qui est le client du service offert par le cloud ?

On parle ici du bénéficiaire de l’utilisation du cloud.

Dans le cas où le cloud est dédié aux besoins propres de l’entreprise, on parle de cloud privé.

Dans le cas où le cloud est ouvert au grand public ou à d’autres entreprises, on parle de cloud ouvert ou public.

Ainsi, 4 typologies ont été identifiées. Ces typologies peuvent aussi être mélangées pour aboutir comme suit :

 

Image4 1

Figure 4: les typologies du cloud computing

 

 

La figure ci-dessous classifie quelques services cloud selon leur visibilité publique et/ou privée.

 

             Image5 1

II- ETUDE D’HEROKU : VUE D’ENSEMBLE

1- C’est quoi Heroku ?

Héroku est un service de cloud computing de type plate-forme en tant que service (PaaS). Créé en 2007, il a été racheté par Salesforce.com. À l'origine dévolue aux applications web programmées en Ruby et utilisant Rack (typiquement, des applications Ruby on Rails ou Sinatra), l'offre s'est ensuite étendue à d'autres technologies : Node.js, Java, Spring et Playframework, Clojure, Python et Django, Scala, API Facebook, ainsi que PHP. Heroku est une plate-forme basée sur un système de conteneur permettant de créer, d'exécuter et de gérer des applications modernes. Son architecture est centrée sur les processus, et non sur des instances virtuelles ou des serveurs. Le code déployé est analysé pour détecter le type d'application à faire tourner, ainsi que les processus nécessaires ; l'analyse déclenche la mise en place d'un environnement dédié, adossé à une ou des unités d'exécution appelés dynos[4], lesquelles font tourner les processus requis pour faire fonctionner l'application déployée. L'utilisateur final peut explicitement déclarer quels processus utiliser, et comment les scaler, mais la plateforme est capable de réaliser ce travail de façon automatique, en laissant simplement à l'utilisateur l'opportunité d'affiner ses réglages par défaut. Heroku est très populaire notamment parce qu’elle propose un plan gratuit ; elle utilise git pour surveiller les fichiers et savoir lesquelles vont être envoyés sur le serveur.

Pour tout dire, Heroku est une plateforme de Cloud, offrant un certain nombre de services tels que : hébergement, des services de stockage, des services pour les bases de données, de mails…etc. Notons que la plupart de ces services sont payants. Néanmoins, les services basiques sont gratuits mais très limités. 

 

2- Pourquoi Heroku ?

  • Un outil conçu pour maximiser la productivité 

Les meilleures applications proviennent de développeurs inspirés et productifs. Les bons outils et services augmenteront votre rythme de développement et vous aideront à éviter les tâches banales, à éliminer les frictions et à simplifier ou automatiser les processus. Non seulement vous pouvez avancer rapidement dans les tâches, mais vous êtes plus libre de laisser l'inspiration couler et d’avoir un meilleur résultat. La plate-forme, les outils, les services intégrés et l’écosystème de Heroku sont méticuleusement conçus pour offrir la meilleure expérience de développement possible. C’est pourquoi Heroku est devenue la plate-forme d’applications préférée de centaines de milliers de développeurs.

  • Heroku fait le gros du travail 

Il vous offre un ensemble de capacités puissantes qui donne une valeur ajoutée. La plate-forme Heroku est entièrement gérée, ce qui signifie qu’elle s’occupe des serveurs, du matériel et de l'infrastructure, pour que vous puissiez rester concentrés sur votre application. La flexibilité de la plate-forme vous permet de créer des applications en utilisant votre langage ou framework préféré et suivant des modèles d’architecture populaires, tels que des micro services. Le déploiement d’applications sur Heroku est rapide et rationalisé, avec des flux de travail intégrés qui prennent en charge les pratiques d’intégration et de diffusion continues de votre équipe. L’expérience opérationnelle de la plate-forme offre des outils intégrés permettant de faire évoluer et de maintenir facilement l’intégrité des applications. 

  • Livraison rapide des applications, cycles courts 

La plate-forme Heroku vous permet de créer et de déployer des applications rapidement. Que vous travailliez sur un projet personnel ou sur un produit d’entreprise, Heroku vous aide à prototyper rapidement de nouvelles idées, à créer de nouvelles fonctionnalités ou à fournir de nouvelles applications en production et au-delà.

  • La plate-forme Polyglot

Heroku est flexible et s'adapte à votre style de développement. La plate-forme prend officiellement en charge huit langages et frameworks de développement populaires. Heroku Buildpacks étend le système de compilation pour prendre en charge des langues ou des personnalisations supplémentaires.

  • DevOps simplifié 

Avec une plate-forme entièrement gérée, le personnel de Heroku surveille les problèmes de disponibilité, de performance et d’infrastructure, vous libérant ainsi de la distraction liée à la configuration et à la gestion de vos propres serveurs et opérations matérielles.

  • Exécutez des applications gratuitement 

Une gamme de services gratuits sur Heroku peut vous aider à expérimenter, jouer ou tester de nouvelles idées avec vos utilisateurs. En vous inscrivant à Heroku, vous disposez d'un pool d'heures d'utilisation gratuites pour vos applications. Plusieurs de leurs fournisseurs de services additionnels offrent également des services gratuits. De nombreux développeurs Heroku utilisent une gamme de services gratuits pour expérimenter, apprendre et tester de nouvelles idées avec leurs utilisateurs avant qu'ils ne soient prêts à évoluer. En outre, tous les clients Heroku ont accès aux mêmes outils de plate-forme gratuits et aux mêmes éléments open source.

  • Services de données intégrés 

Les services de données gérés de Heroku sont optimisés pour les développeurs, ce qui simplifie encore la création d’applications basées sur les données. Choisissez Heroku Postgres, Heroku Redis et Apache Kafka sur Heroku ou des services tiers.

  • Évolutivité transparente

Une fois que votre application gagne du terrain auprès des utilisateurs, vous pouvez facilement faire évoluer ses ressources en un seul clic ou en utilisant une commande à l'aide du tableau de bord Heroku ou de la CLI. La fonctionnalité de mise à l’échelle automatique de la plate-forme permet à vos applications d’agrandir ou de réduire instantanément la cadence si nécessaire.

  • Collaboration en équipe 

Heroku Teams propose des espaces de travail d'applications partagés et des outils centralisés pour gérer le travail en équipe, les processus et la facturation de votre projet d'application. Heroku Flow fournit des outils de collaboration et des workflows pour prendre en charge vos pratiques de livraison continue et d'intégration continue.

 

3- Comment fonctionne Heroku ?

Ceci est une description technique de haut niveau du fonctionnement de Heroku. Il associe de nombreux concepts que vous rencontrerez lors de l'écriture, de la configuration, du déploiement et de l'exécution d'applications sur la plate-forme Heroku.

Au préalable notons qu’il faudra d’abord créer un compte Heroku, se connecter avant de l’utiliser.

  • Définir une application 

Heroku vous permet de déployer, d’exécuter et de gérer des applications écrites en Ruby, Node.js, Java, Python, Clojure, Scala, Go et PHP. Une application est une collection de codes sources écrite dans l'un de ces langages, peut-être un Framework, et une description de dépendance qui indique au système de construction quelles sont les dépendances supplémentaires nécessaires à la création et à l'exécution de l'application. Les applications comprennent votre code source et une description de toutes les dépendances. Les mécanismes de dépendance varient selon les langues : en Ruby, vous utilisez un Gemfile, en Python un requirements.txt, en Node.js un package.json, en Java un pom.xml, etc. Le code source de votre application, ainsi que le fichier de dépendance, doivent fournir suffisamment d'informations pour que la plate-forme Heroku puisse construire votre application et produire quelque chose d’exécutable.

  • Savoir quoi exécuter 

Il n’est pas nécessaire d’apporter beaucoup de modifications à une application pour pouvoir l’exécuter sur Heroku. Une des exigences est d’informer la plate-forme des parties de votre application pouvant être exécutées. Si vous utilisez un cadre établi, Heroku peut le comprendre. Par exemple, dans Ruby on Rails, il s’agit généralement du server rails de Django python <app>/manage.py, run server et de Node.js de son mainchamp package.json.

Le procfile est un fichier texte nommé « Procfile » placé à la racine de votre application qui répertorie les types de processus dans une application. Chaque ligne déclare un type de processus suivant une commande nommée et pouvant être exécutée sur votre application générée.

Les types de processus de la liste Procfile sont des commandes nommées que vous pouvez exécuter. Pour d'autres applications, vous devrez peut-être explicitement déclarer ce qui peut être exécuté. Vous faites cela dans un fichier texte qui accompagne votre code source - un fichier Procfile.  Par exemple, votre fichier Procfile peut ressembler à ceci :

web: java -jar lib/foobar.jar $PORT queue: java -jar lib/queue-processor.jar

Ce fichier déclare un processus de type web et fournit la commande à exécuter pour lancer l’application (dans ce cas, java -jar lib/foobar.jar $PORT). Il peut déclarer également un processus de type queue et la commande correspondante. La définition antérieure d'une application peut maintenant être affinée pour inclure ce seul fichier de procédure supplémentaire.

Les applications comprennent votre code source, une description de toutes les dépendances et un fichier Procfile. Heroku est une plate-forme polyglotte - elle vous permet de créer, d'exécuter et de redimensionner des applications de manière similaire dans toutes les langues - en utilisant les dépendances et Procfile. Procfile expose un aspect architectural de votre application (dans l'exemple ci-dessus, il y a deux points d'entrée dans l'application) et cette architecture vous permet, par exemple, de mettre à l'échelle chaque pièce indépendamment.

  • Déploiement d'applications

Git est un puissant système de contrôle de version distribué que de nombreux développeurs utilisent pour gérer le code source en version. La plate-forme Heroku utilise Git comme principal moyen de déploiement d’applications. Dans ce cas précis, lorsque vous créez une application sur Heroku, il associe un nouveau dépôt Git distant (généralement nommé heroku) au référentiel Git local de votre application. 

Le déploiement d'applications implique l'envoi de l'application à Heroku à l'aide de Git, GitHub ou d'une API. Il existe également de nombreuses autres manières de déployer des applications. Par exemple, vous pouvez activer l'intégration GitHub de sorte que chaque nouvelle demande d'extraction soit associée à sa propre nouvelle application, ce qui permet toutes sortes de scénarios d'intégration continue. Ou vous pouvez utiliser l'API Heroku pour créer et publier des applications.

 

  • Building des applications

Lorsque la plate-forme Heroku reçoit la source de l'application, elle créée une version de l'application source. Le mécanisme de construction est généralement spécifique au langage, mais suit le même modèle, récupérant généralement les dépendances spécifiées et créant les actifs nécessaires (aussi simples que le traitement de feuilles de style ou aussi complexes que la compilation de code).

 

  • Exécution d'applications sur dynos :

Heroku exécute des applications en exécutant une commande spécifiée dans Procfile, sur un dynos préchargé avec votre slug[5] préparé (en fait, avec votre version, qui étend votre slug et quelques éléments non encore définis : config vars et add-ons). Considérez un dyno en cours d’exécution comme un conteneur Unix léger, sécurisé et virtualisé contenant votre slug d’application dans son système de fichiers. Généralement, si vous déployez une application pour la première fois, Heroku exécutera automatiquement un Web Dynos. En d’autres termes, il lancera un dynos, le chargera avec votre slug et exécutera la commande que vous avez associée au type de processus Web dans votre Procfile.

 

  • Add-ons6 

Les applications utilisent généralement des add-ons pour fournir des services de support tels que des bases de données, des systèmes de mise en file d'attente et de mise en cache, de stockage, de services de messagerie, etc. Les compléments sont fournis sous forme de services par Heroku et des tiers il existe un vaste marché de compléments parmi lesquels vous pouvez choisir.

 

4-  Cycle de vie d’une application Heroku

Le cycle de vie d’une application Heroku peut être représenté suivant les étapes décrites par la figure ci-dessous :

Image6 1 

Figure 5: Cycle de vie d'une application Heroku

Ainsi, pour créer une application Heroku, vous devez exécuter ces étapes dans l’ordre :

  • Coder l’application dans l’un des langages supportés.
  • Sélectionner les add-ons pour réutiliser les composants requis et créer les fonctionnalités nécessaires ;
  • Configurer l’application 
  • Ecrire le Procfile (facultatif mais recommandé pour mieux contrôler l’exécution de l’application ;
  • Exécuter l’application en local 
  • Inspectez /auditez l’application en recherchant dans le log toutes les informations suspectes : le développeur utilisera éventuellement le complément « New Relic » qui est un add-on pour trouver des métriques intéressantes telles que le temps de réponse pour les requêtes de l’utilisateur et les performances globales de l’application.
  • Optimisez l’application pour utiliser plus ou moins de ressources selon vos besoins.

       

 

 

III- DEPLOIEMENT D’UNE APPLICATION SUR HEROKU

 

À l'heure actuelle, de nombreuses plates-formes proposent un riche ensemble d'outils et d'accessoires pour l'exécution transparente d'applications Web, mais Heroku se distingue notamment par son modèle de déploiement simple et efficace. Le modèle de déploiement Heroku est simple : concentrez-vous sur l'écriture de votre application et laissez-le reste à Heroku.

Le déploiement de Heroku requiert les éléments suivants :

  • Disposer d’un compte Heroku
  • Installation du kit client 
  • Codage de votre application
  • Envoyer (push) votre application à Heroku à l'aide du contrôle de version Git

Le déploiement d’application Heroku suit à peu près le même ordre d’évènements, allant d’un simple code à une application Web de production à part entière. Le fait qu'un développeur ait simplement besoin de créer l'application et que Heroku se charge de lancer l'application à partir de là est un aspect très puissant du modèle de déploiement d’Heroku.

 

1-  Commencer avec Heroku

Ø Installation ou configuration 

L'interface de ligne de commande Heroku facilite la création et la gestion de vos applications Heroku directement à partir du terminal. C’est une partie essentielle de l’utilisation de Heroku.

Ainsi :

  • Sur Ubuntu 16+ dans un terminal, taper la commande : sudo snap install --classic heroku
  • Sur MacOS: 

brew tap heroku/brew && brew install Heroku

• Sur windows, télécharger le CLI en ligne

 

Ø Utilisation de Heroku CLI

  1. Créer une application: heroku create your-app-name
  2. Déployer à Heroku:  git push heroku master
  3. Ouvrez votre application dans un navigateur : heroku open your-app-name
  4. Obtenir la liste des commandes Heroku : heroku commands
  5. Aide générale : heroku help
  6. Aide pour une commande spécifique : heroku help <command>

 

2- Buildpack

  • Définition de buidpacks : Heroku prend officiellement en charge les buildpacks pour Ruby, Node.js, Clojure, Python, Java, Gradle, Grails, Scala, Play, PHP et Go. Les buildpacks sont automatiquement détectés par Heroku dans l’ordre ci-dessus, cependant, ils peuvent également être définis manuellement via CLI en utilisant :
    1. Au moment de la création de l’application  heroku create <app_name> --buildpack <buildpack_name> 
    2. Manuellement, heroku buildpacks:set <buildpack_name>  

Le nom du buildpack peut être spécifié soit en utilisant un raccourci ou une URL. Comme pour le buildpack PHP, heroku buildpacks:set heroku/php  ou alors  heroku buildpacks:set https://elements.heroku.com/buildpacks/heroku/heroku-buildpack-php  

  • Plusieurs buildpacks : Une application peut également contenir plus d'un buildpack.

Cela peut être réalisé en utilisant add : heroku buildpacks:add --index 1 <buildpack_name> where, --index parameter spécifie l'ordre d'exécution du buildpack. 

Dire, heroku buildpacks:set heroku/php heroku buildpacks:add --index 1 heroku/nodejs va définir la commande de buildpack comme:

heroku/nodejs heroku/php

Rappelez-vous : une application Heroku ne possède qu'un seul port public - 80. Par conséquent, l'une des deux sera utilisée dans un port. Disons que si procfile est spécifié avec web : node server.js, l'application de nœud s'exécutera dans le port 80, sinon PHP. Cependant, la génération sera exécutée dans l'ordre spécifié. Si vous avez besoin de plusieurs applications, configurez plusieurs projets et communiquez entre eux.

 

4- Codes d’erreur Heroku

Chaque fois que votre application rencontre une erreur, Heroku renvoie une page d'erreur standard avec le code d'état HTTP 503. Pour vous aider à déboguer l'erreur sousjacente, la plateforme ajoute également des informations d'erreur personnalisées à vos journaux. Chaque type d'erreur obtient son propre code d'erreur, avec toutes les erreurs HTTP commençant par la lettre H et toutes les erreurs d'exécution commençant par R. Les erreurs de journalisation commencent par L.

Examples :

Ø H11 - Carnet de commandes trop profond : Lorsque les demandes HTTP arrivent plus rapidement que votre application ne les traite, elles peuvent constituer un important retard de traitement sur un certain nombre de routeurs. Lorsque le retard de traitement sur un routeur particulier dépasse un seuil, le routeur détermine que votre application ne suit pas le volume de demande entrant. Vous verrez une erreur H11 pour chaque demande entrante tant que le retard est supérieur à cette taille. La valeur exacte de ce seuil peut varier en fonction de divers facteurs, tels que le nombre de dynos de votre application, le temps de réponse pour les requêtes individuelles et le volume de requêtes normales de votre application.

2010-10-06T21:51:07-07:00 heroku[router]: at=error code=H11 desc="Backlog too deep" method=GET path="/" host=myapp.herokuapp.com fwd=17.17.17.17 dyno= connect= service= status=503 bytes=  

La solution consiste à augmenter le débit de votre application en ajoutant plus de dynos, en optimisant votre base de données (par exemple, en ajoutant un index) ou en accélérant le code lui-même. Comme toujours, l'augmentation des performances est très spécifique à l'application et nécessite un profilage.

 

  • H12 - Délai de demande : Une requête HTTP a duré plus de 30 secondes. Dans l'exemple ci-dessous, une application Rails prend 37 secondes pour rendre la page ; le routeur HTTP renvoie un 503 avant que Rails ne termine son cycle de demande, mais le processus Rails continue et le message d'achèvement s'affiche après le message du routeur.

Cette limite de 30 secondes est mesurée par le routeur et inclut tout le temps passé dans le dyno, y compris la file d'attente de connexion entrante du noyau et l'application elle-même.

Image7jpg 

 

  • H13 - Connexion fermée sans réponse : Cette erreur est générée lorsqu'un processus dans votre dyno Web accepte une connexion, mais ferme ensuite le socket sans rien écrire.

Image8jpg

Un exemple de cela peut se produire lorsqu'un serveur Web Unicorn[6] est configuré avec un délai d'attente inférieur à 30 secondes et qu'une requête n'a pas été traitée par un agent avant l'expiration du délai. Dans ce cas, Unicorn ferme la connexion avant toute écriture de données, entraînant un H13.

 

  • H14 - Pas de web dynos en cours d'exécution : Ceci est probablement le résultat de la réduction de votre dynos Web à 0 dynos. Pour résoudre ce problème, adaptez votre

dynos Web à un ou plusieurs dynos en faisant : $ heroku ps:scale web=1

Utilisez la commande heroku ps pour déterminer l'état de vos dynos Web.

Image9 1

 

 

  • H15 - Connexion au ralenti : Le dyno n'a pas envoyé de réponse complète et a été interrompu à cause de 55 secondes d'inactivité. Par exemple, la réponse indique un Content-Length de 50 octets qui n'a pas été envoyé à temps.
  • Image10 1

 

 

5- Déploiement avec Git

  • Suivi de votre application dans git

Avant de pouvoir envoyer une application à Heroku, vous devez initialiser un référentiel Git local et y envoyer vos fichiers. Par exemple, si vous avez une application dans un répertoire, myapp, créez-en un nouveau :

Image11 1 

Ceci est un référentiel local, résidant maintenant dans le répertoire .git . Rien n'a encore été envoyé ; vous devrez créer une télécommande et faire un effort pour déployer votre code sur Heroku.

 

  • Créer une télécommande Heroku :

Image12

Référentiel Git avec une application existante. La commande heroku git : remote ajoute cette télécommande pour vous en fonction de vos applications git url.

Image13 1 

 

  • Code de déploiement :

Vous devrez spécifier une branche distante vers laquelle pousser. Vous pouvez faire votre première poussée :

Image14 

Pour pousser une branche autre que master, utilisez cette syntaxe :

$ git push heroku yourbranch:master

 

 

 

 

IV-   DEPLOIEMENT DE NOTRE APPLICATION : CSDL

 

1-  L’application Android

Avant de commencer de façon technique, définissons d’abord ce qu’on entend par application Android. 

Android est un système d'exploitation open source édité par Google pour appareils embarqués et/ou mobiles, comme les smartphones ou les tablettes. On le retrouve aussi dans certains GPS, ordinateurs de bord de voitures, dans des télévisions, autoradios, et même des montres. De plus, de nombreux prototypes d'appareils électroménagers, comme des réfrigérateurs ou des machines à laver, fonctionnant sous Android ont été présentés ces derniers temps, permettant ainsi de lancer une machine à l'aide de son téléphone, ou encore d'être prévenu par son frigo lorsqu'il manque certaines choses. Le système Android est basé sur un fork du noyau de Linux. Ce dernier a été modifié pour être plus adapté aux terminaux mobiles ayant peu de puissance de calcul, de mémoire et de batterie. De fait, certaines librairies standards ne sont pas supportées par le système, et des améliorations ont été apportées sur la gestion de l’énergie.

Dans le cadre de notre cours, nous avons développé une application Android permettant d’archiver de façon structurée et de consulter des supports de cours par un étudiant. 

Nous avons utilisé comme technologies :

  • Langage PHP et le framework Laravel pour le développement back end Framework React Native pour le front end.
  • Postgresql pour la base de données.

 

2- Déploiement du back end 

Étape 1 – Installation du CLI d’Heroku

Tout d’abord, nous installons Heroku CLI (Command Line Interface), l'outil en ligne de commande qui vous permet d'interagir avec les serveurs d'Heroku directement dans votre console. Voir figure suivante :

 

Image15 1

 

Étape 2 – Connexion à Heroku

Ensuite, nous devons nous connecter à notre compte Heroku avec la commande heroku login comme l’illustre la figure suivante :

Image16 1 

 

Étape 3 – Création du Procfile dans notre répertoire de projet Laravel principal.

Dans cette étape nous créons le Procfile (fichier de configuration Heroku) dans le répertoire principal de votre projet Laravel. Ensuite, dans notre Procfile, nous insérons cette ligne de code : 

web: vendor/bin/heroku-php-apache2 public/

Image17 1 

Ensuite nous mettons le dépôt git à jour pour créer notre application Heroku.

 

Étape 4 – Création de l’application Heroku en local et déploiement en ligne

Une fois le procfile disponible, nous créons l’application en tapant simplement la commande heroku create csdl-backend :

Image18 1

 

Après cela, nous envoyons notre projet dans Heroku en utilisant la commande suivante : 

git push heroku master

 

             

Image19Image20

 

Étape 5 - Configuration de la base de données

La dernière étape concerne la configuration de la base de données afin que nous puissions exécuter nos migrations dans Heroku. En fait, pour utiliser le service MySQL dans Heroku, nous devons mettre à jour notre adhésion. Dans ce cour, nous allons utiliser PostgreSQL parce que c'est gratuit : 

Tout d’abord, cliquez sur le menu « Add-ons» , puis sur le côté «add-ons », cliquez sur « Find more add-ons ». Ainsi nous somme rediriger vers la page des Modules d’Heroku.

Dans la page des modules complémentaires d’Heroku, cliquez sur Heroku Postgres et installons le en suivant les étapes.

Image21

 

Une fois l'installation terminée, nous pouvons constater que Heroku Postgres est disponible dans nos ressources au niveau de notre tableau de bord, ce qui signifie que notre installation Heroku Postgres est réussie.

Après cela, nous retournons dans notre projet pour le configurer, notamment en précisant l’url de notre base de donnée qui a été fourni après l’ajout du module Heroku

Postgres. Et enfin nous faisons les migrations puis nous actualisons notre projet Heroku.

             

Image22 1

 

3- Résultats

Le déploiement étant effectué, on peut donc avoir les résultats que illustre les images cidessous:

Image23

 

 Image24

 

          

 

CONCLUSION

Arrivé au terme de ce chapitre qui portait sur la création d’un service Heroku, nous trouvons satisfaction dans l’apprentissage d’un service à savoir le déploiement d’une application Heroku. En prime, les notions abordées nous ont édifié davantage sur le fonctionnement du cloud computing en particulier celui de type PaaS. 

             

 

 

REFERENCES

 

  • Support de cours Cloud computing Master 1 INFO de l’an 2018-2019.
  • Les fondamentaux du Cloud computing présenté par : KHADIDJATOU IMAN BAMBA
  • Anubhav Hanjura - Heroku Cloud Application Development_ A comprehensive guide to help you build, deploy, and troubleshoot cloud applications seamlessly using Heroku-Packt Publishing (2014)
  • Professional Heroku Programming, An Architect’s Guide par Chris Kemp et Brad Gyger
  • Apprenez heroku, eBook gratuit de Stack Overflow
  • https://www.wikipedia.org/wiki
  • https://www.heroku.com

 

 

 

 

TP SUR LA CREATION D’UN SERVICE HEROKU :

 

L’objectif de ce TP est de permettre à l’étudiant de déployer une application web sur la plateforme Heroku et de maitriser les commandes de base disponibles sur son CLI. Pour ce TP nous utiliserons le langage PHP et le Framework Laravel.

Activité 1 : Création d’un compte Heroku et mise en place de l’environnement de travail

  1. Rendez-vous sur le site officiel de Heroku ( https://www.heroku.com ) et suivez les étapes de création d’un compte utilisateur.
  2. Télécharger et installer Heroku CLI
  3. Configuration et test des commandes disponibles sur Heroku CLI

Activité 2 : Mise en place d’une application Laravel et déploiement sur Heroku

  1. Création d'une application Laravel
    1. Installation d'un nouveau projet Laravel en se servant du guide de la documentation officielle de Laravel
    2. Initialiser un dépôt Git
  2. Déploiement votre application sur Heroku
    1. Créer un Procfile pour votre projet (à la racine)
    2. Créer une nouvelle application sur Heroku en utilisant le CLI
    3. Définir une clé de cryptage Laravel
    4. Déployer votre application sur Heroku
    5. Ajouter des modules à votre application
 

[1] Source : http://fr.wikipedia.org/wiki/CloudComputing

[2] CIGREF : réseaux de grandes entreprises en France, Rapport Fondamentaux du cloud computing : le point de vue des grandes entreprises, Mars 2013

[3] Un middleware ou intergiciel est un logiciel tiers qui crée un réseau d’échange d’informations entre différentes applications informatiques.

[4] Les dynos sont des conteneurs Unix virtualisés et isolés, fournissant l’environnement requis pour l’exécution d’une application.

[5] Un slug est un ensemble constitué du code source, des dépendances extraites, et du runtime du langage.  6 Les add-ons sont des services cloud spécialisés, à valeur ajoutée, tiers qui peuvent être facilement associés à une application, ce qui étend ses fonctionnalités.

[6] Unicorn ici fait référence à Unicorn We Are Legends, marque française de vêtements de sport crée en 2017.

  • Les fondamentaux du Cloud computing présenté par : KHADIDJATOU IMAN

BAMBA

  • Anubhav Hanjura - Heroku Cloud Application Development_ A comprehensive guide to help you build, deploy, and troubleshoot cloud applications seamlessly using Heroku-Packt Publishing (2014)
  • Professional Heroku Programming, An Architect’s Guide par Chris Kemp et Brad Gyger
  • Apprenez heroku, eBook gratuit de Stack Overflow
  • https://www.wikipedia.org/wiki
  • https://www.heroku.com
  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam