VERSION CONTROLLING SYSTEMS (VCS)
What is the need for VCS?
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
- Distributed Version Control Systems :
→Can collaborate with different groups of people in different ways simultaneously within the same project
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.)
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.)
staging area
A 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).
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.➨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 systemcommit: 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
A 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
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.
- 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?
- 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.
- 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.
- Google CDN
- Microsoft Ajax CDN
- jsDelivr
- jQuery CDN
- Yandex CDN
commercial CDNs
- Chrome frame
- jQuery
- jQuery UI
- Prototype
- Dojo Toolkit
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?
A hypervisor or virtual machine monitor (VMM) is computer software, firmware 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.
- 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.
➨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
- 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.























