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

Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intentsLilia Sfaxi
 
Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrigeAmineMouhout1
 
NOTEPAD MAKING IN PAYTHON BY ROHIT MALAV
NOTEPAD  MAKING IN PAYTHON BY ROHIT MALAVNOTEPAD  MAKING IN PAYTHON BY ROHIT MALAV
NOTEPAD MAKING IN PAYTHON BY ROHIT MALAVRohit malav
 
Deploiement du controleur virtuel de point d’acces cisco
Deploiement du controleur virtuel de point d’acces ciscoDeploiement du controleur virtuel de point d’acces cisco
Deploiement du controleur virtuel de point d’acces ciscoMame Cheikh Ibra Niang
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Faycel Chaoua
 
Présentation python
Présentation pythonPrésentation python
Présentation pythonSarah
 
Gestion des emprunts dans une bibliothèque by le gang à lunettes
Gestion des emprunts dans une bibliothèque by le gang à lunettesGestion des emprunts dans une bibliothèque by le gang à lunettes
Gestion des emprunts dans une bibliothèque by le gang à lunettesCléa Aurianne Leencé BAWE
 
0045-cours-reseaux-transmission-sans-fil (2).pptx
0045-cours-reseaux-transmission-sans-fil (2).pptx0045-cours-reseaux-transmission-sans-fil (2).pptx
0045-cours-reseaux-transmission-sans-fil (2).pptxFerdawsBNasrBSalah
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesLilia Sfaxi
 
Rapport d'une application mobile de recommendation de livres
Rapport d'une application mobile de recommendation de livresRapport d'une application mobile de recommendation de livres
Rapport d'une application mobile de recommendation de livreskaies Labiedh
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-CorrectionLilia Sfaxi
 
Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)
Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)
Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)Pramana
 
Cv Moez HAMZAOUI JAVA J2EE FULL STACK
Cv Moez HAMZAOUI JAVA J2EE FULL STACKCv Moez HAMZAOUI JAVA J2EE FULL STACK
Cv Moez HAMZAOUI JAVA J2EE FULL STACKMoez Hamzaoui
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-CorrectionLilia Sfaxi
 

Tendances (20)

Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Tp1 wp etud
Tp1 wp etudTp1 wp etud
Tp1 wp etud
 
Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrige
 
NOTEPAD MAKING IN PAYTHON BY ROHIT MALAV
NOTEPAD  MAKING IN PAYTHON BY ROHIT MALAVNOTEPAD  MAKING IN PAYTHON BY ROHIT MALAV
NOTEPAD MAKING IN PAYTHON BY ROHIT MALAV
 
Deploiement du controleur virtuel de point d’acces cisco
Deploiement du controleur virtuel de point d’acces ciscoDeploiement du controleur virtuel de point d’acces cisco
Deploiement du controleur virtuel de point d’acces cisco
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
 
Présentation python
Présentation pythonPrésentation python
Présentation python
 
Gestion des emprunts dans une bibliothèque by le gang à lunettes
Gestion des emprunts dans une bibliothèque by le gang à lunettesGestion des emprunts dans une bibliothèque by le gang à lunettes
Gestion des emprunts dans une bibliothèque by le gang à lunettes
 
0045-cours-reseaux-transmission-sans-fil (2).pptx
0045-cours-reseaux-transmission-sans-fil (2).pptx0045-cours-reseaux-transmission-sans-fil (2).pptx
0045-cours-reseaux-transmission-sans-fil (2).pptx
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications Mobiles
 
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFITheses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
 
Internet des Objets
Internet des ObjetsInternet des Objets
Internet des Objets
 
Rapport d'une application mobile de recommendation de livres
Rapport d'une application mobile de recommendation de livresRapport d'une application mobile de recommendation de livres
Rapport d'une application mobile de recommendation de livres
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)
Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)
Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)
 
Curriculum vitæ
Curriculum vitæCurriculum vitæ
Curriculum vitæ
 
Cv Moez HAMZAOUI JAVA J2EE FULL STACK
Cv Moez HAMZAOUI JAVA J2EE FULL STACKCv Moez HAMZAOUI JAVA J2EE FULL STACK
Cv Moez HAMZAOUI JAVA J2EE FULL STACK
 
E-learning
E-learningE-learning
E-learning
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 

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

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Dernier (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

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