Friday, February 22, 2019

VERSION CONTROLLING SYSTEMS (VCS)


What is the need for VCS? 


Version control systems are a category of software tools that help a software team to manage changes to source code overtime.


Version control helps teams solve many kind of problems, tracking every individual change by each contributor and helping prevent concurrent work from conflicting. Changes made in one part of the software can be incompatible with those made by another developer working at the same time.



Differentiate the three models of VCSs


  • Local version control systems :

      →Oldest VCS
      →Cannot be used for collaborative software development


  • Centralized version control systems :
      →Can be used for collaborative software development 
      →single point of failure that the centralized server                         represents


  • Distributed Version Control Systems :
      →Can collaborate with different groups of people in                      different ways  simultaneously within the same project
      No single point of failure




Git and GitHub, are they same or different?

Git is a revision control system, a tool to manage your source code history. 
➨Focused on version control and code sharing.
➨Primarily a command-line tool.
➨provides a desktop interface named Git Gul.
➨No user management features.

GitHub is a hosting service for Git repositories.


➨Focused on centralized source code hosting.
➨Administered through the web.
➨Desktop interface named GitHub desktop.
➨Built-in user management
So they are not the same thing .
(Git is the tool, GitHub is the service for projects that use Git.)



Compare and contrast the Git commands, commit and push

Git is a distributed version control system
commit: adding changes to the local repository

push: to transfer the last commit(s) to a remote server 
  (git push update the remote repository with your local             changes.)



Discuss the use of staging area and Git directory


staging area

staging area is an intermediate storage area used for data processing during the extract, transform and load (ETL) process. The data staging area sits between the data source(s) and the data target(s).

  • Helps you split up one large change into multiple commit

  • Helps in reviewing changes
  • Helps when a merge has conflicts
  • Helps you keep extra local files hanging around
  • Helps you sneak in small changes
Git directory

This is the most important part of Git, and it is what is copied when you clone a repository from another computer. The working directory is a single checkout of one version of the project. These files are pulled out of the compressed database in the Git directory and placed on disk for you to use or modify.


Explain the collaboration workflow of Git, with example

A Git Workflow is a recipe or recommendation for how to use          Git to accomplish work in a consistent and productive           manner. Git workflows encourage users to leverage Git       effectively and consistently.

Discuss the benefits of CDNs(CONTENT DELIVERY  NETWORK) 


  •  is a geographically distributed network of   proxy servers    and their data centers.

Improving website load times
➨Reducing bandwidth costs
➨Increasing content availability and redundancy
➨Improving website security
➨Performance: reduced latency and minimized packet loss
➨Scalability: automatically scale up for traffic spikes
➨Reliability: automatic redundancy between edge servers

➨Lower Costs: save bandwidth with your web host


 How CDNs differ from web hosting       servers? 



  1. Web Hosting is used to host your website on a server and let users access it over the internet. A content delivery network is about speeding up the access/delivery of your website’s assets to those users.
  2. Web Hosting normally refers to one server. A content delivery network refers to a global network of edge servers which distributes your content from a multi-host environment.

Identify free and commercial CDNs 

free CDNs 

  • Google CDN
  • Microsoft Ajax CDN
  • jsDelivr
  • jQuery CDN
  • Yandex CDN

commercial CDNs
  • Chrome frame
  • jQuery
  • jQuery UI
  • Prototype
  • Dojo Toolkit

Discuss the requirements for virtualization



virtualization is the process of creating a software-based, or virtual, representation of something,such as virtual applications,servers,storage and networks.It is single most effective way to reduce IT expenses while boosting efficiency for all size bussinesses. 


Discuss and compare the pros and cons of different virtualization techniques in different levels.

Hardware virtualization

➜Hardware virtualization or platform virtualization refers to the creation of a virtual machine that acts like a real computer with an operating system.

OS level virtualization  

➜Remote desktop terminals

Application level virtualization 

➜Runtimes(JRE/JVM , NET)
➜engines


Containerization 

➜Dockers


Identify popular implementations and available tools for each level of visualization 



Storage virtualization
pros

  • less energy use
  • More disk space
  • Cost-effective in terms of not   having to purchase as most     additional software

cons

  • Network system is much more complicated
  • Often violates licensing agreements
  • If one system fails,all are fail


popular tools

  • Tintri VMstore
  • Pure Storage Flash Array
  • Infinio Accelerator
  • Condusiv Technology V_locity





What is the hypervisor and what is the role of it? 

hypervisor or virtual machine monitor (VMM) is computer softwarefirmware or hardware that creates and runs virtual machines. A computer on which a hypervisor runs one or more virtual machines is called a host machine, and each virtual machine is called a guest machine. The hypervisor presents the guest operating systems with a virtual operating platform and manages the execution of the guest operating systems.




How does the emulation is different from VMs? 
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.



Compare and contrast the VMs and containers/dockers, indicating their advantages and disadvantages



VMs
➨Heavyweight
➨Limited performance
➨Each VM runs in its own OS
➨Hardware-level virtualization
➨Allocates required memory
➨Startup time in minutes

Advantages:
  • All OS resources available to apps
  • Established management tools
  • Established security tools
  • Better known security controls
  • Easy maintenance, application provisioning, availability and convenient recovery.
  • Virtual machine can offer an instruction set architecture that differs from real computer's.
Disadvantages:
  • Virtual machine is not that efficient as a real one when accessing the hardware.
  • When multiple virtual machines are simultaneously running on a host computer, each virtual machine may introduce an unstable performance, which depends on the workload on the system by other running virtual machines.
containers
➨Lightweight
➨Native performance
➨All containers share the host OS
➨OS virtualization
➨Requires less memory space
➨Startup time in milliseconds

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

  • Containers don't run at bare-metal speeds.
  • Graphical applications don't work well
  • The container ecosystem is fractured
  • Not all applications benefit from containers.


No comments:

Post a Comment