Sunday, June 17, 2018

Multi-tenancy


  • Multi-tenancy is an architecture in which a single instance of a software application serves multiple customers. 
  • Health Level-7 or HL7 refers to a set of international standards for transfer of clinical and administrative data between software applications used by various healthcare providers.

Architecture Concerns


  1. Scalability: how many users or transactions can it process concurrently?
  2. Performance: how fast does it respond? what is the max throughput?
  3. Recoverability: how does the application recover from a fault?
  4. Security: can it sustain attacks? is data protected?
  5. Maintainability: how easy is it to maintain?
  6. Operability: how easy is it to use and managed? how is it operated?
  7. Availability: is it available 24x7? and is it 99.9% or 99.99%?


Scalability
  • Horizontal and Vertical Scalability
  • Vertical: Add resources to a single computer (more CPU/RAM). vertical scaling is cheaper
  • Horizontal: Add more boxes of similar memory & CPU

Performance
  • Parallel Processing, Asynchronous Processing, Caching, multithreading

Recoverability
  • Session replication - ability to replicate the user sessions to a secondary server in the cluster
  • Backup
  • Business Continuity or Disaster Recovery Infrastructure Requirements  

Security
  •  Authentication & Authorization (LDAP, single sign-on), encryption

Maintainability 
  • Application complexity has direct correlation to maintainability. It is relatively easy to maintain a system with less dependencies.
  • Logging
  • Robust Error Handling - will keep the system's availability & uptime high
  • No direct access to server
  • Layered web application is easy to maintain. but multi-threaded application is hard to maintain
  • KISS (simple design)

Operability
  • Understands the purpose of the system
  • Ask users what they really want and design accordingly
  • Consistency - standard look & feel

Availability
  • Is the amount of time that the system is up and running
  • Robust Error Handling - will keep the system's availability & uptime high
  • Backups & recovery
  • Fault recovery
Backward error recovery (implementing transactions)
System is restored to a previous known valid state
  • Exception Handling 

Architecture Principles


  1. DRY ("Don't Repeat Yourself")
  2. KISS ("Keep It Short & Simple")
  3. Fit for Purpose (no gold plating)
  4. Black Box (implementation details should be hidden from inside)
  5. Divide & Conquer (Separating Responsibilities. mvc/layering)
  6. Prepare for Failure (designed to tolerate failure)

Blueprints


  • Decomposing system in to parts. 
  • What capability each part delivers, and what capability each part must leverage
  • Architect work with customer to determine requirement, based on req - he has the vision of high level components & he develops blueprints
  • Blueprint helps architects to communicate with various stakeholders

Architecture Strawman


  • Is an early representation of the key elements and concepts 
  • It does not contain all the levels of detail you can think of
  • It will be replaced by TA blueprints

Architecture Patterns


  • Architecture Patterns are broader, and can be used from the Solution phase on
  • Architectural patterns are high-level strategies that concerns large-scale components
  • Design patterns are solutions to software design problems

  • Example: MVC, MVVM, Layered Architecture (UI, BL, DAL etc)