Spring Boot et Elastic Beanstalk

Amazon Web Services (AWS) 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 Bean
Pierre LISERONMis à jour le 17 Août 2018
elsp.jpg

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 dhébergement intéressants. Aujourdhui, nous allons vous parler de lun dentre eux : le service dhébergement Elastic Beanstalk.

Elastic Beanstalk, cest quoi ? 

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 lintégralité du paramétrage de votre application. Et ça cest génial ! Vous pouvez donc vous concentrer uniquement sur votre code source puisque lhébergement ne demande aucun effort et aucune commande complexe à exécuter ! 

Créer sa petite API avec Spring Boot

Pour commencer dans les règles de lart, 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 nimporte quel tutoriel sur internet pour ça 🙂 Une fois que vous avez votre application, il va falloir compiler le JAR pour quil soit exécutable.

Je vous donne un exemple de build.gradle, car perso jai un peu galéré mais cest surtout pour la partie DynamoDB (mais bon, cest 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.
Lheure du premier test a sonné ! Essayez maintenant de le lancer avec java -jar pour vous assurer que celui-ci fonctionne correctement. Si cest le cas, vous pouvez passer à Elastic Beanstalk. 

Créer son hébergement avec Elastic Beanstalk

Se connecter avec AWS

Connectez-vous maintenant avec votre compte AWS. Une fois connecté à la console, rendez-vous dans le service Elastic Beanstalk, puis créez votre application.

Comprendre les termes

Lapplication 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 davoir un environnement avec une seule machine, ou un super environnement avec des dizaines de nœuds.

Créer son environnement

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 lenvironnement, passons à loption « Configurer plus doptions ».  

image-768x720.jpg

Dans cet écran, vous avez la possibilité de choisir le type dinstance. Par défaut, cest des t2.micro mais cest 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 denvironnement PORT avec la valeur 80. Cest beaucoup, plus rapide que de devoir sennuyer 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é, lenvironnement met environ une minute à se mettre en place. 

image-2-768x188.jpg

En jaune sur la capture, vous avez lURL dappel à votre API. Si vous avez mis le HTTPS, pensez-bien à le rajouter dans lURL.

Et le tour est joué ! 

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 :

Tester son API

Expertise AWS Lyon