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 StrategiesMongoDB
 
Models of Interaction
Models of InteractionModels of Interaction
Models of InteractionjbellWCT
 
Design Steps for any MultiMedia Applications
Design Steps for any MultiMedia ApplicationsDesign Steps for any MultiMedia Applications
Design Steps for any MultiMedia Applicationstechbirbal
 
Web Site Design Principles
Web Site Design PrinciplesWeb Site Design Principles
Web Site Design PrinciplesMukesh Tekwani
 
Power BI Made Simple
Power BI Made SimplePower BI Made Simple
Power BI Made SimpleJames Serra
 
Architecture of Big Data Solutions
Architecture of Big Data SolutionsArchitecture of Big Data Solutions
Architecture of Big Data SolutionsGuido Schmutz
 
Cloud Adoption in Financial Services
Cloud Adoption in Financial Services Cloud Adoption in Financial Services
Cloud Adoption in Financial Services Amazon Web 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 AvivAmazon Web Services
 
Amazon.com 의 개인화 추천 / 예측 기능을 우리도 써 봅시다. :: 심호진 - AWS Community Day 2019
Amazon.com 의 개인화 추천 / 예측 기능을 우리도 써 봅시다. :: 심호진 - AWS Community Day 2019Amazon.com 의 개인화 추천 / 예측 기능을 우리도 써 봅시다. :: 심호진 - AWS Community Day 2019
Amazon.com 의 개인화 추천 / 예측 기능을 우리도 써 봅시다. :: 심호진 - AWS Community Day 2019AWSKRUG - AWS한국사용자모임
 
HCI 3e - Ch 8: Implementation support
HCI 3e - Ch 8:  Implementation supportHCI 3e - Ch 8:  Implementation support
HCI 3e - Ch 8: Implementation supportAlan Dix
 
2016 Power BI Training
2016   Power BI Training2016   Power BI Training
2016 Power BI TrainingGaston Cruz
 
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 2017AWSKRUG - AWS한국사용자모임
 
AWS Support Services Overview - Spiezio
AWS Support Services Overview - SpiezioAWS Support Services Overview - Spiezio
AWS Support Services Overview - SpiezioAmazon Web Services
 
Temenos Architecture for Armenia
Temenos Architecture for ArmeniaTemenos Architecture for Armenia
Temenos Architecture for ArmeniaArmeniaFED
 
Responsive web designing ppt(1)
Responsive web designing ppt(1)Responsive web designing ppt(1)
Responsive web designing ppt(1)admecindia1
 
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 2Carole Gunst
 

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

7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications7 Stages of Scaling Web Applications
7 Stages of Scaling Web ApplicationsDavid Mitzenmacher
 
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...Robert Mederer
 
Architecting large Node.js applications
Architecting large Node.js applicationsArchitecting large Node.js applications
Architecting large Node.js applicationsSergi Mansilla
 
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 ScalabilityShivji Kumar Jha
 
Successful MySQL Scalability
Successful MySQL ScalabilitySuccessful MySQL Scalability
Successful MySQL ScalabilityRonald Bradford
 
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...Software Park Thailand
 
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 ...Software Park Thailand
 
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 worldsAndrew Morgan
 
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 webinarAndrew Morgan
 
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 ...Software Park Thailand
 
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 appsDirecti Group
 
Mysql cluster introduction
Mysql cluster introductionMysql cluster introduction
Mysql cluster introductionAndrew Morgan
 
Best practices for MySQL High Availability
Best practices for MySQL High AvailabilityBest practices for MySQL High Availability
Best practices for MySQL High AvailabilityColin Charles
 
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)Andrew Morgan
 
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 worldsAndrew Morgan
 
Facebook architecture presentation: scalability challenge
Facebook architecture presentation: scalability challengeFacebook architecture presentation: scalability challenge
Facebook architecture presentation: scalability challengeCristina Munoz
 

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

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 DevelopersRick Hightower
 
Replication Solutions for PostgreSQL
Replication Solutions for PostgreSQLReplication Solutions for PostgreSQL
Replication Solutions for PostgreSQLPeter Eisentraut
 
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
 
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 DownApppli
 
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 NetworksAcquia
 
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 IndiaJeremy Grelle
 
GWT Jug Stuttgart
GWT Jug StuttgartGWT Jug Stuttgart
GWT Jug Stuttgarthbraun
 
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 DrupalPromet Source
 
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
 
Subversion Edge Overview
Subversion Edge OverviewSubversion Edge Overview
Subversion Edge OverviewLotharSchubert
 
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 serviceTony Zhang
 
ServerTemplates - The Next Generation
ServerTemplates - The Next GenerationServerTemplates - The Next Generation
ServerTemplates - The Next GenerationRightScale
 
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 2010Atlassian
 
Rise of the hybrids
Rise of the hybridsRise of the hybrids
Rise of the hybridsOron Ben Zvi
 
REST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical LookREST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical LookNordic APIs
 
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 & ContainersKangaroot
 
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 there3scale
 

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

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.pdfsudhanshuwaghmare1
 
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 connectorsNanddeep Nachan
 
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...Zilliz
 
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 educationjfdjdjcjdnsjd
 
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 TerraformAndrey Devyatkin
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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)wesley chun
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 

Dernier (20)

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
 
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
 
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...
 
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
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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)
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

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