Industry Practices and Tools

 What is Version Control?

It is a category of Software tools that helps the Software team to manage the changes made to the source code of the software overtime. Because it is difficult to make a perfect software at once and update overtime.


Models of Version Control.

Local Version Control System.

This is type of Oldest Version Control System.
This is a simple method.
This done by copying all the necessary files to the another directory.

Centralized Version Control System.

Many people can collaborate in developing the system .
Every one knows where the software is and it progress.
Single server contains all the files and versioned files people can access them using that single server.
Administrator have gained the control over, who can do what.
 
Drawbacks:-
The work in progress or files can be lost if the main database get damaged or corrupted, because all files are in a single server.
Single point of failure can effect the whole system.

Distributed Version Control System.

No single point of failures.
The files located in several servers, so any loss of files they can restored using the backup files stored in other servers.
Many people can work in the same project development process simultaneously.
Allows to setup several workflows that aren't allowed in the centralized system.


Git and GitHub

Git

Git is distributed version control tool that helps to manage the development projects source code history. It is opensource development tool that can be installed locally to mange the source code.

It mainly focus on version control and code sharing.
It is primarily command line tool.
No user management features.
Provide desktop interface Git Gui.
Minimal external tool configuration features


GitHub

 GitHub is a cloud based built around Git tool. It is and online service that stores code pushed to it from the computers running Git tool.

Hosted in cloud
Focused on centralized source code hosting
Administered through the web
Desktop interface named GitHub on desktop
Built in user management features
Active market place tool for integration


Git Commands

Commit

 Commit commits changes to the local repository.
Git Commit record the changes to local repository

Push

Push will push the changes up to remote repository
Git Push update the remote repository with your local changes.

Git Staging Area

Staging is a step before the commit process in git
That is commit in Git is performed in two steps.
Staging
Actual Commit.

As long as a change set is in the staging area, git allows you to edit it as you like (replace staged files with other versions of staged files, remove changes from staging, etc.).


Git Directories

Git directory is a bare repository (without its own working tree), that is typically used for exchanginh histories with others by pushing into it and fetching from it.

Collaboration of Workflow

Git workflow is a recipe or recommendation for how to use Git to accomplish work in productive and consistent manner.  This is used to enhance the effectiveness of your team and not be a burden that limits productivity. Some things to consider when evaluating a Git workflow are:
  • Does this workflow scale with team size?
  • Is it easy to undo mistakes and errors with this workflow?
  • Does this workflow impose any new unnecessary cognitive overhead to the team?


Content Delivery Network

Content delivery network refers to a geographical distributed group of servers which work together to provide fast delivery of internet content. A CDN allows for the quick transfer of assets needed for loading Internet content including HTML pages, javascript files, stylesheets, images, and videos.

Content owners such as media companies and e-commerce vendors pay CDN operators to deliver their content to their end users. In turn, a CDN pays ISPs, carriers, and network operators for hosting its servers in their data centers.

A CDN is a global network of edge servers which distributes your content from a multi-host environment.


Benefits of Content Delivery Network

Improve website loading times.
Reduce bandwidth cost.
Increase content availability and redundancy
Improve website security


Free CDNs:- Cloudfare
                      Incapsula
                      Photon by Jetpack
                      Swarmify
                      AWS cloudfront
                      Google Cloud CDN

Commercial CDNs:-  Akamai Technologies
                                   Amazon CloudFront.
                                   Aryaka.
                                   Azure CDN.
                                   BelugaCDN.
                                   CacheFly.
                                   CDNetwork.

Virtualization

In computing, virtualization means to create a virtual version of a device or resource, such as a server, storage device, network or even an operating system where the framework divides the resources into one or more execution environments.

Different types of Virtualization techniques.

Application level Virtualization

  Application virtualization allows the computing resources to be distributed dynamically in real time. With application virtualization, each application brings down its own set of configurations on demand, and executes in a way so that it sees only its own settings.

Programming Language level Virtualization

  In operating-system-level virtualization, a physical server is virtualized at the operating system level, enabling multiple isolated and secure virtualized servers to run on a single physical server.

 Virtualization at Operating System Level

 Operating system which the kernel allows the existence of multiple isolated user space instance. Such instance called containers. 

Virtualization at Hardware Abstraction Layer  Level

  In computers, a hardware abstraction layer (HAL) is a layer of programming that allows a computer operating system to interact with a hardware device at a general or abstract level rather than at a detailed hardware level.

Virtualization at Instruction Set Architecture Level

 Instruction set virtualization emulates the instruction set of one processor type by hardware, firmware and/or software running on a different processor type. It can apply emulation to individual programs or on entire virtual machines.


Hyper visor and its role 

Hyper visor is a function which abstract and isolate operating systems and applications from the underlying computer hardware. This abstraction allows to the underlying host machine hardware to independently operate one or more virtual machines as guest.

Difference between Emulation and Virtual Machine

 Virtual machines make use of CPU self-virtualization, to whatever extent it exists, to provide a virtualized interface to the real hardware.

  Emulators emulate hardware without relying on the CPU being able to run code directly and redirect some operations to a hypervisor controlling the virtual container.


Difference between Containers and  Virtual Machines

 A virtual machine is an emulation of a computer system. Put simply, it makes it possible to run what appear to be many separate computers on hardware that is actually one computer.

  • All OS resources available to apps
  • Established management tools
  • Established security tools
  • Better known security controls


In containers, instead of virtualizing the underlying computer like a virtual machine (VM), just the OS is virtualized.

  • Reduced IT management resources
  • Reduced size of snapshots
  • Quicker spinning up apps
  • Reduced & simplified security updates
  • Less code to transfer, migrate, upload workloads

               

Comments

Popular posts from this blog

What Is Programming

Distrbuted Systems

Client Side Development 2 - RiWAs