general hld vr.1.2

14
| Accessibility @ a click High Level design document V 1.2 ________________________

Upload: amihai-miron

Post on 07-Aug-2015

160 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: General HLD Vr.1.2

| Accessibility @ a click

High Level design document

V 1.2

________________________

Page 2: General HLD Vr.1.2

| Accessibility @ a click

Contents 1. Introduction .................................................................................... 3

1.1. Background ....................................................................................... 3

1.2. Audience ........................................................................................ 3

1.3. Scope ................................................................................................ 3

1.4. Terms ................................................................................................ 3

1.5. Architecture Guidance ....................................................................... 4

1. Simplicity ........................................................................................... 4

2. Security ............................................................................................. 4

2. System Overview ........................................................................... 4

2.1. User1st Cloud Components and Roles .................................................... 5

2.2. Private Cloud Components and Roles ............................................... 6

3. Components Architecture ............................................................... 7

3.1. User1st cloud .................................................................................... 7

3.1.1. Backend add-on ................................................................................ 7

3.1.2. Backend application .......................................................................... 7

3.1.3. Frontend .Net 4, ASP.NET MVC 3 application. Serves as updates

end-point to the manager server. .................................................................... 8

3.2. Private cloud ..................................................................................... 9

4. Work flows ................................................................................... 12

4.1. SAAS ...................................................... Error! Bookmark not defined.

4.2. On-Premise ............................................. Error! Bookmark not defined.

Page 3: General HLD Vr.1.2

| Accessibility @ a click

1. Introduction

1.1. Background

User1st is the fastest and most cost-effective solution for website and web

application accessibility and usability for the disable communities. User1st makes

websites accessible and easy-to-use, ensuring compliance with the strictest

industry regulations, reducing financial and corporate risks, and maximizing web

exposure and revenue.

Organizations are faced with a growing legal and finance pressure for complying

with strict accessibility regulations and standards (WCAG 2.0 by W3), in process

in over 100 countries, such as EU, the USA, Canada and Australia.

Millions of dollar class action suits against the Walt Disney Company, Wells

Fargo, Jet Blue, CNN, and Target mean organizations are scrambling to ensure

electronic access to all.

With the click of a button, User1st applies an accessibility "skin" to the web

interface, making it compatible with the specific needs of each end-user.

Everyone can view the website in a w

1.2. Audience

This document is designed to be a reference for any person wishing to

implement or any person interested in the architecture of User1st

components. This document describes each component architecture and

sub-architecture their associated interfaces, database schemas, and the

motivations behind the chosen design.

This document should be read by an individual with a technical background

and has experience UML Class diagram and UML Sequence diagrams.

1.3. Scope

This document describes the User1st Cloud and Private cloud solution.

1.4. Terms

Operator – (or configuration manager) the person responsible to define the

mapping and rules of the site (using the backend system).

The operator has permission to configure and see reports for specific sites

only.

System administrator – the person responsible to manage the sites, users

and permissions. The system administrator has permission also to configure

and see reports for all sites.

Selector – a jQuery selector that when using jQuery framework can found

elements in a unique way.

Page 4: General HLD Vr.1.2

| Accessibility @ a click

1.5. Architecture Guidance

1. Simplicity

The User1st backend should is working as a wizard to help the

integrator mapping the site and found the accessibility issues.

The User1st on-premises solution designed to be an on-premises

solution with minimal implementation and maintenance efforts.

2. Security

The Integrator works with individual configured Firefox add-on that

encrypts and signs the data before sending it to the server (in addition to

the https protocol)

The satellite servers serve a static content from the local disk, without

accessing any database or other component that is not on the DMZ.

These servers are read-only.

2. System Overview

Page 5: General HLD Vr.1.2

| Accessibility @ a click

Components and roles:

2.1. User1st Cloud Components and Roles

2.1.1. Integrator

The integrator works with Firefox add-on that inject User1st backend

script into every valid page, this script communicate with the backend

server.

2.1.2. Backend – ASP.Net MVC application.

This component construct of 2 applications:

2.1.2.1. Backend application that works with Firefox add-on on the

client side.

Using this application the operator/configuration manager

2.1.2.2. Reports and management portal for the integrator

Page 6: General HLD Vr.1.2

| Accessibility @ a click

2.1.3. Frontend - ASP.Net MVC application.

Serves as updates end-point to the Manager (#8).

2.1.4. Admin - ASP.Net MVC application.

Administration application to manage sites, users, permissions, etc.

2.1.5. Database

SQL 2008 R2 or SQL Azure 2008.

2.1.6. Batch – Windows Server/Worker role that runs background processed such

as monitor results aggregation for reports, Sync version with satellite sites, etc.

2.1.7. User1st System Administrator

2.2. Private Cloud Components and Roles

2.2.1. Satellite Manager – Responsible to downloads “update packages” and

updates the satellite servers.

2.2.1.1. Satellite Manager Control Panel

Winform application that communicate with the satellite manager

windows service to control the Manager action and check services

status.

The application allow the administrator to install packages, entire

package of part of it, to see servers content and status.

Page 7: General HLD Vr.1.2

| Accessibility @ a click

2.2.2. Satellite Servers (STG + PROD) - ASP.Net MVC Application.

Serve the data and scripts from static files to the end-user browser and

Collect the monitor results and pass it to the manager (Manager pull the

result from the satellite server)

Customer can define as multiple environments and update each

separately.

2.3. Bank Data center

2.3.1. Production frontend environment that includes link to the script from

the PROD environment on the private cloud.

2.3.2. Staging frontend environment that includes link to the script from the

STG environment on the private cloud.

3. Components Architecture

3.1. User1st cloud

3.1.1. Backend add-on

Firefox add-on that injects User1st's backend script to pages.

Each add-on has a unique keys that was generated to its own

3.1.2. Backend application

3.1.2.1. Server application

3.1.2.1.1. Add-on service (Site Configuration server side)

Page 8: General HLD Vr.1.2

| Accessibility @ a click

.Net 4, ASP.NET MVC 3 application that has 2 areas:

The entire role of this component is to build the site configuration.

After defining the site configuration the system saves it as a

JSON and send it to the server.

In the following diagram you can see the JSON high-level

structure.

SiteDefinition

-memberName

-memberName

Pattern

ID

Name

Metadata

Type

*

Values

Action

Type

TriggerValues

TypescrapingMethod

selectorfilters

3.1.2.1.2. Administration Reports

a. Site Configuration server side – the components what works with

the add-on (Firefox plugin)

b. Administration –The operator can see reports, fill images

description, generate satellite packages, etc.

The client side adds a layer to the original site (without changing it)

that helps to map and configure the site configuration.

3.1.3. Frontend

.Net 4, ASP.NET MVC 3 application.

Serves as updates end-point to the manager server.

Page 9: General HLD Vr.1.2

| Accessibility @ a click

3.1.4. Admin

.Net 4, ASP.NET MVC 3 application

3.1.5. Batch

.Net 4, Windows Service or Azure Worker role

The batch service consists of 2 service:

1. Job executer

The Job executer pop tasks from the working queue create

a job and execute it. The job can create sub tasks (without

any reduce mechanism).

2. Scheduler

the scheduler based on Quartz.Net system. Its role it to

schedule tasks and push it into the working queue.

3.2. Private cloud

3.2.1. Satellite Manager

.Net 4, Windows Service

The satellite manager is an orchestrator that manage event and

can be controller via API.

The manager holds synchronizers and Satellite Servers clients.

The synchronizers role is to get new updates, for example:

a. Remote service synchronizer – cyclic access the User1st

sync endpoint on User1st cloud to get updates.

b. Folder watcher synchronizer – watch folder to see if new

package is dropped in.

The Satellite servers are client to the satellite server. The manager

using this client to publish new packages, collect monitor result

and more. The connection based on WCF Net.tcp.

Page 10: General HLD Vr.1.2

| Accessibility @ a click

Manager

-memberName

-memberName

Synchronizer

Paramaters

SatelliteServer

URI

IsContenrServerIsMonitorCollector

OnUpdates Event

3.2.2. Satellite Server

.Net 4, ASP.NET MVC 3 application

The Customer should add a 5 line code this its pages that loaded the

rest of User1st code (if necessary).

a. Overview

The frontend application takes the site configuration that was

generated in the backend application and uses it to file elements

on the screen and modify these element (or entire page) according

to the scenario (i.e. the features or profile that was selected).

A profile.

b. Dynamic elements

In case of the operator mark the pattern as dynamic element the

system listen to changes in that element and react according to

the select features. In modern browser the system uses Mutation

observable to detect changes in older browser the system uses

timeout and compare HTML to detect changes.

c. Popups

In cases on popup pops that system move the focus to this popup

and the rest of the page from getting focus, when closing the

popup the system return to the element that triggered the

appearance of the popup.

The system detect that popup appearances by running cyclic

testing on the known popup selector.

d. In the following diagram you can see that sequence of the main

sequence in case the user selected User1st profile.

The satellite serve has 2 main role:

a. Serve static data from files

Page 11: General HLD Vr.1.2

| Accessibility @ a click

When browser are for content it access one of the MVC

controllers, the controller than loads a text file from the disc

(according to the action and given domain) and it tot the

output cache and add HTTP cache control header.

b. Collect Monitor results

When client side application post monitor results the server

keeps then in a collection in the memory.

The manager cyclic access these server to collect the

monitor results. On collection the server lock the collection

return the results and clear the collection

BrowserUser1stSatellite

BandWeb Server

Get Page

Get User1st Loader script (Loader)

~1.5K script

Detect Page language

Get User1st initial script (Init?ver=0.0.0.23&lang=he-il)

~7K script

end-user selected accessibility profile

Ask for resources to download

<1K script

Google CDN

Download jQuery

Download scripts

~80K scripts

Get site configuration lateser version (GetsiteDefinitionUrl?siteUrl=http://www.ikea.co.i

GetSiteDefinition

JSON as script (Like JSONP), ~20K depend on site

Make page accessible

Set Long term cookie with the user profile

Page 12: General HLD Vr.1.2

| Accessibility @ a click

4. Work flows

4.1. User1st cloud

4.1.1. Site configuration in the Backend subsystem

a. The operator maps the widget and elements of the sites and define

rules and metadata

b. The data is saved in the User1st cloud database

4.1.2. Publish the new configuration

a. When the operator is happy from the results (until now the end user

can't see the new configuration) he click the publish button.

b. End-user can see only published configuration

4.1.3. Make site accessible

a. End-user access site

b. A very small of User1st scrip is downed to the page detect the

language and access the server again to down load another very

small script that adds the "accessibility" button

c. The end-user click the "accessibility" button

d. The script now download the rest of user1st scripts and data

(important: the scripts and data are saved in the browser cache and

being re-downloaded only if modified)

e. The user choose his accessibility profile (i.e. Screen reader)

f. The system run scripts that fix the page DOM according to the

selected profile needs.

4.1.4. Accessibility Monitor

a. During the time the user surf the page that system run analysis

regards the accessibility validation and mapping quality

b. The monitor results is sent to the Frontend server and saved in

the database

c. The batch server runs on every end of day and analyze the

monitor results

d. The operator now can see that reports on the Backend reports

application.

Page 13: General HLD Vr.1.2

| Accessibility @ a click

4.2. Private cloud

4.2.1. Site configuration in the Backend subsystem – same as 3.1.1

4.2.2. Publish the new configuration – same as 3.1.2

4.2.3. The batch runs a sync server job periodically that look for new

versions, data and software. When the job detect a new version is

creates update package, encrypts it and put it in the database.

This jobs creation differential updates that relative to the previous

version.

4.2.4. Synchronize the Satellite Manager server with the new site

configuration

The Satellite Manager have several Synchronizers that works in order to

detect new updates

Remote service synchronizer – run periodically and access the

User1st sync end-point (that sits in the Frontend server). When new

updates exist in the database, the synchronizer downloads it.

Folder watcher synchronizer – after the operator published the new

configuration he generate a new package, download it and send it to

the customer in a certain way (TBD later).

More synchronizer will be created according to the customer needs

4.2.5. Publish the package to the Satellite Server

When new package is ready the Manager publishes it to the satellite

manager that was pre-configured. There are several trigger for the

manager to publish the new package.

4.2.6. Make site accessible – same as 3.1.3

4.2.7. Accessibility Monitor

1. Monitor result are sent from the browser to the satellite server

and stored in the memory

Page 14: General HLD Vr.1.2

| Accessibility @ a click

2. Cyclically the manager accesses the satellite server that

configured as monitor result collectors and get monitor results

from the memory aggregate it and send to the User1st Frontend

server.

Full Architecture design

Optional connections:

A. Connection from #10 to #12:

1. IE8 and IE9

2. Use of multiple domain source of CSS and images files

B. Connection of #8 to #3

a. Only for User1st's cloud integration

C. Connection of #13 to #11 (POST)

a. Customers using "User1st-monitoring" solution