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)