Panorama des Technologies Web et Devops
Didier DONSEZUniversité Grenoble AlpesPolytech’Grenoble & LIG
IUT de Valence / L3 CASIR / Avril 2018
Qui suis-je ?
DevOps
● Dev(elopment) – Op(eration)s● Objectifs
– MVP, Rapid Production Deployment
● Moyens– Continuous Integration (CI)– Continuous Delivery (CD)– Apllication Performance Monitoring (APM)
Le scénario DevOps
Etapes de DevOps (o)
Express
Daphnée
Frontend developerBackend developerFull stack developer
Etapes de DevOps (i)
Express
HTTP
Daphnée
Etapes de DevOps (ii)
HAProxy Express
HTTPHTTPS
Daphnée Olivier
Backup for Crash Recovery
Etapes de DevOps (iii)
HAProxy
Spring
Grafana InfluxDB
metrics
HTTPHTTPSTelegraf
Agent
Momo
Etapes de DevOps (iv)
HAProxy
HAProxy
Spring
Spring
MySQL
Grafana InfluxDB
HTTPHTTPS
metrics
TelegrafAgent
Rémi
Etapes de DevOps (v)
HAProxy
HAProxy
Spring
Spring
MySQL
MySQL
Grafana InfluxDB
HTTPHTTPS
metrics
James
Replication
Rémi
Wordpress
Wordpress
James
Etapes de DevOps (v)
HAProxy
HAProxy
Spring
Spring
MySQL
MySQL
Grafana InfluxDB
HTTPHTTPS
metrics
Criteo
Replication
Serge
Etapes de DevOps (vi) SLM
HAProxy
HAProxy
Spring
Spring
MySQL
MySQL
Grafana InfluxDB
HTTPHTTPS
metrics
Criteo
Replication
Sophie
Trello
Prestashop
Etapes de DevOps (vii)
HAProxy
HAProxy
Spring
Spring
MySQL
MySQL
Grafana InfluxDB
HTTPHTTPS
metrics
Criteo
Replication
Pierre
Trello
Prestashop
En conlusion…
• Des fonctonnalités simples : – Servir– Collecter,– Transporter,– Traiter,– Stocker… des données des diférentes sources
• … mais une architecture logicielle complexe !
La complexité… au service des propriétés non fonctonnelles
• Sécurité• Haute disponibilité• Performances• Passage à l’échelle• Agilité
Sécurité
• Objectfs : – Aucune corrupton de données– Aucun vol de données– Aucune ataque par déni de service
• Techniques mises en œuvre :– Chifrage des données – Protocoles de communicaton sécurisés – Pare-feux – Techniques logicielles contre les ataques par déni de
service– Audit/Test de sécurité
Exemple de rançon pour une base Mongo non protégée
● $ db.PLEASE_READ_ME.find()● { "_id" : ObjectId("58a7287db7dc324adb249fdf"), "info" :
"Don't panic. Your DB is in safety and backed up (check logs). To restore send 0.1 BTC and email with your server ip or domain name. Each 48 hours we erase all the data.", "amount" : "0.1 BTC", "data_we_have" : { "local" : [ "startup_log" ], "first_database" : [ "users", "preferences" ], "MyAppXXX" : [ "emails" ] }, "Bitcoin Address" : "1NSz9TRBGKHKFdjdjH2Gme3LwDi5", "email" : "[email protected]" }
Haute-disponibilité
• Objectf : – Aucune interrupton de service
• Techniques mises en œuvre :– Monitoring – Détecton de fautes – Protocoles de réplicaton – Mécanismes de redondance – Mécanismes de « fail-over »– Circuit Breakers– Equilibreur de charge– Testers de résilience
Performances
• Objectf : – Réducton du coût d’infrastructure IaaS– Respect des SLA
• Techniques mises en œuvre :– Monitoring– Performance Debugging
Detecton des contentons sur les verroux N Copy Placement multicoeurs (Thread pinning)
– Equilibreur de charge– SLA Monitoring
Passage à l’Echelle
• Objectf : – Supporter des variatons dans la charge– en minimisant les coûts d’infrastructure ou d’énergie
• Techniques mises en œuvre :– Monitoring– Sharding– N Copy – Elastcité dynamique– Cloud hybride (cloud burstng)
Agilité
• Objectf – Time To Market– Philosophie « Minimal Viable Product » du Lean Startup
• Techniques mises en œuvre :– DevOps
Service immédiatement en producton Blue – Green Deployment
● Rolling Update● Fast rollback
● A/B Testng ou Split Testng Micro-services Serverless Architecture
Les grands composants● Database Systems
– SQL does not fit all !– NoSQL is not unique !
● Backends– Servent des ressources REST
● Frontends– Implémente une SPA
● Tooling– IDE & Forge
Data Models & Database SystemsOne does not fit all !
SQL● Oracle, MySQL/MariaDB,
Postgres, HSQL ...
NoSQL (Not 1 NF)● File Systems
– HDFS
● Table– Hbase (Big Table)
● Directories (LDAP)● Key-Value Stores
– Cassandra, Redis, Memcached, ...
● Document-oriented DB– MongoDB, CouchDB, ...
● ….
● Graph-oriented DB– Neo4J, ...
● Time-Series DB– OpenTSDB, InfluxDB, …
● Text Oriented– Lucene, OpenNLP, ElasticSearch– Geolocation
● GIS, Geo extensopns in MongoDB, Postgres, MySQL, ...
– Streams● Kafka, Flume
Performance● In-memory DB– MySQL Cluster, Redis, ...
Database SystemsMultiple Data Models
Gestionnaires de fonctions● Exemple
– CMS– Micro-Blogging– Ticketing / Issue Tracking– Shopping– ERP– Enterprise Social Network (ESN)– Newletter Campaign– …
● Notes– Utilise le propre systême de persistence– Expose une API (REST)– Disponible via un container Docker (Démo Wordpress)
CAP Theorem (Brewer)
• Un SD ne peut garantr qu’au max. 2 propriétés
RESTFul Services● Principles des services REST
– Hièrarchie d’URLs● /blog● /blog/12345● /user● /user/didier
– CRUD appliqué à HTTP● C(reate) → PUT● R(etrieve) → GET● U(pdate) → POST● D(elete) → DELETE
● Description– OpenAPI (Swagger)
● Voir http://editor.swagger.io
Frontends & Backends● Tendance architecture
– Frontend SPA (Single Page Application)● AngularJS, React, Vue.js …
– Backend RESTFul● Remark : services Pub-Sub (websocket, PubNub, …)
● Misc.– Full Stacks (Backend Node.js)
● MEAN, Sails, Meteor …– Voir le comparatif live http://todomvc.com/
– API Gateway
JHipster
● Domain– Microservice(s) + Single Web Page Application
● Model : JDL (~UML with pagination pragmas)● Generator
– Frontend : AngularJS v1.x or 5, Bootstrap– Backend : Spring
● Micro-Services (API Gateway, Swagger)● Optional WebSocket● Authentication, Rate Limit● Databases : SQL, Cassandra, MongoDB, Elastic, Kafka
– Devops● Docker containers, CI, Load injection, APM (Metrics, ELK), QA (SonarCube) ...
The JHipster MicroService Architecture
Thèmes Frontend Web● Thème Dashboard
– Organisation type tableau de bord– Regroupe des libs js dont Bootstrap– Boilerplate pour des canevas Full stack.
● Avantages– Permet de se passer d’un Web Designer dans un premier
temps– Gain de temps de dev.– Ergonomie connue.
● 20+ assez connus– Gentelella (11400 stars sur GitHub), SB Admin2, …
● https://colorlib.com/wp/free-bootstrap-admin-dashboard-templates/
Dashboard Gentelella
Dashboard SB Admin 2
Monitoring consoles
● Connexion temps réel à des TSDBs– Customisable, Snippets intégrables
Architecture Cloud● On-Demand Computing
– Scalabilité dynamique– Pay-per-use, Plan, Auction (AWS spot instance)
● Public, Privé, Hybride● Providers : FaaS, IaaS, PaaS, CaaS, SaaS● Gestionnaire de clusters privés (OpenStack, Mesos)● Gestionnaire de clusters containers (CaaS, Swarm,
Kubernetes)● Virtualisation vs Containerisation
Microservices
● Voir cours Microservices
Virtual Machines and Containers
● Voir cours Docker
Serverless Architecture
● Principe : Reactive Programming– Traitement asynchrone déclenché sur événement
● Requête HTTP / Mail → traitant (Java, JS, Python)
● Facturation pour PaaS Serverless● à la requête, au temps de traitement.
● Implémentations– PaaS :AWS Lambda, Google Functions, Azure
Functions, Bluemix OpenWhish
On-premise : Apache OpenWhish, Kuberless
Tooling DevOps
● Jenkins – Gitlab● Ansible – Puppet – Chef -Cloudify● Openshift (Redhat)● Tools : gulp, npm, grunt, bower, yeoman,
webpack, browserify, maven, graddle, ant, …● Netflix OSS (Simian Army)● IDE : Eclipse, IntelliJ IDEA, Netbeans, Atoms,
Chrome Devtools
Top Related