Top 10 Things To Know in DevOps

Introduction To DevOps

DevOps
is a Modern software engineering Culture and Practices to develop a
software where the development and operation teams work hand in hand as
one unit, unlike the traditional ways i.e. Agile Methodology where they
worked individually to develop a software or provide required services.
The traditional methods before DevOps
were time-consuming and lacked understanding between different
departments of software development, which lead to more time for updates
and to fix bugs, therefore ultimately leading to customer
dissatisfaction. Even to make a small change, the developer has to
change the software from the beginning.
That’s why we are adopting such a culture, that allows fast, efficient, reliable software delivery through production.

DevOps Features

 

  • Maximize speed of delivery of the product.
  • Enhanced customer experience.
  • Increased time to value.
  • Enables fast flow of planned work into production.
  • Use Automated tools at each level.
  • More stable operating environments.
  • Improved communication and collaboration.
  • More time to innovate.

    DevOps Consists of 5 C’s

    DevOps practices lead to
    high productivity, lesser bugs, improved communication, enhanced
    quality, faster resolution of problems, more reliability, better and
    timely delivery of software.
  • Continuous Integration
  • Continuous Testing
  • Continuous Delivery
  • Continuous Deployment
  • Continuous Monitoring

1. Continuous Integration 

Continuous integration means
isolated changes are tested and reported when they are added to a
larger code base. The goal of continuous integration is to give rapid
feedback so that any defect can be identified and corrected as soon as
possible.
Jenkins is
used for continuous integration which follows 3 step rule i.e. build,
test and deploy. Here developer does frequent changes to the source code
in shared repository several times a day.
Along with Jenkins, we have more tools too i.e. BuildBot, Travis etc. Jenkins widely used because it provides plugins for testing, reporting, notification, deployment etc.

 

2. Continuous Testing

Continuous Testing is done
to obtain immediate feedback on the business risk associated with
Software Release. It’s basically difficult and essential part of the
software. Software rating depends upon Testing. Test function helps the
developer to balance the quality and speed. Automated tools are used for
testing as it is easier to do testing continuously instead of testing a
whole software. Tool used for testing the software is Selenium

 

3. Continuous Delivery 

Continuous Delivery is the
ability to do changes like including new features, configuration
management, fixes bugs and experiments into production. Our motive for
doing continuous delivery is the continuous daily improvement. If there
is any kind of error in the production code, we can quickly fix it that
time. So, here we are developing and deploying our application rapidly,
reliably and repeatedly with minimum overhead.

 

4. Continuous Deployment 

The code is automatically
deployed to the production environment as it passes through all the test
cases. Continuous versioning ensures that multiple versions of the code
are available at proper places. Here every changed code is put into
production that automatically resulting in many deployments in
production environment every day.

5. Continuous Monitoring 

Continuous Monitoring is a
reporting tool because of which developers and testers understand the
performance and availability of their application, even before it is
deployed to operations. Feedback provided by continuous monitoring is
essential for lowering cost of errors and change. Nagios tool is used for continuous monitoring.
Learn How XenonStack DevOps Solutions can help you Enable Continuous Delivery Pipeline Across Cloud Platforms for Increased Efficiency and Reduced Cost Or Talk With Our Experts

 

Key Technologies and Terminologies In DevOps

 

6. Microservices

Microservices
is an architectural style of developing a complex application by
dividing it into smaller modules/microservices. These microservices are
loosely coupled, deployed independently and are focused properly by
small teams.
With Microservices developers can decide how to use, design, language to choose, platform to run, deploy, scale etc.

Advantages Of Microservices

  • Microservices can be developed in variable programming languages.
  • Errors in any module or microservices can easily be found out, thus saves time.
  • Smaller modules or microservices are easier to manage.
  • Whenever any update
    required, it can be immediately pushed on that particular microservices,
    otherwise, the whole application needs to be updated.
  • According to client need, we can scale up and down particular microservice without affecting the other microservices.
  • It also leads to increase in productivity.
  • If any one module goes down, the application remains largely unaffected.

Disadvantages Of Microservices

  • If any application involves the number of microservices, then managing them becomes a little bit difficult.
  • Microservices leads to more memory consumption.
  • In some cases, testing microservices becomes difficult.
  • In production, it also leads to complexity of deploying and managing a system comprised of different types of services.

7. Containers

 

 

Containers
create a virtualization environment that allows us to run multiple
applications or operating system without interrupting each other.
With the container, we can
quickly, reliably and consistently deploy our application because
containers have their own CPU, memory, network resources and block I/O
that shares with the kernel of host operating system.
Containers are lightweight because they don’t need the extra load of a hypervisor, they can be directly run within host machine.
Before we were facing a
problem that code can easily run on developer environment but while
executing it in the production environment, dependency issue occurs.
Then virtual machines came,
but they were heavyweight that leads to wastage of RAM, the processor is
also not utilized completely. If we need more than 50 microservices to
run then, VM is not the best option.
Docker
is light weighted Container that has inbuilt images and occupies very
less space comparatively. But for running a docker we need a Linux or
Ubuntu as a host machine.
Terms used in docker that are:-
Docker Hub –
It’s cloud hosted service provided by Docker. Here we can upload our
own image or also can pull the images in public repository.
Docker Registry – Storage
component for docker images Either we can store in public repository or
in private repository. We are using this to integrate image storage
with our in-house development workflow and also to control where images
are to be stored.
Docker images – Read only template that is used to create the container. Built by docker user and stored on docker hub or local registry.
Docker Containers – It’s runtime instance of Docker image. It’s built from 1 or more images.
Hence Docker helps in achieving application issues, Application Isolation, and faster development.

Advantages Of Containers

  • Wastage of resources like
    RAM, Processor, Disc space are controlled as now there is no need to
    pre-locate these resources and are met according to application
    requirements.
  • It’s easy to share a container.
  • Docker provides a platform to manage the lifecycle of containers.
  • Containers provide consistent computation environment.
  • Containers can run separate applications within a single shared operating system.

8. Container Orchestration

Container Orchestration is
Automated, Arrangement, Coordination, and Management of containers and
the resources they consume during deployment of a multi-container packed
application.
Various features of Container Orchestration includes 
  • Cluster Management – Developer’s
    task is limited to launch a cluster of container instances and specify
    the tasks which are needed to run. Management of all containers is done
    by Orchestration.
  • Task Definitions – It
    allows the developer to define task where they have to specify the
    number of containers required for the task and their dependencies. Many
    tasks can be launched through single task definition.
  • Programmatic Control – With simple API calls one can register and deregister tasks, and launch and stop Docker containers.
  • Scheduling – Container
    scheduling deals with placing the containers from the cluster according
    to the resources they need and the availability of requirements.
  • Load Balancing – Helps in distributing traffic across the containers/deployment.
  • Monitoring – One can monitor CPU and memory utilization of running tasks and also gets alerted if scaling is needed by containers.

Tools used for Container Orchestration

 

For Container orchestration different tools are used, few are open source tools like Kubernetes, and Docker Swarn which can be used privately, also some paid tools are there like AWS ECS from Amazon, Google Containers, and Microsoft Containers.
Some of these tools are briefly explained below:

 

  • Amazon ECS – Amazon ECS is yet another product from Amazon Web Services
    that provides the runtime environment for Docker Containers and provide
    orchestration. It allows running Dockerized applications on top of
    Amazon’s Infrastructure.
  • Docker Swarm – It’s an open source tool, part of Docker’s landscape. With this tool, we can run multiple docker engines as a single virtual Docker.
    This is Dockers own containers orchestration Tool. It consists of the
    manager and worker nodes that run different services for orchestration.
    Managers that distributes tasks across the cluster and worker node run
    containers assigned by managers.
  • Google Container Engine Google Container Engine allow us to run Docker containers on Google Cloud Platform.
    It schedules the containers into the cluster and manages them as per
    the requirements were given. It is built on the top of Kubernetes i.e.
    an open source Containers Orchestration tool.
    Continue Reading About Latest DevOps Trends At: XenonStack.com/Blog
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s