SlideShare a Scribd company logo
1 of 33
Download to read offline
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

More Related Content

What's hot

Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Kai Wähner
 
Hypertext and hypermedia
Hypertext and hypermediaHypertext and hypermedia
Hypertext and hypermedia
Jay Patel
 
Frequently Asked Questions About Metaverse
Frequently Asked Questions About MetaverseFrequently Asked Questions About Metaverse
Frequently Asked Questions About Metaverse
101 Blockchains
 

What's hot (20)

Metaverse
MetaverseMetaverse
Metaverse
 
What is Application Performance Management?
What is Application Performance Management?What is Application Performance Management?
What is Application Performance Management?
 
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
 
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Fastapi
FastapiFastapi
Fastapi
 
Hypertext and hypermedia
Hypertext and hypermediaHypertext and hypermedia
Hypertext and hypermedia
 
Web accessibility
Web accessibilityWeb accessibility
Web accessibility
 
Frequently Asked Questions About Metaverse
Frequently Asked Questions About MetaverseFrequently Asked Questions About Metaverse
Frequently Asked Questions About Metaverse
 
Metaverse System Architectures
Metaverse System ArchitecturesMetaverse System Architectures
Metaverse System Architectures
 
Metrics, metrics everywhere (but where the heck do you start?)
Metrics, metrics everywhere (but where the heck do you start?)Metrics, metrics everywhere (but where the heck do you start?)
Metrics, metrics everywhere (but where the heck do you start?)
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
 
[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale
[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale
[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale
 
A Product Manager's Place in a DevOps World
A Product Manager's Place in a DevOps WorldA Product Manager's Place in a DevOps World
A Product Manager's Place in a DevOps World
 
Web 3.0 Metaverse
Web 3.0 MetaverseWeb 3.0 Metaverse
Web 3.0 Metaverse
 
Microservices
MicroservicesMicroservices
Microservices
 
Domain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal ArchitectureDomain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal Architecture
 
Laravel for e commerce build small store now and scale big later
Laravel for e commerce build small store now and scale big laterLaravel for e commerce build small store now and scale big later
Laravel for e commerce build small store now and scale big later
 
Headless Architecture
Headless ArchitectureHeadless Architecture
Headless Architecture
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 

Viewers also liked

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

Viewers also liked (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
 

Similar to 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
 

Similar to 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
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
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
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 

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