Mukesh Patel School of Technology Management & Engineering
INTERIM REPORT-TECHNICAL INTERNSHIP PROGRAM 2015
Karan Aggarwal
MBA Tech. IT 3rd Year
Roll no: I003 SAP ID: 71110120002
Intern at:
T-14, Sej Plaza , Marve Road, Malad (West), Mumbai- 400 064. Maharashtra, India.
Faculty mentor:
Ms. Ruchi Sharma
Project on:
1
“Automation of cloud infrastructure
and application deployment”
Project mentor-
Mr. Ankur Pandey
A report submitted as part of Technical Internship
Program (TIP) in partial fulfillment of 5 years integrated
MBA Tech. (Information Technology) program of Mukesh
Patel School of Technology Management & Engineering,
SVKM’s NMIMS University, Mumbai.
Table of contents
1 Company Profile................................................................................................................................................................ 4
2 Abstract................................................................................................................................................................................. 6
2.1 Characteristics.......................................................................................................................................................... 7
2.2 Service models..........................................................................................................................................................7
2.3 Why cloud services are popular?.....................................................................................................................8
2.4 Deployment of cloud services:.......................................................................................................................... 9
2.5 Relevance of project topic and goal:............................................................................................................10
3 Scheduled Updates........................................................................................................................................................ 11
4 Technical Background..................................................................................................................................................14
4.1 PYTHON.................................................................................................................................................................... 14
4.2 UBUNTU.................................................................................................................................................................... 15
4.3 GIT............................................................................................................................................................................... 15
4.4 FLASK......................................................................................................................................................................... 16
4.5 NGINX........................................................................................................................................................................ 16
4.6 AMAZON WEB SERVICES..................................................................................................................................17
5 References......................................................................................................................................................................... 18
1 Company Profile
Ambab is a leading Internet and mobility engineering company
headquartered at Mumbai, with offices across Hyderabad, Delhi, London
and New York City. Ambab is a team of 140+ smart, talented, and yet
humble engineers, designers and product architects who are excited
about businesses to operate web scale.
The company builds cutting edge products for web, mobile, and really
anything on the internet. As a business builder, Ambab partners with the
best entrepreneurs, enterprise globally to build their digital footprints
from scratch. Ambab helps them ramp on-demand extending Omni
channel technology, go to market operations, content marketing and
deep business analytic at every step. Engineering of complicated
problems begins at the product design level. Great products are built
using the best blend of people, process and platform. With over decade
long experience, Ambab is well equipped to engineer the right products
for every business needs.
Track record since inception in 2008 consists of around a 100 projects
incubated 2 development centers and 140+ engineers harbored.
The major clientele of the company can be summed up as:
While already being equipped with exhaustive implementation
knowledge regarding various new age solution development
technologies like cloud computing, PHP, java-script, HTML, CSS, git,
NGINX, Apache, Flask, the company is also planning to diversify into
mobile phone solutions in the recent future. It is also currently working
on an in-house mobile application e-commerce project named
“PRETERSHOP”.
2 Abstract
Cloud computing is the delivery of computing services over the Internet.
Cloud services allow individuals and businesses to use software and
hardware that are managed by third parties at remote locations.
Examples of cloud services include online file storage, social networking
sites, webmail, and online business applications. The cloud computing
model allows access to information and computer resources from
anywhere that a network connection is available. Cloud computing
provides a shared pool of resources, including data storage space,
networks, computer processing power, and specialized corporate and
user applications.
The following definition of cloud computing has been developed by the
U.S. National Institute of Standards and Technology (NIST):
“Cloud computing is a model for enabling convenient, on-demand network
access to a shared pool of configurable computing resources (e.g.,
networks, servers, storage, applications, and services) that can be rapidly
provisioned and released with minimal management effort or service
provider interaction.”
This cloud model promotes availability and is composed of five essential
characteristics, three service models, and certain deployment models.
2.1 Characteristics
The characteristics of cloud computing include on-demand self service,
broad network access, resource pooling, rapid elasticity and measured
service. On-demand self service means that customers (usually
organizations) can request and manage their own computing resources.
Broad network access allows services to be offered over the Internet or
private networks. Pooled resources means that customers draw from a
pool of computing resources, usually in remote data centers. Services can
be scaled larger or smaller; and use of a service is measured and
customers are billed accordingly.
2.2 Service models
The cloud computing service models are Software as a Service (SaaS),
Platform as a Service (PaaS) and Infrastructure as a Service (IaaS). In a
Software as a Service model, a pre-made application, along with any
required software, operating system, hardware, and network are
provided. In PaaS, an operating system, hardware, and network are
provided, and the customer installs or develops its own software and
applications. The IaaS model provides just the hardware and network;
the customer installs or develops its own operating systems, software
and applications.
2.3 Why are cloud services so popular?
Cloud services are popular because they can reduce the cost and
complexity of owning and operating computers and networks. Since
cloud users do not have to invest in information technology
infrastructure, purchase hardware, or buy software licenses, the benefits
are low up-front costs, rapid return on investment, rapid deployment,
customization, flexible use, and solutions that can make use of new
innovations. In addition, cloud providers that have specialized in a
particular area (such as e-mail) can bring advanced services that a single
company might not be able to afford or develop.
Some other benefits to users include scalability, reliability, and efficiency.
Scalability means that cloud computing offers unlimited processing and
storage capacity. The cloud is reliable in that it enables access to
applications and documents anywhere in the world via the Internet.
Cloud computing is often considered efficient because it allows
organizations to free up resources to focus on innovation and product
development.
Another potential benefit is that personal information may be better
protected in the cloud. Specifically, cloud computing may improve efforts
to build privacy protection into technology from the start and the use of
better security mechanisms. Cloud computing will enable more flexible
IT acquisition and improvements, which may permit adjustments to
procedures based on the sensitivity of the data. Widespread use of the
cloud may also encourage open standards for cloud computing that will
establish baseline data security features common across different
services and providers. Cloud computing may also allow for better audit
trails. In addition, information in the cloud is not as easily lost (when
compared to the paper documents or hard drives, for example).
Even though cloud computing inherently possess certain security
implications, modern cloud platforms like the Amazon Web Services
have engineered many of these concerns out by adding robust security
layers.
2.4 Deployment of cloud services:
Cloud services are typically made available via a private cloud,
community cloud, public cloud or hybrid cloud. Generally speaking,
services provided by a public cloud are offered over the Internet and are
owned and operated by a cloud provider. Some examples include
services aimed at the general public, such as online photo storage
services, e-mail services, or social networking sites. However, services
for enterprises can also be offered in a public cloud. In a private cloud,
the cloud infrastructure is operated solely for a specific organization, and
is managed by the organization or a third party. In a community cloud,
the service is shared by several organizations and made available only to
those groups. The infrastructure may be owned and operated by the
organizations or by a cloud service provider. A hybrid cloud is a
combination of different methods of resource pooling (for example,
combining public and community clouds). Though there are many
formalized methods of deploying a new/existing infrastructure onto the
cloud, Ambab refrains from using those as it believes that formalized
procedures cannot keep up with the pace the client demands and also
hinders innovation at the same time. Primarily making use of the
Amazon Web Services platform for all their client's needs, the
deployment method of the infrastructure is always tried to be kept very
close the application deployment on conventional infrastructure. The
way Amazon has built their services also supports this. The deployment
procedure can be simplified as:
1. After the application undergoes complete development, and is ready to
be deployed, the company prepares a cloud blueprint of how the
infrastructure is to sit on the cloud. The client is heavily involved in this
process letting the company know about certain budget-performance
limitations and trade-offs.
2. The required server, database and other supporting instances are
procured and appropriately linked to each other.
3. The application and all its modules are mapped onto the procured
infrastructure and the infrastructure is fine tuned to meet certain
performance, security, throughput standards.
4. Maintenance, monitoring, up gradation and overall management
follows as the project goes live.
2.5 Relevance of project topic and goal:
Automation of cloud infrastructure and application deployment:
Traditionally, launching a web based application has been a very time
and resource consuming cumbersome task of first procuring the
hardware resources on which the application will be deployed, its
installation, configuration, the deployment itself, maintenance etc. Even
though cloud computing has solved many of the above issues, the
dynamic pace of web based businesses demand further automation of
cloud infrastructure and application deployment in a distributed
environment. The project aims to pursue this.
A typical deployment procedure of an e-commerce application which
usually takes months to develop takes around 7-8 hours to deploy on a
cloud. With the help of what we achieve this project, we aim to reduce
that time to less than an hour. This opens up a huge amount of
opportunities for the company as it can undertake a larger number of
client projects, boosting its revenue and growth while at the same time
neglecting the need of certain personnel necessary for this process.
3 Scheduled Updates
Week Schedule
Week 1 Introduction to the company,
employees and understanding the
company and getting in-tune with
working on Linux Operating
systems.
Understanding cloud computing on
a very high level. A deep insight on
general programming concepts in
python and their implementation
along with the study of core
network subnet concepts from a
practical point of view.
Week 2 Understanding Virtual-LAN,
sockets & ports-Understanding
how protocols and technologies
make use of certain end-points to
communicate with other hosts &
entities. Also learnt to work with
Git.
Week 3 Practical review of certain core
Operating systems concepts like
virtual memory, paging, swap
partitions and studying the Linux
file system in great detail.
Understand different types of
servers that power a website (web
application). Study of SSH and
implementation of an SSH
connection between a database
server and a client machine.
Week 4 Understanding the working of
NGINX and implementing a web
server using NGINX. A in-depth
look into Amazon Web Services
and preliminary understanding of a
python web framework-Flask.
Moreover, started work on
designing cloud architectures for
web applications and making
designs for certain test cases in
consultation with project mentor.
(Plans for the upcoming weeks given below)
Week 5-6 Gain proficiency in architecting
cloud solutions and their
deployment using Amazon web
services for use cases originating
from the domain of e-commerce.
Week 7-8 Start work on the automation of
the cloud infrastructure
deployment as guided by the
project mentor.
As I have crossed the threshold of the 4th week of my TIP, the project is
going on as per the anticipated schedule.
The preliminary emphasis of the project is the acquaintance with cloud
computing and deployment of the cloud infrastructure using the Amazon
Web Services. Before moving onto the main aim of the profile, it was
critical to get in tune with certain instrumental technologies and
concepts whose know is compulsory to understand how a web
site/application is deployed on the web.
My profile has been very demanding with a steep knowledge curve as
many of the technologies encountered in the past 4 weeks have been
new to me especially the Amazon Web Services. However, this has been
extremely beneficial to my knowledge base and has always kept me on
my toes. So far the experience has been really exciting and challenging at
the same time and I am looking forward to the coming weeks where in I
hope to really contribute to the company with my acquired knowledge.
4 Technical Background
4.1 PYTHON
Python is a widely used general-purpose,
high-level programming language. Its design
philosophy emphasizes code readability, and
its syntax allows programmers to express
concepts in fewer lines of code than would be
possible in languages such as C++ or Java. The
language provides constructs intended to
enable clear programs on both a small and
large scale. Python supports multiple
programming paradigms, including object-oriented, imperative and
functional programming or procedural styles. It features a dynamic type
system and automatic memory management and has a large and
comprehensive standard library.
4.2 UBUNTU
Ubuntu is a Debian-based Linux operating
system, with Unity as its default desktop
environment. It is based on free software and
named after the Southern African philosophy
of ubuntu. Development of Ubuntu is led by UK-
based Canonical Ltd. a company owned by
South African entrepreneur Mark Shuttleworth.
The Ubuntu project is publicly committed to the principles of open-
source software development; people are encouraged to use free
software, study how it works, improve upon it, and distribute it. Ubuntu
is famous amongst the developer community for its high accessibility,
security, file systems, networking capabilities and a powerful command
line interface inherited from linux.
4.3 GIT
GIT is a free and open source distributed
version control system designed to handle
everything from small to very large projects
with speed and efficiency.
Git is easy to learn and has a tiny footprint
with lightning fast performance. It
outclasses SCM tools like Subversion, CVS,
Perforce, and Clear Case with features like
cheap local branching, convenient staging areas, and multiple workflows.
Considering a huge team of around 20+ developers, it makes the task of
sharing completed tasks and objectives regarding the project seamless,
quick and safe.
4.4 FLASK
Flask is a micro web development
framework for Python. It is used to code
the back end of a web application using
the python programming language
without getting into the intricate low
level details involved with it.
Flask is called a micro framework because it does not presume or force a
developer to use a particular tool or library. It has no database
abstraction layer, form validation, or any other components where pre-
existing third-party libraries provide common functions. However, Flask
supports extensions that can add application features as if they were
implemented in Flask itself. Extensions exist for object-relational
mappers, form validation, upload handling, various open authentication
technologies and several common framework related tools.
4.5 NGINX
Nginx is a web server with a strong focus on high concurrency,
performance and low memory usage. It can also act as a reverse proxy
server for HTTP,
HTTPS, SMTP, POP3,
and IMAP protocols, as
well as a load balancer
and an HTTP cache. Created by Igor Sysoev in 2002, Nginx runs on Unix,
Linux, BSD variants, Mac OS X, Solaris, AIX, HP-UX, and Microsoft
Windows. Released under the terms of a BSD-like license, Nginx is free
and open source software.
Nginx can be deployed to serve dynamic HTTP content on the network
using FastCGI, SCGI handlers for scripts, WSGI application servers
or Phusion Passenger module, and it can serve as a software load
balancer. Nginx uses an asynchronous event-driven approach to
handling requests, instead of the Apache HTTP Server model that
defaults to a threaded or process-oriented approach, where the Event
MPM is required for asynchronous processing. Nginx's modular event-
driven architecture[9] can provide more predictable performance under
high loads
4.6 AMAZON WEB SERVICES
AWS is a collection of remote computing services, also called web
services, that make up a cloud computing platform offered by
Amazon.com. These services are based out of 11 geographical regions
across the world. The most central
and well-known of these services
are Amazon Elastic Compute Cloud
and Amazon S3.
Specializing in Infrastructure as a
Service, these products are
marketed as a service to provide
large computing capacity more quickly and cheaper than a client
company building an actual physical server farm. They are winning the
race amongst many cloud providers like Azure, digital ocean etc. It is a
well known fact that Amazon is increasing the capacity of their cloud
platform by the size of their entire web application in 2003 DAILY to
keep up with demand.
5 References
AcloudGuru- AWS Certification Course study
CodeAcademy-Beginners python course
www.github.com
git documentation
AWS documentation
www.aws.amazon.com
AcloudGuru- AWS Certification Course study
Cisco Certified Networking Associate tutorials by Imran Rafai
NGINX.org
Nginx Documentation
Flask Documentation