Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

Introduction

Un système informatique comporte donc généralement les couches suivantes :

  • Présentation
  • Traitement
  • Données

Historique

  • 1960 - 1975 : Architecture centralisée avec les mainframes et clients passifs
  • 1975 - 1990 : Architectures décentralisées : architecture orientée objet et architecture centrée sur les données
  • 1990 - 2000 : Architecture centralisée avec l'explosion du Web et de l'architecture client-serveur.
  • 2000 - ? : Architectures décentralisées avec les RIA, le cloud computing, la virtualisation...

Architectures centralisées

IBM system 360-50 console - MfK Bern

Les standards

Le protocole HTTP

Ligne de commande (Commande, URL, Version de protocole)
En-tête(s) de requête
[Ligne vide]
Corps de requête






Ligne de statut (Version, Code-réponse, Texte-réponse)
En-tête(s) de réponse
[Ligne vide]
Corps de réponse
GET /page.html HTTP/1.0
Host: example.com
Referer: http://example.com/
User-Agent: CERN-LineMode/2.15 libwww/2.17b3






HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Server: Apache/0.8.4
Content-Type: text/html
Content-Length: 59
Expires: Sat, 01 Jan 2000 00:59:59 GMT
Last-modified: Fri, 09 Aug 1996 14:21:40 GMT

<TITLE>Exemple</TITLE>
<P>Ceci est une page d'exemple.</P>

Méthodes HTTP

  • GET : Méthode la plus courante, utilise pour demander une ressource sans modifier cette dernière.
  • POST : Méthode utilisée pour transmettre des données impliquant une création ou une modification sur une ressource
  • PUT : Méthode utilisée pour remplacer totalement ou ajouter une ressource
  • PATCH : Méthode utilisée pour remplacer partiellement une ressource
  • DELETE : Méthode utilisée pour supprimer une ressource
  • HEAD, OPTIONS, CONNECT, TRACE...

Format des données échangées




  • Consultation d'une page web



  • Formulaire




  • Web Service




  • image/png

    text/html

    text/javascript

    text/css
  • application/x-www-form-urlencoded




  • application/json
    ou application/xml




  • <!DOCTYPE html>
    <html>
     <head><title>Titre</title></head>
     <body>
      <p>Ceci est un paragraphe.</p>
     </body>
    </html>
  • marque=Peugeot&modele=208
  • {
      marque: "Peugeot",
      modele: "208"
    }
    <vehicule>
      <marque>Peugeot</marque>
      <modele>208</modele> 
    </vehicule>

Codes erreurs HTTP

  • 2xx : Requête OK !
  • 3xx : Redirections
  • 4xx : Erreurs client
  • 5xx : Erreurs serveur
  • 200 OK, 204 NO Content
  • 301 Moved Permanently, 302 Moved Temporarily
  • 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 409 Conflict
  • 500 Internal Server Error

Architectures client-serveur

Pair-à-pair

Application web statique

Application web dynamique serveur

Application web dynamique AJAX

Avantages et inconvénients des architectures client-serveur

  • Avantages
  • Centralisation des ressources
  • Sécurité
  • Administration serveur
  • Inconvénients
  • Multiplication des clients
  • Evolutions impactantes
  • Serveur multi-casquettes
  • Coût élevé
  • Maillon faible

Architecture SOA

Une Application est composée de Services (ou composants). Les Fournisseurs de service exposent des Contrats qui contiennent des Schémas qui décrivent la manière d'échanger des Messages avec les Consommateurs du service.

Les concepts de la SOA

  • Le contrat de service est décrit dans un ou plusieurs documents publiés dans un annuaire, qui définit le standard de communication à utiliser, ainsi que le format des échanges.
  • Deux services qui veulent communiquer ont uniquement besoin de savoir qu'ils existent. Le contrat doit être exposé dans un format interprétable par les fournisseurs.
  • Deux services peuvent communiquer même s'ils ne sont pas sur le même réseau (sauf contraintes de sécurité)
  • Un service doit être pérenne et peut être consommé à n'importe quel moment. Les changements de contrats doivent être gérés.
  • Chaque service est indépendant et encapsulé. Sa logique interne est dissimulée aux autres services.
  • Les services sont stateless "sans état", ce qui signifie que chaque appel au service est indépendant et le service n'a pas à connaître les précédents appels.

Les services Web

Les services web SOAP

  • Transport HTTP
  • Communication : XML
  • Description : XSD WSDL
  • Découverte : UDDI

Les services web REST

  • Transport HTTP
  • Communication : ... JSON XML
  • Description : ... Swagger Spring REST Docs
  • Découverte : WADL

Services web SOAP

Services web REST

Application web dynamique MV* client

Avantages et inconvénients des architectures SOA

  • Avantages
  • Utilisation de standards
  • Flexibilité
  • Réactivité
  • Inconvénients
  • Prolifération des services
  • Utilisation de standards
  • Performances avec REST

Architectures distribuées

  • Distribution des données
  • Microservices
  • Cloud computing

Distribution des données (SGBD)

  • La réplication
  • Le partitionnement
  • Le clustering

La réplication

  • La sécurité : Les données sont dupliquées à un ou plusieurs endroits.
  • La performance : Les données peuvent être analysés sur les esclaves sans affecter les performances du maître.
  • La scalabilité : Les données peuvent être lues sur les esclaves en laissant les opérations de mises à jour sur le maître.

Le partitionnement

  • La taille : Les éventuelles contraintes de taille sur les tables sont contournées.
  • La performance : Les données sont réparties entre plusieurs bases pour équilibrer la charge.

Les clusters

  • La tolérance aux pannes : Les données sont toujours disponibles à condition qu'au moins un nœud soit accessible.
  • La performance : Les requêtes peuvent être lancées en parallèle sur plusieurs noeuds.

Distribution des données (CDN)

  • Stockage des ressources au plus près des utilisateurs
  • Mise en cache des ressources
  • Accélération web et mobile
  • Sécurité anti DDOS et WAF

Micro-services

  • Augmentation de la dette technique des applications monolithiques au fur et à mesure de leur maintenance.
  • Évolutions très rapides des technologies pouvant les rendre rapidement obsolète ou plus supportées.
  • Processus de déploiements lourds et impactant
  • Besoin de réactivité dans la résolution des anomalies et les nouvelles fonctionnalités.
  • Phase d'analyse et choix de l'architecture décisifs en amont du projet.

Micro-services

Principes

  • Responsabilité et cohésion interne
  • Indépendance et couplage faible
  • Communication réseaux et services distribués

Avantages

  • Choix des technologies quasi-illimité
  • Facilité à paralléliser les développements
  • Temps de mise sur le marché réduit
  • Granularité permettant un tuning précis et efficace pour la réplication
  • Performances accrues car souvent stateless
  • Maintenance et évolutions plus aisées du fait de la complexité plus faible
  • Processus de déploiements moins impactant, moins longs donc moins risqués.

Difficultés

  • Difficultés à dégager des services indépendants et cohérents.
  • La communication entre micro-services doit-être rigoureusement développée et documentée.
  • Problématiques de performances dans les échanges (souvent distants).
  • Cohérence des données et données communes
  • Maturité et autonomie des équipes de développement.
  • Nécessité de compétences sur l'ensemble des technologies utilisées.
  • Besoin de process de déploiement automatisés, rapides, fiables et rigoureux
  • Difficultés à effectuer des tests d'intégration
  • Monitoring des micro-services quasi-indispensables

Cloud computing

Ex: application Web full cloud

Ex: application Web serverless full cloud

Avantages et inconvénients des architectures distribuées

  • Avantages
  • Répartition des données et des services
  • Evolutions peu impactantes
  • Continuité de service
  • Possibilités infinies !
  • Inconvénients
  • Multitude de points d'entrée
  • Cohabitation de multiples technologies
  • Rigueur nécessaire dans les processus de développements
  • Dépendance à un prestataire dans le cadre de cloud computing