Amazon Web Services (AWSLe Cloud AWS (Amazon WebServices) est une plateforme de services cloud développée par le géant américain Amazon.) propose une large gamme de services et parmi eux, un bon nombre de servies d’hébergement intéressants. Aujourd’hui, nous allons vous parler de l’un d’entre eux : le service d’hébergement Elastic Beanstalk.
Elastic Beanstalk permet de réaliser très simplement un hébergement dans des « conteneurs ». Il permet de lancer directement votre JAR dans un conteneur et de le dupliquer à chaud, en fonction de votre politique de répartition de charges.
En résumé, Elastic Beanstalk réalise l’intégralité du paramétrage de votre application. Et ça c’est génial ! Vous pouvez donc vous concentrer uniquement sur votre code source puisque l’hébergement ne demande aucun effort et aucune commande complexe à exécuter !
Pour commencer dans les règles de l’art, il nous faut une petite application APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. Rest avec Spring Boot ! Rien de plus simple, il suffit de suivre n’importe quel tutoriel sur internet pour ça 🙂 Une fois que vous avez votre application, il va falloir compiler le JAR pour qu’il soit exécutable.
Je vous donne un exemple de build.gradle, car perso j’ai un peu galéré mais c’est surtout pour la partie DynamoDB (mais bon, c’est pas le sujet de ce post).
<code>buildscript {
ext {
springBootVersion = ’2.0.4.RELEASE’
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: ’java’
apply plugin: ’eclipse’
apply plugin: ’org.springframework.boot’
apply plugin: ’io.spring.dependency-management’
group = ’com.votre_app’
version = ’0.0.1-SNAPSHOT’
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
ext {
springCloudVersion = ’Finchley.SR1’
}
dependencies {
compile(’org.springframework.boot:spring-boot-starter-jersey’)
compile("org.springframework.boot:spring-boot-starter-web")
compile(’io.springfox:springfox-swagger2:2.7.0’)
compile(’com.amazonaws:aws-java-sdk-dynamodb’)
compile(’org.springframework.boot:spring-boot-starter-mail’)
compile(’org.apache.poi:poi’)
compile(’org.apache.poi:poi-ooxml:3.9’)
compile(’org.apache.commons:commons-text:1.4’)
compile(’com.github.derjust:spring-data-dynamodb:5.0.3’)
testCompile(’org.springframework.boot:spring-boot-starter-test’)
testCompile(’org.springframework.restdocs:spring-restdocs-mockmvc’)
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
</code>
Une fois que vous avez construit votre Jar Bootable (gradle bootJar), vous avez donc un .jar disponible.
L’heure du premier test a sonné ! Essayez maintenant de le lancer avec java -jar pour vous assurer que celui-ci fonctionne correctement. Si c’est le cas, vous pouvez passer à Elastic Beanstalk.
Connectez-vous maintenant avec votre compte AWS. Une fois connecté à la console, rendez-vous dans le service Elastic Beanstalk, puis créez votre application.
L’application est le nom général de votre service. Une fois celle-ci créée, vous allez créer des environnements. Par exemple, votre environnement de développement, de recette et de production. Chacun des environnements aura sa propre configuration. Par exemple, vous pouvez décider d’avoir un environnement avec une seule machine, ou un super environnement avec des dizaines de nœuds.
Pour Spring BootFramework Java se basant sur Spring., voici comment créer son environnement :
– Pour le domaine : choisissez ce que vous voulez!
– Le DNS : vous ne pouvez pas configurer à cette étape, il faudra le faire ailleurs.
– Plateforme : choisissez bien JAVA comme plateforme et uploadez votre JAR. Avant de créer l’environnement, passons à l’option « Configurer plus d’options ».
Dans cet écran, vous avez la possibilité de choisir le type d’instance. Par défaut, c’est des t2.micro mais c’est un peu faible… Heureusement, on peut passer sur du plus rapide 😉 . Dans la partie Logiciels, si vous souhaitez faire en sorte que votre application qui écoute sur le 8080 soit directement accessible depuis le port 80, rajoutez une variable d’environnement PORT avec la valeur 80. C’est beaucoup, plus rapide que de devoir s’ennuyer avec la configuration NGINX du conteneur.
Dans l’équilibreur de charge, il est possible de configurer aussi directement le HTTPS, ce qui est bien pratique car vos conteneurs n’écoutent que en HTTP 80. Pour cela, il vous faudra mettre en place dans ACM le certificat que vous avez.
Une fois lancé, l’environnement met environ une minute à se mettre en place.
En jaune sur la capture, vous avez l’URL d’appel à votre API. Si vous avez mis le HTTPS, pensez-bien à le rajouter dans l’URL.
Et voilà comment en quelques étapes, vous avez votre application directement disponible sur un conteneur tout bien configuré ! Dernière chose, il est aussi possible de faire la configuration en ligne de commande et de le sauvegarder dans son projet. De même, il est possible de déployer son app depuis son poste hyper simplement. (eb deploy) La doc de la console.
Nous verrons dans un autre article comment utiliser DynamoDB et comment utiliser API Gateway avec Spring Boot.
Quelques petits liens :
Découvrez la planche #1 !
Pourquoi faire appel à un prestataire pour auditer son code ? AXOPEN vous donne les 5 raisons principales !
Dans cet article, nous allons passer en revue, sans forcément les détailler, les différentes améliorations qu’il est facile d’apporter sur un projet web avec d’améliorer sensiblement les performances.