RubyNord - retour d'expérience sur Ruby - rest-ftp-daemon

Bruno Medici
Bruno Medici✔ Architecture | ✔ Tech innovation | ✔ CTO à France Télévisions Editions Numériques
Retour d’expérience
rest-ftp-daemon
chez France Télévisions
Un démon Ruby en prod, t’es sûr ?
Bruno MEDICI - RubyNord - 1/10/2015
Contexte
Bruno Medici
Architecte web, hosting, médias
DISCLAIMER !
Contexte
France Télévisions
Editions Numériques
Projet Replay
?
Amener Ruby et l’opensource
Convaincre par l’exemple
Identifier le besoin réel
Légitimité et rôle prescripteur
rest-ftp-daemon
Démon système autonome
Protocoles médiévaux
Archi orientée microservices
rest-ftp-daemon
Transferts FTP, FTPs, TFPeS, sFTP
API RESTful (jobs)
Dashboard minimaliste pour incarner le projet
Framework léger: Grape (Rack? Celluloid?)
Remontée de notifications HTTP
rest-ftp-daemon
Création d’un job (au sens REST)
1 {
2 "source": “[ohe1]/
201540/560cda1dd8156/128644488-560cda1dd8156.ts",
3 "target": “[arkena]/
201540/560cda1dd8156/128644488-560cda1dd8156.ts",
4 "label": "Les maternelles”,
5 "priority": null,
6 "notify": "http://webservices.francetelevisions.fr/xxxxx/yyyyy/
560cda1dd8156/cfe20be5e107f30e1a841b91a762a131"
7 }
POST /replay/jobs/
rest-ftp-daemon
Anatomie d’un job
1 {
2 "id": "2ifz.5270",
3 "source": "[ohe1]/201540/560cda1dd8156/128644488-560cda1dd8156.ts",
4 "target": "[arkena]/201540/560cda1dd8156/128644488-560cda1dd8156.ts",
5 "label": "Les maternelles",
6 "priority": null,
7 "notify": "http://webservices.francetelevisions.fr/xxxxx/yyyyy/560cda1dd8156/cfe20be5e107f30e1a841b91a762a131",
8 "overwrite": true,
9 "mkdir": true,
10 "tempfile": true,
11 "error": null,
12 "status": "finished",
13 "queued_at": "2015-10-01T10:39:47.990+02:00",
14 "updated_at": "2015-10-01T10:42:44.731+02:00",
15 "started_at": "2015-10-01T10:39:48.004+02:00",
16 "finished_at": "2015-10-01T10:42:44.732+02:00",
17 "age": 662.64,
18 "exectime": 176.73,
19 "params": {
20 "source_path": "/space/datanfs/originserver/prod/ohe1/201540/560cda1dd8156/128644488-560cda1dd8156.ts",
21 "source_method": "file",
22 "target_uri": "ftpes://xxxxxxxxxxxxx/201540/560cda1dd8156/128644488-560cda1dd8156.ts",
23 "target_method": "ftpes",
24 "source_processed": 1,
25 "source_count": 1,
26 "source_files": [
27 "/space/datanfs/originserver/prod/ohe1/201540/560cda1dd8156/128644488-560cda1dd8156.ts"
28 ],
29 "transfer_total": 4785106284,
30 "source_current": null,
31 "transfer_sent": 4785106284,
32 "progress": 100,
33 "transfer_bitrate": 216791284
34 }
35 }
GET /replay/jobs/2ifz.5270
rest-ftp-daemon
Dashboard
Points de vigilance
Keep it generic + KISS
Factorisation
Beware of virtual needs
Points de vigilance
Assurer l’ouverture du code et la relève
Développer la communauté [TODO]
Papa n’est pas là, apprends aussi par toi-même
Du POC à la production
Et sinon ton POC, il a l’air de marcher, tu crois
que ça tiendrait ?
Du POC à la production
Robustesse vs démo
Caution et regards externes
Structure projet et tests basiques
Du POC à la production
Industrialisation et déploiement
Maîtrise (ou manque de) de Ruby
On est en production !
nov 2014: mise à l’oeuvre
fév 2015: production partielle, chaînes premières
sep 2015: production sur 100% des contenus
On est en production !
200 contenus par jour
700 jobs par jour
30% des jobs en erreur
50% des jobs sont des doublons
On est en production !
Next steps
Créer la communauté
Evolutions fonctionnelles
Renforcement des tests
rest-ftp-daemon
github.com/bmedici/rest-ftp-daemon
bmedici@bmconseil.com
1 sur 20

Contenu connexe

En vedette(20)

ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
Alireza Esmikhani30.2K vues
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
Project for Public Spaces & National Center for Biking and Walking6.9K vues
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
Erica Santiago25K vues
9 Tips for a Work-free Vacation9 Tips for a Work-free Vacation
9 Tips for a Work-free Vacation
Weekdone.com7.1K vues
I Rock Therefore I Am. 20 Legendary Quotes from PrinceI Rock Therefore I Am. 20 Legendary Quotes from Prince
I Rock Therefore I Am. 20 Legendary Quotes from Prince
Empowered Presentations142.8K vues
How to Map Your FutureHow to Map Your Future
How to Map Your Future
SlideShop.com275.1K vues
Read with Pride | LGBTQ+ ReadsRead with Pride | LGBTQ+ Reads
Read with Pride | LGBTQ+ Reads
Kayla Martin-Gant1.1K vues
The Student's Guide to LinkedInThe Student's Guide to LinkedIn
The Student's Guide to LinkedIn
LinkedIn87.8K vues

RubyNord - retour d'expérience sur Ruby - rest-ftp-daemon

  • 1. Retour d’expérience rest-ftp-daemon chez France Télévisions Un démon Ruby en prod, t’es sûr ? Bruno MEDICI - RubyNord - 1/10/2015
  • 2. Contexte Bruno Medici Architecte web, hosting, médias DISCLAIMER !
  • 4. ?
  • 5. Amener Ruby et l’opensource Convaincre par l’exemple Identifier le besoin réel Légitimité et rôle prescripteur
  • 6. rest-ftp-daemon Démon système autonome Protocoles médiévaux Archi orientée microservices
  • 7. rest-ftp-daemon Transferts FTP, FTPs, TFPeS, sFTP API RESTful (jobs) Dashboard minimaliste pour incarner le projet Framework léger: Grape (Rack? Celluloid?) Remontée de notifications HTTP
  • 8. rest-ftp-daemon Création d’un job (au sens REST) 1 { 2 "source": “[ohe1]/ 201540/560cda1dd8156/128644488-560cda1dd8156.ts", 3 "target": “[arkena]/ 201540/560cda1dd8156/128644488-560cda1dd8156.ts", 4 "label": "Les maternelles”, 5 "priority": null, 6 "notify": "http://webservices.francetelevisions.fr/xxxxx/yyyyy/ 560cda1dd8156/cfe20be5e107f30e1a841b91a762a131" 7 } POST /replay/jobs/
  • 9. rest-ftp-daemon Anatomie d’un job 1 { 2 "id": "2ifz.5270", 3 "source": "[ohe1]/201540/560cda1dd8156/128644488-560cda1dd8156.ts", 4 "target": "[arkena]/201540/560cda1dd8156/128644488-560cda1dd8156.ts", 5 "label": "Les maternelles", 6 "priority": null, 7 "notify": "http://webservices.francetelevisions.fr/xxxxx/yyyyy/560cda1dd8156/cfe20be5e107f30e1a841b91a762a131", 8 "overwrite": true, 9 "mkdir": true, 10 "tempfile": true, 11 "error": null, 12 "status": "finished", 13 "queued_at": "2015-10-01T10:39:47.990+02:00", 14 "updated_at": "2015-10-01T10:42:44.731+02:00", 15 "started_at": "2015-10-01T10:39:48.004+02:00", 16 "finished_at": "2015-10-01T10:42:44.732+02:00", 17 "age": 662.64, 18 "exectime": 176.73, 19 "params": { 20 "source_path": "/space/datanfs/originserver/prod/ohe1/201540/560cda1dd8156/128644488-560cda1dd8156.ts", 21 "source_method": "file", 22 "target_uri": "ftpes://xxxxxxxxxxxxx/201540/560cda1dd8156/128644488-560cda1dd8156.ts", 23 "target_method": "ftpes", 24 "source_processed": 1, 25 "source_count": 1, 26 "source_files": [ 27 "/space/datanfs/originserver/prod/ohe1/201540/560cda1dd8156/128644488-560cda1dd8156.ts" 28 ], 29 "transfer_total": 4785106284, 30 "source_current": null, 31 "transfer_sent": 4785106284, 32 "progress": 100, 33 "transfer_bitrate": 216791284 34 } 35 } GET /replay/jobs/2ifz.5270
  • 11. Points de vigilance Keep it generic + KISS Factorisation Beware of virtual needs
  • 12. Points de vigilance Assurer l’ouverture du code et la relève Développer la communauté [TODO] Papa n’est pas là, apprends aussi par toi-même
  • 13. Du POC à la production Et sinon ton POC, il a l’air de marcher, tu crois que ça tiendrait ?
  • 14. Du POC à la production Robustesse vs démo Caution et regards externes Structure projet et tests basiques
  • 15. Du POC à la production Industrialisation et déploiement Maîtrise (ou manque de) de Ruby
  • 16. On est en production ! nov 2014: mise à l’oeuvre fév 2015: production partielle, chaînes premières sep 2015: production sur 100% des contenus
  • 17. On est en production ! 200 contenus par jour 700 jobs par jour 30% des jobs en erreur 50% des jobs sont des doublons
  • 18. On est en production !
  • 19. Next steps Créer la communauté Evolutions fonctionnelles Renforcement des tests