A Widget Based Web Platform

937 views

Published on

Organizing websites for target audiences.
Organizing web pages in components.
Orchestrating it all with Erlang.
Letting it crash!

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
937
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

A Widget Based Web Platform

  1. 1. A Web Widget Platform Enrique Paz @quiquepaz 1/30
  2. 2. Introduction Meeting Me • Software Architect • Passionate Erlang developer • Testing enthusiast • Love beautiful code! 2/30
  3. 3. Introduction Meeting Spilgames • Gaming Platform • Serving data to 190+ countries world-wide • 180+ million unique users per month 3/30
  4. 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
  5. 5. Introduction Brands and Sites 5/30
  6. 6. Old Portals Landscape 6/30
  7. 7. Old Portals Landscape • Monolithic portals per brand • Static pages with lots of AJAX calls • Architectural layers developed independently 7/30
  8. 8. Old Portals Landscape What Was Good. . . • Acceptable performance • Clear layer separation • Fast growth • Per brand & site development • Small learning curve 8/30
  9. 9. Old Portals Landscape What Was Good. . . 9/30
  10. 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
  11. 11. Wish List 11/30
  12. 12. Wish List Architectural Wishes • Isolated requests, features and crashes • Feature toggling on runtime • Linear scalability with supermarket hardware 12/30
  13. 13. Wish List Architectural Wishes • Isolated requests, features and crashes • Feature toggling on runtime • Linear scalability with supermarket hardware 12/30
  14. 14. Wish List Development Wishes • One modular codebase • Explicit component specifications • Small features, easy to deploy and rollback 13/30
  15. 15. Wish List Erlang Based Web Platforms? • Chicago Boss, Zotonic. . . (+) Nice layer separation (+) Mature solutions (+) Easy to use 14/30
  16. 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 fits better (abstracted model) 14/30
  17. 17. A Widget Platform Let’s Create Our Own Solution! 15/30
  18. 18. A Widget Platform Pages Made Out Of Widgets 16/30
  19. 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. 20. A Widget Platform What’s A Widget? • Isolated • Explicitly specified • Releasable separately 18/30
  21. 21. A Widget Platform In Practice • Feature focused development not brand • One widget to serve all brands 19/30
  22. 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 } ]}, • Configurable per site and brand { "women" , [ { template , wdg_featured_games } , { num_games , 6 } , { css , [ "women / wdg_featured_games " ] } ]} ]} 20/30
  23. 23. Managing Widgets 21/30
  24. 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 configuration to new cluster members 22/30
  25. 25. Managing Widgets A Handy Tool 23/30
  26. 26. Managing Widgets Master & Slaves In 1 Shell • The platform master node runs: A web server A management interface A specific set of widgets 24/30
  27. 27. Managing Widgets Master & Slaves In 1 Shell • The platform master node runs: A web server A management interface A specific set of widgets • Each slave node runs: Its own specific set of widgets 24/30
  28. 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
  29. 29. The Future 26/30
  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. 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. 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. 33. The Future Questions? Leave me feedback! http://spkr8.com/t/28371 30/30

×