SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
A Web Widget Platform
Enrique Paz @quiquepaz

1/30
Introduction

Meeting Me

• Software Architect
• Passionate Erlang developer
• Testing enthusiast
• Love beautiful code!

2/30
Introduction

Meeting Spilgames

• Gaming Platform
• Serving data to 190+ countries world-wide
• 180+ million unique users per month

3/30
Introduction

Brands and Sites

• 5 Brands/Channels for target audiences
• 1-15 Sites for different geographical regions
• Strong domains
www.agame.com for teens in the US
www.games.co.uk for families in the UK
www.juegosdechicas.com for girls in Spain
...

4/30
Introduction

Brands and Sites

5/30
Old Portals Landscape

6/30
Old Portals Landscape

• Monolithic portals per brand
• Static pages with lots of AJAX
calls
• Architectural layers developed
independently

7/30
Old Portals Landscape

What Was Good. . .

• Acceptable performance
• Clear layer separation
• Fast growth
• Per brand & site development
• Small learning curve

8/30
Old Portals Landscape

What Was Good. . .

9/30
Old Portals Landscape

. . . And What Wasn’t

• Extensive frontend caching
• No global features
• Lots of logic on the client
• Long time to global market
• Redundant code
• Tiny changes, massive impact

10/30
Wish List

11/30
Wish List

Architectural Wishes

• Isolated requests, features and crashes
• Feature toggling on runtime
• Linear scalability with supermarket hardware

12/30
Wish List

Architectural Wishes

• Isolated requests, features and crashes
• Feature toggling on runtime
• Linear scalability with supermarket hardware

12/30
Wish List

Development Wishes

• One modular codebase
• Explicit component specifications
• Small features, easy to deploy and rollback

13/30
Wish List

Erlang Based Web Platforms?

• Chicago Boss, Zotonic. . .
(+) Nice layer separation
(+) Mature solutions
(+) Easy to use

14/30
Wish List

Erlang Based Web Platforms?

• Chicago Boss, Zotonic. . .
(+) Nice layer separation
(+) Mature solutions
(+) Easy to use

• But. . .
(-) Feature isolation not key in their design
(-) A VC framework ts better (abstracted model)

14/30
A Widget Platform

Let’s Create Our Own Solution!

15/30
A Widget Platform

Pages Made Out Of Widgets

16/30
A Widget Platform

Pages Made Out Of Widgets

• Path determines an entry widget
• Widgets and their children form a
tree
• Tree generates fully working
HTML
• Page generation time guaranteed!
(timeouts)

17/30
A Widget Platform

What’s A Widget?

• Isolated
• Explicitly specified
• Releasable separately

18/30
A Widget Platform

In Practice

• Feature focused development not brand
• One widget to serve all brands

19/30
A Widget Platform

In Practice

{ themes , [
{ " family " , [
{ template , wdg_featured_games_compact } ,
{ num_games , 3 } ,
{ css , [ " f a m i l y / wdg_featured_games " ] }
]},

• Minimal to no impact on other
features

{ { " f a m i y " , 88 } , [
{ num_games , 5 }
]},

• Configurable per site and brand

{ "women" , [
{ template , wdg_featured_games } ,
{ num_games , 6 } ,
{ css , [ "women / wdg_featured_games " ] }
]}
]}

20/30
Managing Widgets

21/30
Managing Widgets

Deployments

• SWIFT as a central widget
repository
• HTTP interface with simple GUI
• Uses the platform management
interface:
List nodes
List widgets in a node
Enable/disable widget in a node
Change widget version in a node

• Enforces configuration to new
cluster members

22/30
Managing Widgets

A Handy Tool

23/30
Managing Widgets

Master & Slaves In 1 Shell

• The platform master node runs:
A web server
A management interface
A specic set of widgets

24/30
Managing Widgets

Master & Slaves In 1 Shell

• The platform master node runs:
A web server
A management interface
A specic set of widgets

• Each slave node runs:
Its own specic set of widgets

24/30
Managing Widgets

spil.com/?origins=w1,preview;w5,preview

• Widgets can be called in any node
• Widgets can fail
• Widgets can be disabled

25/30
The Future

26/30
The Future

Lessons Learned

• Document by example
• Reinforce the concepts adoption often
• Review, review, review
• Measure performance from early stages

27/30
The Future

Coming Up

• Native widget to backend connectivity
• Performance analysis on CI
• Historical imagediff for widgets
• Device/Browser capabilities available for widgets
• Widgets written in Elixir?

28/30
The Future

What We’ve Used

• ErlyDTL for html templating
• Cowboy as a web server
• Lager for logging
• Rebar for build tool
• Lhttpc as HTTP client
• Estatsd for monitoring
• Sass as a CSS pre-processor

29/30
The Future

Questions?

Leave me feedback! http://spkr8.com/t/28371

30/30

Weitere ähnliche Inhalte

Ähnlich wie A Widget Based Web Platform

D7 10 modules-in-20mins v2 copy
D7 10 modules-in-20mins v2 copyD7 10 modules-in-20mins v2 copy
D7 10 modules-in-20mins v2 copy
Acquia
 
AggreGate IoT Integration Platform
AggreGate IoT Integration PlatformAggreGate IoT Integration Platform
AggreGate IoT Integration Platform
Tibbo
 
Yaniv Brosh (R&D Director, NeoGames) - Angular: Real Life Experience
Yaniv Brosh (R&D Director, NeoGames) - Angular: Real Life ExperienceYaniv Brosh (R&D Director, NeoGames) - Angular: Real Life Experience
Yaniv Brosh (R&D Director, NeoGames) - Angular: Real Life Experience
Innovecs
 
Reusing JavaScript knowledge in Windows Store apps
Reusing JavaScript knowledge in Windows Store appsReusing JavaScript knowledge in Windows Store apps
Reusing JavaScript knowledge in Windows Store apps
Timmy Kokke
 

Ähnlich wie A Widget Based Web Platform (20)

OpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals companyOpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals company
 
Operational Dashboards with FIWARE WireCloud
Operational Dashboards with FIWARE WireCloudOperational Dashboards with FIWARE WireCloud
Operational Dashboards with FIWARE WireCloud
 
D7 10 modules-in-20mins v2 copy
D7 10 modules-in-20mins v2 copyD7 10 modules-in-20mins v2 copy
D7 10 modules-in-20mins v2 copy
 
Font-End Development Tools
Font-End Development ToolsFont-End Development Tools
Font-End Development Tools
 
Optimizing Access with SQL Server
Optimizing Access with SQL ServerOptimizing Access with SQL Server
Optimizing Access with SQL Server
 
Native Code is Dead AKA Cross Platform Development with Unity3D
Native Code is Dead AKA Cross Platform Development with Unity3DNative Code is Dead AKA Cross Platform Development with Unity3D
Native Code is Dead AKA Cross Platform Development with Unity3D
 
Cincom Roadmap ESUG2014
Cincom Roadmap ESUG2014Cincom Roadmap ESUG2014
Cincom Roadmap ESUG2014
 
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
 
Develop For BlackBerry10
Develop For BlackBerry10 Develop For BlackBerry10
Develop For BlackBerry10
 
Enterprise Griffon
Enterprise GriffonEnterprise Griffon
Enterprise Griffon
 
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the BrowserForge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the Browser
 
AggreGate IoT Integration Platform
AggreGate IoT Integration PlatformAggreGate IoT Integration Platform
AggreGate IoT Integration Platform
 
Introducing Sitecore Habitat - SUGCON EU 2016
Introducing Sitecore Habitat - SUGCON EU 2016Introducing Sitecore Habitat - SUGCON EU 2016
Introducing Sitecore Habitat - SUGCON EU 2016
 
Building APIs with Mule and Spring Boot
Building APIs with Mule and Spring BootBuilding APIs with Mule and Spring Boot
Building APIs with Mule and Spring Boot
 
Elm at large (companies)
Elm at large (companies)Elm at large (companies)
Elm at large (companies)
 
Yaniv Brosh (R&D Director, NeoGames) - Angular: Real Life Experience
Yaniv Brosh (R&D Director, NeoGames) - Angular: Real Life ExperienceYaniv Brosh (R&D Director, NeoGames) - Angular: Real Life Experience
Yaniv Brosh (R&D Director, NeoGames) - Angular: Real Life Experience
 
Reusing JavaScript knowledge in Windows Store apps
Reusing JavaScript knowledge in Windows Store appsReusing JavaScript knowledge in Windows Store apps
Reusing JavaScript knowledge in Windows Store apps
 
XM Cloud Demystified - Adam Seabridge
XM Cloud Demystified - Adam SeabridgeXM Cloud Demystified - Adam Seabridge
XM Cloud Demystified - Adam Seabridge
 
Dojo Grids in XPages
Dojo Grids in XPagesDojo Grids in XPages
Dojo Grids in XPages
 
Cincom Smalltalk Roadmap 2010
Cincom Smalltalk Roadmap 2010Cincom Smalltalk Roadmap 2010
Cincom Smalltalk Roadmap 2010
 

KĂźrzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

KĂźrzlich hochgeladen (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 

A Widget Based Web Platform

  • 1. A Web Widget Platform Enrique Paz @quiquepaz 1/30
  • 2. Introduction Meeting Me • Software Architect • Passionate Erlang developer • Testing enthusiast • Love beautiful code! 2/30
  • 3. Introduction Meeting Spilgames • Gaming Platform • Serving data to 190+ countries world-wide • 180+ million unique users per month 3/30
  • 4. Introduction Brands and Sites • 5 Brands/Channels for target audiences • 1-15 Sites for different geographical regions • Strong domains www.agame.com for teens in the US www.games.co.uk for families in the UK www.juegosdechicas.com for girls in Spain ... 4/30
  • 7. Old Portals Landscape • Monolithic portals per brand • Static pages with lots of AJAX calls • Architectural layers developed independently 7/30
  • 8. Old Portals Landscape What Was Good. . . • Acceptable performance • Clear layer separation • Fast growth • Per brand & site development • Small learning curve 8/30
  • 9. Old Portals Landscape What Was Good. . . 9/30
  • 10. Old Portals Landscape . . . And What Wasn’t • Extensive frontend caching • No global features • Lots of logic on the client • Long time to global market • Redundant code • Tiny changes, massive impact 10/30
  • 12. Wish List Architectural Wishes • Isolated requests, features and crashes • Feature toggling on runtime • Linear scalability with supermarket hardware 12/30
  • 13. Wish List Architectural Wishes • Isolated requests, features and crashes • Feature toggling on runtime • Linear scalability with supermarket hardware 12/30
  • 14. Wish List Development Wishes • One modular codebase • Explicit component specications • Small features, easy to deploy and rollback 13/30
  • 15. Wish List Erlang Based Web Platforms? • Chicago Boss, Zotonic. . . (+) Nice layer separation (+) Mature solutions (+) Easy to use 14/30
  • 16. Wish List Erlang Based Web Platforms? • Chicago Boss, Zotonic. . . (+) Nice layer separation (+) Mature solutions (+) Easy to use • But. . . (-) Feature isolation not key in their design (-) A VC framework ts better (abstracted model) 14/30
  • 17. A Widget Platform Let’s Create Our Own Solution! 15/30
  • 18. A Widget Platform Pages Made Out Of Widgets 16/30
  • 19. A Widget Platform Pages Made Out Of Widgets • Path determines an entry widget • Widgets and their children form a tree • Tree generates fully working HTML • Page generation time guaranteed! (timeouts) 17/30
  • 20. A Widget Platform What’s A Widget? • Isolated • Explicitly specied • Releasable separately 18/30
  • 21. A Widget Platform In Practice • Feature focused development not brand • One widget to serve all brands 19/30
  • 22. A Widget Platform In Practice { themes , [ { " family " , [ { template , wdg_featured_games_compact } , { num_games , 3 } , { css , [ " f a m i l y / wdg_featured_games " ] } ]}, • Minimal to no impact on other features { { " f a m i y " , 88 } , [ { num_games , 5 } ]}, • Congurable per site and brand { "women" , [ { template , wdg_featured_games } , { num_games , 6 } , { css , [ "women / wdg_featured_games " ] } ]} ]} 20/30
  • 24. Managing Widgets Deployments • SWIFT as a central widget repository • HTTP interface with simple GUI • Uses the platform management interface: List nodes List widgets in a node Enable/disable widget in a node Change widget version in a node • Enforces conguration to new cluster members 22/30
  • 26. Managing Widgets Master & Slaves In 1 Shell • The platform master node runs: A web server A management interface A specic set of widgets 24/30
  • 27. Managing Widgets Master & Slaves In 1 Shell • The platform master node runs: A web server A management interface A specic set of widgets • Each slave node runs: Its own specic set of widgets 24/30
  • 28. Managing Widgets spil.com/?origins=w1,preview;w5,preview • Widgets can be called in any node • Widgets can fail • Widgets can be disabled 25/30
  • 30. The Future Lessons Learned • Document by example • Reinforce the concepts adoption often • Review, review, review • Measure performance from early stages 27/30
  • 31. The Future Coming Up • Native widget to backend connectivity • Performance analysis on CI • Historical imagediff for widgets • Device/Browser capabilities available for widgets • Widgets written in Elixir? 28/30
  • 32. The Future What We’ve Used • ErlyDTL for html templating • Cowboy as a web server • Lager for logging • Rebar for build tool • Lhttpc as HTTP client • Estatsd for monitoring • Sass as a CSS pre-processor 29/30
  • 33. The Future Questions? Leave me feedback! http://spkr8.com/t/28371 30/30