Principes d'architectures

Architecture logicielle

UML

Concepts :

UML

UML

uml_4_1
4 + 1

(R)UP

rational-unified-process

Différences

Convergences

Principes de conception

Concept de Tiers ou acteurs

1 tiers

Pas très utile...

single_cli

1 tiers

Un Tiers est une "couche" du système
(applicatif ou logiciel)

Il est toujours spécialisé

Client / Serveur

single_cli_srv

Client / serveur

Les règles :

Le middleware

Littéralement un intergiciel :

Ensemble de composants logiciels qui assurent l'interface de communication aux données

Le middleware

middleware

Souvenir ?

osi

OSI

Le middleware

Trois grandes catégories de middleware :

Le middleware

Les niveaux d'abstractions et d'encapsulation de ces composants déterminent :

Architecture 2 tiers

Ce sont des architectures les plus courantes pour du client/serveur.

Il en existe 2 catégories :

Architecture 2 tiers

arch_2_tiers_2_types

Architecture 2 tiers

- Un exemple par la pratique : simple-db

postgresql

Architecture 2 tiers

Problème : couplage fort

Si je veux changer le middleware ?

Architecture 2 tiers

c'était pas "mieux avant" :

10-megabytes-hard-disk

1, 2, 3 !

keep-calm-and-level-1up

Architecture 3 tiers

Découpage à 3 niveaux, correspondant aux us des utilisateurs :

Architecture 3 tiers

basic_3_tiers

Architecture 3 tiers

Client / serveur ?

pld_gartner_classification

Architecture N tiers

Si la couche métier est divisée en plusieurs sous-couches, on généralise :

On parle alors de système N-tiers.

Architecture N tiers

- Un exemple par la pratique : Géoserveur

geoserver

Architectures distribuées

Architectures distribuées

arch_distribuee

Architectures distribuées

Approche par composants :

Architectures distribuées

Ex. de distribution de données :

Architectures distribuées

Ex. de distribution de données :

Architectures distribuées

Ex. de distribution de traitements :

Architectures distribuées

Ex. de distribution de traitements :

Architectures distribuées

RMI : exemple de code serveur

public class HelloImpl extends UnicastRemoteObject implements Hello {
        public HelloImpl() {}

        public String sayHello() { return "Hello world!"; }

        public static void main(String args[]) {
        HelloImpl obj = new HelloImpl();
        Naming.rebind("HelloServer", obj);
      }
    }

Architectures distribuées

RMI : exemple de code client

public class HelloClient {
      public static void main(String arg[]) {
      String message = "blank";

      Hello obj = (Hello) Naming.lookup( "rmi://server.address.org:1234/HelloServer");

      System.out.prinntln( obj.sayHello() );
    }
  }

Problématiques de la distribution

Cohérence de l'information :

tom_jerry_size
La valeur sur mon écran est elle réelle ?

Problématiques de la distribution

Concurrence des actions :

bouchon
Un problème plus large que l'IT...

Problématiques de la distribution

Complexité :

web_of_data
la distribution au sens "large" du terme

Problématiques de la distribution

Exemple des SGBDR - ACID :

Architectures distribuées

Pourquoi distribuer ?

Architectures distribuées

Distribution d'une application
==
mise à l'échelle (scalabilité)

Exemple de systèmes distribués

Stockage dans le réseau

Exemple de systèmes distribués

Calcul parallèle en "Map-Reduce"

Exemple de systèmes distribués

Application de recherche (Géocodeur, Google...)

Architectures distribuées

- encore de la pratique : Cluster de Géoserveur

geoserver_FS_cluster

Architectures Orientées Services

Composants ?

Architectures Orientées Services

Composants ?

spaghetti

Architectures Orientées Services

Composants ?

archi_composants

Architectures Orientées Services

=> Approche par services :

Architectures Orientées Services

Communication entre services

Architectures Orientées Services

Intégration des services :

Architectures Orientées Services

Enterprise Application Integration

Architectures Orientées Services

Enterprise Application Integration

eai

Architectures Orientées Services

Enterprise Application Integration

Architectures Orientées Services

Enterprise Service Bus

Architectures Orientées Services

Enterprise Service Bus

esb

Architectures Orientées Services

Enterprise Service Bus

Architectures Orientées Services

Intégration des services :Web

Webservices, micro-services

Architectures Orientées Services

REST - REpresentational State Transfert

Architectures Orientées Services

REST - REpresentational State Transfert

rest

Architectures Orientées Services

REST - REpresentational State Transfert

rest

Architectures Micro-services

Le retour aux spaghettis ?

Netflix Death Star

Architectures Micro-services

Récapitulatif

Retour