Panorama des Technologies Web et Devops · 2018-03-30 · Panorama des Technologies Web et Devops...

Post on 20-May-2020

5 views 0 download

Transcript of Panorama des Technologies Web et Devops · 2018-03-30 · Panorama des Technologies Web et Devops...

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" : "xxxxx@xxxx.org" }

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