Industry Practices and Tools ~ article 1

Hey! welcome back to blog session about programming applications and frameworks. From this article series we are going to talk about industry practices and tools. For readers convenience, I divide this article into 2 articles.

Let's get to know about VCS

What is VCS? What is the need for VCS? you know with the time goes, the requirements of the clients are expanding a lot. so they get more complex within the time. therefore they aren't easy to develop once straight forward. as a solution for that these Version Control Systems are invented. They are a Software tool that helps to the developing team to manage end edit the source code within the development phase. It runs on a special kinda database and it keeps the record of the modifications that done by the developers. thus this VCS has its own kind of advantages. They are,


  • developers can turn back the clock
  • compare earlier versions of the code to help fix the mistake
  • minimizing disruption to all team members
You know why are we using this VCS?
  1. collaboration - everybody on the team is able to work absolutely free on any file at any time and merge the changes later on into a common version
  2. Storing versions properly - A version control system acknowledges that there is only one project.
  3. Restoring previous versions - if there a failure occurs developers can restore the previous version and start over.
  4. Understanding what happened - description of the changes
  5. Backup.

Do you know about the models of VCS?

There are 3v types of models in VCS


  1. Local version control system.
  2. Centralized version control systems.
  3. Distributed version control system.
Below table will give you an idea what are these VCSs and what are their pros & cons


pros
Cons
Local Version Control System
·        All the data is in your PC
·        The data you have is more secured
·        Cannot use as a collaborated software development
·        Really old kind of method

Centralized Version Control System

·    Can use for collaborative
    Software development
·        Connected developers get to identify what is going on with the project.
·        Admin has control over the project

·        A single person’s failure can affect the whole server

Distributed Version Control System

·        No single point of failure
·        Client can directly check the repository
·        If a server collapse can be recover again from the client repositories
·        Have the ability to collaborate with different groups and ways mutually






Let's move on to Git

Git is the most popular and most generally used VCS and its a standard for version control too. its a free open source VCS invented for handle every kind of projects with more conveniently and efficiently. There are few key features in git version control,
  • Branching and merging
  • small and fast
  • distributed
  • data assurance
  • staging area
  • free and open source
  • trademark

Then what is GitHub

Image result for github
GitHub is a web-based Git-repository hosting service for version control in the software industry that benefitted via Git. This service offers plans as account based. such as enterprise, team, pro and you can also have a free account and work with the GitHub.




Let's get to know about some GIt commands

  • Repo/Repository - Object database where your history and config are stored and it contains the work tree.
  • Clone - an exact copy of an existing repository.
  • Branch - it is an active line of development which in VCS is just a "label" points to a commit.
  • Commit - the action of saving the commited working to the VCS history.
  • HEAD - its a name to describe the currently checked out commit.
  • tag - a detailed name allocated to the commits that have done.
  • history - define the commits that have already done.
  • version - current version of the project with a specific commit.

This picture will give you a brief idea about the commands that are used in Git






Let's discuss about staging area and Git directory

Staging area simply means a stopping place or assembly point route to a destination. it is a step before the commit process in git. The commit command in git performed in two steps,
  1. Staging commit.
  2. Actual commit.
Just imagine about a fruit container. You can put fruit into the container and can take fruit out of the container. this fruit container represents the staging area of a git. You can create commits here. committing is like sealing the container and labeling the container.


Staging Area



What is Git directory? when you create a git repo, using GitHub, git creates a directory. This Git directory folder contains all the information needed for git to make things done. lest's assume if you want to remove a git from your project, but keep your project files, just delete the git folder. Git directory is a bare repository but without its own working tree.

Related image

What is the collaboration workflow of Git



In terms of GIT process, collaboration is often about branching workflow. Thinking ahead on how you will intertwine commit trees will help you minimize integration bugs and support your release management strategy.
·         Integration branch
·         Topic branch
·         Fork



Let's get to know about CDN

CDN is a Content delivery network. This is a system of distributed services that deliver pages and other useful web content to the user. it based on the geographic locations of the user. This service is effective in speeding the delivery of content of websites with high traffic and websites that have global reach. A CDN allows for the quick transfer of assets needed for loading Internet content including HTML pages, javascript files, stylesheets, images, and videos. The popularity of CDN services continues to grow, and today the majority of web traffic is served through CDNs, including traffic from major sites like Facebook, Netflix, and Amazon.

How these CDNs differ from web hosting servers?

Web hosting is used to host users websites on a server and let users access it over internet and web hosting normally refers to one server. A CDN refers to a global network of edge servers which distributes your own content from a multi-host environment.



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 usersTraditional 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 the assets will load for them.

Commercial CDNs?

CloudFlare

Related imageCloudflare is a popularly known as the best free CDN for word press users







Incapsula

Related imageIncapsula provides application delivery from the cloud. it uses a global content delivery network to provide web application security.




Image result for Swarmify, Inc.

Swarmify

Unlimited video cdn and hosting for business acceleration, player, encoding, video CDN Effortless video platform with unlimited bandwidth, and storage.







Let’s move into identifying the requirements for virtualization

There are four main types of virtualization.
  1. Hardware virtualization - Emulators,VMS (android studio)
  2. OS level virtualization - remote desktop terminals (desktop level virtualization)
  3. Application level virtualization- runtimes(JRE/JVM), engines
  4. Other types of virtualization - network, database


Next focus will be done on discussing and comparing the pros and cons of different virtualization techniques at different levels.


Virtualization has several benefits.
  1. It is cheaper  - virtualization doesn’t require actual hardware components to be used or installed, IT infrastructures find it to be a cheaper system to implement.
  2. Reduces the workload - Many virtualization providers automatically update their hardware and software. They are installed by the third-party provider, instead of sending people to do these updates locally,. So the workload is reduced.
  3. It keeps the cost predictable - Individuals and corporations can have predictable costs for their information technology needs as the third party providers provide virtualization options.
  4. Offers a better uptime - uptime has improved dramatically with the virtualization technology. It is able to identify that even budget-friendly providers offer uptime at 99.99% today.
  5. promotes digital entrepreneurship - Before the large scale virtualization, digital entrepreneurship was quite impossible for a normal person. Yet, thanks to the various platforms and servers, anyone can become a hustler.


The disadvantages.
  1. Can have a high cost of implementation - Even though the cost for an individual or business owner is quite low, the cost for the provider can be high with the required hardware and software installments.
  2. Creates a security risk - “Because data is crucial to the success of a business, it is targeted frequently. For perspective: the chances of being struck by lightning are about 1 in a million. The chances of experiencing a data breach while using virtualization? 1 in 4.” said in Vittana.org
  3. It has limitations - Not all hardware and software can be virtualized as not every application or server is going to work within an environment of virtualization.

After the pros and cons, let’s now move into identifying popular implementations and available tools for the levels of virtualization.

Do you know about The hypervisor and role of it?

The hypervisor, also known as a virtual machine monitor, is a process that creates and runs virtual machines (VMs). 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. Hypervisors make it possible to use more of a system’s available resources and provide greater IT mobility since the guest VMs are independent of the host hardware. This means they can be easily moved between different servers.



Do you know how does the emulation is different from VMs?

Emulation and virtualization carry many similarities, yet they have distinct operational differences. If you’re looking to access an older operating system within a newer architecture, emulation would be your preferred route. Conversely, virtualized systems act independently of the underlying hardware. The purpose of a virtual machine is to create an isolated environment. The purpose of an emulator is to accurately reproduce the behavior of some hardware. 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.


A virtual machine (VM) 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. With containers, instead of virtualizing the underlying computer like a virtual machine (VM), just the OS is virtualized.

Containers sit on top of a physical server and its host OS — typically Linux or Windows.  
The difference between VMs and containers.


Let's check out the differences between VMS & containers/dockers



VMs
Containers
Heavyweight
Lightweight
Startup time in minutes
Startup time in milliseconds
Limited performance
Native performance
Each VM runs in its own OS
All containers share the host OS
Hardware level virtualization
OS virtualization
Allocates required memory
Less memory space required
Fully isolated and hence more secure
Process level isolation, less secure

That's all for this article and I hope you got a lot of knowledge about "Industry practices and tools". Let's Check out more details with the next article... Thank you for reading. Good luck.





Comments

Popular Posts