Que se cache-t-il derrière les buzz words « serverless » et « services managés » ? Est-il réellement possible de construire une application sans provisionner de serveurs ?
C’est ce que nous allons vous montrer à travers ce live coding. En partant d’une application existante, nous développerons pas à pas une nouvelle fonctionnalité à base de Lambda, de NoSQL (DynamoDB) et d’API Gateway pour enfin la déployer dans le cloud AWS.
Si vous vous demandez comment coder une application robuste, testée, scalable en vous concentrant sur les fonctionnalités et non l’infrastructure, cette conférence est faite pour vous.
3. Texte ici
Plan
1. Évolution des architectures Cloud
2. Ma première Lambda
3. Caractéristiques du service Lambda
4. Live coding d’une API REST
5. Cas d’utilisation
6. Conclusion
3
4. Amazon EC2
Lift & ship
VM
Optimisé pour le cloud
Amazon
ECS
AWS Elastic
Beanstalk
Amazon
RDS
Amazon
ElastiCache
Amazon
Redshift
Amazon
EMR
Amazon
ES
Services managés
AWS
Lambda
Amazon
S3
Amazon
DynamoDB
Amazon
SQS
Amazon
SES
Amazon
API
Gateway
Amazon
Athena
Amazon
Kinesis
AWS Step
Functions
Amazon
SNS
Amazon
IoT
Architecturé pour le cloud
Serverless
Évolution des architectures Cloud
4
5. Vous avez dit Serverless ?
Scaling à l’usage
Paiement à l’usage
Pas de serveur à
provisionner et à
maintenir
Disponibilité et
tolérance aux
pannes 5
7. Mémoire Prix en $ pour 100ms
128 0.000000208
512 0.000000834
1024 0.000001667
1536 0.000002501
3 000 000 secondes soit 34j
de calcul à 512 mo
= $25
6 000 000 secondes soit 75j
de calcul à 128 mo
= $12,5
▼ 20 centimes le million d’appels
+
▼ Facturation au temps d’exécution
Facturation
7
8. Une instance de fonction peut être supprimée
Déploiement d’une
nouvelle version
Mise à jour interne
AWS
Scalabilité à la
baisse
Exception non
gérée
Inactivité
Stateless
Besoin de
persistance
Utiliser un datastore
externe
Amazon S3, Amazon Elasticache, Amazon
DynamoDB
8
9. Cold Start
Temps d’initialisation de la fonction lors de
la première instanciation
Bonnes pratiques :
➔ Initialiser les clients et connexions
aux bases de données en dehors de la
fonction handler
➔ Déployer la fonction dans un VPC
uniquement si nécessaire
➔ Activer AWS X-Ray pour mesurer les
cold start
Exécution à l’initialisation
Exécution à chaque invocation
9
10. Lambda Hello World (JAVA) = 1,4 sec
Lambda Hello World (Node.js) = 200ms
cold start
cold start
Mesurer le cold start avec AWS X-Ray
11. API Gateway Lambda DynamoDB
HTTPS
2 endpoints
Démo
Une API REST avec Serverless
Questions abordées :
➔ Comment j’organise mon code ?
➔ Comment je fais mes tests ?
➔ Comment je teste en local ?
➔ Quels outils je dois / peux utiliser ?
➔ Comment je déploie ?
11
13. Amazon S3 Amazon S3AWS
Lambda
2000 x 4000px (4mo)
512 x 1024px (300ko)
200 x 400px (50ko)
Cas d’utilisation 1 - Redimensionner des photos
13
14. Cas d’utilisation 2 - Utilitaires
Backup
▼ Effectuer des snapshot réguliers
des ressources de l’infra
RDS, Elasticsearch, EBS
Eteindre machine de DEV
▼ Les clients sont friands des
économies de coûts
Économie de 60% *
14
15. Notre cas d’utilisation - Backend d’une application
app mobile pour les
conférenciers
SPA
d’administration
APIGateway
Lambda DynamoDB
Exposition
HTTP
Codem
étier
Basede
données
Authentification / JWT
15
16. Contraintes associées au Serverless
▼ Vendor lock-in
▼ Limitations des services
▽ Timeout Lambda de 5min
▽ Timeout API Gateway de 30sec
▽ Payload API GAteway de 10 mo
▽ Taille maximum d’un item DynamoDB 400ko
▽ Index sur une table DynamoDB de 10 maximum
▼ Pas encore de best practices
▽ CI/CD avec Serverless
16
17. Pourquoi Serverless is the new back ?
Développeurs OPS
➔ Focus sur le code et
livraison rapide (TTM
réduit)
➔ Paiement à l’usage
➔ Coûts opérationnels et de
maintenance diminués
➔ Mise à l’échelle facilitée
➔ Haute disponibilité
➔ Outillage “traditionnel”
➔ Facilité de mise en œuvre
➔ Documentation claire
➔ Technologie mature
Métier
17