SlideShare a Scribd company logo
Scalable Web Architectures and Infrastructure Chris Munt M/Gateway Developments Ltd
Topics Web Servers Microsoft IIS, Apache, Sun JSWS  Development trends Web application development/run-time environments CSP, WebLink Dedicated:  JSP, ASP.NET, PHP etc … Pre-existing: Perl, Python, Ruby etc … Creating high-performance and scalable web infrastructure
Evolution “ Since 1999, the web has grown from a document retrieval system into an application delivery system. ” Douglas Crockford at AjaxWorld 2008 Implications for: Web Server extensibility Resilience Performance and scalability Architecture
Web Servers: Market Share 2005: Apache 71% IIS 20% 2008: Apache 50% IIS 35% Source: Netcraft
Internet Information Services  ( IIS) v1.0 Introduced as free add-on for NT v3.51 (mid 1990s) Single multi-threaded process Extensibility Common Gateway Interface (CGI) Internet Server Application Programming Interface (ISAPI)
IIS: CGI Modules implemented as stand-alone scripts/executables Application requests processed in separate server process Non-optimal but secure Overhead of starting new process to serve each request; Overhead of inter-process communication Application crash does not impact hosting web server Architecturally the same for all web servers
IIS: ISAPI Modules implemented as Windows DLLs Can be a Filter (e.g. GZIP) or Extension (e.g. PHP, CSP) Application requests serviced in process space of IIS host Optimal but there are risks No overhead in process management  and inter-process communication Application crash does impact hosting web server Supported for all versions of IIS The only web server API (excluding CGI) that’s completely backwards (and forwards) compatible!
IIS v5.0 & Windows 2000 Concept of isolation levels (or application protection levels). Low All in same process Medium ISAPI extensions run in a separate process High ISAPI extensions run in a separate process per  application An  application  is broadly defined in terms of its path
IIS v6.0 & Windows 2003 Concept of Worker Process Isolation and Application pools Application pool Applications associated with one or more worker processes Web Gardens Multiple worker processes supporting an application Not to be confused with web farms where multiple web server installations manage the work load Process recycling Process idle-time timeout
IIS v7.0 & Windows 2008 Major upgrade Previewed in Vista: A good reason to get Vista Modular architecture Administrators choose the modules required Improved security Application pools New configuration schema.  XML based. New API ISAPI still supported (as a supplied module) Third-party modules can be added
IIS Resources www.microsoft.com www.iis.net IIS developers participate
Apache v1.0 Consolidated in mid-90s  Robert McCool Successor to NCSA HTTPd ( National Center for Supercomputing Application) Modular architecture Multi-threaded for Windows; Multi-process for UNIX Extensibility Common Gateway Interface (CGI) Apache API
Apache: API Modules implemented as Dynamic Shared Objects (DSOs) DLLS for Windows, Shared Objects/Libraries for UNIX, Shareable Images for OpenVMS Modules can process any phase of request/response cycle Request handling (e.g. mod_csp, mod_weblink) Authentication (e.g. mod_auth) Security (e.g. mod_ssl) Filters (e.g. mod_deflate) Miscellaneous (e.g. mod_rewrite)
Apache: v2.0 - 2002 Substantial rewrite of core with improved modularization Multi-threaded for Windows and OpenVMS Support for UNIX threading Multi-process/Multi-threaded hybrid server New API Use mod_csp2.so instead of mod_csp.so
Apache: v2.2 - 2005 Improved Modules – particularly for authorization Same API but binary incompatibilities Use mod_csp22.so instead of mod_csp2.so
Web Servers based on Apache HP Secure Web Server (HPSWS) For OpenVMS v1.3-1 based on Apache v1.3.26 v2.1-1 based on Apache v2.0.52 Tomcat (Java/JSP), Perl, PHP CSP Many others
Apache: Resources www.apache.org
Sun JSWS Netscape Enterprise (mid 1990s) FastTrack – lightweight offering iPlanet (late 1990s) America Online, Sun Sun ONE (early 2000s) Sun Java System Web Server (mid 2000s) Resources: www.sun.com
Sun JSWS Multi-threaded for Windows Multi-process/Multi-threaded hybrid for UNIX Extensibility Common Gateway Interface (CGI) Netscape Server Application Programming Interface (NSAPI) Modules implemented as DLLS for Windows, Shared Objects/Libraries for UNIX Binary incompatibility between Netscape Enterprise v2 and v3
Trends: All web servers Multi-process/Multi-threaded servers Increased flexibility/extensibility through modularization Better security
Trends: Implications for WebLink and CSP State-aware mode (preserve mode 1 for CSP) increasingly non-optimal Connection pool distributed amongst multiple process with no control over the relationship between requests and processes Using Network Service Daemon (NSD) in single process mode becomes essential Channel load into single multi-threaded process Maintain single process pool
Web Standards? Applications using AJAX techniques generate much more HTTP traffic than conventional web applications. Poor performance unless connection between client and server is kept open between requests. HTTP v1.0: Asymmetric protocol by default Client opens connection to server then sends request Server sends response then closes connection to server
HTTP Keep-Alive Connection kept open between requests HTTP v1.0: Default off Connection: Keep-Alive (switch on) HTTP v1.1: Default on Connection: Close (switch off) Must send response size notification Content-Length Chunked transfer (HTTP v1.1) Transfer-Encoding: chunked WebLink/CSP Gateway will do this automatically
HTTP Connections: The current status Standard specifies the maximum number of simultaneous connections to a given server HTTP v1.0: usually 4 HTTP v1.1: always 2  (Section 8.1.4 RFC2616) Objective: to improve response times and avoid congestion. Can change setting in browser configuration Inappropriate for web based applications Proxys will implement standard
HTTP Connections: The future Now recognised that high-bandwidth connections are now commonplace Key development since HTTP v1.1 which was drafted in January 1997. Client-side bandwidth no longer gating factor in connection speed. IE v8 will almost certainly increase the number of connections to 6 Direct response to needs of AJAX applications
Application Development CSP & WebLink WebLink (1996); CSP (~2000) Implemented over CGI and Web Server APIs Proxy to Caché Responses generated entirely in Caché Support for state-aware sessions Migration of legacy M/Caché code to the web  WebLink Event Broker (1998) Early incarnation of AJAX-like techniques In-form scriptable communication with server Initially Java applet based; then XMLHTTP CSP equivalent:  Hyperevents
Application Development JSP Specified by Sun Apache Tomcat web container or application server Implements Java Servlet and JSP Apache mod_jk (Jakarta) manages communication between Apache and Tomcat  Database access JDBC, web services
Application Development ASP & ASP.NET Microsoft IIS Classic ASP (~1996) script based and interpretive ASP.NET (~2002) Compiled, dependent on .Net framework Database access ADO.Net (base class library) ODBC data provider Web Services
Application Development PHP PHP ( Hypertext Preprocessor) Created 1994 Used for over 20 million web sites Most popular Apache module M-like associative arrays Increasing OO capability Interfaces to numerous SQL-based databases MySQL popular choice
Application Development Perl Created 1987 General purpose scripting language Emphasis on text processing Suited to the needs of web programming DBI (Database Interface) modules
Application Development Python Created 1991 General purpose scripting environment Some implementations include compiler Multi-paradigm programming environment Functional Object Oriented Large  standard library Modules for processing web requests Modules for database access
Application Development Ruby (on Rails) Created mid 1990s General purpose Multi-paradigm programming environment Functional Object Oriented (Many ideas from Perl and Smalltalk) Ruby On Rails: Created 2004 Complete web application development framework Consists of several  packages ActiveRecord – Object Relational mapping
MGWSI Gateway Uniform/Normalized interface to Cach é Underpins Enterprise Web Developer (EWD) Currently supported: PHP  (m_php) JSP  (m_jsp) ASP.NET (m_aspx) Future support anticipated: Ruby (m_ruby) Python (m_python) Perl (m_perl) www.mgateway.com
Application Development Scalability I Non CSP/WebLink environments Requests processed and responses generated on web server host Possible multiple round trips to database Will need to increase capacity of web server tier sooner Load-Balancing techniques
Application Development Scalability II CSP/WebLink Web server extension as intelligent proxy/router Requests and complete response generated in Caché Single round trip to database per request/response cycle Integrated scripting environment and database ideal for web application run-time environment Better performance/throughput per web server
Scalable Web Applications Conclusion Keep web servers updated Keep eye on developments in standards Use HTTP Keep-alive for applications using AJAX techniques Don’t use state-aware mode in WebLink or CSP Follow these guidelines and future scalability options will remain open Server clusters/farms Load-balancing/Fail-Over

More Related Content

Scalable Web Architectures and Infrastructure

  • 1. Scalable Web Architectures and Infrastructure Chris Munt M/Gateway Developments Ltd
  • 2. Topics Web Servers Microsoft IIS, Apache, Sun JSWS Development trends Web application development/run-time environments CSP, WebLink Dedicated: JSP, ASP.NET, PHP etc … Pre-existing: Perl, Python, Ruby etc … Creating high-performance and scalable web infrastructure
  • 3. Evolution “ Since 1999, the web has grown from a document retrieval system into an application delivery system. ” Douglas Crockford at AjaxWorld 2008 Implications for: Web Server extensibility Resilience Performance and scalability Architecture
  • 4. Web Servers: Market Share 2005: Apache 71% IIS 20% 2008: Apache 50% IIS 35% Source: Netcraft
  • 5. Internet Information Services ( IIS) v1.0 Introduced as free add-on for NT v3.51 (mid 1990s) Single multi-threaded process Extensibility Common Gateway Interface (CGI) Internet Server Application Programming Interface (ISAPI)
  • 6. IIS: CGI Modules implemented as stand-alone scripts/executables Application requests processed in separate server process Non-optimal but secure Overhead of starting new process to serve each request; Overhead of inter-process communication Application crash does not impact hosting web server Architecturally the same for all web servers
  • 7. IIS: ISAPI Modules implemented as Windows DLLs Can be a Filter (e.g. GZIP) or Extension (e.g. PHP, CSP) Application requests serviced in process space of IIS host Optimal but there are risks No overhead in process management and inter-process communication Application crash does impact hosting web server Supported for all versions of IIS The only web server API (excluding CGI) that’s completely backwards (and forwards) compatible!
  • 8. IIS v5.0 & Windows 2000 Concept of isolation levels (or application protection levels). Low All in same process Medium ISAPI extensions run in a separate process High ISAPI extensions run in a separate process per application An application is broadly defined in terms of its path
  • 9. IIS v6.0 & Windows 2003 Concept of Worker Process Isolation and Application pools Application pool Applications associated with one or more worker processes Web Gardens Multiple worker processes supporting an application Not to be confused with web farms where multiple web server installations manage the work load Process recycling Process idle-time timeout
  • 10. IIS v7.0 & Windows 2008 Major upgrade Previewed in Vista: A good reason to get Vista Modular architecture Administrators choose the modules required Improved security Application pools New configuration schema. XML based. New API ISAPI still supported (as a supplied module) Third-party modules can be added
  • 11. IIS Resources www.microsoft.com www.iis.net IIS developers participate
  • 12. Apache v1.0 Consolidated in mid-90s Robert McCool Successor to NCSA HTTPd ( National Center for Supercomputing Application) Modular architecture Multi-threaded for Windows; Multi-process for UNIX Extensibility Common Gateway Interface (CGI) Apache API
  • 13. Apache: API Modules implemented as Dynamic Shared Objects (DSOs) DLLS for Windows, Shared Objects/Libraries for UNIX, Shareable Images for OpenVMS Modules can process any phase of request/response cycle Request handling (e.g. mod_csp, mod_weblink) Authentication (e.g. mod_auth) Security (e.g. mod_ssl) Filters (e.g. mod_deflate) Miscellaneous (e.g. mod_rewrite)
  • 14. Apache: v2.0 - 2002 Substantial rewrite of core with improved modularization Multi-threaded for Windows and OpenVMS Support for UNIX threading Multi-process/Multi-threaded hybrid server New API Use mod_csp2.so instead of mod_csp.so
  • 15. Apache: v2.2 - 2005 Improved Modules – particularly for authorization Same API but binary incompatibilities Use mod_csp22.so instead of mod_csp2.so
  • 16. Web Servers based on Apache HP Secure Web Server (HPSWS) For OpenVMS v1.3-1 based on Apache v1.3.26 v2.1-1 based on Apache v2.0.52 Tomcat (Java/JSP), Perl, PHP CSP Many others
  • 18. Sun JSWS Netscape Enterprise (mid 1990s) FastTrack – lightweight offering iPlanet (late 1990s) America Online, Sun Sun ONE (early 2000s) Sun Java System Web Server (mid 2000s) Resources: www.sun.com
  • 19. Sun JSWS Multi-threaded for Windows Multi-process/Multi-threaded hybrid for UNIX Extensibility Common Gateway Interface (CGI) Netscape Server Application Programming Interface (NSAPI) Modules implemented as DLLS for Windows, Shared Objects/Libraries for UNIX Binary incompatibility between Netscape Enterprise v2 and v3
  • 20. Trends: All web servers Multi-process/Multi-threaded servers Increased flexibility/extensibility through modularization Better security
  • 21. Trends: Implications for WebLink and CSP State-aware mode (preserve mode 1 for CSP) increasingly non-optimal Connection pool distributed amongst multiple process with no control over the relationship between requests and processes Using Network Service Daemon (NSD) in single process mode becomes essential Channel load into single multi-threaded process Maintain single process pool
  • 22. Web Standards? Applications using AJAX techniques generate much more HTTP traffic than conventional web applications. Poor performance unless connection between client and server is kept open between requests. HTTP v1.0: Asymmetric protocol by default Client opens connection to server then sends request Server sends response then closes connection to server
  • 23. HTTP Keep-Alive Connection kept open between requests HTTP v1.0: Default off Connection: Keep-Alive (switch on) HTTP v1.1: Default on Connection: Close (switch off) Must send response size notification Content-Length Chunked transfer (HTTP v1.1) Transfer-Encoding: chunked WebLink/CSP Gateway will do this automatically
  • 24. HTTP Connections: The current status Standard specifies the maximum number of simultaneous connections to a given server HTTP v1.0: usually 4 HTTP v1.1: always 2 (Section 8.1.4 RFC2616) Objective: to improve response times and avoid congestion. Can change setting in browser configuration Inappropriate for web based applications Proxys will implement standard
  • 25. HTTP Connections: The future Now recognised that high-bandwidth connections are now commonplace Key development since HTTP v1.1 which was drafted in January 1997. Client-side bandwidth no longer gating factor in connection speed. IE v8 will almost certainly increase the number of connections to 6 Direct response to needs of AJAX applications
  • 26. Application Development CSP & WebLink WebLink (1996); CSP (~2000) Implemented over CGI and Web Server APIs Proxy to Caché Responses generated entirely in Caché Support for state-aware sessions Migration of legacy M/Caché code to the web WebLink Event Broker (1998) Early incarnation of AJAX-like techniques In-form scriptable communication with server Initially Java applet based; then XMLHTTP CSP equivalent: Hyperevents
  • 27. Application Development JSP Specified by Sun Apache Tomcat web container or application server Implements Java Servlet and JSP Apache mod_jk (Jakarta) manages communication between Apache and Tomcat Database access JDBC, web services
  • 28. Application Development ASP & ASP.NET Microsoft IIS Classic ASP (~1996) script based and interpretive ASP.NET (~2002) Compiled, dependent on .Net framework Database access ADO.Net (base class library) ODBC data provider Web Services
  • 29. Application Development PHP PHP ( Hypertext Preprocessor) Created 1994 Used for over 20 million web sites Most popular Apache module M-like associative arrays Increasing OO capability Interfaces to numerous SQL-based databases MySQL popular choice
  • 30. Application Development Perl Created 1987 General purpose scripting language Emphasis on text processing Suited to the needs of web programming DBI (Database Interface) modules
  • 31. Application Development Python Created 1991 General purpose scripting environment Some implementations include compiler Multi-paradigm programming environment Functional Object Oriented Large standard library Modules for processing web requests Modules for database access
  • 32. Application Development Ruby (on Rails) Created mid 1990s General purpose Multi-paradigm programming environment Functional Object Oriented (Many ideas from Perl and Smalltalk) Ruby On Rails: Created 2004 Complete web application development framework Consists of several packages ActiveRecord – Object Relational mapping
  • 33. MGWSI Gateway Uniform/Normalized interface to Cach é Underpins Enterprise Web Developer (EWD) Currently supported: PHP (m_php) JSP (m_jsp) ASP.NET (m_aspx) Future support anticipated: Ruby (m_ruby) Python (m_python) Perl (m_perl) www.mgateway.com
  • 34. Application Development Scalability I Non CSP/WebLink environments Requests processed and responses generated on web server host Possible multiple round trips to database Will need to increase capacity of web server tier sooner Load-Balancing techniques
  • 35. Application Development Scalability II CSP/WebLink Web server extension as intelligent proxy/router Requests and complete response generated in Caché Single round trip to database per request/response cycle Integrated scripting environment and database ideal for web application run-time environment Better performance/throughput per web server
  • 36. Scalable Web Applications Conclusion Keep web servers updated Keep eye on developments in standards Use HTTP Keep-alive for applications using AJAX techniques Don’t use state-aware mode in WebLink or CSP Follow these guidelines and future scalability options will remain open Server clusters/farms Load-balancing/Fail-Over