SlideShare une entreprise Scribd logo
1  sur  45
A high profile project with Symfony
and API Platform: beIN SPORTS
Symfony Con 2015
Fabien Gasser
twitter: @fabien_gasser
SolutionArchitect at Smile
fabien.gasser@smile.fr
Kévin Dunglas
twitter/github: @dunglas
CEO at Les-Tilleuls.coop
Symfony Core Team
API Platform creator
kevin@les-tilleuls.coop
Build the new beIN SPORTS Core Platform: may the force be with us !
• Content Distributed on several channel: websites, mobile apps, TV apps, XBOX,
PS4…
• Multi-site: 4 territories
• Multi-language per site: 7 languages
• Publication workflow: 60 journalists distributed across 4 Newsrooms
• Real-time publication
• Strong SEO needs
• Performant, maintainable, open
• High traffic: up to 70M of hits and 50M video views monthly
• 5 teams, with more than 30 people working on the project
We created an API Centric CMS
OUR MISSION
Use Linked Data Luke, to enrich your data:
• Knowledge Database: semantically structured data
• External Knowledge database (dbpedia, private partners)
• Content enrichment
• API-Management: manage the data we produce to
external consumer
We created a Linked Data API Centric CMS
LINKED DATA
http://www.beinsports.com/
In a 4 months time frame, Smile
redeveloped from grounds up, beIN
SPORTS digital core platform serving up
to 70 m PV and 50 m video views
monthly, across 30 countries where
beIN operates 24/7, in 4 languages.
From day-1 launch, back-end platform
supported multilingual publishing
workflow by a team of 60
journalist/editorialist, distributed across
4 Newsrooms (Miami, Paris, Doha,
Sydney).
This has been made possible
thanks to Symfony.
The API-first strategy
An API at the heart of the Information System:
• Central point to access data
• Encapsulate all the business logic
• Access same data and features from everywhere
• Agregate heterogenous data and display coherent data
encapsulating business-logic.
API FIRST
+ Guzzle
EASY TO EXPOSE, EASY TO CONSUME !
• Core web API
• Back-office:
a HTML5 webapp (SPA)
• Front-office:
a website generating HTML
server-side (for SEO)
• Connected devices:
TV apps, XBOX app, PS4
app
• Third part application:
EPG, other websites
• Centralizes R/W access to data
• Holds all the business logic
• Is stateless (PHP sessions make horizontal scalability
harder)
• Requires authentication to access to some endpoints
(but not all) and to write data
• Is built with PHP, Symfony and API Platform
API
• Single Page Application: 100% HTML5 / JavaScript /
CSS
• Presentation logic: login screen, publishing workflow,
medias management...
• Queries the API in AJAX to retrieve and modify data
• Client-side routing (HTML5 push state)
BACK OFFICE
• Public pages: homepage, lists, categories, articles,
videos, photos...
• Server-side generated HTML (some JS too)
• SEO: fancy URLs, structured data, breadcrumbs...
• Queries the API in AJAX
• Responsive design
FRONT OFFICE
Mobile apps, TV apps, XBOX and PS4 apps…:
• One responsibility: display (nicely) data
• Query the central API to retrieve data
What about User Generated Content like comments,
reviews?
External services.
OTHER CLIENTS
Each application has its own:
• Git repository
• CI
• servers (if applicable)
• domain name (if
applicable:
api.example.com,
admin.example.com,
example.com)
CONTINOUS INTEGRATION
Benefits for the project:
harder, better, faster, stronger
• 1 app = 1 team (specialized skills)
• No business logic duplication: all in the API
• Easy refactoring: touching a component has no impact
on others
• API format = contract: documented and tested
• Easy to add new client apps
WHY SHOULD I USE API PLATFORM ?
CMS AND KNOWLEDGE DATABASE
MICROSERVICES ARCHITECTURE
Content
API
Sports
API
EPG
API
Core Platform
API
Web App
Mobile
Connected devices
REST
REST
REST
Database
Back Office
Third part
content
Batch
REST
Core Platform
API
JWT
AUTH
DB
DB
DB
DB
Webhooks
XML
Formats, open standards and
patterns
HTTP + REST + JSON:
• Work everywhere
• Lightweight
• Stateless (if done well)
• HTTP has a powerful caching model
• Extensible (JSON-LD, Hydra...)
• High quality tooling
API PATTERN
Hypermedia as the Engine of Application State
• Hypermedia: IRI as identifier
• Ability to reference external data (like hypertext links)
• Auto discoverable => Generic clients
API FORMAT: HATEOAS
JSON-LD: JSON for Linked Data
• Compliant with technologies of the semantic web:
RDF, SPARQL, triple store…
• Standard: W3C recommendation (since 2014)
• Easy to use: looks like a typical JSON document
• Already used by Gmail, GitHub, BBC, Microsoft, US
gov… and now beIN SPORTS
Remember our Knowledge Database?
JSON-LD
The Schema.org vocabulary
• Large set of elements: events, team, people, videos...
• Created and understood by Google, Bing, Yahoo! and
Yandex
• Massively used, and run by the W3C (Web schemas
group)
• Can be used in HTML (microdata / RDFa) and JSON-LD
• Extensible (custom vocabularies)
SCHEMA.ORG
HYDRA
• Describe REST APIs in JSON-LD
• = write support
• = auto discoverable APIs
• Standard for collections, paginations, errors, filters
• Draft W3C
HYDRA
JSON Web Token (JWT)
• Lightweight and simple
• Stateless
• token signed and verified server-side
• then, stored client-side (web storage)
• sent in an Authorization header in each AJAX request
API AUTHENTICATION
Linked Data
LINKED DATA
Soccer Player
Person
Name
Date of Birth
Soccer Match
Event
Team
play in
Rdf:type
⚽ http://dbpedia.org/ressource/Zlatan_Ibrahimovic
Begin Date
End Date
Rdfs:subClassOf
Dbpedia-owl:birth_name
Dbpedia-owl:birthdate
Has a
Has a
Has aIs an
Dbpprop:Team
Third part
semantic engine:
• Apache Jena
• Apache
Marmotta
• Apache Stanbol
Luke, learn more
about linked data !
API Platform powered
A decoupled PHP web framework to build modern, API-first
web projects.
Out of the box hypermedia and Linked Data support with
JSON-LD, Schema.org, Hydra and JWT in is heart
$> composer create-project api-platform/api-platform my-project
API PLATFORM
API Platform 💘 Symfony
• Built on top of Symfony full-stack (3.0 OK)
• Install any existing SF bundles
• Follow SF Best Practices
• Work with existing SF app
• Optional: advanced Doctrine support
API PLATFORM AND SYMFONY
SCHEMA GENERATOR
Pick types and properties you need from Schema.org:
# app/config/schema.yaml
namespaces:
entity: AppBundleEntity
types:
Person:
parent: false
properties:
name: ~
birthDate: ~
gender: ~
# other Schema.org types
$> bin/schema generate-types 
src/app/config/schema.yml
namespace AppBundleEntity;
// Use statements
/**
* A person (alive, dead, undead, or fictional).
*
* @see http://schema.org/Person Documentation on Schema.org
*
* @ORMEntity
* @Iri("http://schema.org/Person")
*/
class Person
{
/**
* @var integer
* @ORMColumn(type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string The name of the item.
*
* @ORMColumn(nullable=true)
* @AssertType(type="string")
* @Iri("https://schema.org/name")
*/
private $name;
// Other properties, getters, setters, adders, removers….
SCHEMA GENERATOR
You get:
• PHP classes, properties, getters and setters (PSR
compliant)
• Doctrine ORM mapping (including relations and
mapped superclasses)
• Validation constraints from the Validator component
• Full PHPDoc extracted from schema human-readable
descriptions
• (optional) PHP interfaces
• (optional) ResolveTargetEntity Doctrine mappings
• (optional) JSON-LD IRI annotations (useful for the API
bundle)
# app/config/services.yml
services:
person_resource:
parent: "api.resource"
arguments: [ "AppBundleEntityPerson" ]
tags: [ { name: "api.resource" } ]
DEFINE RESOURCES TO EXPOSE
CREATE EASILY REST APIs
Validation Pagination
Errors
serialization
Filtering Sorting
Awesome
features
Browse
a pretty, automatically generated
documentation.
Specify the API and test it
thanks to a system especially suitable for
Behavior-Driven Development.
Everything is extensible
thanks to a powerful event system and
strong OOP.
FULL SUPPORT OF JSON-LD, HYDRA AND SCHEMA.ORG
An auto
discoverable
Linked Data
API for free!
USER DOCUMENTATION AND SANDBOX
NelmioApiDoc
automatically
detects and
documents
exposed
resources.
Software Stack
CUSTOM APPLICATION
API Back-office Front-office
PHP Symfony
API Platform
Behat + PHPunit
Doctrine
MySQL
Varnish
NelmioApiDoc
FosHttpCache
FOSUserBundle
LexikJwtAuthenticationB
undle
NelmioCorsBundle
AngularJS
Restangular
Less
Bootstrap
Grunt
Protractor
PHP Symfony
Guzzle
Twig
Behat + PHPunit
Less
Bootstrap
Varnish
FosHttpCache
No database!
Hosting Stack
HOSTING ENVIRONMENT
Static files
S3
SPA
S3
Assets front
S3
medias
Browser
API
Autoscaling group
VarnishVarnish
EC2 -1
EC2 -n
Front
Autoscaling group
VarnishVarnish
EC2 -1
EC2 -n
Amazon RDS
Assets
Other services: Route 53 (DNS), SES (mail), …
HOSTING ENVIRONMENT
API
Autoscaling group
VarnishVarnish
EC2 -1
EC2 -n
Static files
S3
SPA
S3
Assets front
S3
medias
Smartphones
Connected devices
Back office
Amazon RDS
Assets
Other services: Route 53 (DNS), SES (mail), …
• Request / day on front: 5,2 M
• Request / day on API front & connected devices: 15,6 M
468 M request per month to serve in:
• AVG response time on front: 29ms
• AVG response time on API: 4ms
FEW FIGURES
API PLATFORM EVERYWHERE
CMS – E-COMMERCE
Real life use case examples
TM & © Lucasfilm Ltd. All Rights Reserved
Monolith application are not enough to handle the
omnichannel experience.
E-COMMERCE
POS
API
Orchestration with information system
CMS
B2C
CRMPIMOMS
Back Office
Corpo B2B
And now Luke, scaffold your model and expose it with API
Platform.
1. Scaffold your core-application API with schema.org
2. Create an OMS to manage Cart and Order
3. Plug external data-sources and unify it with Hydra
keeping a unify vocabulary to describe your data
according to their referential
Pros domain separation, loose coupling
Cons only for e-commerce Jedi, you don’t need this for
classic retail shop.
E-COMMERCE
EVERYTHING
Questions ?
TM & © Lucasfilm Ltd. All Rights Reserved
Thank you, vote for us Luke!
Fabien Gasser
SolutionArchitect
fabien.gasser@smile.fr
Kévin Dunglas
API Platform creator
contact@les-tilleuls.coop
https://joind.in/talk/view/16486
http://symfony.com/showcase/170

Contenu connexe

Tendances

Introduction to CUDA
Introduction to CUDAIntroduction to CUDA
Introduction to CUDARaymond Tay
 
Bringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big DataBringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big Databcantrill
 
ABCI: AI Bridging Cloud Infrastructure for Scalable AI/Big Data
ABCI: AI Bridging Cloud Infrastructure for Scalable AI/Big DataABCI: AI Bridging Cloud Infrastructure for Scalable AI/Big Data
ABCI: AI Bridging Cloud Infrastructure for Scalable AI/Big DataHitoshi Sato
 
Universal flash storage
Universal flash storageUniversal flash storage
Universal flash storageDooyong Lee
 
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...ENSET, Université Hassan II Casablanca
 
Exploring Your Apple M1 devices with Open Source Tools
Exploring Your Apple M1 devices with Open Source ToolsExploring Your Apple M1 devices with Open Source Tools
Exploring Your Apple M1 devices with Open Source ToolsKoan-Sin Tan
 
Ray Tracing with Intel® Embree and Intel® OSPRay: Use Cases and Updates | SIG...
Ray Tracing with Intel® Embree and Intel® OSPRay: Use Cases and Updates | SIG...Ray Tracing with Intel® Embree and Intel® OSPRay: Use Cases and Updates | SIG...
Ray Tracing with Intel® Embree and Intel® OSPRay: Use Cases and Updates | SIG...Intel® Software
 
Linux Serial Driver
Linux Serial DriverLinux Serial Driver
Linux Serial Driver艾鍗科技
 
Operating Systems 1 (3/12) - Architectures
Operating Systems 1 (3/12) - ArchitecturesOperating Systems 1 (3/12) - Architectures
Operating Systems 1 (3/12) - ArchitecturesPeter Tröger
 
Introduction to Rust language programming
Introduction to Rust language programmingIntroduction to Rust language programming
Introduction to Rust language programmingRodolfo Finochietti
 
Linux PCI device driver
Linux PCI device driverLinux PCI device driver
Linux PCI device driver艾鍗科技
 
Ansiblefest 2018 Network automation journey at roblox
Ansiblefest 2018 Network automation journey at robloxAnsiblefest 2018 Network automation journey at roblox
Ansiblefest 2018 Network automation journey at robloxDamien Garros
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)shimosawa
 

Tendances (20)

Introduction to CUDA
Introduction to CUDAIntroduction to CUDA
Introduction to CUDA
 
Bringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big DataBringing the Unix Philosophy to Big Data
Bringing the Unix Philosophy to Big Data
 
ABCI: AI Bridging Cloud Infrastructure for Scalable AI/Big Data
ABCI: AI Bridging Cloud Infrastructure for Scalable AI/Big DataABCI: AI Bridging Cloud Infrastructure for Scalable AI/Big Data
ABCI: AI Bridging Cloud Infrastructure for Scalable AI/Big Data
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Universal flash storage
Universal flash storageUniversal flash storage
Universal flash storage
 
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
 
Exploring Your Apple M1 devices with Open Source Tools
Exploring Your Apple M1 devices with Open Source ToolsExploring Your Apple M1 devices with Open Source Tools
Exploring Your Apple M1 devices with Open Source Tools
 
Ray Tracing with Intel® Embree and Intel® OSPRay: Use Cases and Updates | SIG...
Ray Tracing with Intel® Embree and Intel® OSPRay: Use Cases and Updates | SIG...Ray Tracing with Intel® Embree and Intel® OSPRay: Use Cases and Updates | SIG...
Ray Tracing with Intel® Embree and Intel® OSPRay: Use Cases and Updates | SIG...
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
 
Linux Serial Driver
Linux Serial DriverLinux Serial Driver
Linux Serial Driver
 
Multi core processor
Multi core processorMulti core processor
Multi core processor
 
Cours javascript v1
Cours javascript v1Cours javascript v1
Cours javascript v1
 
Operating Systems 1 (3/12) - Architectures
Operating Systems 1 (3/12) - ArchitecturesOperating Systems 1 (3/12) - Architectures
Operating Systems 1 (3/12) - Architectures
 
Clang: More than just a C/C++ Compiler
Clang: More than just a C/C++ CompilerClang: More than just a C/C++ Compiler
Clang: More than just a C/C++ Compiler
 
Introduction to Rust language programming
Introduction to Rust language programmingIntroduction to Rust language programming
Introduction to Rust language programming
 
Linux PCI device driver
Linux PCI device driverLinux PCI device driver
Linux PCI device driver
 
Cours.langage c
Cours.langage cCours.langage c
Cours.langage c
 
Ansiblefest 2018 Network automation journey at roblox
Ansiblefest 2018 Network automation journey at robloxAnsiblefest 2018 Network automation journey at roblox
Ansiblefest 2018 Network automation journey at roblox
 
Uml
UmlUml
Uml
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)
 

En vedette

Présentation sur l'accessibilité numérique / Evènement université de Lille 3
Présentation sur l'accessibilité numérique / Evènement université de Lille 3 Présentation sur l'accessibilité numérique / Evènement université de Lille 3
Présentation sur l'accessibilité numérique / Evènement université de Lille 3 Smile I.T is open
 
Bargento 2014 : conférence Smile « ElasticSearch booste la recherche Magento »
Bargento 2014 : conférence Smile « ElasticSearch booste la recherche Magento »Bargento 2014 : conférence Smile « ElasticSearch booste la recherche Magento »
Bargento 2014 : conférence Smile « ElasticSearch booste la recherche Magento »Smile I.T is open
 
Webinar Smile : Comment industrialiser votre SI avec Ansible ?
Webinar Smile : Comment industrialiser votre SI avec Ansible ?Webinar Smile : Comment industrialiser votre SI avec Ansible ?
Webinar Smile : Comment industrialiser votre SI avec Ansible ?Smile I.T is open
 
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / Smile
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / SmileSéminaire IoT EISTI du 14 avril 2016 avec Open Wide / Smile
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / SmileSmile I.T is open
 
Meet Magento 2015 Utrecht - ElasticSearch - Smile
Meet Magento 2015 Utrecht - ElasticSearch - SmileMeet Magento 2015 Utrecht - ElasticSearch - Smile
Meet Magento 2015 Utrecht - ElasticSearch - SmileSmile I.T is open
 
Seminaire Drupal 8 à Nantes
Seminaire Drupal 8 à NantesSeminaire Drupal 8 à Nantes
Seminaire Drupal 8 à NantesSmile I.T is open
 
Digitalisez vos points de ventes avec Smile !
Digitalisez vos points de ventes avec Smile !Digitalisez vos points de ventes avec Smile !
Digitalisez vos points de ventes avec Smile !Smile I.T is open
 
Demarche de cadrage Big data
Demarche de cadrage Big dataDemarche de cadrage Big data
Demarche de cadrage Big dataSmile I.T is open
 
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »Smile I.T is open
 
Comment une marque se développe par son approche user centric ? - Conference ...
Comment une marque se développe par son approche user centric ? - Conference ...Comment une marque se développe par son approche user centric ? - Conference ...
Comment une marque se développe par son approche user centric ? - Conference ...Smile I.T is open
 
Seminaire Smile sur Drupal 8 - Juin 2015
Seminaire Smile sur Drupal 8 - Juin 2015Seminaire Smile sur Drupal 8 - Juin 2015
Seminaire Smile sur Drupal 8 - Juin 2015Smile I.T is open
 
Seminaire communication unifiee
Seminaire communication unifieeSeminaire communication unifiee
Seminaire communication unifieeSmile I.T is open
 
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?Smile I.T is open
 
Business line COLLABORATIVE, présentation
Business line COLLABORATIVE, présentationBusiness line COLLABORATIVE, présentation
Business line COLLABORATIVE, présentationSmile I.T is open
 

En vedette (20)

Présentation sur l'accessibilité numérique / Evènement université de Lille 3
Présentation sur l'accessibilité numérique / Evènement université de Lille 3 Présentation sur l'accessibilité numérique / Evènement université de Lille 3
Présentation sur l'accessibilité numérique / Evènement université de Lille 3
 
Bargento 2014 : conférence Smile « ElasticSearch booste la recherche Magento »
Bargento 2014 : conférence Smile « ElasticSearch booste la recherche Magento »Bargento 2014 : conférence Smile « ElasticSearch booste la recherche Magento »
Bargento 2014 : conférence Smile « ElasticSearch booste la recherche Magento »
 
Webinar Smile : Comment industrialiser votre SI avec Ansible ?
Webinar Smile : Comment industrialiser votre SI avec Ansible ?Webinar Smile : Comment industrialiser votre SI avec Ansible ?
Webinar Smile : Comment industrialiser votre SI avec Ansible ?
 
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / Smile
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / SmileSéminaire IoT EISTI du 14 avril 2016 avec Open Wide / Smile
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / Smile
 
Meet Magento 2015 Utrecht - ElasticSearch - Smile
Meet Magento 2015 Utrecht - ElasticSearch - SmileMeet Magento 2015 Utrecht - ElasticSearch - Smile
Meet Magento 2015 Utrecht - ElasticSearch - Smile
 
Seminaire Drupal 8 à Nantes
Seminaire Drupal 8 à NantesSeminaire Drupal 8 à Nantes
Seminaire Drupal 8 à Nantes
 
Digitalisez vos points de ventes avec Smile !
Digitalisez vos points de ventes avec Smile !Digitalisez vos points de ventes avec Smile !
Digitalisez vos points de ventes avec Smile !
 
Webinar Smile et WSO2
Webinar Smile et WSO2Webinar Smile et WSO2
Webinar Smile et WSO2
 
Offre Search
Offre SearchOffre Search
Offre Search
 
Dam et e-business
Dam et e-businessDam et e-business
Dam et e-business
 
Seminaire drupal8 Lille
Seminaire drupal8 LilleSeminaire drupal8 Lille
Seminaire drupal8 Lille
 
Séminaire drupal8 Lyon
Séminaire drupal8 LyonSéminaire drupal8 Lyon
Séminaire drupal8 Lyon
 
Demarche de cadrage Big data
Demarche de cadrage Big dataDemarche de cadrage Big data
Demarche de cadrage Big data
 
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »
Meetup ElasticSearch : « Booster votre Magento avec Elasticsearch »
 
Comment une marque se développe par son approche user centric ? - Conference ...
Comment une marque se développe par son approche user centric ? - Conference ...Comment une marque se développe par son approche user centric ? - Conference ...
Comment une marque se développe par son approche user centric ? - Conference ...
 
Seminaire webfactory - 2015
Seminaire webfactory - 2015Seminaire webfactory - 2015
Seminaire webfactory - 2015
 
Seminaire Smile sur Drupal 8 - Juin 2015
Seminaire Smile sur Drupal 8 - Juin 2015Seminaire Smile sur Drupal 8 - Juin 2015
Seminaire Smile sur Drupal 8 - Juin 2015
 
Seminaire communication unifiee
Seminaire communication unifieeSeminaire communication unifiee
Seminaire communication unifiee
 
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?
Webinar Smile - Comment Drupal 8 peut booster votre stratégie digitale ?
 
Business line COLLABORATIVE, présentation
Business line COLLABORATIVE, présentationBusiness line COLLABORATIVE, présentation
Business line COLLABORATIVE, présentation
 

Similaire à A high profile project with Symfony and API Platform: beIN SPORTS

API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)
API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)
API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)Les-Tilleuls.coop
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformAntonio Peric-Mazar
 
Design & Deploy a data-driven Web API in 2 hours
Design & Deploy a data-driven Web API in 2 hoursDesign & Deploy a data-driven Web API in 2 hours
Design & Deploy a data-driven Web API in 2 hoursRestlet
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHPEric Johnson
 
The i7 Framework for System-i
The i7 Framework for System-iThe i7 Framework for System-i
The i7 Framework for System-iIvo Jansch
 
Going FaaSter, Functions as a Service at Netflix
Going FaaSter, Functions as a Service at NetflixGoing FaaSter, Functions as a Service at Netflix
Going FaaSter, Functions as a Service at NetflixYunong Xiao
 
aip_developer_overview_icar_2014
aip_developer_overview_icar_2014aip_developer_overview_icar_2014
aip_developer_overview_icar_2014Matthew Vaughn
 
Unleash your Symfony projects with eZ Platform
Unleash your Symfony projects with eZ PlatformUnleash your Symfony projects with eZ Platform
Unleash your Symfony projects with eZ PlatformSébastien Morel
 
High quality ap is with api platform
High quality ap is with api platformHigh quality ap is with api platform
High quality ap is with api platformNelson Kopliku
 
API Product Opportunity Responsibility Nicolas Sierro 2015.pptx
API Product Opportunity Responsibility Nicolas Sierro 2015.pptxAPI Product Opportunity Responsibility Nicolas Sierro 2015.pptx
API Product Opportunity Responsibility Nicolas Sierro 2015.pptxBlockchainizator
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIJeff Potts
 
Federico Feroldi: PHP in Yahoo!
Federico Feroldi: PHP in Yahoo!Federico Feroldi: PHP in Yahoo!
Federico Feroldi: PHP in Yahoo!Francesco Fullone
 
Federico Feroldi Php In Yahoo
Federico Feroldi Php In YahooFederico Feroldi Php In Yahoo
Federico Feroldi Php In YahooFederico Feroldi
 
Building a Great Web API - Evan Cooke - QCON 2011
Building a Great Web API - Evan Cooke - QCON 2011Building a Great Web API - Evan Cooke - QCON 2011
Building a Great Web API - Evan Cooke - QCON 2011Twilio Inc
 
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClassECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClassEuropean Collaboration Summit
 
API Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven ProjectsAPI Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven ProjectsLes-Tilleuls.coop
 
Creating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkCreating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkLes-Tilleuls.coop
 
Code first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with AzureCode first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with AzureJeremy Likness
 

Similaire à A high profile project with Symfony and API Platform: beIN SPORTS (20)

API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)
API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)
API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API Platform
 
Design & Deploy a data-driven Web API in 2 hours
Design & Deploy a data-driven Web API in 2 hoursDesign & Deploy a data-driven Web API in 2 hours
Design & Deploy a data-driven Web API in 2 hours
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHP
 
The i7 Framework for System-i
The i7 Framework for System-iThe i7 Framework for System-i
The i7 Framework for System-i
 
Going FaaSter, Functions as a Service at Netflix
Going FaaSter, Functions as a Service at NetflixGoing FaaSter, Functions as a Service at Netflix
Going FaaSter, Functions as a Service at Netflix
 
aip_developer_overview_icar_2014
aip_developer_overview_icar_2014aip_developer_overview_icar_2014
aip_developer_overview_icar_2014
 
Unleash your Symfony projects with eZ Platform
Unleash your Symfony projects with eZ PlatformUnleash your Symfony projects with eZ Platform
Unleash your Symfony projects with eZ Platform
 
High quality ap is with api platform
High quality ap is with api platformHigh quality ap is with api platform
High quality ap is with api platform
 
API Product Opportunity Responsibility Nicolas Sierro 2015.pptx
API Product Opportunity Responsibility Nicolas Sierro 2015.pptxAPI Product Opportunity Responsibility Nicolas Sierro 2015.pptx
API Product Opportunity Responsibility Nicolas Sierro 2015.pptx
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
 
Federico Feroldi: PHP in Yahoo!
Federico Feroldi: PHP in Yahoo!Federico Feroldi: PHP in Yahoo!
Federico Feroldi: PHP in Yahoo!
 
Federico Feroldi Php In Yahoo
Federico Feroldi Php In YahooFederico Feroldi Php In Yahoo
Federico Feroldi Php In Yahoo
 
Building a Great Web API - Evan Cooke - QCON 2011
Building a Great Web API - Evan Cooke - QCON 2011Building a Great Web API - Evan Cooke - QCON 2011
Building a Great Web API - Evan Cooke - QCON 2011
 
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClassECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
 
API Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven ProjectsAPI Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven Projects
 
M meijer api management - tech-days 2015
M meijer   api management - tech-days 2015M meijer   api management - tech-days 2015
M meijer api management - tech-days 2015
 
Flink in action
Flink in actionFlink in action
Flink in action
 
Creating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkCreating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform framework
 
Code first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with AzureCode first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with Azure
 

Plus de Smile I.T is open

Streamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionStreamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionSmile I.T is open
 
Deploy your contents with entity share
Deploy your contents with entity share   Deploy your contents with entity share
Deploy your contents with entity share Smile I.T is open
 
[Smile] atelier spark - salon big data 13032018
[Smile]   atelier spark - salon big data 13032018[Smile]   atelier spark - salon big data 13032018
[Smile] atelier spark - salon big data 13032018Smile I.T is open
 
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & AkeneoSéminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & AkeneoSmile I.T is open
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Smile I.T is open
 
Séminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSéminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSmile I.T is open
 
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...Smile I.T is open
 
eZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory featureseZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory featuresSmile I.T is open
 
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogueSéminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogueSmile I.T is open
 
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...Smile I.T is open
 
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Smile I.T is open
 
Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2Smile I.T is open
 

Plus de Smile I.T is open (14)

Streamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionStreamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon Session
 
Deploy your contents with entity share
Deploy your contents with entity share   Deploy your contents with entity share
Deploy your contents with entity share
 
ROM Android Customs
ROM Android Customs ROM Android Customs
ROM Android Customs
 
[Smile] atelier spark - salon big data 13032018
[Smile]   atelier spark - salon big data 13032018[Smile]   atelier spark - salon big data 13032018
[Smile] atelier spark - salon big data 13032018
 
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & AkeneoSéminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
 
Séminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSéminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application Métier
 
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
 
eZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory featureseZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory features
 
Les quick wins de l'UX
Les quick wins de l'UXLes quick wins de l'UX
Les quick wins de l'UX
 
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogueSéminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
 
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
 
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
 
Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2
 

Dernier

Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Dernier (20)

Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

A high profile project with Symfony and API Platform: beIN SPORTS

  • 1. A high profile project with Symfony and API Platform: beIN SPORTS Symfony Con 2015
  • 2. Fabien Gasser twitter: @fabien_gasser SolutionArchitect at Smile fabien.gasser@smile.fr Kévin Dunglas twitter/github: @dunglas CEO at Les-Tilleuls.coop Symfony Core Team API Platform creator kevin@les-tilleuls.coop
  • 3. Build the new beIN SPORTS Core Platform: may the force be with us ! • Content Distributed on several channel: websites, mobile apps, TV apps, XBOX, PS4… • Multi-site: 4 territories • Multi-language per site: 7 languages • Publication workflow: 60 journalists distributed across 4 Newsrooms • Real-time publication • Strong SEO needs • Performant, maintainable, open • High traffic: up to 70M of hits and 50M video views monthly • 5 teams, with more than 30 people working on the project We created an API Centric CMS OUR MISSION
  • 4. Use Linked Data Luke, to enrich your data: • Knowledge Database: semantically structured data • External Knowledge database (dbpedia, private partners) • Content enrichment • API-Management: manage the data we produce to external consumer We created a Linked Data API Centric CMS LINKED DATA
  • 5. http://www.beinsports.com/ In a 4 months time frame, Smile redeveloped from grounds up, beIN SPORTS digital core platform serving up to 70 m PV and 50 m video views monthly, across 30 countries where beIN operates 24/7, in 4 languages. From day-1 launch, back-end platform supported multilingual publishing workflow by a team of 60 journalist/editorialist, distributed across 4 Newsrooms (Miami, Paris, Doha, Sydney). This has been made possible thanks to Symfony.
  • 7. An API at the heart of the Information System: • Central point to access data • Encapsulate all the business logic • Access same data and features from everywhere • Agregate heterogenous data and display coherent data encapsulating business-logic. API FIRST
  • 8. + Guzzle EASY TO EXPOSE, EASY TO CONSUME ! • Core web API • Back-office: a HTML5 webapp (SPA) • Front-office: a website generating HTML server-side (for SEO) • Connected devices: TV apps, XBOX app, PS4 app • Third part application: EPG, other websites
  • 9. • Centralizes R/W access to data • Holds all the business logic • Is stateless (PHP sessions make horizontal scalability harder) • Requires authentication to access to some endpoints (but not all) and to write data • Is built with PHP, Symfony and API Platform API
  • 10. • Single Page Application: 100% HTML5 / JavaScript / CSS • Presentation logic: login screen, publishing workflow, medias management... • Queries the API in AJAX to retrieve and modify data • Client-side routing (HTML5 push state) BACK OFFICE
  • 11. • Public pages: homepage, lists, categories, articles, videos, photos... • Server-side generated HTML (some JS too) • SEO: fancy URLs, structured data, breadcrumbs... • Queries the API in AJAX • Responsive design FRONT OFFICE
  • 12. Mobile apps, TV apps, XBOX and PS4 apps…: • One responsibility: display (nicely) data • Query the central API to retrieve data What about User Generated Content like comments, reviews? External services. OTHER CLIENTS
  • 13. Each application has its own: • Git repository • CI • servers (if applicable) • domain name (if applicable: api.example.com, admin.example.com, example.com) CONTINOUS INTEGRATION
  • 14. Benefits for the project: harder, better, faster, stronger • 1 app = 1 team (specialized skills) • No business logic duplication: all in the API • Easy refactoring: touching a component has no impact on others • API format = contract: documented and tested • Easy to add new client apps WHY SHOULD I USE API PLATFORM ?
  • 15. CMS AND KNOWLEDGE DATABASE MICROSERVICES ARCHITECTURE Content API Sports API EPG API Core Platform API Web App Mobile Connected devices REST REST REST Database Back Office Third part content Batch REST Core Platform API JWT AUTH DB DB DB DB Webhooks XML
  • 16. Formats, open standards and patterns
  • 17. HTTP + REST + JSON: • Work everywhere • Lightweight • Stateless (if done well) • HTTP has a powerful caching model • Extensible (JSON-LD, Hydra...) • High quality tooling API PATTERN
  • 18. Hypermedia as the Engine of Application State • Hypermedia: IRI as identifier • Ability to reference external data (like hypertext links) • Auto discoverable => Generic clients API FORMAT: HATEOAS
  • 19. JSON-LD: JSON for Linked Data • Compliant with technologies of the semantic web: RDF, SPARQL, triple store… • Standard: W3C recommendation (since 2014) • Easy to use: looks like a typical JSON document • Already used by Gmail, GitHub, BBC, Microsoft, US gov… and now beIN SPORTS Remember our Knowledge Database? JSON-LD
  • 20. The Schema.org vocabulary • Large set of elements: events, team, people, videos... • Created and understood by Google, Bing, Yahoo! and Yandex • Massively used, and run by the W3C (Web schemas group) • Can be used in HTML (microdata / RDFa) and JSON-LD • Extensible (custom vocabularies) SCHEMA.ORG
  • 21. HYDRA • Describe REST APIs in JSON-LD • = write support • = auto discoverable APIs • Standard for collections, paginations, errors, filters • Draft W3C HYDRA
  • 22. JSON Web Token (JWT) • Lightweight and simple • Stateless • token signed and verified server-side • then, stored client-side (web storage) • sent in an Authorization header in each AJAX request API AUTHENTICATION
  • 24. LINKED DATA Soccer Player Person Name Date of Birth Soccer Match Event Team play in Rdf:type ⚽ http://dbpedia.org/ressource/Zlatan_Ibrahimovic Begin Date End Date Rdfs:subClassOf Dbpedia-owl:birth_name Dbpedia-owl:birthdate Has a Has a Has aIs an Dbpprop:Team Third part semantic engine: • Apache Jena • Apache Marmotta • Apache Stanbol Luke, learn more about linked data !
  • 26. A decoupled PHP web framework to build modern, API-first web projects. Out of the box hypermedia and Linked Data support with JSON-LD, Schema.org, Hydra and JWT in is heart $> composer create-project api-platform/api-platform my-project API PLATFORM
  • 27. API Platform 💘 Symfony • Built on top of Symfony full-stack (3.0 OK) • Install any existing SF bundles • Follow SF Best Practices • Work with existing SF app • Optional: advanced Doctrine support API PLATFORM AND SYMFONY
  • 28. SCHEMA GENERATOR Pick types and properties you need from Schema.org: # app/config/schema.yaml namespaces: entity: AppBundleEntity types: Person: parent: false properties: name: ~ birthDate: ~ gender: ~ # other Schema.org types $> bin/schema generate-types src/app/config/schema.yml namespace AppBundleEntity; // Use statements /** * A person (alive, dead, undead, or fictional). * * @see http://schema.org/Person Documentation on Schema.org * * @ORMEntity * @Iri("http://schema.org/Person") */ class Person { /** * @var integer * @ORMColumn(type="integer") * @ORMId * @ORMGeneratedValue(strategy="AUTO") */ private $id; /** * @var string The name of the item. * * @ORMColumn(nullable=true) * @AssertType(type="string") * @Iri("https://schema.org/name") */ private $name; // Other properties, getters, setters, adders, removers….
  • 29. SCHEMA GENERATOR You get: • PHP classes, properties, getters and setters (PSR compliant) • Doctrine ORM mapping (including relations and mapped superclasses) • Validation constraints from the Validator component • Full PHPDoc extracted from schema human-readable descriptions • (optional) PHP interfaces • (optional) ResolveTargetEntity Doctrine mappings • (optional) JSON-LD IRI annotations (useful for the API bundle)
  • 30. # app/config/services.yml services: person_resource: parent: "api.resource" arguments: [ "AppBundleEntityPerson" ] tags: [ { name: "api.resource" } ] DEFINE RESOURCES TO EXPOSE
  • 31. CREATE EASILY REST APIs Validation Pagination Errors serialization Filtering Sorting Awesome features Browse a pretty, automatically generated documentation. Specify the API and test it thanks to a system especially suitable for Behavior-Driven Development. Everything is extensible thanks to a powerful event system and strong OOP.
  • 32. FULL SUPPORT OF JSON-LD, HYDRA AND SCHEMA.ORG An auto discoverable Linked Data API for free!
  • 33. USER DOCUMENTATION AND SANDBOX NelmioApiDoc automatically detects and documents exposed resources.
  • 35. CUSTOM APPLICATION API Back-office Front-office PHP Symfony API Platform Behat + PHPunit Doctrine MySQL Varnish NelmioApiDoc FosHttpCache FOSUserBundle LexikJwtAuthenticationB undle NelmioCorsBundle AngularJS Restangular Less Bootstrap Grunt Protractor PHP Symfony Guzzle Twig Behat + PHPunit Less Bootstrap Varnish FosHttpCache No database!
  • 37. HOSTING ENVIRONMENT Static files S3 SPA S3 Assets front S3 medias Browser API Autoscaling group VarnishVarnish EC2 -1 EC2 -n Front Autoscaling group VarnishVarnish EC2 -1 EC2 -n Amazon RDS Assets Other services: Route 53 (DNS), SES (mail), …
  • 38. HOSTING ENVIRONMENT API Autoscaling group VarnishVarnish EC2 -1 EC2 -n Static files S3 SPA S3 Assets front S3 medias Smartphones Connected devices Back office Amazon RDS Assets Other services: Route 53 (DNS), SES (mail), …
  • 39. • Request / day on front: 5,2 M • Request / day on API front & connected devices: 15,6 M 468 M request per month to serve in: • AVG response time on front: 29ms • AVG response time on API: 4ms FEW FIGURES
  • 40. API PLATFORM EVERYWHERE CMS – E-COMMERCE Real life use case examples TM & © Lucasfilm Ltd. All Rights Reserved
  • 41. Monolith application are not enough to handle the omnichannel experience. E-COMMERCE POS API Orchestration with information system CMS B2C CRMPIMOMS Back Office Corpo B2B
  • 42. And now Luke, scaffold your model and expose it with API Platform. 1. Scaffold your core-application API with schema.org 2. Create an OMS to manage Cart and Order 3. Plug external data-sources and unify it with Hydra keeping a unify vocabulary to describe your data according to their referential Pros domain separation, loose coupling Cons only for e-commerce Jedi, you don’t need this for classic retail shop. E-COMMERCE
  • 44. Questions ? TM & © Lucasfilm Ltd. All Rights Reserved
  • 45. Thank you, vote for us Luke! Fabien Gasser SolutionArchitect fabien.gasser@smile.fr Kévin Dunglas API Platform creator contact@les-tilleuls.coop https://joind.in/talk/view/16486 http://symfony.com/showcase/170