SlideShare a Scribd company logo
1 of 23
Download to read offline
Making the case for Play

Children’s interactive
Adam Evans
CBeebies Tech Lead

Asher Glynn
Technical Architect

Children’s interactive
CBeebies

Children’s interactive
What is it?
•
•
•
•
•

Website for children aged 4-6	

An aggregate view of BBC content	

2 million unique users a week	

High UX demands, our audience cry’s	

Built using PHP and a long forked version of Zend MVC

Children’s interactive
The (old) Architecture
CBEEBIES

PAL

SOLR

ELECTRON

RESTFUL SERVICES
FORGE
Children’s interactive

NITRO

GAMES GRID
•
•
•
•
•
•
•

Large legacy codebase	


The Issues

Cutting edge in BBC at time	

Original developers long gone	

Hard to work on new features with confidence	

Quality of tests vary 	


•
•

Retro fitted on top	

Hard to do well with the existing codebase	


PHP’s not designed for aggregating data from multiple restful services	

Business needs have changed
Children’s interactive
The Opportunity
“Responsive”

Children’s interactive
What we done on our summer holiday
•

•

•

Clear message to management	


•
•
•

What the problems were	

What we should do about it	

What they should expect	


Used experience and judgement for recommendations	


•
•
•

Time critical - we were in trouble	

No beauty competitions	

Had clear justifications	


Confidence and decisiveness gave management confidence for a spike
Children’s interactive
Play framework
Why did we choose it?

•
•
•

Scala	

Full stack Web Framework	

Reactive architecture is great when calling web services, non blocking - fits
exactly our problem type	


•
•

Typed template system is amazing	

Lots of industry buzz

Children’s interactive
The First Spike
•

•
•
•

Addressed stakeholder concerns:	


•
•
•

Business value of the product is in the front end	

Could show (visually) immediate progress	

Backends aren’t (visually) impressive	


Created responsive templates from a mocked data layer	

Setup basic build pipeline to AWS - immediate productivity impact	

Demonstrated skills transfer to existing team members

Children’s interactive
The First Spike
•
•
•

Success!!!	

Compelling enough to have our stakeholders commitment	

A 2 man team of Java/Scala + PHP/Javascript	


•
•

Collaborate effectively	

Become productive quickly

Children’s interactive
Moving forward
•
•
•

How do we take a team of developers into Scala?	

How do we resource?	

How do we manage the risks?	

AND

•

How to migrate smoothly from the previous Apache/Tomcat platform???

Children’s interactive
The Team
•
•
•
•
•

Started small - 3 developers	

Split frontend/backend	

PHP focused on front end to get familiar (avoid Scala overload)	

Backend started out Java-like with Scala’s syntactical sugar	

Big recruitment drive

Children’s interactive
The New Architecture
[Should be pretty diagram here]

•
•
•
•
•

Version Control - GIT	

Build - Jenkins	

Deployment - AWS	

Continuous Delivery (almost)	

App and Web server - Play 2

Children’s interactive
… after rethinking
Started with

Ended with

Varnish

AWS ELB

Nginx + mod_pageseed

Nginx + mod_pageseed

Play

Play

…overthought the problem
Children’s interactive

Play

Play
Risky business
We’re doing things differently not necessarily new	

(Going outlaw but in a nice Robin Hood kind of way)

•
•
•

Heavy use of Java in the BBC. Extensive expertise on the JVM	

Already some use of AWS for internal systems	

Extensive change was unavoidable - regardless of the change was

Children’s interactive
The approach
No more tears - set by Editorial
children's not developers tears
(or product managers or development managers)

•
•
•
•
•
Children’s interactive

Iterative	

Discrete	

Tough editorial demands	

Tough editorial timeframes	

Tough audience!
The approach
•
•
•

Distinct vertical sections	


•

Index pages after content
pages

A section at a time	

Updated content item pages
first	


Children’s interactive
The approach
Vertical Plugins

DAO/	

DAO/	

DAO/
DAO/	

DAO/	

DAO/	

DAO/	

Templates Templates Templates Templates Templates Templates Templates

Play allows
modularisation	


•

Can develop in
isolation	


•

Game Songs Makes Storie Watch Radio Shows

•

Can deploy in
isolation	


•

Can test in
isolation

Default Theme Templates
Data Access Libraries/Templates

Horizontal Plugins
Children’s interactive
Keeping it real (simple)
•
•
•
•

Local in memory cache	

Used Guice rather than Cake	

Simpler, less boilerplate	

More familiar for Java devs	

Runtime configuration changes possible	

Opted out of some “kitchen sink” components in Play	

Started at the view/templates to drive design

•
•
•

Children’s interactive
Where we are now
•
•
•
•

We have our first live release. 	

First public facing AWS + Scala Application	

Management buy in for new model with Continuous Delivery	

Stakeholders very happy with turnaround of features

Children’s interactive
Things we’ve learnt
•
•
•
•
•

Hit a few small bugs in Play	


•
•

Open source makes it easier to find root cause	

Vast number of base libraries/products	


Constantly learning	

Scala’s cool factor makes it easier to recruit	

Some things are hard to test in Play out the box	

It’s easy to get carried away with idiomatic Scala

Children’s interactive
•
•

•

Constant engagement with stake holders managing a risky move	

PHP Developers have found it hard	


•
•
•

Syntax / FP concepts appear scary/overwhelming	

Patterns such as DI are new	

Lots of Scala tries to be academically clever	


Java developers	


•
•

Find certain aspects hard being different (testing)	

Can sometimes get carried away with new power sacrificing simplicity

Children’s interactive

More Related Content

What's hot

Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsAchievers Tech
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL DevelopersIke Ellis
 
Pearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET DeveloperPearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET DeveloperOfer Zelig
 
DOES16 London - Better Faster Cheaper .. How?
DOES16 London - Better Faster Cheaper .. How? DOES16 London - Better Faster Cheaper .. How?
DOES16 London - Better Faster Cheaper .. How? John Willis
 
API Architecture Summit 2014- APIs: A Mobile Developer's Perspective
API Architecture Summit 2014- APIs: A Mobile Developer's PerspectiveAPI Architecture Summit 2014- APIs: A Mobile Developer's Perspective
API Architecture Summit 2014- APIs: A Mobile Developer's PerspectiveNiall Roche
 
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...Bert Jan Schrijver
 
Serverless Toronto helps Startups
Serverless Toronto helps StartupsServerless Toronto helps Startups
Serverless Toronto helps StartupsDaniel Zivkovic
 
Jira and Confluence - How the company behind those products works - Anatoli K...
Jira and Confluence - How the company behind those products works - Anatoli K...Jira and Confluence - How the company behind those products works - Anatoli K...
Jira and Confluence - How the company behind those products works - Anatoli K...Dominic Trần
 
Performance - When, What and How
Performance - When, What and HowPerformance - When, What and How
Performance - When, What and HowAstrails
 
Optimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-miningOptimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-miningAtlassian
 
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
All daydevops   2016 - Turning Human Capital into High Performance Organizati...All daydevops   2016 - Turning Human Capital into High Performance Organizati...
All daydevops 2016 - Turning Human Capital into High Performance Organizati...John Willis
 
11 Goals of High Functioning SQL Developers
11 Goals of High Functioning SQL Developers11 Goals of High Functioning SQL Developers
11 Goals of High Functioning SQL DevelopersIke Ellis
 
Designing your API Server for mobile apps
Designing your API Server for mobile appsDesigning your API Server for mobile apps
Designing your API Server for mobile appsMugunth Kumar
 
Devoxx Belgium 2019 - Better software, faster: Principles of Continuous Deliv...
Devoxx Belgium 2019 - Better software, faster: Principles of Continuous Deliv...Devoxx Belgium 2019 - Better software, faster: Principles of Continuous Deliv...
Devoxx Belgium 2019 - Better software, faster: Principles of Continuous Deliv...Bert Jan Schrijver
 
Strategies in continuous delivery
Strategies in continuous deliveryStrategies in continuous delivery
Strategies in continuous deliveryAviran Mordo
 
improving the performance of Rails web Applications
improving the performance of Rails web Applicationsimproving the performance of Rails web Applications
improving the performance of Rails web ApplicationsJohn McCaffrey
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarRoberto Jr. Figueroa
 

What's hot (20)

Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web Applications
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
Pearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET DeveloperPearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET Developer
 
DOES16 London - Better Faster Cheaper .. How?
DOES16 London - Better Faster Cheaper .. How? DOES16 London - Better Faster Cheaper .. How?
DOES16 London - Better Faster Cheaper .. How?
 
API Architecture Summit 2014- APIs: A Mobile Developer's Perspective
API Architecture Summit 2014- APIs: A Mobile Developer's PerspectiveAPI Architecture Summit 2014- APIs: A Mobile Developer's Perspective
API Architecture Summit 2014- APIs: A Mobile Developer's Perspective
 
DevOps game marshmallow challenge
DevOps game marshmallow challengeDevOps game marshmallow challenge
DevOps game marshmallow challenge
 
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
 
Serverless Toronto helps Startups
Serverless Toronto helps StartupsServerless Toronto helps Startups
Serverless Toronto helps Startups
 
Jira and Confluence - How the company behind those products works - Anatoli K...
Jira and Confluence - How the company behind those products works - Anatoli K...Jira and Confluence - How the company behind those products works - Anatoli K...
Jira and Confluence - How the company behind those products works - Anatoli K...
 
Performance - When, What and How
Performance - When, What and HowPerformance - When, What and How
Performance - When, What and How
 
Optimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-miningOptimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-mining
 
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
All daydevops   2016 - Turning Human Capital into High Performance Organizati...All daydevops   2016 - Turning Human Capital into High Performance Organizati...
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
 
11 Goals of High Functioning SQL Developers
11 Goals of High Functioning SQL Developers11 Goals of High Functioning SQL Developers
11 Goals of High Functioning SQL Developers
 
Designing your API Server for mobile apps
Designing your API Server for mobile appsDesigning your API Server for mobile apps
Designing your API Server for mobile apps
 
Devoxx Belgium 2019 - Better software, faster: Principles of Continuous Deliv...
Devoxx Belgium 2019 - Better software, faster: Principles of Continuous Deliv...Devoxx Belgium 2019 - Better software, faster: Principles of Continuous Deliv...
Devoxx Belgium 2019 - Better software, faster: Principles of Continuous Deliv...
 
The CSV File Strikes Back
The CSV File Strikes BackThe CSV File Strikes Back
The CSV File Strikes Back
 
Strategies in continuous delivery
Strategies in continuous deliveryStrategies in continuous delivery
Strategies in continuous delivery
 
DevOps for CTOs
DevOps for CTOsDevOps for CTOs
DevOps for CTOs
 
improving the performance of Rails web Applications
improving the performance of Rails web Applicationsimproving the performance of Rails web Applications
improving the performance of Rails web Applications
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
 

Viewers also liked

Participantes del dial a la nube
Participantes del dial a la nubeParticipantes del dial a la nube
Participantes del dial a la nube5206406
 
Egypt Vacation
Egypt VacationEgypt Vacation
Egypt VacationJulia1002
 
Cf Moto
Cf MotoCf Moto
Cf Motomrt326
 
Architecture Projects P
Architecture Projects PArchitecture Projects P
Architecture Projects Pbmermans
 
Recent Works
Recent WorksRecent Works
Recent Worksbmermans
 
Spring Northwest Usergroup Grails Presentation
Spring Northwest Usergroup Grails PresentationSpring Northwest Usergroup Grails Presentation
Spring Northwest Usergroup Grails Presentationajevans
 
Wytyczne do pisania programów
Wytyczne do pisania programówWytyczne do pisania programów
Wytyczne do pisania programówPiotr Szymański
 
AWS at Childrens in the BBC
AWS at Childrens in the BBCAWS at Childrens in the BBC
AWS at Childrens in the BBCajevans
 
Finding The Slope And Y Intercept
Finding The Slope And Y InterceptFinding The Slope And Y Intercept
Finding The Slope And Y InterceptThief River Falls
 
How to engage, nurture and close more prospects with Full Funnel Marketing
How to engage, nurture and close more prospects with Full Funnel MarketingHow to engage, nurture and close more prospects with Full Funnel Marketing
How to engage, nurture and close more prospects with Full Funnel MarketingHeinz Marketing Inc
 
Referral hacks: 22 best practices to help you win more business
Referral hacks: 22 best practices to help you win more businessReferral hacks: 22 best practices to help you win more business
Referral hacks: 22 best practices to help you win more businessHeinz Marketing Inc
 
Eight ways to double your sales team's productivity #b2bmx
Eight ways to double your sales team's productivity #b2bmxEight ways to double your sales team's productivity #b2bmx
Eight ways to double your sales team's productivity #b2bmxHeinz Marketing Inc
 

Viewers also liked (14)

Participantes del dial a la nube
Participantes del dial a la nubeParticipantes del dial a la nube
Participantes del dial a la nube
 
Egypt Vacation
Egypt VacationEgypt Vacation
Egypt Vacation
 
Cf Moto
Cf MotoCf Moto
Cf Moto
 
Architecture Projects P
Architecture Projects PArchitecture Projects P
Architecture Projects P
 
Recent Works
Recent WorksRecent Works
Recent Works
 
Spring Northwest Usergroup Grails Presentation
Spring Northwest Usergroup Grails PresentationSpring Northwest Usergroup Grails Presentation
Spring Northwest Usergroup Grails Presentation
 
Informat
InformatInformat
Informat
 
Wytyczne do pisania programów
Wytyczne do pisania programówWytyczne do pisania programów
Wytyczne do pisania programów
 
AWS at Childrens in the BBC
AWS at Childrens in the BBCAWS at Childrens in the BBC
AWS at Childrens in the BBC
 
Finding The Slope And Y Intercept
Finding The Slope And Y InterceptFinding The Slope And Y Intercept
Finding The Slope And Y Intercept
 
Red Black Trees
Red Black TreesRed Black Trees
Red Black Trees
 
How to engage, nurture and close more prospects with Full Funnel Marketing
How to engage, nurture and close more prospects with Full Funnel MarketingHow to engage, nurture and close more prospects with Full Funnel Marketing
How to engage, nurture and close more prospects with Full Funnel Marketing
 
Referral hacks: 22 best practices to help you win more business
Referral hacks: 22 best practices to help you win more businessReferral hacks: 22 best practices to help you win more business
Referral hacks: 22 best practices to help you win more business
 
Eight ways to double your sales team's productivity #b2bmx
Eight ways to double your sales team's productivity #b2bmxEight ways to double your sales team's productivity #b2bmx
Eight ways to double your sales team's productivity #b2bmx
 

Similar to Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)

Untangling the web11
Untangling the web11Untangling the web11
Untangling the web11Derek Jacoby
 
Dev ops lessons learned - Michael Collins
Dev ops lessons learned  - Michael CollinsDev ops lessons learned  - Michael Collins
Dev ops lessons learned - Michael CollinsDevopsdays
 
#SPSOttawa 2017 migrate to the #SharePoint Framework #spfx
#SPSOttawa 2017 migrate to the #SharePoint Framework #spfx#SPSOttawa 2017 migrate to the #SharePoint Framework #spfx
#SPSOttawa 2017 migrate to the #SharePoint Framework #spfxVincent Biret
 
A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)Oursky
 
Automated Acceptance Testing from Scratch
Automated Acceptance Testing from ScratchAutomated Acceptance Testing from Scratch
Automated Acceptance Testing from ScratchExcella
 
Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)Devin Abbott
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewJosh Padnick
 
Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401Amazon Web Services
 
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Dinis Cruz
 
Play Architecture, Implementation, Shiny Objects, and a Proposal
Play Architecture, Implementation, Shiny Objects, and a ProposalPlay Architecture, Implementation, Shiny Objects, and a Proposal
Play Architecture, Implementation, Shiny Objects, and a ProposalMike Slinn
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsAmazon Web Services
 
Delphix and DBmaestro
Delphix and DBmaestroDelphix and DBmaestro
Delphix and DBmaestroKyle Hailey
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Nuxeo
 
Phonedeck Developers' Introduction - Salesforce Meetup Berlin
Phonedeck Developers' Introduction - Salesforce Meetup BerlinPhonedeck Developers' Introduction - Salesforce Meetup Berlin
Phonedeck Developers' Introduction - Salesforce Meetup BerlinGergő Ertli
 
IWMW 2002: Portals and CMS:" Why You Need Them Both
IWMW 2002: Portals and CMS:" Why You Need Them BothIWMW 2002: Portals and CMS:" Why You Need Them Both
IWMW 2002: Portals and CMS:" Why You Need Them BothIWMW
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...GreeceJS
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalAndy Kucharski
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationNils Hofmeister
 

Similar to Making the case for Play Framework and Scala- Budapest Ping-Conf (2014) (20)

Untangling the web11
Untangling the web11Untangling the web11
Untangling the web11
 
Dev ops lessons learned - Michael Collins
Dev ops lessons learned  - Michael CollinsDev ops lessons learned  - Michael Collins
Dev ops lessons learned - Michael Collins
 
#SPSOttawa 2017 migrate to the #SharePoint Framework #spfx
#SPSOttawa 2017 migrate to the #SharePoint Framework #spfx#SPSOttawa 2017 migrate to the #SharePoint Framework #spfx
#SPSOttawa 2017 migrate to the #SharePoint Framework #spfx
 
A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)
 
Automated Acceptance Testing from Scratch
Automated Acceptance Testing from ScratchAutomated Acceptance Testing from Scratch
Automated Acceptance Testing from Scratch
 
Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level Overview
 
Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401
 
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
 
From Heroku to Amazon AWS
From Heroku to Amazon AWSFrom Heroku to Amazon AWS
From Heroku to Amazon AWS
 
Play Architecture, Implementation, Shiny Objects, and a Proposal
Play Architecture, Implementation, Shiny Objects, and a ProposalPlay Architecture, Implementation, Shiny Objects, and a Proposal
Play Architecture, Implementation, Shiny Objects, and a Proposal
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
Delphix and DBmaestro
Delphix and DBmaestroDelphix and DBmaestro
Delphix and DBmaestro
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
 
Phonedeck Developers' Introduction - Salesforce Meetup Berlin
Phonedeck Developers' Introduction - Salesforce Meetup BerlinPhonedeck Developers' Introduction - Salesforce Meetup Berlin
Phonedeck Developers' Introduction - Salesforce Meetup Berlin
 
IWMW 2002: Portals and CMS:" Why You Need Them Both
IWMW 2002: Portals and CMS:" Why You Need Them BothIWMW 2002: Portals and CMS:" Why You Need Them Both
IWMW 2002: Portals and CMS:" Why You Need Them Both
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for Drupal
 
manage databases like codebases
manage databases like codebasesmanage databases like codebases
manage databases like codebases
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous Integration
 

Recently uploaded

Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - 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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - 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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)

  • 1. Making the case for Play Children’s interactive
  • 2. Adam Evans CBeebies Tech Lead Asher Glynn Technical Architect Children’s interactive
  • 4. What is it? • • • • • Website for children aged 4-6 An aggregate view of BBC content 2 million unique users a week High UX demands, our audience cry’s Built using PHP and a long forked version of Zend MVC Children’s interactive
  • 5. The (old) Architecture CBEEBIES PAL SOLR ELECTRON RESTFUL SERVICES FORGE Children’s interactive NITRO GAMES GRID
  • 6. • • • • • • • Large legacy codebase The Issues Cutting edge in BBC at time Original developers long gone Hard to work on new features with confidence Quality of tests vary • • Retro fitted on top Hard to do well with the existing codebase PHP’s not designed for aggregating data from multiple restful services Business needs have changed Children’s interactive
  • 8. What we done on our summer holiday • • • Clear message to management • • • What the problems were What we should do about it What they should expect Used experience and judgement for recommendations • • • Time critical - we were in trouble No beauty competitions Had clear justifications Confidence and decisiveness gave management confidence for a spike Children’s interactive
  • 9. Play framework Why did we choose it? • • • Scala Full stack Web Framework Reactive architecture is great when calling web services, non blocking - fits exactly our problem type • • Typed template system is amazing Lots of industry buzz Children’s interactive
  • 10. The First Spike • • • • Addressed stakeholder concerns: • • • Business value of the product is in the front end Could show (visually) immediate progress Backends aren’t (visually) impressive Created responsive templates from a mocked data layer Setup basic build pipeline to AWS - immediate productivity impact Demonstrated skills transfer to existing team members Children’s interactive
  • 11. The First Spike • • • Success!!! Compelling enough to have our stakeholders commitment A 2 man team of Java/Scala + PHP/Javascript • • Collaborate effectively Become productive quickly Children’s interactive
  • 12. Moving forward • • • How do we take a team of developers into Scala? How do we resource? How do we manage the risks? AND • How to migrate smoothly from the previous Apache/Tomcat platform??? Children’s interactive
  • 13. The Team • • • • • Started small - 3 developers Split frontend/backend PHP focused on front end to get familiar (avoid Scala overload) Backend started out Java-like with Scala’s syntactical sugar Big recruitment drive Children’s interactive
  • 14. The New Architecture [Should be pretty diagram here] • • • • • Version Control - GIT Build - Jenkins Deployment - AWS Continuous Delivery (almost) App and Web server - Play 2 Children’s interactive
  • 15. … after rethinking Started with Ended with Varnish AWS ELB Nginx + mod_pageseed Nginx + mod_pageseed Play Play …overthought the problem Children’s interactive Play Play
  • 16. Risky business We’re doing things differently not necessarily new (Going outlaw but in a nice Robin Hood kind of way) • • • Heavy use of Java in the BBC. Extensive expertise on the JVM Already some use of AWS for internal systems Extensive change was unavoidable - regardless of the change was Children’s interactive
  • 17. The approach No more tears - set by Editorial children's not developers tears (or product managers or development managers) • • • • • Children’s interactive Iterative Discrete Tough editorial demands Tough editorial timeframes Tough audience!
  • 18. The approach • • • Distinct vertical sections • Index pages after content pages A section at a time Updated content item pages first Children’s interactive
  • 19. The approach Vertical Plugins DAO/ DAO/ DAO/ DAO/ DAO/ DAO/ DAO/ Templates Templates Templates Templates Templates Templates Templates Play allows modularisation • Can develop in isolation • Game Songs Makes Storie Watch Radio Shows • Can deploy in isolation • Can test in isolation Default Theme Templates Data Access Libraries/Templates Horizontal Plugins Children’s interactive
  • 20. Keeping it real (simple) • • • • Local in memory cache Used Guice rather than Cake Simpler, less boilerplate More familiar for Java devs Runtime configuration changes possible Opted out of some “kitchen sink” components in Play Started at the view/templates to drive design • • • Children’s interactive
  • 21. Where we are now • • • • We have our first live release. First public facing AWS + Scala Application Management buy in for new model with Continuous Delivery Stakeholders very happy with turnaround of features Children’s interactive
  • 22. Things we’ve learnt • • • • • Hit a few small bugs in Play • • Open source makes it easier to find root cause Vast number of base libraries/products Constantly learning Scala’s cool factor makes it easier to recruit Some things are hard to test in Play out the box It’s easy to get carried away with idiomatic Scala Children’s interactive
  • 23. • • • Constant engagement with stake holders managing a risky move PHP Developers have found it hard • • • Syntax / FP concepts appear scary/overwhelming Patterns such as DI are new Lots of Scala tries to be academically clever Java developers • • Find certain aspects hard being different (testing) Can sometimes get carried away with new power sacrificing simplicity Children’s interactive