Sunday, November 25, 2018

Fault domain and update domain with Azure

Both are availability settings.
It ensures availability of virtual machines during unforeseen situations or during upgrades.

Fault domain:

  • Fault domain is racks of computers.
  • Set of hardware components that share a single point of failure
  • In a data center, rack of computers can be fault domain, which might be sharing same power source or network connection
  • To minimize impact of possible hardware failure, Microsoft Azure deploys instances to at least 2 or more fault domains

Update domain:
  • Upgrade domain keep your application running during upgrades
  • Take down instances one by one, so that at any given time at least one running instance serving request
  • There will be 5 upgrade domains by default, it can increase up to 21

Conclusion
  • Fault domain - for unplanned failures
  • Update domain - for planned maintenance operations

References:

Sunday, September 23, 2018

Introduction to Microst Azure Cloud Services

Prerequisites:


Getting started:

  1. VS 2015 (Enterprise)  > New Project > Microsoft Azure Cloud Services
  2. Select ASP.NET Web Role 
  3. Select "MVC" as template

Microsoft Azure Compute Emulator:
It helps to test Azure Cloud Services locally


Types of Web Role:
  1.  ASP.NET Web Role  (service with a web user interface)
  2.  WCF Service Web Role (web role for WCF Service)
  3.  Worker Role (background processing Service)
  4.  Worker Role with service Bus Queue

Difference between Cloud Service and Web Role:
  • Cloud service is a container or a boundary or a box, which can put different services.
  • We can add different web role into a cloud service

Reference:

Monday, September 10, 2018

Kanban


  • Kanban is a Japanese word which means signboard/billboard (Kan = Visual, ban=board)
  • Kanban was widely used in manufacturing
  • It is first introduced in mid 20th Centuary in Toyota production system (Taiichi Ohno)


Advantage of using Kanban

  • Improve quality in work
  • Reduction of wasted effort
  • Faster turnaround
  • Identification & Elimination of bottlenecks
  • Improved teamwork

Kanban Board or Iteration Board
  • Backlog (New)
  • Active
  • Closed

How Git works


1. Create a "repository" with hosting tool (GitHub)
Note: Use Github for creating repository - https://github.com/nidhisht/MyFirstRepository
2. Clone (copy) repository to your local machine
$git init
$git clone https://github.com/nidhisht/MyFirstRepository
3. Add a file to local repository and "commit" (save) changes
$git commit -a
4. "Push" your changes to master branch
$git push
5. Change the file in hosting tool and "commit"

6. "Pull" changes to your local machine
$git pull

Reference: https://www.atlassian.com/git

Example:
git init
git clone https://github.com/nidhisht/SampleRepository.git
git add .
git commit -m "first commit"
git push origin master

Git Basics

Git
  • Open source
  • Distributed 
  • Version control system
  • Tool to manage source code history

Difference with TFS
  • TFS is a centralized version control system, where as Git is distributed version control system

GitHub
  • is a hosting service for Git repositories
  • can host and review code, manage projects and build software
  • GitHub is free for public and open source projects
  • GitHub charges for private repositories

Bitbucket
  • is a hosting service for Git repositories
  • provides free unlimited repositories
  • Jira software integration
  • supports Mercurial in addition to Git repositories

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)

Tuesday, March 13, 2018

Getting started with Entity Framework 6


  • Entity Framework is ORM from Microsoft
  • ORM - Object Relation Mapper
  • Entity Framework introduced in 2008
  • It was ADO and ADO.NET prior to EF
  • Domain classes
  • Code first, database first
  • Visual designer (edmx)
  • POCO - Plain Old CLR Object
  • Entity Framework 6 is backward compatible
  • Enti
  • Entity Framework 7 is NOT backward compatible
  • Entity Framework support non relational data