Styles architecturaux ETL Flashcards

1
Q

Quand devons-nous retourner un code 20X?

A

Lorsqu’il n’y a pas d’erreur et que le retour est bon.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Que signifie le code 200 et quand devons-nous le retourner?

A

Il signifie Ok et lorsqu’il y a un body ou l’action s’est bien passée.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Que signifie le code 201 et quand devons-nous le retourner?

A

Il signifie Created et lorsqu’un nouvel objet est créé.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Que signifie le code 204 et quand devons-nous le retourner?

A

Il signifie No Content et lorsqu’il n’y a pas de body.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Que signifie le code 202 et quand devons-nous le retourner?

A

Il signifie Accepted et lorsqu’il y a un traitement async.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quand devons-nous retourner un code 30X?

A

Lorsqu’il y a navigation (Location header)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Que signifie le code 301 et quand devons-nous le retourner?

A

Il signifie Moved Permanently et lorsque l’URL de la ressource a changé de façon permanente et le nouvel URL est retourné.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Que signifie le code 302?

A

Il signifie Found (avec redirect)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quand devons-nous retourner un code 40X?

A

Lorsqu’il s’agit d’une erreur du côté client.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Que signifie le code 400 et quand devons-nous le retourner?

A

Il signifie Bad Request et il doit être retourné lorsque la requête de l’utilisateur est mauvaise ou mal formulée.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Que signifie le code 401 et quand devons-nous le retourner?

A

Il signifie Unauthorized et il doit être retourné lorsque l’utilisateur n’est pas authentifié d’un point de vue authentification.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Que signifie le code 403 et quand devons-nous le retourner?

A

Il signifie Forbidden et il doit être retourné lorsque l’utilisateur est authentifié, mais ne peut pas accéder à la ressource d’un point de vue permission.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Que signifie le code 404 et quand devons-nous le retourner?

A

Il signifie Not Found et il doit être retourné lorsque la ressource n’est pas trouvée ou on veut la cachée à l’utilisateur.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Que signifie le code 405 et quand devons-nous le retourner?

A

Il signifie Method not allowed et il doit être retourné lorsque la méthode HTTP n’est pas supporté (Ex: ne permet pas le DELETE sur une ressource).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quand devons-nous retourner un code 50X?

A

Lorsqu’il s’agit d’une erreur du côté serveur.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Que signifie le code 500 et quand devons-nous le retourner?

A

Il signifie Internal Server et il doit être retourné lorsque le serveur est dans une situation qu’il ne sait pas comment gérer.

17
Q

Que signifie le code 501 et quand devons-nous le retourner?

A

Il signifie Not Implemented et il doit être retourné lorsque le serveur ne supporte pas la méthode.

18
Q

Que signifie le code 502?

A

Il signifie Bad Gateway

19
Q

Que signifie le code 503 et quand devons-nous le retourner?

A

Il signifie Unavailable et il doit être retourné lorsque le serveur ne peut pas être atteint.

20
Q

Quelles sont les méthodes HTTP et à quoi servent-elles?

A

GET: Fetch de l’info
POST: Ajout ou Action
DELETE: Suppression
OPTION: Savoir les méthodes disponibles, les paths et la documentation
PUT: Ajouter un élément inexistant

21
Q

Que signifie REST et que fait un REST API?

A

REST: Representationnal State Transfer

Sert d’interface standardisée et manipule des ressources et des états.

22
Q

Qu’est-ce qu’un path et quelles sont ses parties?

A

Il s’agit d’un identificateur de ressource.

Base: Présente le service, le domaine et le port
Collections et sous-collections: Ex: Users
ID: Ressource unique

23
Q

À quoi sert une custom method?

A

Elle permet de faire une action sur un path précis qui n’est pas une ressource. Ex: /users/JeBag23/tickets/Bob124:transfer

24
Q

À quoi servent des query params?

A

Il servent à ajouter des filtres

25
Q

Expliquez le style architectural Extract-Transform-Load.

A

L’intention derrière le style ETL (extraction, transformation et chargement) est de faire l’interconnection entre plusieurs styles de données ensembles. On prend les données d’un système, souvent patrimonial, pour l’envoyer dans un nouveau système. On agit alors entant qu’intermédiaire qui va adapter les données pour que cela fonctionne entre les deux côtés. L’objectif d’une application de style ETL est d’éviter que deux systèmes indépendants se connaissent. Ainsi ce style veut juste réduire le couplage dans tout le système.

26
Q

Quelles sont les composantes d’un système ETL?

A

Le processus d’une application ETL est divisé en 3 partie, L’extraction des données que l’on sort d’un système, la transformation dans le bon format pour ensuite faire l’envoi dans le prochain système.

L’extraction de données peut être fait selon 2 types de mécanismes, comme pour le patron observeur (pull ou push) . Cependant, c’est le vieux système qui doit informer que le processus doit se déclencher ou par une cron.

Dans le cas de la transformation, c’est l’étape qui permet de faire la manipulation des données d’un système vers un autre. C’est l’étape du processus qui contient aussi les manipulations reliées à la logique d’affaire particulière d’un système. On peut voir cette étape comme la raison d’être initiale de l’application d’ETL.

L’étape de load est responsable de la communication avec le système destinataire de toutes les transformations. Celui-ci ne contient que très peu de logique autre que la gestion d’erreur qui pourrait subvenir dans le système destinataire.

27
Q

Quel est le cas d’utilisation d’un système ETL?

A

Le style ETL est souvent utilisé pour permettre de la communication entre des contextes d’affaires différents où ce ne sont pas les mêmes parties prenantes (équipes) qui sont responsables des 2 systèmes. Ainsi, on va élire une des deux parties comme responsable de l’ETL entre les deux. Le plus souvent c’est le système destinataire qui devient le responsable.

28
Q

Expliquez le style architectural Pipe & Filter.

A

Le style pipe & filter est utile pour faire des transformations par étape sur des champs de données. Popularisé avec la manipulation d’image, l’intention est de passer à travers plusieurs filtres de modifications qui s’enchaînent. Comme chacune des étapes de transformation des données est divisée entre les filtres, cela permet une meilleure compréhension et testabilité des manipulations. On peut aussi enlever ou rajouter des étapes en fonction du contexte.

29
Q

Quelles sont les composantes du Pipe & Filter?

A

Il y a deux composantes clés dans le style pipe & filter, les pipes et les filtres.

Les filtres représentent la logique de traitement des données. Chaque filtre doit avoir une seule responsabilité de traitement dans la chaîne. On peut avoir plusieurs filtres qui s’enchaînent entre eux.

Les pipes servent à connecter les filtres entre eux. Ils adaptent les données

30
Q

Quels sont les cas d’utilisation du Pipe & Filter?

A

Ce style est utilisé dans toutes manipulations de données peu importe le format. Comme chaque étape est indépendante, ce style nous permet aussi d’utiliser le parallélisme dans l’application pour réduire la charge CPU ou même augmenter la vitesse de traitement. On utilise souvent ce style dans le milieu de la vision numérique (nuage de point/image/post-processing sur votre téléphone). Avec l’arrivée du big-data, le pipe & filter a été aussi vu avec le terme MapReduce, pour permettre de modifier les données avant l’ingestion dans le système d’apprentissage machine.

31
Q

Expliquez le Map & Reduce?

A

Il s’agit d’un Pipe & Filter qui branch out en diverses branches de filters et qui recombine en un seul output.

32
Q

Expliquez le Data Pipeline.

A

Version plus spécifique du Pipe & filter avec une différence majeure, il n’y a pas d’interchangeabilité des filtres. En fait l’intention derrière le data pipeline est de créer une structure plus simple de manipulation de données où les données vont passer toujours à travers les mêmes étapes de transformation. Ainsi, cela simplifie la nécessité d’avoir des pipes intelligentes. Il y a plusieurs façon de faire ce genre de pipeline de données.

33
Q

Quels sont les cas d’utilisation du Data Pipeline

A
  • Persister plusieurs fois dans des systèmes différents le même jeu de données
  • Appliquer des transformations sur l’ensemble des données (logique d’affaire)
  • Effectuer diverses transactions sur les données (processus par étape)
34
Q

Expliquez le style architectural Proxy/Gateway.

A

Style plus simple dans la manipulation de données, le gateway est la version style du patron Adapter. Son intention est d’interfacer l’intéraction avec un autre système ou contexte pour toute une application. Avec le gateway, on centralise la logique de communication à une seule place dans le système. Cela permet alors d’avoir un seul contrat d’utilisation et si le système en amont change, il n’y aura que le gateway à changer. Nous avons ainsi un mécanisme qui nous permet de mocker ou de faire un objet faux avec le système externe.

35
Q

Quelles sont les composantes du Proxy/Gateway?

A

Le gateway est le seul élément nécessaire à avoir. Il offre alors un contrat (abstraction) permettant de mocker ou d’avoir plusieurs implémentations différentes du système externe. Pour faire fonctionner le gateway, nous allons utiliser deux patrons, le proxy et l’adapter.

36
Q

Quels sont les cas d’utilisation du Proxy/Gateway?

A

Nous allons voir l’utilisation de Gateway pour faire la connexion vers un système. Il se peut que cela soit utilisé même directement dans le même monolithe de l’application. Cependant, ce que l’on voit surtout c’est l’utilisation pour du gateway vers le monde extérieur (réseau, firmware, SO). Nous voyons souvent le gateway ayant deux types de langages (termes d’affaires) de DDD à l’intérieur de l’implémentation. C’est normal, il nous permet de nous protéger d’une contamination des contextes d’affaire externes à notre application.