58
#backdaybyxebia Alexandre Godet, Alexis Kinsella Construire le SI de demain Secrets de conception d’une application innovante au service des voyageurs

Back day - REX vsct - Secrets de conception d’une application innovante au service des voyageurs

Embed Size (px)

Citation preview

#backdaybyxebia

Alexandre Godet, Alexis Kinsella

Construire le SI de demain

Secrets de conception d’une application innovante au service des voyageurs

#backdaybyxebia

ALEXANDRE GODET

ALEXIS KINSELLA

En 2005, Alexandre Godet intègre le groupe Voyages-Sncf.com. En 2009, il devient leader technique et assure la conception du site web grand public. Aujourd’hui passionné par l’agilité, il assure le rôle de Scrum Master dans une équipe aux compétences back et mobile.

Alexis Kinsella est un consultant Xebia passionné aussi bien par les problématiques Front-end (web et mobile) que Back-end. Après de longues années passées sur les technologies Java, Alexis a fait d'iOS et Node.js ses nouveaux terrains d'expérimentation lui permettant d'explorer les architectures mobiles et ses problématiques associées.

#backdaybyxebia

Le projet

#backdaybyxebia

Application officielle de la

SNCF

#backdaybyxebia

Réalisée par les équipes

Voyages-Sncf

Projet

#backdaybyxebia

VSC TECHNOLOGIES, PÔLE D’EXCELLENCE TECHNOLOGIQUE DE VOYAGES-SNCF.COM

250COLLABORATEURS SERVEURS

14623 Sites

▼▼

▼PARIS, LILLE & NANTES UN PRA À SAINT DENIS

Présentation VSCT

#backdaybyxebia

Présentation VSCT

VSC TECHNOLOGIES, DEUX MISSIONS COMPLÉMENTAIRES

GÉRER LES SYSTÈMES D’INFORMATION DE VOYAGES-SNCF.COM MAINTENANCE DÉVELOPPEMENT DU SITE INTERNET ET DES APPLICATIONS ET OUTILS MOBILES

PROPOSER SON EXPERTISE DE DISTRIBUTION DIGITALE FOURNIR DES SOLUTIONS TECHNOLOGIQUES MULTINET, WEB & MOBILE AU GROUPE SNCF (SNCF DIRECT, SNCF. COM, CARTES COMMERCIALES, CARTES DE FIDÉLITÉ, JUNIOR & COMPAGNIE, FIDELITE TER, etc.)

VOYAGEUR

#backdaybyxebia

Projet

Mise en production en février 2015

300 000 comptes utilisateurs

10 000 utilisateurs quotidien

#backdaybyxebia

Mode de fonctionnement

Equipe multi-compétente

Sprints de 2 semaines

Fonctionnement en Feature Team

No Estimate

Quelques principes :

#backdaybyxebia

Composition de l’Equipe

1 ProductOwner1 ScrumMaster3 iOS3 Android5 Back2 Designers1 UX

#backdaybyxebia

Mode de fonctionnement

Mise en production toutes les 2 semaines

#backdaybyxebia

Hosting

#backdaybyxebia

#backdaybyxebia

● Délais compatibles avec le planning du projet

● Provisionning à la demande des

environnements

● Conception d’environnements sur mesure pour

répondre aux besoins du projet

Pourquoi AWS ?

#backdaybyxebia

Hébergement sur le Cloud

Pros Cons● Suivi et maîtrise des coûts

● IaaS éprouvé mondialement

● Disponibilité quasi sans faille

● Bonnes pratiques établies et

connues

● Facilité de prise en main

● Facilité de trouver des ressources

ayant déjà travaillé avec AWS

● Montée en compétence des équipes

● Pratiques de sécurité à connaître

● Public plus ou moins par défaut

● Complexité de mise en place d’

architectures avancées (Bastion,

NAT, VPN et intégration avec le SI,

...)

#backdaybyxebia

La partie Ops gérée jusqu’à la production par l’équipe de développement

DevOps

#backdaybyxebia

La ré-internalisation d’un projet mis

en production dans le Cloud est

possible

Légende urbaine

#backdaybyxebia

● Alignement avec la stratégie de sécurité VSCT

● Support des équipes de supervision et d’exploitation

● Amortissement des coûts d’exploitation via la

réutilisation des infrastructures internes

Pourquoi ré-internaliser un projet Cloud ?

#backdaybyxebia

Provisionning des environnements par images & scripting

Provisionning

#backdaybyxebia

Environnement technique

#backdaybyxebia

Polyglot Programming

+

+

#backdaybyxebia

Microservices

#backdaybyxebia

Microservices

Pros Cons● Bases de code réduites

● Chaque composant à un rôle unique

● Meilleur séparation des

responsabilités

● Utilisation du langage approprié

pour différents besoins

● Granularité de l’allocation de

ressource

● Gestion facilité de la dette

● Complexification de l’architecture

● Déploiement manuel impossible (Un

défaut ?)

● Aspect polyglotte des

développements

#backdaybyxebia

Architecture

Realtime

Account

Notification

Station Infos

ItineraryPlacesRef

Gux Events

Train Context

Train Events

Ter Events

Frequent Travel Events

#backdaybyxebia

Continuous Delivery

+

#backdaybyxebia

Protocoles & sécurité

#backdaybyxebia

Protocoles

Realtime

HTTPS

WSS

HTTP

WS

#backdaybyxebia

Protocoles

Utilisation de bcrypt

Implémentation d’un dérivé du protocole Hawk

#backdaybyxebia

Communication

#backdaybyxebia

Load Balancing

Une stratégie adaptée à

chaque besoin

#backdaybyxebia

Load Balancing HTTP public

#backdaybyxebia

Pour et contre des ELB

Pros Cons

● Scalabilité infinie

● Support des terminaisons SSL

● Coût limité

● Monitoring

● Gestion des Healthchecks

● Configuration par console

● Warm up par ticket

● Mauvais support des WebSockets

#backdaybyxebia

Pour et contre des HAProxy

Pros Cons

● Très bon support des WebSockets

● Support des Healthchecks

● Monitoring & Alerting

● Commandes d’administration

scriptables

● Gestion du serveur

● Pas d’auto-scaling automatique

● RoundRobin DNS

#backdaybyxebia

Load balancing HTTP interne

AWS - Elastic Load Balancer

#backdaybyxebia

Dispatching de messages

WorkingQueues

Broadcast

#backdaybyxebia

Les bases de données

#backdaybyxebia

1 base de données adaptée à chaque besoin

Pas de base fourre-tout

Données

#backdaybyxebia

Bases de données

#backdaybyxebia

Bases de données

● Base de données shardée

● Commune à tous les environnements de production

#backdaybyxebia

Bases de données & Messaging

● Durée de vie des données liée à un environnement

● Données complètement volatiles

● Répliquées pour une meilleure disponibilité

#backdaybyxebia

+

Métriques

#backdaybyxebia

#backdaybyxebia

#backdaybyxebia

Gestion des versions

#backdaybyxebia

Une application n’est livrée qu’une fois en production pour une

version donnée

Environnements

#backdaybyxebia

Environnements

Un environnement unique du

développement à la production

App Goku

Sprint 31

Publication de l’application sur les stores

Choix du sous-domaine et création de l’environnement

#backdaybyxebia

DNS & Versions

Goku (n) Trunk (n-1) Cell (n-2)

App Goku App CellApp Trunk

#backdaybyxebia

DNS & Rétro-compatibilité

Goku (n) Trunk (n-1) Cell (n-2)

App Goku App CellApp Trunk

#backdaybyxebia

Blacklisting

Goku (n) Trunk (n-1) Cell (n-2)

App Goku App CellApp Trunk

...

App Vegeta

...

(n-x)

#backdaybyxebia

Monitoring & Alerting

#backdaybyxebia

#backdaybyxebia

Barking at daemons

MONIT

+

#backdaybyxebia

Monitoring des composants

#backdaybyxebia

Monitoring des middlewares & services tiers

#backdaybyxebia

Outils de test

#backdaybyxebia

Comment améliorer l’architecture ?

#backdaybyxebia

Alternatives

+

#backdaybyxebia

Questions ?