SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Architecture of a Modern Web App
Scott Andrews


@scothis
andrewss@vmware.com




                             Re-distribution allowed with author’s consent.

                                            © 2013 SpringSource, A division of VMware. All rights reserved
About Me

 Joined SpringSource in 2008
 Wearer of many hats

 Drifter                                                Teams
  • frameworks ⇆ applications                                 • Spring Web
  • open source ⇆ commercial                                  • tc Server
  • client ⇆ server                                           • Spring Insight
  • front-end ⇆ back-end                                      • Cloud Foundry
                                                              • SpringSource JavaScript




                                Re-distribution allowed with author’s consent.
                                                                                          2
Agenda
   Where we’ve been
   Where we’re going
   How we’ll get there
   Further resources
   Questions




                          Re-distribution allowed with author’s consent.
                                                                           3
Agenda
   Where we’ve been
   Where we’re going
   How we’ll get there
   Further resources
   Questions




                          Re-distribution allowed with author’s consent.
                                                                           4
In the beginning...




                      Re-distribution allowed with author’s consent.
                                                                       5
In the beginning...

 Sites were static HTML                            Pros:
                                                         • low computational overhead
                                                         • highly cacheable
                                                         • highly indexable


                                                    Cons:
                                                     • hard (easy?) to update
                                                     • no personalization
                                                     • usually poor UI




                           Re-distribution allowed with author’s consent.
                                                                                        6
Let there be CGI




                   Re-distribution allowed with author’s consent.
                                                                    7
Let there be CGI

 Introduced dynamic generated                      Pros:
 pages                                                   • dynamic!
                                                         • selectively cacheable
                                                         • highly indexable
                                                         • personalizable


                                                    Cons:
                                                     • “high” computational overhead
                                                     • hard to create
                                                     • usually poor UI




                           Re-distribution allowed with author’s consent.
                                                                                       8
LiveScript JavaScript




        http://en.wikipedia.org/wiki/File:Pop-up_ads.jpg


                                                 Re-distribution allowed with author’s consent.
                                                                                                  9
LiveScript JavaScript

 Dynamic pages                                                               Pros:
 Lightweight complement to                                                        • enhanced usability, maybe
  applets                                                                          • reduced trips to the server
 Mostly used for simple scripting
  • basic form validation                                                     Cons:
  • popup ads                                                                  • abuses annoyed users
  • comet cursor trails                                                        • business logic often implemented
                                                                                      twice: client and server




       http://en.wikipedia.org/wiki/File:Pop-up_ads.jpg

                                                     Re-distribution allowed with author’s consent.
                                                                                                                    10
AJAX - Web 2.0

 Google Maps sparked Web 2.0                     Pros:
 GMail                                                • killer UI
 • required JavaScript                                 • more responsive apps


                                                  Cons:
                                                   • difficult to cache
                                                   • impossible to index
                                                   • required JavaScript




                         Re-distribution allowed with author’s consent.
                                                                                11
Unobtrusive JavaScript

 No JavaScript, no problem                            Pros:
 Provide features for user agents                          • wider compatibility
  that support them                                         • just as rich UI
  • fall back to basic HTML                                 • just as responsive


                                                       Cons:
                                                        • higher development costs
                                                        • requires thoughtful engineering




                              Re-distribution allowed with author’s consent.
                                                                                            12
Client Side Applications

 Business logic lives on the client                   Pros:
 Resources and permanent state                             • reduce server workloads
  stored on the server                                      • application is highly cacheable
 Application and session state                             • extremely rich UI
  stored on client
                                                       Cons:
                                                        • content not indexable
                                                        • requires JavaScript
                                                        • often requires a ‘modern’ browser




                              Re-distribution allowed with author’s consent.
                                                                                                13
Agenda
   Where we’ve been
   Where we’re going
   How we’ll get there
   Further resources
   Questions




                          Re-distribution allowed with author’s consent.
                                                                           14
From server-side app to smart clients and services

                                                                Browser                 Client
              Browser-based

             HTML Rendering

         (progressive enhancement)


      HTML                  HTTP


         View                                                   Application
                         Controllers                            Server
       Generation


               Service Layer


       Channels        Repositories                                             RDBMS
                                                                                        Server
                                                                                CRUD

                               Re-distribution allowed with author’s consent.
                                                                                            15
From server-side app to smart clients and services

           HTML5 & JS Engine                                   Browser app or            Client
                                                               embedded in native
            DOM      Controllers

            Client-side model                                                  web stg


                    events &      HTTP &
           JSON     notifications WebSockets




              Service Layer


       Channels      Repositories                                              RDBMS
                                                                                         Server
                                                                               CRUD

                              Re-distribution allowed with author’s consent.
                                                                                             16
From server-side app to smart clients and services

             HTML5 & JS Engine                                   Browser app or            Client
                                                                 embedded in native
             DOM        Controllers

             Client-side model                                                   web stg


                       events &      HTTP &
             JSON      notifications WebSockets


   Service          Service                 Service
                                                                         business /
                                                                         domain services
                Service Layer


       Channels         Repositories                                             RDBMS
                                                                                           Server
                                                                                 CRUD

                                Re-distribution allowed with author’s consent.
                                                                                               17
From server-side app to smart clients and services

             HTML5 & JS Engine                                 Browser app or            Client
                                                               embedded in native
             DOM        Controllers

             Client-side model                                                 web stg


                       events &      HTTP &
             JSON      notifications WebSockets


                                                                       business /
   Service          Service               Service                      domain services


       Channels         Repositories                                           RDBMS
                                                                                         Server
                                                                               CRUD

                              Re-distribution allowed with author’s consent.
                                                                                             18
From server-side app to smart clients and services

             HTML5 & JS Engine                                    Browser app or                       Client
                                                                  embedded in native
             DOM         Controllers

                Client-side model                                                     web stg


                        events &      HTTP &
             JSON       notifications WebSockets


                                                                          business /
   Service           Service                 Service                      domain services

      Service          Service                     Service                        platform services,
                                                                                  web APIs
                                                                                                       PaaS
       SQL             NoSQL                         other

                                 Re-distribution allowed with author’s consent.
                                                                                                           19
Demo
Applications as Services
       Monty Hall




   Re-distribution allowed with author’s consent.
                                                    20
Agenda
   Where we’ve been
   Where we’re going
   How we’ll get there
   Further resources
   Questions




                          Re-distribution allowed with author’s consent.
                                                                           21
Client side code as a first class citizen

 Apply design patterns
  • all of your old favorites still apply
  • functional and OO patterns


 Modularize
  • decompose applications
  • let loaders reassemble


 Unit test
  • several excellent test harnesses


 Enforce code quality
  • JSHint

                                    Re-distribution allowed with author’s consent.
                                                                                     22
Demo
Client side code as a first class citizen




           Re-distribution allowed with author’s consent.
                                                            23
Think Messaging

 Web Sockets are message based
 Web Workers are message based
 DOM Events are message based

 Web vs Integration is a false dichotomy




                             Re-distribution allowed with author’s consent.
                                                                              24
Demo
Client-Server Messaging




   Re-distribution allowed with author’s consent.
                                                    25
Simplify Views

 Simple templates can render on the client or server
  • JSP, et al will never render client side


 Can the model be cleanly serialized?
  • anemic domain model has benefits


 Avoid imperative logic
  • lots of conditions may indicate the model is poorly structured




                                  Re-distribution allowed with author’s consent.
                                                                                   26
Client vs Server

 The definitions of “back-end” and “front-end” are shifting
  • font-end != client, back-end != server


 Embrace both sides
 Specialize in client-server integration




                                 Re-distribution allowed with author’s consent.
                                                                                  27
Frameworks

 New frameworks are emerging
  • quickly reaching maturity
  • watch this space


 Frameworks will not solve all your issues
  • sorry




                                Re-distribution allowed with author’s consent.
                                                                                 28
Agenda
   Where we’ve been
   Where we’re going
   How we’ll get there
   Further resources
   Questions




                          Re-distribution allowed with author’s consent.
                                                                           29
IoC + JavaScript

 Decompose applications into modules
 Assemble modules together with Dependency Injection

 Brian Cavalier and John Hann
 • founders of Cujo.js


 Webinar January 31st
 • signup: http://www.springsource.org/node/3768
 • sneak peak: http://www.youtube.com/watch?v=TqX-CqYYwEc




                              Re-distribution allowed with author’s consent.
                                                                               30
Questions?




Re-distribution allowed with author’s consent.
                                                 31
Links

 Libraries
  • clicks.js: https://github.com/s2js/clicks
  • integration.js: https://github.com/s2js/integration
  • rest.js: https://github.com/s2js/rest
  • wire.js: https://github.com/cujojs/wire


 Scripted Editor: http://scripted-editor.github.com/scripted/

 Monty Hall application
  • front-end: https://github.com/five-eleven/monty-hall-ui
  • back-end: https://github.com/acolyer/monty-hall


 IoC + JavaScript Webinar: http://www.springsource.org/node/3768

                                   Re-distribution allowed with author’s consent.
                                                                                    32
Architecture of a Modern Web App
Scott Andrews


@scothis
andrewss@vmware.com




                             Re-distribution allowed with author’s consent.

                                            © 2013 SpringSource, A division of VMware. All rights reserved

Contenu connexe

Tendances

MongoDB Breakfast Milan - Mainframe Offloading Strategies
MongoDB Breakfast Milan -  Mainframe Offloading StrategiesMongoDB Breakfast Milan -  Mainframe Offloading Strategies
MongoDB Breakfast Milan - Mainframe Offloading Strategies
MongoDB
 
Models of Interaction
Models of InteractionModels of Interaction
Models of Interaction
jbellWCT
 
Cloud Adoption in Financial Services
Cloud Adoption in Financial Services Cloud Adoption in Financial Services
Cloud Adoption in Financial Services
Amazon Web Services
 
AWS Support Services Overview - Spiezio
AWS Support Services Overview - SpiezioAWS Support Services Overview - Spiezio
AWS Support Services Overview - Spiezio
Amazon Web Services
 

Tendances (20)

MongoDB Breakfast Milan - Mainframe Offloading Strategies
MongoDB Breakfast Milan -  Mainframe Offloading StrategiesMongoDB Breakfast Milan -  Mainframe Offloading Strategies
MongoDB Breakfast Milan - Mainframe Offloading Strategies
 
Models of Interaction
Models of InteractionModels of Interaction
Models of Interaction
 
Design Steps for any MultiMedia Applications
Design Steps for any MultiMedia ApplicationsDesign Steps for any MultiMedia Applications
Design Steps for any MultiMedia Applications
 
Amazon simple queue service
Amazon simple queue serviceAmazon simple queue service
Amazon simple queue service
 
Web Site Design Principles
Web Site Design PrinciplesWeb Site Design Principles
Web Site Design Principles
 
Power BI Made Simple
Power BI Made SimplePower BI Made Simple
Power BI Made Simple
 
Architecture of Big Data Solutions
Architecture of Big Data SolutionsArchitecture of Big Data Solutions
Architecture of Big Data Solutions
 
The interaction HCI
The interaction HCIThe interaction HCI
The interaction HCI
 
Cloud Adoption in Financial Services
Cloud Adoption in Financial Services Cloud Adoption in Financial Services
Cloud Adoption in Financial Services
 
Elastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel Aviv
Elastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel AvivElastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel Aviv
Elastic Load Balancing Deep Dive and Best Practices - Pop-up Loft Tel Aviv
 
Amazon.com 의 개인화 추천 / 예측 기능을 우리도 써 봅시다. :: 심호진 - AWS Community Day 2019
Amazon.com 의 개인화 추천 / 예측 기능을 우리도 써 봅시다. :: 심호진 - AWS Community Day 2019Amazon.com 의 개인화 추천 / 예측 기능을 우리도 써 봅시다. :: 심호진 - AWS Community Day 2019
Amazon.com 의 개인화 추천 / 예측 기능을 우리도 써 봅시다. :: 심호진 - AWS Community Day 2019
 
HCI 3e - Ch 8: Implementation support
HCI 3e - Ch 8:  Implementation supportHCI 3e - Ch 8:  Implementation support
HCI 3e - Ch 8: Implementation support
 
2016 Power BI Training
2016   Power BI Training2016   Power BI Training
2016 Power BI Training
 
AWS 기반 5천만 모바일 앱서비스 확장하기 - 이영진 (강남SE 모임) :: AWS Community Day 2017
AWS 기반 5천만 모바일 앱서비스 확장하기 - 이영진 (강남SE 모임) :: AWS Community Day 2017AWS 기반 5천만 모바일 앱서비스 확장하기 - 이영진 (강남SE 모임) :: AWS Community Day 2017
AWS 기반 5천만 모바일 앱서비스 확장하기 - 이영진 (강남SE 모임) :: AWS Community Day 2017
 
Chap05
Chap05Chap05
Chap05
 
AWS Support Services Overview - Spiezio
AWS Support Services Overview - SpiezioAWS Support Services Overview - Spiezio
AWS Support Services Overview - Spiezio
 
Amazon Rekognition
Amazon RekognitionAmazon Rekognition
Amazon Rekognition
 
Temenos Architecture for Armenia
Temenos Architecture for ArmeniaTemenos Architecture for Armenia
Temenos Architecture for Armenia
 
Responsive web designing ppt(1)
Responsive web designing ppt(1)Responsive web designing ppt(1)
Responsive web designing ppt(1)
 
Streaming Real-time Data to Azure Data Lake Storage Gen 2
Streaming Real-time Data to Azure Data Lake Storage Gen 2Streaming Real-time Data to Azure Data Lake Storage Gen 2
Streaming Real-time Data to Azure Data Lake Storage Gen 2
 

En vedette

Successful MySQL Scalability
Successful MySQL ScalabilitySuccessful MySQL Scalability
Successful MySQL Scalability
Ronald Bradford
 

En vedette (19)

7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
 
High Scalability by Example – How can Web-Architecture scale like Facebook, T...
High Scalability by Example – How can Web-Architecture scale like Facebook, T...High Scalability by Example – How can Web-Architecture scale like Facebook, T...
High Scalability by Example – How can Web-Architecture scale like Facebook, T...
 
Architecting large Node.js applications
Architecting large Node.js applicationsArchitecting large Node.js applications
Architecting large Node.js applications
 
Scalability Design Principles - Internal Session
Scalability Design Principles - Internal SessionScalability Design Principles - Internal Session
Scalability Design Principles - Internal Session
 
Web application architecture
Web application architectureWeb application architecture
Web application architecture
 
MySQL Developer Day conference: MySQL Replication and Scalability
MySQL Developer Day conference: MySQL Replication and ScalabilityMySQL Developer Day conference: MySQL Replication and Scalability
MySQL Developer Day conference: MySQL Replication and Scalability
 
Successful MySQL Scalability
Successful MySQL ScalabilitySuccessful MySQL Scalability
Successful MySQL Scalability
 
Seminar : "The Future of MYSQL - Roadmap to Success" session MySQL...
Seminar : "The Future of MYSQL - Roadmap to Success"  session MySQL...Seminar : "The Future of MYSQL - Roadmap to Success"  session MySQL...
Seminar : "The Future of MYSQL - Roadmap to Success" session MySQL...
 
Seminar : "The Future of MySQL - Roadmap to Success" session MySQL ...
Seminar : "The Future of MySQL - Roadmap to Success" session MySQL ...Seminar : "The Future of MySQL - Roadmap to Success" session MySQL ...
Seminar : "The Future of MySQL - Roadmap to Success" session MySQL ...
 
NoSQL and SQL - blending the best of both worlds
NoSQL and SQL - blending the best of both worldsNoSQL and SQL - blending the best of both worlds
NoSQL and SQL - blending the best of both worlds
 
MySQL High Availability Solutions - Feb 2015 webinar
MySQL High Availability Solutions - Feb 2015 webinarMySQL High Availability Solutions - Feb 2015 webinar
MySQL High Availability Solutions - Feb 2015 webinar
 
MySQL Cluster Basics
MySQL Cluster BasicsMySQL Cluster Basics
MySQL Cluster Basics
 
Seminar : "The Future of MySQL - Roadmap to Success" session MySQL ...
Seminar : "The Future of MySQL - Roadmap to Success" session MySQL ...Seminar : "The Future of MySQL - Roadmap to Success" session MySQL ...
Seminar : "The Future of MySQL - Roadmap to Success" session MySQL ...
 
Building a Scalable Architecture for web apps
Building a Scalable Architecture for web appsBuilding a Scalable Architecture for web apps
Building a Scalable Architecture for web apps
 
Mysql cluster introduction
Mysql cluster introductionMysql cluster introduction
Mysql cluster introduction
 
Best practices for MySQL High Availability
Best practices for MySQL High AvailabilityBest practices for MySQL High Availability
Best practices for MySQL High Availability
 
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
 
FOSDEM 2015 - NoSQL and SQL the best of both worlds
FOSDEM 2015 - NoSQL and SQL the best of both worldsFOSDEM 2015 - NoSQL and SQL the best of both worlds
FOSDEM 2015 - NoSQL and SQL the best of both worlds
 
Facebook architecture presentation: scalability challenge
Facebook architecture presentation: scalability challengeFacebook architecture presentation: scalability challenge
Facebook architecture presentation: scalability challenge
 

Similaire à Architecture of a Modern Web App

Replication Solutions for PostgreSQL
Replication Solutions for PostgreSQLReplication Solutions for PostgreSQL
Replication Solutions for PostgreSQL
Peter Eisentraut
 
Web Apps vs. Native Apps: The Low Down
Web Apps vs. Native Apps: The Low DownWeb Apps vs. Native Apps: The Low Down
Web Apps vs. Native Apps: The Low Down
Apppli
 
Testing Drupal Site Performance Across Browsers, Geographies and Networks
Testing Drupal Site Performance Across Browsers, Geographies and NetworksTesting Drupal Site Performance Across Browsers, Geographies and Networks
Testing Drupal Site Performance Across Browsers, Geographies and Networks
Acquia
 
Architecture of a Modern Web App - SpringOne India
Architecture of a Modern Web App - SpringOne IndiaArchitecture of a Modern Web App - SpringOne India
Architecture of a Modern Web App - SpringOne India
Jeremy Grelle
 
MongoDB at NoSQL Now! 2012: Benefits and Challenges of Using MongoDB in the E...
MongoDB at NoSQL Now! 2012: Benefits and Challenges of Using MongoDB in the E...MongoDB at NoSQL Now! 2012: Benefits and Challenges of Using MongoDB in the E...
MongoDB at NoSQL Now! 2012: Benefits and Challenges of Using MongoDB in the E...
MongoDB
 
Sinatra and Heroku - A comfortable ruby way for web service
Sinatra and Heroku - A comfortable ruby way for web serviceSinatra and Heroku - A comfortable ruby way for web service
Sinatra and Heroku - A comfortable ruby way for web service
Tony Zhang
 
Rise of the hybrids
Rise of the hybridsRise of the hybrids
Rise of the hybrids
Oron Ben Zvi
 

Similaire à Architecture of a Modern Web App (20)

Infographic Hosting
Infographic HostingInfographic Hosting
Infographic Hosting
 
Mongo DB for Java, Python and PHP Developers
Mongo DB for Java, Python and PHP DevelopersMongo DB for Java, Python and PHP Developers
Mongo DB for Java, Python and PHP Developers
 
Replication Solutions for PostgreSQL
Replication Solutions for PostgreSQLReplication Solutions for PostgreSQL
Replication Solutions for PostgreSQL
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
 
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
 
Web Apps vs. Native Apps: The Low Down
Web Apps vs. Native Apps: The Low DownWeb Apps vs. Native Apps: The Low Down
Web Apps vs. Native Apps: The Low Down
 
Testing Drupal Site Performance Across Browsers, Geographies and Networks
Testing Drupal Site Performance Across Browsers, Geographies and NetworksTesting Drupal Site Performance Across Browsers, Geographies and Networks
Testing Drupal Site Performance Across Browsers, Geographies and Networks
 
Architecture of a Modern Web App - SpringOne India
Architecture of a Modern Web App - SpringOne IndiaArchitecture of a Modern Web App - SpringOne India
Architecture of a Modern Web App - SpringOne India
 
GWT Jug Stuttgart
GWT Jug StuttgartGWT Jug Stuttgart
GWT Jug Stuttgart
 
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
 
MongoDB at NoSQL Now! 2012: Benefits and Challenges of Using MongoDB in the E...
MongoDB at NoSQL Now! 2012: Benefits and Challenges of Using MongoDB in the E...MongoDB at NoSQL Now! 2012: Benefits and Challenges of Using MongoDB in the E...
MongoDB at NoSQL Now! 2012: Benefits and Challenges of Using MongoDB in the E...
 
Subversion Edge Overview
Subversion Edge OverviewSubversion Edge Overview
Subversion Edge Overview
 
Sinatra and Heroku - A comfortable ruby way for web service
Sinatra and Heroku - A comfortable ruby way for web serviceSinatra and Heroku - A comfortable ruby way for web service
Sinatra and Heroku - A comfortable ruby way for web service
 
ServerTemplates - The Next Generation
ServerTemplates - The Next GenerationServerTemplates - The Next Generation
ServerTemplates - The Next Generation
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
 
Rise of the hybrids
Rise of the hybridsRise of the hybrids
Rise of the hybrids
 
REST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical LookREST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical Look
 
7_OPEN17_Azure_Next-gen Development with PaaS & Containers
7_OPEN17_Azure_Next-gen Development with PaaS & Containers7_OPEN17_Azure_Next-gen Development with PaaS & Containers
7_OPEN17_Azure_Next-gen Development with PaaS & Containers
 
Reaching 1 Million APIs and what to do when we get there
Reaching 1 Million APIs and what to do when we get thereReaching 1 Million APIs and what to do when we get there
Reaching 1 Million APIs and what to do when we get there
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
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
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
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?
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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)
 

Architecture of a Modern Web App

  • 1. Architecture of a Modern Web App Scott Andrews @scothis andrewss@vmware.com Re-distribution allowed with author’s consent. © 2013 SpringSource, A division of VMware. All rights reserved
  • 2. About Me  Joined SpringSource in 2008  Wearer of many hats  Drifter  Teams • frameworks ⇆ applications • Spring Web • open source ⇆ commercial • tc Server • client ⇆ server • Spring Insight • front-end ⇆ back-end • Cloud Foundry • SpringSource JavaScript Re-distribution allowed with author’s consent. 2
  • 3. Agenda  Where we’ve been  Where we’re going  How we’ll get there  Further resources  Questions Re-distribution allowed with author’s consent. 3
  • 4. Agenda  Where we’ve been  Where we’re going  How we’ll get there  Further resources  Questions Re-distribution allowed with author’s consent. 4
  • 5. In the beginning... Re-distribution allowed with author’s consent. 5
  • 6. In the beginning...  Sites were static HTML  Pros: • low computational overhead • highly cacheable • highly indexable  Cons: • hard (easy?) to update • no personalization • usually poor UI Re-distribution allowed with author’s consent. 6
  • 7. Let there be CGI Re-distribution allowed with author’s consent. 7
  • 8. Let there be CGI  Introduced dynamic generated  Pros: pages • dynamic! • selectively cacheable • highly indexable • personalizable  Cons: • “high” computational overhead • hard to create • usually poor UI Re-distribution allowed with author’s consent. 8
  • 9. LiveScript JavaScript http://en.wikipedia.org/wiki/File:Pop-up_ads.jpg Re-distribution allowed with author’s consent. 9
  • 10. LiveScript JavaScript  Dynamic pages  Pros:  Lightweight complement to • enhanced usability, maybe applets • reduced trips to the server  Mostly used for simple scripting • basic form validation  Cons: • popup ads • abuses annoyed users • comet cursor trails • business logic often implemented twice: client and server http://en.wikipedia.org/wiki/File:Pop-up_ads.jpg Re-distribution allowed with author’s consent. 10
  • 11. AJAX - Web 2.0  Google Maps sparked Web 2.0  Pros:  GMail • killer UI • required JavaScript • more responsive apps  Cons: • difficult to cache • impossible to index • required JavaScript Re-distribution allowed with author’s consent. 11
  • 12. Unobtrusive JavaScript  No JavaScript, no problem  Pros:  Provide features for user agents • wider compatibility that support them • just as rich UI • fall back to basic HTML • just as responsive  Cons: • higher development costs • requires thoughtful engineering Re-distribution allowed with author’s consent. 12
  • 13. Client Side Applications  Business logic lives on the client  Pros:  Resources and permanent state • reduce server workloads stored on the server • application is highly cacheable  Application and session state • extremely rich UI stored on client  Cons: • content not indexable • requires JavaScript • often requires a ‘modern’ browser Re-distribution allowed with author’s consent. 13
  • 14. Agenda  Where we’ve been  Where we’re going  How we’ll get there  Further resources  Questions Re-distribution allowed with author’s consent. 14
  • 15. From server-side app to smart clients and services Browser Client Browser-based HTML Rendering (progressive enhancement) HTML HTTP View Application Controllers Server Generation Service Layer Channels Repositories RDBMS Server CRUD Re-distribution allowed with author’s consent. 15
  • 16. From server-side app to smart clients and services HTML5 & JS Engine Browser app or Client embedded in native DOM Controllers Client-side model web stg events & HTTP & JSON notifications WebSockets Service Layer Channels Repositories RDBMS Server CRUD Re-distribution allowed with author’s consent. 16
  • 17. From server-side app to smart clients and services HTML5 & JS Engine Browser app or Client embedded in native DOM Controllers Client-side model web stg events & HTTP & JSON notifications WebSockets Service Service Service business / domain services Service Layer Channels Repositories RDBMS Server CRUD Re-distribution allowed with author’s consent. 17
  • 18. From server-side app to smart clients and services HTML5 & JS Engine Browser app or Client embedded in native DOM Controllers Client-side model web stg events & HTTP & JSON notifications WebSockets business / Service Service Service domain services Channels Repositories RDBMS Server CRUD Re-distribution allowed with author’s consent. 18
  • 19. From server-side app to smart clients and services HTML5 & JS Engine Browser app or Client embedded in native DOM Controllers Client-side model web stg events & HTTP & JSON notifications WebSockets business / Service Service Service domain services Service Service Service platform services, web APIs PaaS SQL NoSQL other Re-distribution allowed with author’s consent. 19
  • 20. Demo Applications as Services Monty Hall Re-distribution allowed with author’s consent. 20
  • 21. Agenda  Where we’ve been  Where we’re going  How we’ll get there  Further resources  Questions Re-distribution allowed with author’s consent. 21
  • 22. Client side code as a first class citizen  Apply design patterns • all of your old favorites still apply • functional and OO patterns  Modularize • decompose applications • let loaders reassemble  Unit test • several excellent test harnesses  Enforce code quality • JSHint Re-distribution allowed with author’s consent. 22
  • 23. Demo Client side code as a first class citizen Re-distribution allowed with author’s consent. 23
  • 24. Think Messaging  Web Sockets are message based  Web Workers are message based  DOM Events are message based  Web vs Integration is a false dichotomy Re-distribution allowed with author’s consent. 24
  • 25. Demo Client-Server Messaging Re-distribution allowed with author’s consent. 25
  • 26. Simplify Views  Simple templates can render on the client or server • JSP, et al will never render client side  Can the model be cleanly serialized? • anemic domain model has benefits  Avoid imperative logic • lots of conditions may indicate the model is poorly structured Re-distribution allowed with author’s consent. 26
  • 27. Client vs Server  The definitions of “back-end” and “front-end” are shifting • font-end != client, back-end != server  Embrace both sides  Specialize in client-server integration Re-distribution allowed with author’s consent. 27
  • 28. Frameworks  New frameworks are emerging • quickly reaching maturity • watch this space  Frameworks will not solve all your issues • sorry Re-distribution allowed with author’s consent. 28
  • 29. Agenda  Where we’ve been  Where we’re going  How we’ll get there  Further resources  Questions Re-distribution allowed with author’s consent. 29
  • 30. IoC + JavaScript  Decompose applications into modules  Assemble modules together with Dependency Injection  Brian Cavalier and John Hann • founders of Cujo.js  Webinar January 31st • signup: http://www.springsource.org/node/3768 • sneak peak: http://www.youtube.com/watch?v=TqX-CqYYwEc Re-distribution allowed with author’s consent. 30
  • 31. Questions? Re-distribution allowed with author’s consent. 31
  • 32. Links  Libraries • clicks.js: https://github.com/s2js/clicks • integration.js: https://github.com/s2js/integration • rest.js: https://github.com/s2js/rest • wire.js: https://github.com/cujojs/wire  Scripted Editor: http://scripted-editor.github.com/scripted/  Monty Hall application • front-end: https://github.com/five-eleven/monty-hall-ui • back-end: https://github.com/acolyer/monty-hall  IoC + JavaScript Webinar: http://www.springsource.org/node/3768 Re-distribution allowed with author’s consent. 32
  • 33. Architecture of a Modern Web App Scott Andrews @scothis andrewss@vmware.com Re-distribution allowed with author’s consent. © 2013 SpringSource, A division of VMware. All rights reserved