EWD: Simplifying Web Application Architecture



Similar documents
How Open-Source VistA is being Modernised with Web Access

Client Overview. Engagement Situation. Key Requirements

Cache Database: Introduction to a New Generation Database

Web Programming Languages Overview

Enhancing your Web Experiences with ASP.NET Ajax and IIS 7

Building Ajax Applications with GT.M and EWD. Rob Tweed M/Gateway Developments Ltd

Base One's Rich Client Architecture

A Universal NoSQL Engine, Using a Tried and Tested Technology

White Paper Converting Lotus Notes Applications to the Cloud Using the CIMtrek converter Product

SMART Apps. Rob Tweed M/Gateway Developments

How to Build an E-Commerce Application using J2EE. Carol McDonald Code Camp Engineer

NoSQL replacement for SQLite (for Beatstream) Antti-Jussi Kovalainen Seminar OHJ-1860: NoSQL databases

MOBILIZING ORACLE APPLICATIONS ERP. An Approach for Building Scalable Mobility Solutions. A RapidValue Solutions Whitepaper

Mobile development with Apache OFBiz. Ean Schuessler, Brainfood

Magellan. 5 Simple Steps to Finding the Right Mobile Development Magellan Holdings, LLC.

Preparing Your Business for Magento 2.0

An Oracle White Paper May Oracle Tuxedo: An Enterprise Platform for Dynamic Languages

Framework Adoption for Java Enterprise Application Development

CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application

GigaSpaces Real-Time Analytics for Big Data

Coding for Desktop and Mobile with HTML5 and Java EE 7

ORACLE MOBILE APPLICATION FRAMEWORK DATA SHEET

Reference Model for Cloud Applications CONSIDERATIONS FOR SW VENDORS BUILDING A SAAS SOLUTION

Preparing Your Data For Cloud

A framework for web-based product data management using J2EE

A Comparative Study of Web Development Technologies Using Open Source and Proprietary Software

Open Source Technologies on Microsoft Azure

Information Systems Analysis and Design CSC John Mylopoulos. Software Architectures Information Systems Analysis and Design CSC340

Web Applications: Overview and Architecture

Design and Functional Specification

What s really under the hood? How I learned to stop worrying and love Magento

Understanding Application Servers

Internet Technologies_1. Doc. Ing. František Huňka, CSc.

WebSphere Application Server - Introduction, Monitoring Tools, & Administration

Framework as a master tool in modern web development

Case Study. SaaS Based Multi-Store Market Place Brainvire Infotech Pvt. Ltd Page 1 of 5

Adding scalability to legacy PHP web applications. Overview. Mario Valdez-Ramirez

WebObjects Web Applications Programming Guide. (Legacy)

Mobile Application Platform

The Windows Web Platform. Michael Epprecht Microsoft Switzerland twitter: fastflame

Analytics March 2015 White paper. Why NoSQL? Your database options in the new non-relational world

Beyond ESB Architecture with APIs

Bring the power and speed of RAD to your Web application development with WebSnap

Storage Made Easy Enterprise File Share and Sync (EFSS) Cloud Control Gateway Architecture

MarkLogic Server. Reference Application Architecture Guide. MarkLogic 8 February, Copyright 2015 MarkLogic Corporation. All rights reserved.

Web Performance. Sergey Chernyshev. March '09 New York Web Standards Meetup. New York, NY. March 19 th, 2009

Mobile web apps: The best option for business? A whitepaper from mrc

POINT-TO-POINT vs. MEAP THE RIGHT APPROACH FOR AN INTEGRATED MOBILITY SOLUTION

Introduction to Oracle Mobile Application Framework Raghu Srinivasan, Director Development Mobile and Cloud Development Tools Oracle

BeBanjo Infrastructure and Security Overview

Cross Platform App Development

A Comparison of Open Source Application Development Frameworks for the Enterprise

Web application development landscape: technologies and models

SSC - Web development Model-View-Controller for Java web application development

ICS 434 Advanced Database Systems

Service Oriented Architectures

ORACLE APPLICATION EXPRESS 5.0

Visual WebGui for ASP.NET Ajax (and other Ajax) Web Developers Learn what makes Visual WebGui not just another Ajax framework

Why NoSQL? Your database options in the new non- relational world IBM Cloudant 1

TG Web. Technical FAQ

Getting Started with IBM Bluemix: Web Application Hosting Scenario on Java Liberty IBM Redbooks Solution Guide

ios Cloud Development FOR Neal Goldstein WILEY John Wiley & Sons, Inc.

Developing ASP.NET MVC 4 Web Applications

Apigee Edge API Services Manage, scale, secure, and build APIs and apps

Best Practices for Building Mobile Web

How To Develop A Mobile Application On An Android Device

Real-Time Analytics on Large Datasets: Predictive Models for Online Targeted Advertising

Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA

JavaFX Session Agenda

Web Architecture I u

How To Write A Database Program

Syllabus INFO-GB Design and Development of Web and Mobile Applications (Especially for Start Ups)

Modern Web Development From Angle Brackets to Web Sockets

An introduction to creating JSF applications in Rational Application Developer Version 8.0

SaaS-Based Employee Benefits Enrollment System

SMART MESSAGE BULK SMS MESSAGING

How To Write An Ria Application

Sentimental Analysis using Hadoop Phase 2: Week 2

Mobile Application Development

How graph databases started the multi-model revolution

Electronic Ticket and Check-in System for Indico Conferences

C/S Basic Concepts. The Gartner Model. Gartner Group Model. GM: distributed presentation. GM: distributed logic. GM: remote presentation

Curl Building RIA Beyond AJAX

2311A: Advanced Web Application Development using Microsoft ASP.NET Course 2311A Three days Instructor-led

Enterpise Mobility Lexicon & Terminology

Platform Architecture & Integration with OpenShift

Chatbots 3.3. Chatbots in Web Applications with RiveScript. Presented by Noah Petherbridge

To increase scalability, the following features can be integrated:

Hadoop Ecosystem Overview. CMSC 491 Hadoop-Based Distributed Computing Spring 2015 Adam Shook

Open Source Content Management System for content development: a comparative study

Apache Jakarta Tomcat

EMPLOYEE LOCATION TRACKING SERVICE

Introduction to BlackBerry Smartphone Web Development Widgets

Transcription:

EWD: Simplifying Web Application Architecture Rob Tweed M/Gateway Developments Ltd http://www.mgateway.com Twitter: @rtweed

1980s: A bit about me Lead Mumps developer at Royal Marsden Hospital, London: Hospital Information System Early 1990s: Management consultant at Touche Ross, London Major NHS Networking project for Dept of Health Mid-1990s present: Caché/Mumps web app framework developer Javascript expert Internet technology industry watcher

A bit about me Pioneer of web development for Mumps & Caché WebLink & WebLink Developer Sold to InterSystems: 1996 Consultant for early CSP design Assisted most of InterSystems' major customers worldwide on Web Application design & development

A bit about me Author of EWD 2004 present Advanced web/ajax development framework EWD: Supports the largest Internet-facing Caché-based web applications World's largest Caché-based web app: Quest Diagnostics Care360 "EziOrder"» 30,000+ concurrent users» 500,000 test requests/day

Why Do I Despair? This is the industry-standard way it's done, right? So what's the problem?

Why Do I Despair? This is the industry-standard way it's done, right? Yes, but nobody seems to ask the basic question: How on earth did something so simple (the web) end up being such a complex mess of stacks and layers? Web apps were supposed to make things simpler!

What the "Experts" miss The technology on which VistA was built (Mumps) turns out to also be a technology that could have been designed specifically as a web application platform Almost no layers or moving parts needed The entire web application development framework, runtime AND application(s) can run on a single technical platform Mumps/Caché: the world's most misunderstood database technology

So why is this kind of nonsense the accepted norm for web apps?

When it could be as simple as this: Browser http/ https Web Server (Apache/ IIS) Gateway WebLink CSP Gateway interface Caché Caché EWD Runtime Page Scripts VistA

ie: the "experts" propose this:

When we could have this:

Why does this matter anyway?

Why does this matter anyway? 1 day of coding will cost 13 days of maintenance Fewer moving parts and layers means that one person can understand the entire application Remember: the people who will maintain the application are rarely the original developers

So why is this kind of nonsense the accepted norm for web apps?

To understand: We need to go back through the history of the web

Why was the web successful? "Good enough" at the right price Free! Simple architecture Simple to build web pages No special tools required Anyone could create a web site Simple to access web pages Basic graphical UI Designers loved it and pushed its limits

"Static" web architecture Browser HTTP Web Server File Store Request Apache IIS

"Static" web architecture Browser HTTP Web Server File Store Response Apache IIS

Step2: Dynamic Pages Instead of fixed data in my pages, I want to display the latest figures in a table Dynamically generate the data in the document

How to do this? Browser HTTP Web Server File Store Response Dynamically build a page of HTML Database

Enter CGI Browser HTTP Web Server File Store Response CGI Interface Database

But databases don't have a scripting environment, so: Browser HTTP Web Server File Store Response CGI Interface Scripting Language eg Perl Database

Step 3 This is ~1995, the era of Client/Server Lots of problems emerging: Deployment and maintenance of thick clients Complexity of development: Logic split between client & server Multiple languages & layers (sounds familiar??)

Step 3 Why not use the browser as a universallyavailable standard smart UI? Move our application logic all back to the back-end Simulate an interactive UI session via a succession of generated HTML pages Web Apps were born!

Problem 1: HTTP is stateless An interactive user application requires maintenance of state Persistent information available throughout the user's session

Problem 2: Browser still just communicates with the web server using just HTTP requests So, how to deal with security? How can we uniquely and reliably recognise the incoming request as being from the person they claim to be? How can we protect an individual's session from malicious access?

Combine Problems 1 & 2: How can we reliably determine who the user is from the incoming request? How can we determine what they want to do on the basis of their request? How can we recreate their session state before handling their request?

The layers start to appear Browser HTTP Web Server File Store Response CGI Interface Security Management State Management HTML Page Generation Corporate RDBMS

Security Management Browser HTTP Web Server File Store Response CGI Interface Security Management State Management HTML Page Generation User Credentials? Corporate RDBMS

State Management Requirement: High-performance, highly scalable key/value store Ideally not just simple key/value store RDBMS too heavy, slow State management database requires something more dynamic and free-form

Enter In-memory Key/Value Stores memcache Redis

For more complex session data: NoSQL "Document" databases: MongoDB NoSQL Columnar databases Hadoop Cassandra

More layers appear Browser HTTP Web Server File Store Response CGI Interface Security Management State Management HTML Page Generation User Credentials? NoSQL Database(s) Corporate RDBMS

CGI too slow, so fast APIs Browser HTTP Apache File Store Response ISAPI / FastCGI Security Management State Management HTML Page Generation User Credentials? NoSQL Database(s) Corporate RDBMS

"Proper" scripting languages Perl too weird and clunky "Professional" languages needed Enter.Net and Java While we're at it, lets encapsulate all those other layers in our own special flavours "Hide" all that complexity by creating our own new complexity

Let's rationalise app design Model/View/Controller (MVC) Mapping URLs to resources (dynamic pages) Model for the data Views define the returned content Controllers access the database and business logic

And so we end up with, eg: J2EE

A complete nightmare Everyone pretends to understand it Nobody actually does It's supposedly designed to be manageable Nobody really knows how to manage it because nobody really understands it If programmers can barely understand it, what chance do designers have? Design, not programming, is what makes an application a success

Result Timescales slip Budgets soar Staff turnover: the people who originally designed it have gone and new people can't understand what they've inherited Version 1 maybe eventually gets delivered Don't hold your breath for versions 2 and later!

Web Applications They were supposed to be simpler than Client/Server, right? The industry has managed to turn them into as big a mess!

A better way?

Wind back to 1994 I realised that web pages could be generated dynamically The browser could provide all the UI capabilities that we'd required for clinical applications at the Royal Marsden Hospital

Mumps: the World's Least Understood database Databases normally need to be accessed and manipulated via a separate scripting language Mumps & Caché are almost unique in that they have an integrated, tightly-coupled scripting language Mumps database Mumps language

Mumps: Tailor-made for the web Very high peformance, highly scalable language & database Interpreted, "fast and loose" language Dynamic, schema-free hierarchical database "Universal" NoSQL capabilities: Key/value store Document store Columnar store Graph store Native XML Database / DOM Relational & Object (aka Caché)

Mumps: the layers disappear Browser HTTP Web Server File Store Response ISAPI / FastCGI Web Application Management Environment Corporate Applications Session Storage Caché / Mumps

EWD: back to simplicity High-level abstraction for app design To the developer, it's as if you're designing using static pages Native XML DOM-based compilation stage State & Session management happens automatically No baffling MVC complexity Simple, intuitive concepts High-speed development Simple maintenance

EWD makes it as simple as this: Caché or GT.M Browser http/ https Web Server (Apache/ IIS) Gateway WebLink CSP Gateway interface Caché EWD Runtime * EWD Pages EWD Session Store * Page Scripts VistA

What about non-mumps integration? Several alternatives: Ensemble Integration engine built on top of Cache Adaptors for most other databases and languages EWD is 100% compatible with Ensemble Web Service access EWD can consume external web services Behave as an HTTP client Node.js (server-side Javascript) opens up new alternatives ewdgateway.js: Node.js gateway module for EWD Use other Node.js modules for integrating other DBMS

Ensemble Example: Ensemble Browser Web Server (Apache/ IIS) Gateway WebLink CSP Gateway interface Caché EWD Runtime EWD Pages EWD Session Store Page Scripts Adaptor DoD VistA

iehr You don't need to go down the industrystandard route EWD is tried-and-tested technology Direct integration with ExtJS v4 and Sencha Touch (for mobile) It is demonstrably orders of magnitude faster to develop with and cheaper and simpler to maintain

Which would you feel safest in?