Points Clés
- Une définition du Cloud
- Les types de Cloud
- La définition de Cloud-native
- L'introduction au PaaS
La migration d'une application vers le cloud a toujours été un défi d'une grande complexité, avec des points importants comme par exemple la migration d'une application "on premise" vers le cloud et la sécurité. Le cloud apporte plusieurs avantages, dont l'absence de souci de maintenance, d'achat et de déplacement du matériel n’importe où dans le monde. Cependant, cette complexité au niveau de la migration comporte des risques pour l'entreprise.
Cet article a pour but de répondre aux questions les plus courantes sur la manière de déplacer une application vers le cloud et sur la façon dont Platform.sh peut vous aider à cet égard.
1) Qu'est-ce que le cloud computing ?
Les logiciels sont partout. Peu importe où vous regardez, il y a des logiciels qui fonctionnent. Dans l'histoire de l'humanité, nous avons vu le nombre de machines / logiciels augmenter avec le temps, passant d'une machine partagée par un groupe de personnes à une seule personne utilisant des milliers de logiciels. Aujourd'hui, nous pouvons voir des logiciels interagir avec d'autres, comme lorsque vous achetez un billet d'avion : un système envoie un email, un autre le lit et déclenche un événement dans votre calendrier. Cette nouvelle approche ouvre à tous davantage de perspectives et de possibilités commerciales, y compris l'apprentissage automatique. Ne vous méprenez pas, Skynet arrive bientôt.
Avec le cloud computing disponible à la demande pour les ressources du système informatique, en particulier le stockage des données et la puissance de calcul, sans gestion active directe par l'utilisateur, le cloud computing signifie que nous ne nous soucions pas du hardware. Ces services se divisent en trois grandes catégories :
- Infrastructure-as-a-Service (IaaS),
- Platform-as-a-Service (PaaS)
- et Software-as-a-Service (SaaS).
2) Pourquoi devrais-je déplacer mon projet dans le cloud ?
En tant que société de software, vous ne vous souciez pas du hardware. L'objectif est de faire fonctionner votre application et de vous concentrer sur votre business, sans avoir à acheter du hardware vous-même. Le cloud permet la multiplicité des régions, ce qui signifie que si vous voulez implanter votre entreprise en Europe et que vous êtes aux États-Unis, vous n'avez pas besoin de déplacer un groupe d'ingénieurs, de louer un endroit pour gérer le hardware, etc. Le cloud rend les choses très faciles.
Le cloud apporte une nouvelle perspective au niveau des services : infrastructure, plate-forme et software. Nous pouvons faire une analogie avec la pizza en tant que service, où nous avons le cas sur place où vous devez tout faire, jusqu'à l'abstraction la plus basse où vous allez dans un restaurant et y commandez la pizza.
3) Qu'est-ce que Platform.sh et comment cette plateforme peut m'aider à atteindre cet objectif ?
Platform.sh est un moyen facile de déplacer votre application vers le cloud. Platform.sh appartient à la seconde génération de PaaS, où vous pouvez construire une application en utilisant l'infrastructure comme approche de code à travers trois fichiers : un pour définir les routes, un pour l'application et un pour les services tels qu'une base de données dont vous aurez besoin sur votre application. Chaque branche que vous déployez sur Platform.sh est construite comme un cluster virtuel, avec un ensemble de conteneurs. La branche master de votre dépôt Git est toujours déployée en tant que cluster de production. Par conséquent, vous aurez la production, le staging et le développement en poussant simplement une nouvelle branche. Platform.sh est également une infrastructure Git-Driven que vous pouvez intégrer à GitHub, Gitlab ou à un dépôt Git qui vous sera fourni.
4) Qu'est-ce que le "cloud-native" ?
J'ai écrit un article sur ce concept. J'ai lu plusieurs articles, des livres sur le même thème, et il n'y a pas de définition unique à ce sujet. C'est nouveau, donc nous sommes encore loin d'une définition unique. En me basant sur ces lectures, j'ai établi ma propre définition :
Le cloud-native est un ensemble de bonnes pratiques pour optimiser une application dans le cloud à travers :
- La conteneurisation
- L’orchestration
- L’automatisation
5) Est-ce que Platform.sh est cloud native ?
Oui. Comme mentionné précédemment, Platform.sh est un PaaS qui vous permet de tirer profit du cloud par le biais de clusters, de conteneurs et d'orchestration. De plus, nous faisons partie de la Cloud Native Software Foundation.
6) Qu'est-ce qu'un conteneur ?
Un conteneur est une unité standard de logiciel qui regroupe le code et toutes ses dépendances. Java a le slogan WORA -- Write once, run anywhere -- dans un conteneur, et nous avons PORA sur Platform.sh -- package once, run anywhere. Il y a un excellent article de Larry Garfield sur les conteneurs.
7) Qu'est-ce qui ne va pas avec Kubernetes ?
Il n'y a rien de mal avec l’outil Kubernetes, c'est bien pour l'orchestration des conteneurs, mais il est difficile de maintenir à la fois l'orchestration et les conteneurs. Platform.sh reste simple. Voici une présentation où Robert Douglass montre comment conteneuriser vos applications cloud en quelques lignes de code sans Kubernetes. L'objectif principal de Platform.sh est de réduire la complexité et parfois le risque du cycle de vie d'une application, ou encore le temps de développement pour se concentrer sur principalement sur le développement de votre application.
8) Qu'en est-il de Java ?
Platform.sh prend en charge plusieurs langages tels que Go, Lisp, Node.JS, PHP, Python, Ruby et, bien sûr, Java. Les conteneurs Java disposent d'outils de gestion des constructions tels que Gradle, Maven et Ant. A noter que la JVM est polyglotte, donc si vous le souhaitez, vous pouvez construire et déplacer votre application Kotlin sur Platform.sh.
9) Qu'en est-il des services ?
Platform.sh vous permet d'utiliser des services tels qu’Elasticsearch, MongoDB, Kafka, Memcached, MySQL, MariaDB, PostgreSQL, etc. Un des points forts du PaaS est que la totalité de la ressource sera gérée, créée et maintenue par la plate-forme.
Vous pouvez intégrer ces services sur des frameworks populaires tels que Hibernate, Spring et Java EE/Jakarta EE. Vous pouvez soit utiliser la bibliothèque Platform.sh, qui gère le décodage des informations d'identification des services pour vous, soit fournir les configurations dans le fichier d'application. Vous pouvez faire en sorte que cette configuration soit spécifiquement définie pour fonctionner dans le cloud ou qu'elle fonctionne par défaut en local avec des frameworks tels que Spring et Jakarta EE/MicroProfile.
10) Montrez-moi le code !
Il est certain que nous avons beaucoup de code à vous montrer. Au-delà des Templates Java (un squelette de projet pré-fabriqué pour vous permettre de démarrer votre projet), nous vous proposons également une série d'articles avec leur code respectif sur la façon d'utiliser Java sur le cloud avec Platform.sh.
Et voilà, nous avons répondu aux questions fréquemment posées sur la façon de transférer votre application vers un PaaS comme Platform.sh. Ce type de service, bien qu'il ne soit pas nouveau, est encore peu exploré par les entreprises et les équipes de développement. Un point important est la couche d'abstraction très élevée, au point de contrôler toute la complexité du cloud, de sorte que le déploiement s'effectue à partir d'un push vers un dépôt Git distant.
Vous avez d'autres questions ? Contactez-nous via Twitter ou sur Slack - notre équipe est prête à vous aider à mener votre entreprise vers l'infini et au-delà du cloud.