Synchroniser ses applications plus
rapidement avec du low-code
Être plus efficace pour synchroniser ses applications,
grâce à un ETL en PHP
Grégory Planchat, Kiboko
Grégory
Planchat
@gplanchat
“Pécher par ignorance”
La petite histoire d’un développeur trop confiant
“Les connecteurs,
c’est facile”
“Un petit script des
familles, et hop !”
e-commerce
catalogue systèmes de caisses
? ?
?
?
?
base client
“Les prix sont
par ici”
“J’envoie les
commandes là bas !”
“Voilà mes
produits”
“je place tout dans un
tableau, et j’envoie”
“un cron, et pas de
prise de tête”
“trop facile !
en staging on a synchronisé 200
produits sans problème”
“et hop ! en prod”
e-commerce
catalogue systèmes de caisses
base client
“oui, mais sur mon poste
ça fonctionne bien”
“si je le relance,
ça va passer”
⚠
⚠
“les préparateurs ne reçoivent
plus les commandes” “on a vendu au delà
de nos stocks”
e-commerce
catalogue systèmes de caisses
base client
“c’est juste un fichier CSV que
vous enregistrez dans le site”
“et si on ajoutait la
gestion de X, Y, Z”
“on devrait réfléchir à
comment faire plus fiable”
“tu as entendu
parler des ETL ?”
“Apprendre de ses erreurs”
Le pattern ETL - Extract-Transform-Load
Transformer
Rechercher, filtrer
et fusionner
... Charger
Extraire
Journaux
Transformer Charger
Extraire
Rejets
États d’exécution
Rejets
Transformer Charger
Extraire
Transformer Charger
Extraire
● Leo Marquine PHP-ETL (marquine/php-etl)
● Wizaplace PHP-ETL (wizaplace/php-etl) fork du précédent
● AkeneoBatchBundle (akeneo/batch-bundle)
● Etcetera (bitexpert/etcetera)
● Flow (flow-php/etl)
ETL dans l’écosystème PHP
“comment je peux corriger
ces points de blocage ?”
“The purpose of software engineering is
to control complexity, not to create it.”
Dr. Pamela Zave
Gyroscops
https://php-etl.github.io/documentation/
gyroscops.com
Akeneo
CSV
Spreadsheet OpenAPI
RabbitMQ
SQL
Extract
Fast Map
OpenAPI
SQL
Transform
Akeneo
Mapping
Recherche et
fusion
Sylius
Custom code
FTP / SFTP
Fichiers
Image Docker
Déploiement
Serverless
RabbitMQ
Rejets
Kafka
Redis
Suivi des états
d’exécution
RabbitMQ
Kafka
Custom code
ElasticStack
Logs
Syslog
Gelf
Stream
Load
Akeneo
CSV
Spreadsheet
Sylius
FTP / SFTP
OpenAPI
RabbitMQ
SQL
Custom code
Akeneo
CSV
Spreadsheet OpenAPI
RabbitMQ
SQL
Extract
Sylius
Custom code
FTP / SFTP
Load
Akeneo
CSV
Spreadsheet
Sylius
FTP / SFTP
OpenAPI
RabbitMQ
SQL
Custom code
Fast Map
OpenAPI
SQL
Transform
Akeneo
Mapping
Custom code
Recherche et
fusion
Fichiers
Image Docker
Déploiement
Serverless
ElasticStack
Logs
Syslog
Gelf
Stream
Redis
Suivi des états
d’exécution
RabbitMQ
Kafka
RabbitMQ
Rejets
Kafka
Akeneo
CSV
Spreadsheet OpenAPI
RabbitMQ
SQL
Extract
Sylius
Custom code
FTP / SFTP
Load
Akeneo
CSV
Spreadsheet
Sylius
FTP / SFTP
OpenAPI
RabbitMQ
SQL
Custom code
Fast Map
OpenAPI
SQL
Transform
Akeneo
Mapping
Custom code
Recherche et
fusion
Fichiers
Image Docker
Déploiement
Serverless
ElasticStack
Logs
Syslog
Gelf
Stream
Redis
Suivi des états
d’exécution
RabbitMQ
Kafka
RabbitMQ
Rejets
Kafka
Akeneo
CSV
Spreadsheet OpenAPI
RabbitMQ
SQL
Extract
Sylius
Custom code
FTP / SFTP
Fast Map
OpenAPI
SQL
Transform
Akeneo
Mapping
Custom code
Recherche et
fusion
Load
Akeneo
CSV
Spreadsheet
Sylius
FTP / SFTP
OpenAPI
RabbitMQ
SQL
Custom code
Fichiers
Image Docker
Déploiement
Serverless
ElasticStack
Logs
Syslog
Gelf
Stream
Redis
Suivi des états
d’exécution
RabbitMQ
Kafka
RabbitMQ
Rejets
Kafka
Akeneo
CSV
Spreadsheet OpenAPI
RabbitMQ
SQL
Extract
Sylius
Custom code
FTP / SFTP
Fast Map
OpenAPI
SQL
Transform
Akeneo
Mapping
Custom code
Recherche et
fusion
Load
Akeneo
CSV
Spreadsheet
Sylius
FTP / SFTP
OpenAPI
RabbitMQ
SQL
Custom code
Fichiers
Image Docker
Déploiement
Serverless
ElasticStack
Logs
Syslog
Gelf
Stream
Redis
Suivi des états
d’exécution
RabbitMQ
Kafka
RabbitMQ
Rejets
Kafka
Akeneo
CSV
Spreadsheet OpenAPI
RabbitMQ
SQL
Extract
Sylius
Custom code
FTP / SFTP
Fast Map
OpenAPI
SQL
Transform
Akeneo
Mapping
Custom code
Recherche et
fusion
Load
Akeneo
CSV
Spreadsheet
Sylius
FTP / SFTP
OpenAPI
RabbitMQ
SQL
Custom code
Fichiers
Image Docker
Déploiement
Serverless
ElasticStack
Logs
Syslog
Gelf
Stream
Redis
Suivi des états
d’exécution
RabbitMQ
Kafka
RabbitMQ
Rejets
Kafka
Akeneo
CSV
Spreadsheet OpenAPI
RabbitMQ
SQL
Extract
Sylius
Custom code
FTP / SFTP
Fast Map
OpenAPI
SQL
Transform
Akeneo
Mapping
Custom code
Recherche et
fusion
Load
Akeneo
CSV
Spreadsheet
Sylius
FTP / SFTP
OpenAPI
RabbitMQ
SQL
Custom code
Fichiers
Image Docker
Déploiement
Serverless
ElasticStack
Logs
Syslog
Gelf
Stream
Redis
Suivi des états
d’exécution
RabbitMQ
Kafka
RabbitMQ
Rejets
Kafka
Akeneo
CSV
Spreadsheet OpenAPI
RabbitMQ
SQL
Extract
Sylius
Custom code
FTP / SFTP
Fast Map
OpenAPI
SQL
Transform
Akeneo
Mapping
Custom code
Recherche et
fusion
Load
Akeneo
CSV
Spreadsheet
Sylius
FTP / SFTP
OpenAPI
RabbitMQ
SQL
Custom code
Fichiers
Image Docker
Déploiement
Serverless
ElasticStack
Logs
Syslog
Gelf
Stream
Redis
Suivi des états
d’exécution
RabbitMQ
Kafka
RabbitMQ
Rejets
Kafka
Akeneo
CSV
Spreadsheet OpenAPI
RabbitMQ
SQL
Extract
Fast Map
OpenAPI
SQL
Transform
Akeneo
Mapping
Recherche et
fusion
Sylius
Custom code
FTP / SFTP
Fichiers
Image Docker
Déploiement
Serverless
RabbitMQ
Rejets
Kafka
Redis
Suivi des états
d’exécution
RabbitMQ
Kafka
Custom code
ElasticStack
Logs
Syslog
Gelf
Stream
Load
Akeneo
CSV
Spreadsheet
Sylius
FTP / SFTP
OpenAPI
RabbitMQ
SQL
Custom code
Décrire
Compiler
Exécuter
satellites
Expression Language
e-commerce
API
catalogue
API
?
Transfert d’un catalogue
- complexe
+ maintenable
À vos questions !
Ma présentation est arrivée à son terme, mais vous pouvez l’enrichir
de vos questions
Crédits illustrations : Freepik Stories
Merci
Crédits illustrations : Freepik Stories

Synchroniser ses applications plus rapidement avec du low-code