Friday, August 14, 2020

Architectural Layers

 Application Architecture is an abstract system specification consisting primarily of functional components described in terms of their behaviors and interfaces and component-component interconnections. 

Each layer in the stack serves as an abstraction to the layer above it. Each layer on the stack must have a set of well defined interfaces that are on the same level of abstraction (that serves some specific purpose). Each layer is responsible for its own sanity check, and typically trusts each of the other layers to do the same unless the data is coming from an external source. Not every layer is used in every transaction. For example, a simple HTML interaction only goes down through the top several layers and then returns. Batch loading from a legacy system may skip several layers. However, if everyone develops their application along a layered architecture then they only have to worry about communication between the layers immediately above and below them. If their layer is sometimes skipped then they must provide a transparent module so the design rule that layers only interact with the layers immediately above and below them remains in effect with few exceptions. Specifying a sequence for top to bottom control flow prevents the problem of cyclic deadlock among objects. Implementation via purchased software packages (even crossing multiple layers) is permitted as long as “wrappers” are coded that can integrate the packaged within the overall architecture and as long as essential administrative control features are present for each layer (e.g. scalable configuration).

Breaking the application architecture into a many layered onion facilitates the adaptability of an application while adding to its complexity. Here is an example that calls out most of the possible layers, starting from the customer interface down to the persistent storage. 

System Layers:

Operations Management
Initialization, Restart, Scalability, Monitor, Fail-over, Accountability
(Communicating Objects)
The below application layers go here
Component Middleware
Messaging, Load Balancing, Reusability, Interoperability
Directory / Security
DNS, LDAP, X.500
Operating System, 
Network Protocol
System Administration
Hardware, Wire, Disks


Application Layers:

Customer
Customer Applications
 & Applets
Browser, Java applet, Legacy system

Communications
HTTP, ftp, telnet, 3270, EDI, VPN, fax

Access
Security, Certification, Firewall, Encryption, Session Closure, Connection Context
Presentation
Native Presentation
Layout XML to: HTML, Character, Record layout, EDI (via Templates+Rules), Validation

Generic Presentation
Semantic XML to Layout XML
Transaction
Workflow Processing
Commerce Events, State Table, Workflow, Job Initiation, Temporal & Priority Control

Application Context


Application Logic
Custom application-specific code goes here
Data
Business Object
Metadata markup, DB Data«Semantic XML,

Semantic Navigation
Ontology, Context, KQML, Semantic Undo

Enterprise Schema
Data Dictionary, Referential Integrity

Data Distribution
Heterogeneous navigation, Scale Redirection, Legacy Redirection

DB Transaction
Stored Procedures, ACID

Data View
SQL, Dataset

Physical Data Stores
Index/Cluster Architecture, Bloom Filter, Encryption, RAID

No comments:

Post a Comment