PROGRAMMING APPLICATIONS AND FRAMEWORKS
Industry Practices and Tools 1
1. What is the need for VCS?
Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to help fix the mistake while minimizing disruption to all team members.
2. Differentiate the three models of VCSs, stating their pros and cons
LOCAL VERSION CONTROL SYSTEMS
In a local version control system, files are simply copied into a separate directory locally. Versions of the same file are stored so as to allow the easy retrieval of any particular version at any point in time. This system is commonly used for small personal projects or files as it provides the facility of versioning your project in an easy manner locally.
Advantages
Easy to set up
Cheap to run
Disadvantages
Error prone
Unsafe (stored locally)
Not suitable for team projects
CENTRALIZED VERSION CONTROL SYSTEMS (CVCS)
If you're working within a team and 2 or more members are working on the same project then you will most likely want the most recent changes committed to the project by other team members to be reflected in your version of the project whenever you wish. A Centralized Version Control system allows for the 'main' version of the project to be stored in one centralized location where each team member can 'check-out' any specific version of the project. After updating the required changes on the project, each member can the 'check-in' the changes back to the centralized repository and the new updates are made available to the rest of the team as explained in the diagram below
Advantages
Reasonably easy to set up
Various options (proprietary and open source)
Allows for file sharings amongst team members
Project is stored on a more reliable server (possibly cloud)
Admin can control the use and structure of the repository
Disadvantages
Single point of failure (if server fails then changes will not be available)
File conflicts due to updates from different people
DISTRIBUTED VERSION CONTROL SYSTEMS (DVCS)
Distributed Version Control Systems aim at solving one of the disadvantages present in the Centralized VCS systems by allowing each and every 'check-out' version to act as a repository source to all other members working on the same project. Whilst this may be more complex to organise as a process, it has the advantage of being more reliable and less dependent on a single central repository. In a distributed VCS, user's don't just check out a version of the file but fully mirror the repository and take a back-up of all the versions available for all the files.
Advantages
Reliable (everyone has a copy of all versions)
Allows for file share among team members
Various Options available
Disadvantages
More complex to use/set up
Heavy on Local Storage
3.Git and GitHub, are they same or different? Discuss with facts
Git and GitHub are different
Git is a tool for implementing a distributed version control system, and GitHub is a service for projects using Git. It is a wrapper built on Git technology with a UI and other functionalities by another third-party firm, it is actually a product owned by somebody or some group based on git technology, whereas it is open source.
Git is the free and open source, small and fast. Also, it performs all operations locally, which increases its speed. In addition, Git locally saves the entire repository to a small file without loss of data quality. It is effective in keeping backups, so there are few cases where someone lost data when using Git. In Git, managing branches is much easier and more efficient. Git is very good for tracking code, but not for design. For that, you can use Github , which uses Git as the s main technology.
GitHub is an online hosting service for repositories. It has all the functions of distributed version control and source control functionality — everything that supports Git and even more. GitHub allows you to share repositories, access other’s repositories, store remote copies of your repositories (GitHub servers) as a backup of your local copies. Developers use GitHub in conjunction with Git as it allows to save their code online.
4. Compare and contrast the Git commands, commit and push
Basically
5. Discuss the use of staging area and Git directory
Staging area
There are many uses of staging in git
Git directory
The Git directory is where Git stores the metadata and object database for your project. 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
6. Explain the collaboration workflow of Git, with example
Gitflow Workflow is a Git workflow design that was first published and made popular by Vincent Driessen at nvie. The Gitflow Workflow defines a strict branching model designed around the project release. This provides a robust framework for managing larger projects
7. Discuss the benefits of CDNs
8. How CDNs differ from web hosting servers
Differences Between CDNs and Web Hosting
9. Identify free and commercial CDNs
Commercial CDNs
Free SDNs
Virtualization is the process of creating a software-based, or virtual, representation of something, such as virtual applications, servers, storage and networks. It is the single most effective way to reduce IT expenses while boosting efficiency and agility for all size businesses.
Benefits of Virtualization
Virtualization can increase IT agility, flexibility and scalability while creating significant cost savings. Greater workload mobility, increased performance and availability of resources, automated operations – they’re all benefits of virtualization that make IT simpler to manage and less costly to own and operate. Additional benefits include:
11. Discuss and compare the pros and cons of different virtualization techniques in different levels
12. Identify popular implementations and available tools for each level of visualization
Storage virtualization
Pros
Pros
Popular Tools
13. 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. Multiple instances of a variety of operating systems may share the virtualized hardware resources: for example, Linux, Windows, and macOS instances can all run on a single physical x86 machine. This contrasts with operating-system-level virtualization, where all instances (usually called containers) must share a single kernel, though the guest operating systems can differ in user space, such as different Linux distributions with the same kernel
15. Compare and contrast the VMs and
containers/dockers, indicating their advantages and disadvantages
What are VMs?
The concept of a virtual machine is simple, really: it’s a virtual server that emulates a hardware server. A virtual machine relies on the system’s physical hardware to emulate the exact same environment on which you install your applications. Depending on your use case, you can use a system virtual machine (that runs an entire OS as a process, allowing you to substitute a real machine for a virtual machine), or process virtual machines that let you execute computer applications alone in the virtual environment.
Industry Practices and Tools 1
1. What is the need for VCS?
Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to help fix the mistake while minimizing disruption to all team members.
2. Differentiate the three models of VCSs, stating their pros and cons
LOCAL VERSION CONTROL SYSTEMS
In a local version control system, files are simply copied into a separate directory locally. Versions of the same file are stored so as to allow the easy retrieval of any particular version at any point in time. This system is commonly used for small personal projects or files as it provides the facility of versioning your project in an easy manner locally.
Advantages
Easy to set up
Cheap to run
Disadvantages
Error prone
Unsafe (stored locally)
Not suitable for team projects
CENTRALIZED VERSION CONTROL SYSTEMS (CVCS)
If you're working within a team and 2 or more members are working on the same project then you will most likely want the most recent changes committed to the project by other team members to be reflected in your version of the project whenever you wish. A Centralized Version Control system allows for the 'main' version of the project to be stored in one centralized location where each team member can 'check-out' any specific version of the project. After updating the required changes on the project, each member can the 'check-in' the changes back to the centralized repository and the new updates are made available to the rest of the team as explained in the diagram below
Advantages
Reasonably easy to set up
Various options (proprietary and open source)
Allows for file sharings amongst team members
Project is stored on a more reliable server (possibly cloud)
Admin can control the use and structure of the repository
Disadvantages
Single point of failure (if server fails then changes will not be available)
File conflicts due to updates from different people
DISTRIBUTED VERSION CONTROL SYSTEMS (DVCS)
Distributed Version Control Systems aim at solving one of the disadvantages present in the Centralized VCS systems by allowing each and every 'check-out' version to act as a repository source to all other members working on the same project. Whilst this may be more complex to organise as a process, it has the advantage of being more reliable and less dependent on a single central repository. In a distributed VCS, user's don't just check out a version of the file but fully mirror the repository and take a back-up of all the versions available for all the files.
Advantages
Reliable (everyone has a copy of all versions)
Allows for file share among team members
Various Options available
Disadvantages
More complex to use/set up
Heavy on Local Storage
3.Git and GitHub, are they same or different? Discuss with facts
Git and GitHub are different
Git is a tool for implementing a distributed version control system, and GitHub is a service for projects using Git. It is a wrapper built on Git technology with a UI and other functionalities by another third-party firm, it is actually a product owned by somebody or some group based on git technology, whereas it is open source.
Git is the free and open source, small and fast. Also, it performs all operations locally, which increases its speed. In addition, Git locally saves the entire repository to a small file without loss of data quality. It is effective in keeping backups, so there are few cases where someone lost data when using Git. In Git, managing branches is much easier and more efficient. Git is very good for tracking code, but not for design. For that, you can use Github , which uses Git as the s main technology.
GitHub is an online hosting service for repositories. It has all the functions of distributed version control and source control functionality — everything that supports Git and even more. GitHub allows you to share repositories, access other’s repositories, store remote copies of your repositories (GitHub servers) as a backup of your local copies. Developers use GitHub in conjunction with Git as it allows to save their code online.
4. Compare and contrast the Git commands, commit and push
Basically
git commit "records changes to the repository" while git push "updates remote refs along with associated objects". So the first one is used in connection with your local repository, while the latter one is used to interact with a remote repository5. Discuss the use of staging area and Git directory
Staging area
There are many uses of staging in git
- staging helps you split up one large change into multiple commits'
- staging helps in reviewing changes
- staging helps when a merge has conflicts
- staging helps you keep extra local files hanging around
- staging helps you sneak in small changes
Git directory
The Git directory is where Git stores the metadata and object database for your project. 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
6. Explain the collaboration workflow of Git, with example
Gitflow Workflow is a Git workflow design that was first published and made popular by Vincent Driessen at nvie. The Gitflow Workflow defines a strict branching model designed around the project release. This provides a robust framework for managing larger projects
- Performance : reduced latency and minimized packet loss
- Scalability : automatically scale up for traffic spikes
- SEO Improvement: benefit from the Google SEO ranking factor
- Reliability: automatic redundancy between edge servers
- Lower Costs: save bandwidth with your web host
- Security: KeyCDN mitigates DDoS attacks on edge servers
8. How CDNs differ from web hosting servers
Differences Between CDNs and Web Hosting
- 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.
- Traditional web hosting would deliver 100% of your content to the user. If they are located across the world, the user still must wait for the data to be retrieved from where your web server is located. A CDN takes a majority of your static and dynamic content and serves it from across the globe, decreasing download times. Most times, the closer the CDN server is to the web visitor, the faster assets will load for them.
- 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.
9. Identify free and commercial CDNs
Commercial CDNs
- Chrome Frame
- Dojo Toolkit
- Ext JS
- jQuery
- jQuery UI
- MooTools
- Prototype
Free SDNs
- Google CDN
- Microsoft Ajax CDN
- Yandex CDN
- jsDelivr
- cdnjs
- jQuery CDN
Virtualization is the process of creating a software-based, or virtual, representation of something, such as virtual applications, servers, storage and networks. It is the single most effective way to reduce IT expenses while boosting efficiency and agility for all size businesses.
Benefits of Virtualization
Virtualization can increase IT agility, flexibility and scalability while creating significant cost savings. Greater workload mobility, increased performance and availability of resources, automated operations – they’re all benefits of virtualization that make IT simpler to manage and less costly to own and operate. Additional benefits include:
- Reduced capital and operating costs.
- Minimized or eliminated downtime.
- Increased IT productivity, efficiency, agility and responsiveness.
- Faster provisioning of applications and resources.
- Greater business continuity and disaster recovery.
- Simplified data center management.
- Availability of a true Software-Defined Data Center..
11. Discuss and compare the pros and cons of different virtualization techniques in different levels
1.Hardware Virtualization
Hardware virtualization leverages virtualization features built into the latest generations of CPUs from both Intel and AMD. These technologies, known as Intel VT and AMD-V respectively, provide extensions necessary to run unmodified guest virtual machines without the overheads inherent in full virtualization CPU emulation. In very simplistic terms these new processors provide an additional privilege mode above ring 0 in which the hypervisor can operate essentially leaving ring 0 available for unmodified guest operating systems.
VMs, emulators
2.OS level virtualization (Desktop virtualization)
- Remote desktop terminals
3.Application level virtualization
- Runtimes (JRE/JVM, .NET)
- engines (games engines)
4.Containerization (also OS/application level)
- Dockers
5.Shared kernel virtualization
Shared kernel virtualization (also known as system level or operating system virtualization) takes advantage of the architectural design of Linux and UNIX based operating systems. In order to understand how shared kernel virtualization works it helps to first understand the two main components of Linux or UNIX operating systems. At the core of the operating system is the kernel. The kernel, in simple terms, handles all the interactions between the operating system and the physical hardware. The second key component is the root file system which contains all the libraries, files and utilities necessary for the operating system to function. Under shared kernel virtualization the virtual guest systems each have their own root file system but share the kernel of the host operating system
6.Kernel Level Virtualization
Under kernel level virtualization the host operating system runs on a specially modified kernel which contains extensions designed to manage and control multiple virtual machines each containing a guest operating system. Unlike shared kernel virtualization each guest runs its own kernel, although similar restrictions apply in that the guest operating systems must have been compiled for the same hardware as the kernel in which they are running. Examples of kernel level virtualization technologies include User Mode Linux (UML) and Kernel-based Virtual Machine (KVM).
12. Identify popular implementations and available tools for each level of visualization
Storage virtualization
Pros
- Cost-effective in terms of not having to purchase as must additional software
- The same amount of work can be completed with less servers since they are effectively working together
- less energy use
- more disk space
- often violates licensing agreements
- Reduced coasts and increases in disk space can encourage people to increase the number of servers , creating server sprawl, in witch there are too many servers to be managed
- if one system fails , they all fail
- the network system is much more complicated
- Tintri VMstore
- Infinio Accelerator
- Condusiv Technology V_locity
- Pure Storage Flass Array
Pros
- Access Anywhere. A well set up system lets your employees access their work desktop from pretty much anywhere. This saves on costs (not having to purchase multiple licenses for employees with, say, a desktop and a laptop), as well as makes employees not in the office more productive.
- Security and Reliability. A DaaS setup lets you keep an eye on security and reduce maintenance costs by only having one central point that needs patching, upgrading, and maintenance
- Uniformity and Control. Since the desktop image is shared by all (or most), you have a lot of control with what is available, what can be installed, and what can be put where. That level of control is much more difficult on individual machines
- Ability to Switch Environments on the Fly. If you have employees who might need to use multiple environments, Linux and Windows for example, or two different versions of Windows, a DaaS set-up allows you to offer both and let employees use them interchangeably.
- Usually requires network access. Employees who can’t get online can’t work, so Internet/network connectivity issues can wipe out productivity across entire departments.
- Single Failure Point. Unlike the distributed desktop model where the loss or failure of one PC is contained, if your DaaS server or provider goes down or becomes compromised, EVERYONE in your organization can be down or compromised.
- Multiple Use Cases Require Multiple Images. Having users who need different environments and different default settings can require having multiple images stored on your central server, and that can quickly overrun your space availability and get expensive.
- Long-term ROI. Most experts and consultants agree that the ROI benefits of DaaS systems are long-term prospects. You won’t be seeing an immediate return like with server virtualization or other outsourcing methods.
Popular Tools
- Citrix XenDestop
- Microsoft Enterprises Desktop virtualization
- Sloid ICE
- webOS
- Pano Logic virtual Desktop solution
13. 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. Multiple instances of a variety of operating systems may share the virtualized hardware resources: for example, Linux, Windows, and macOS instances can all run on a single physical x86 machine. This contrasts with operating-system-level virtualization, where all instances (usually called containers) must share a single kernel, though the guest operating systems can differ in user space, such as different Linux distributions with the same kernel
14. How does the emulation is different from VMs
The diagram below illustrates how a Java based PC emulator fits into the hierarchy of programs that uses the real computer's hardware. The real operating system is installed on the real hardware, and the JVM is installed on top of the real operating system. JPC emulates a layer of virtual hardware onto which another operating system and
associated software can be installed.
Virtualization
Virtualization involves simulating parts of a computer's hardware - enough for a guest operating system to run unmodified - but most operations still occur on the real hardware for efficiency reasons. Virtualization therefore is normally faster than emulation but the real system has to have an architecture identical to the guest system. For example, VMWare can provide a virtual environment for running a virtual WindowsXP machine "inside" a real one. However VMWare cannot work on any real hardware other than a real x86 PC.Emulation
In emulation the virtual machine simulates the complete hardware in software. This allows an operating system for one computer architecture to be run on the architecture that the emulator is written for.The diagram below illustrates how a Java based PC emulator fits into the hierarchy of programs that uses the real computer's hardware. The real operating system is installed on the real hardware, and the JVM is installed on top of the real operating system. JPC emulates a layer of virtual hardware onto which another operating system and
associated software can be installed.
Virtualization
15. Compare and contrast the VMs and
containers/dockers, indicating their advantages and disadvantages
What are VMs?
The concept of a virtual machine is simple, really: it’s a virtual server that emulates a hardware server. A virtual machine relies on the system’s physical hardware to emulate the exact same environment on which you install your applications. Depending on your use case, you can use a system virtual machine (that runs an entire OS as a process, allowing you to substitute a real machine for a virtual machine), or process virtual machines that let you execute computer applications alone in the virtual environment.
Advantage of VMs
- All OS resources available to apps
- Established management tools
- Established security tools
- Better known security controls
Popular VM Providers
- VMware vSphere
- Virtual Box
- Xen
- Hyper-V
- KVM
What are Containers?
Containers is an open source project that offers a software development solution known as containers. To understand Docker, you need to know what containers are. According to Docker, a container is ” a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it.” And since containers are platform-independent, Docker can run across both Windows- and Linux-based platforms. In fact, Docker can also be run within a virtual machine if need be. The main purpose of Docker is that it lets you run micro service applications in a distributed architecture.
Advantage of containers
- Reduced IT management resources
- Reduced size of snapshots
- Quicker spinning up apps
- Reduced & simplified security updates
- Less code to transfer, migrate, upload workloads
Popular Container Providers
- Linux Containers
- LXC
- LXD
- CGManager
- Docker
- Windows Server Containers



















Comments
Post a Comment