Introduction au Système d'Informations

Notions d'architectures des systèmes d'information

Le Système d'Information

Un système d'information est une solution technique qui répond à une problématique métier. Une problématique métier c'est n'importe quelle situation de la vie réel, qui peut être assitée, accélérée, facilitée voir automatiser grâce à un SI. Les composantes d'un système d'information sont :

A chacune de ces composantes correspondent des supports :

Ces différents supports sont intérfacés par les réseaux, des protocoles, et des composants logiciels pour gérer ces protocoles.

Nous pouvons déjà établir une délimitation claire entre les composants du système qui appartiennent au backend et ceux qui appartiennent au frontend.

Clients

Les applications clients sont les applications avec lesquels les acteurs vont interagir directement. Elle disposent dans la majorité des cas d'une interface graphique pour en faciliter l'utilisation et pour les rendre accessibles aux utilisateurs non techniques. Nous allons vois les types les plus communs d'application clientes.

Client de bureau

Les clients de bureau sont des applications graphiques qui vont s'exécuter nativement sur le poste de l'utilisateur. Elles peuvent être développées avec presques tous les langages de programmation imaginables.

Exemples de technologies

Clients Mobile

Les clients mobiles sont des applications graphiques qui vont s'exécuter nativement sur le smartphone de l'utilisateur. Elles peuvent être développer avec presques tous les langages de programmation imaginables.

Exemples de technologies

Client Web Riche

Les clients web riches sont des applications dévelopées ou compilées en Javascript qui s'exécute dans le navigateur du client. Elles sont principalement développées en Javascript, mais certains autres langages, comme par exemple Typescript, qui ont Javscript comme cible de compilation peuvent aussi être utilisé.

Certains client webs comme Discord peuvent se faire passer pour des clients de bureau, mais ne sont en fait des navigateurs dédiés qui affiche un client web, en utilisant par exemple le framework Electron.

Exemples de technologies

Clients web "à pages"

Les clients web à pages sont des applications dont l'interface graphique est affichée sous forme de pages HTML rendues dans le navigateur de l'utilisateur. La logique de l'interface est majoritairement exécutée coté serveur, provoquant un chargement du navgigateur à chaque interaction.

Serveurs

Les applications serveurs sont les applications qui forment l'épine dorsale du système d'information ; ils forme la partie la plus importante du back-end. Il sont composé d'un certain nombre de couches qui vont chacune avoir un objectif bien précis. A noter qu'un même SI peut disposer de plusieurs serveurs qui peuvent se partager ces responsabilités. Les applications serveur peuvent être développées avec tous les langages de programmation.

Couche API

La couche API a pour rôle d'assurer l'interface avec le client. Les serveurs sont interrogés par les applications clientes afin d'accèder à des services. Ils doivent donc exposer ces services via des interfaces qui implémentent des protocoles de communication ainsi que des standards de communication au dessus de ces protocoles. Les serveur peuvent également être amenés à exposer des service qui auront pour vocation d'être utilisé non pas par des clients, mais d'autres serveurs, soit locaux au SI soit externe au SI.

Couches Services

La couche service a pour objectif d'implémenter les règles de gestion de l'application. Ce sont les règles propres à l'application, qui permet de faire le lien entre la couche API, la couche peristence et la couche métier. Cela consiste notamment orchstrer sous quelle forme les données seront reçues et envoyées, ainsi que comment elles seront traitées avant d'être transmise à la couche métier et à la couche persistence.

Couche Métier

Logique métier

La couche métier implémente règles de gestion du métier ; le code de logique métier, ou de logique du domaine, est l'implémentation des règles du monde réel. C'est à dire modéliser les interactions entre les acteurs et les données puis calculer les résultats de ces actions. L'objectif est de coder les règles de gestion, les processus métier de façon à répondre aux besoin du domaine du SI.

Modèle de donnée

Le modèle de donnée contient toutes les informations nécessaires et produites par la logique métier. Ce sont les données qui sont persistées dans les datastores. Elles représentes l'état de l'application. Ces informations sont souvent stockées sous la forme d'objets appelées Entités.

Couche Persistance

Les rôle de la couche persistance est de lire et écrire les données du modèle (les entités) dans un Datastore, afin de les stocker de façon durable.

Datastores

Les datastores sont des serveurs dont le but est uniquement de stocker des données. Dans la majeure partie des cas, ils s'agit de systèmes de gestion de base de donnée.

Bases de données relationnelles

Les bases de données relationnelles sont des base de données très strcturées composées de tables qui contienent des lignes. On peut établir des contraintes sur les valeurs, et des relation entre les tables. Les SGBDR utilisent un moteur transactionnel strict, dit ACID (Atomicité Cohérence Isolation Durabilité).

Exemple : MySQL, Oracle, PostgresSQL, SQLite

Base de données NoSQL

Les bases de données NoSQL stockent les données sous la forme de documents JSON. Les relations ne sont pas supportées et ont un moteur transactionnel beaucoup plus léger n'implémentant pas le standard ACID. Cela permet au SGBD NoSQL d'être facilement distribuables sur plusieurs machines.

Exemple : MongoDB, Cassandra, CouchDB

Communication au sein du SI

Nous avons vu que le SI est constitué de differents élements. Nous allons maintenant aborder la façon dont communiquent ces éléments.

Communication client serveur

Protocoles de commnication

Le protocole de communication le plus massivement utilisé pour la communication client-serveur est le protocole HTTP. C'est un protocole synchrone (requête - réponse) en mode connecté (il utilise le protocole de transport TCP).

Vous pouvez consulter plus en détail le protocole HTTP dans ce cours : Le Protocole HTTP

Il exsite aussi le protocole WebSocket, qui n'est pas excactement du HTTP mais est interopérable avec. Le protocole WebSocket permet d'établir une connexion full-duplex, c'est à dire que le client peut envoyer des messages au serveur et le serveur peut envoyer des messages au client.

Standards de services HTTP

Pour exposer des services sur le protocole HTTP, il existe plusieurs standards.

Representationnal State Transfer (ReST)

Le standard ReST est un standard sans état qui vise à facilité l'interopérabilité en donnant plus de controle au client. Le concept princpal de ReST est le concept de ressource. Une ressource est une donnée présente sur le serveur, sur laquel on va effectuer des opérations en utilisant la sémantique des méthodes HTTP. On peut interagir avec des collections ou des entités individuelles de la ressource.

Le transport des données en Rest se fait soit au format XML, soit au format JSON, mais JSON est beaucoup plus utilisé.

Exemple d'API ReST

SOAP

SOAP (Simple Object Access Protocol) est un standard de webservice qui expose des fonctions qui peuvent être appelées par le client. La spécification se fait à travers d'un fichier WSDL (Web Service Description Language) au format XML. Ce standard est un peu désuet car il est assez lourd à utiliser.

GRPC

gRPC est un système d'invocation de procédure distance (remote procedure call) très moderne développé par Google. Les données sont transportées en binaires pour augmenter les performances et la version 2 du protocole HTTP est utilisée. Les services sont décrits par un langage dédié (Protobuf), avec support de génération de code pour la plupart des langages. Il supporte nativement des fonctionnalités comme l'authentification et le streaming bidirectionnel. Le protocole gRPC est très utilisé dans les infrastructures cloud pour la communication entre les conteneurs applications.

Exemple Récupitulatif