SlideShare a Scribd company logo
Autodesk
How we use Play Framework (and other cool technologies...)
Autodesk and Homestyler
• About Autodesk (what the company does, and the Tel-Aviv R&D)
• Homestyler group:
• Great 3D applications for home design (iOS, Android, Web)
• Serving millions of users
• Active and responsive community
http://www.homestyler.com/
http://www.homestyler.com/mobile
http://www.homestyler.com/floorplan/
Homestyler Backend Team
• Responsible for the services provided to all the clients (iOS,
Android, Web), and some other clients as well
• We keep a lot of data for a lot of users, so we need to be:
• Robust
• Scalable
• Agile
• Plus, we like to enjoy writing our code, and to try out new
technologies :)
Using Scala
In the last year, we’ve re-written and extended our backend, using
Scala over Play Framework, to support the growing demands of the
app.
Why Scala?
• Functional, elegant and modern version of java
• A lot of useful language features built-in
• Growing and active community
• Full compatibility to java code and libraries
• Less code, easier for async applications
• And it's more fun!
Continuous Integration
We do CI. Why?
• Providing services for a several products with different timelines
• Robustness
• Reactive
• Agile
Technologies We Use
• Scala 2.11, Play 2.3
• Couchbase, MySql
• Elastic Search
• Swagger, jacoco
• Splunk, Teamcity
• CloudFront, Redis
• EC2, S3, SNS, SQS, Autoscaling
• ADA (Adsk internal)
Architecture (Simplified)
CouchBase
MySQL
ElasticSearch
Catalog
BE
Portfolio
BE
Users
BE
FP/HSM
MW
Inspiration
MW
Seek
MW
FloorPlan
Inspiration
HSM - Android
HSM - iOS
Seek
CF Redis
Play! What do we Use?
• Multi-layer: routes -> controllers -> services -> repositories
• Async abilities of both Scala and Play:
• Prevents bottlenecks
• Akka's actor model, should provide good performance
• Statelessness: since we are writing a REST API backend
• sbt for dependency management:
• Simple to integrate new plugins
• Easy deployment
• JUnit: built-in, plus great testing support
Play! What do we Use?
• Easy to create new projects:
• Different backend modules, or BO apps; All created quickly.
• Out of the box: routing, mvc structure, tests infrastructure
• Scala html templates (but that's not perfect)
• Cool plugins (grafana, swagger, scoverage, etc)
Our case: Building a new backend
We’ve replaced our old backend with a new shining one:
• Easy to start with a proper structure
• Re-writing in Scala was fun and compatible
• Re-routing all the requests of a live and busy application
• TDD as a productive workflow
• Using Swagger plugin to ease integration with other teams
• Using Grafana plugin to monitor the change and see live data!
• A stack of modern technologies compatible with Play
Summary (Shall we Play)?
• For Scala, Play is a no-brainer
• But even in Java:
• Spring and Struts are more J2EE driven, while Play tries to be
free from that load
• Provides a lot of features to get you started fast, and write in a
proper structure
• Performance is good - Not sure there’s any good comparison with
the competitors.
• Play has a nice balance between things given out-of-the-box and
suggested workflows, with flexibility and openness for extension
Questions?

More Related Content

What's hot

What's hot (20)

Key alias dev standard final
Key alias   dev standard finalKey alias   dev standard final
Key alias dev standard final
 
Algolia - Hosted Search API
Algolia - Hosted Search API Algolia - Hosted Search API
Algolia - Hosted Search API
 
Fury road to a worldwide API - API Days - December 2015
Fury road to a worldwide API - API Days - December 2015Fury road to a worldwide API - API Days - December 2015
Fury road to a worldwide API - API Days - December 2015
 
Tabtale story: Building a publishing and monitoring mobile games architecture...
Tabtale story: Building a publishing and monitoring mobile games architecture...Tabtale story: Building a publishing and monitoring mobile games architecture...
Tabtale story: Building a publishing and monitoring mobile games architecture...
 
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNERCREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
 
Henrique Rodrigues (NotOnTheHighStreet.com) - Building a Future-Proof Infrast...
Henrique Rodrigues (NotOnTheHighStreet.com) - Building a Future-Proof Infrast...Henrique Rodrigues (NotOnTheHighStreet.com) - Building a Future-Proof Infrast...
Henrique Rodrigues (NotOnTheHighStreet.com) - Building a Future-Proof Infrast...
 
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Serverless Architecture Patterns - Manoj Ganapathi - Serverless SummitServerless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
 
Deploy your machine learning models to production with Kubernetes
Deploy your machine learning models to production with KubernetesDeploy your machine learning models to production with Kubernetes
Deploy your machine learning models to production with Kubernetes
 
Azure Functions for Python developers
Azure Functions for Python developersAzure Functions for Python developers
Azure Functions for Python developers
 
How to set up Kubernetes for all your machine learning workflows
How to set up Kubernetes for all your machine learning workflowsHow to set up Kubernetes for all your machine learning workflows
How to set up Kubernetes for all your machine learning workflows
 
Introduction to Azure Functions - Tutorial
Introduction to Azure Functions - TutorialIntroduction to Azure Functions - Tutorial
Introduction to Azure Functions - Tutorial
 
Introduction to mulesoft - Alpharetta Developer Group Meet
Introduction to mulesoft - Alpharetta Developer Group MeetIntroduction to mulesoft - Alpharetta Developer Group Meet
Introduction to mulesoft - Alpharetta Developer Group Meet
 
Algolia's Fury Road to a Worldwide API
Algolia's Fury Road to a Worldwide APIAlgolia's Fury Road to a Worldwide API
Algolia's Fury Road to a Worldwide API
 
CICD in the World of Serverless
CICD in the World of ServerlessCICD in the World of Serverless
CICD in the World of Serverless
 
IoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
IoT and Serverless - AWS - Serverless Summit - Madhusudan ShekarIoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
IoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
 
Meetup Angular.JS #12 Paris
Meetup Angular.JS #12 ParisMeetup Angular.JS #12 Paris
Meetup Angular.JS #12 Paris
 
DevOps with AWS in 2016
DevOps with AWS in 2016DevOps with AWS in 2016
DevOps with AWS in 2016
 
Using Azure Functions for Integration
Using Azure Functions for IntegrationUsing Azure Functions for Integration
Using Azure Functions for Integration
 
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
 
News from Build 2013
News from Build 2013News from Build 2013
News from Build 2013
 

Viewers also liked

Viewers also liked (11)

додаток 5 тисячі журавлів
додаток 5 тисячі журавлівдодаток 5 тисячі журавлів
додаток 5 тисячі журавлів
 
Assignment2
Assignment2Assignment2
Assignment2
 
Ejemplo de análsis didáctico de observación de una clase
Ejemplo de análsis didáctico de observación de una claseEjemplo de análsis didáctico de observación de una clase
Ejemplo de análsis didáctico de observación de una clase
 
Etica Norma tecnica NT-01-2008
Etica Norma tecnica NT-01-2008Etica Norma tecnica NT-01-2008
Etica Norma tecnica NT-01-2008
 
Logsheet.compressed
Logsheet.compressedLogsheet.compressed
Logsheet.compressed
 
11 canción el pan frances
11 canción el pan frances11 canción el pan frances
11 canción el pan frances
 
презентація до додатку 3 чайна церемонія
презентація до додатку 3 чайна церемоніяпрезентація до додатку 3 чайна церемонія
презентація до додатку 3 чайна церемонія
 
Hunting for a diagnosis
Hunting for a diagnosisHunting for a diagnosis
Hunting for a diagnosis
 
Double irish with Dutch sandwich arrangement
Double irish with Dutch sandwich arrangementDouble irish with Dutch sandwich arrangement
Double irish with Dutch sandwich arrangement
 
3Com 3C17711 - RF
3Com 3C17711 - RF3Com 3C17711 - RF
3Com 3C17711 - RF
 
Aliens Space Station Brochure - Zricks.com
Aliens Space Station Brochure - Zricks.comAliens Space Station Brochure - Zricks.com
Aliens Space Station Brochure - Zricks.com
 

Similar to How we use the play framework

Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talks
Ruslan Meshenberg
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
Hyun-woo Park
 

Similar to How we use the play framework (20)

Boilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development ProcessBoilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development Process
 
DevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile GamesDevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile Games
 
Serverless On Stage - Serverless URL Shortener
Serverless On Stage - Serverless URL ShortenerServerless On Stage - Serverless URL Shortener
Serverless On Stage - Serverless URL Shortener
 
Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talks
 
From Heroku to Amazon AWS
From Heroku to Amazon AWSFrom Heroku to Amazon AWS
From Heroku to Amazon AWS
 
Rez gateway (RezOS) innovate the future
Rez gateway  (RezOS) innovate the futureRez gateway  (RezOS) innovate the future
Rez gateway (RezOS) innovate the future
 
Rez gateway - RezOS - innovate the future
Rez gateway - RezOS -   innovate the futureRez gateway - RezOS -   innovate the future
Rez gateway - RezOS - innovate the future
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at Scale
 
Building a scalable API with Grails
Building a scalable API with GrailsBuilding a scalable API with Grails
Building a scalable API with Grails
 
Splunk Developer Platform
Splunk Developer PlatformSplunk Developer Platform
Splunk Developer Platform
 
Unleash the power of Serverless Computing
Unleash the power of Serverless ComputingUnleash the power of Serverless Computing
Unleash the power of Serverless Computing
 
Whitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveWhitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to Reactive
 
SkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid CloudSkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid Cloud
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
 
Experience Converting from Ruby to Scala
Experience Converting from Ruby to ScalaExperience Converting from Ruby to Scala
Experience Converting from Ruby to Scala
 
IncQuery Server for Teamwork Cloud - Talk at IW2019
IncQuery Server for Teamwork Cloud - Talk at IW2019IncQuery Server for Teamwork Cloud - Talk at IW2019
IncQuery Server for Teamwork Cloud - Talk at IW2019
 
.NET per la Data Science e oltre
.NET per la Data Science e oltre.NET per la Data Science e oltre
.NET per la Data Science e oltre
 
Managing Your Cloud Assets
Managing Your Cloud AssetsManaging Your Cloud Assets
Managing Your Cloud Assets
 
Continuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSSContinuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSS
 
20161103 Serverless Italy Meetup
20161103   Serverless Italy Meetup20161103   Serverless Italy Meetup
20161103 Serverless Italy Meetup
 

Recently uploaded

Recently uploaded (20)

Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Agnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in KrakówAgnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in Kraków
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 

How we use the play framework

  • 1. Autodesk How we use Play Framework (and other cool technologies...)
  • 2. Autodesk and Homestyler • About Autodesk (what the company does, and the Tel-Aviv R&D) • Homestyler group: • Great 3D applications for home design (iOS, Android, Web) • Serving millions of users • Active and responsive community http://www.homestyler.com/ http://www.homestyler.com/mobile http://www.homestyler.com/floorplan/
  • 3. Homestyler Backend Team • Responsible for the services provided to all the clients (iOS, Android, Web), and some other clients as well • We keep a lot of data for a lot of users, so we need to be: • Robust • Scalable • Agile • Plus, we like to enjoy writing our code, and to try out new technologies :)
  • 4. Using Scala In the last year, we’ve re-written and extended our backend, using Scala over Play Framework, to support the growing demands of the app. Why Scala? • Functional, elegant and modern version of java • A lot of useful language features built-in • Growing and active community • Full compatibility to java code and libraries • Less code, easier for async applications • And it's more fun!
  • 5. Continuous Integration We do CI. Why? • Providing services for a several products with different timelines • Robustness • Reactive • Agile
  • 6. Technologies We Use • Scala 2.11, Play 2.3 • Couchbase, MySql • Elastic Search • Swagger, jacoco • Splunk, Teamcity • CloudFront, Redis • EC2, S3, SNS, SQS, Autoscaling • ADA (Adsk internal)
  • 8. Play! What do we Use? • Multi-layer: routes -> controllers -> services -> repositories • Async abilities of both Scala and Play: • Prevents bottlenecks • Akka's actor model, should provide good performance • Statelessness: since we are writing a REST API backend • sbt for dependency management: • Simple to integrate new plugins • Easy deployment • JUnit: built-in, plus great testing support
  • 9. Play! What do we Use? • Easy to create new projects: • Different backend modules, or BO apps; All created quickly. • Out of the box: routing, mvc structure, tests infrastructure • Scala html templates (but that's not perfect) • Cool plugins (grafana, swagger, scoverage, etc)
  • 10. Our case: Building a new backend We’ve replaced our old backend with a new shining one: • Easy to start with a proper structure • Re-writing in Scala was fun and compatible • Re-routing all the requests of a live and busy application • TDD as a productive workflow • Using Swagger plugin to ease integration with other teams • Using Grafana plugin to monitor the change and see live data! • A stack of modern technologies compatible with Play
  • 11. Summary (Shall we Play)? • For Scala, Play is a no-brainer • But even in Java: • Spring and Struts are more J2EE driven, while Play tries to be free from that load • Provides a lot of features to get you started fast, and write in a proper structure • Performance is good - Not sure there’s any good comparison with the competitors. • Play has a nice balance between things given out-of-the-box and suggested workflows, with flexibility and openness for extension