Skip to content

Latest commit

 

History

History
174 lines (136 loc) · 6.86 KB

README.md

File metadata and controls

174 lines (136 loc) · 6.86 KB

Introduction to DevOps There may be lot of definitions to describe DevOps if asks the experts. But before understanding the various concepts of DevOps we need to understand below two concepts:

  1. What exactly is DevOps
  2. How it comes into existence in Software Development

What is DevOps? There are lot of definition floating around in various technical forums by different experts. But still we have not agreed upon a single simple definition. If we closely look to all the definition of DevOps all points to the same direction but through different ways. They all are pointing to the fact that DevOps helps to achieve highest efficiency in providing the error free product to users and customers.

DevOps is a philosophy of the efficient development, deployment and operation, of the highest quality software possible.

There is no perfect model for implementing Software Development Lifecycle for your product. But still individuals and group of experienced individuals come together with their experience and does some modification to make their own lifecycle which will fit into their processes. So, in the end we can conclude that DevOps is all about developers and operations team coming together to collaborate and increase the productivity for their product.

How DevOps evolves?

DevOps basically evolves with various modifications done to the traditional Software Development Lifecycle as per the business needs. With few modifications and enhancements to the waterfall model it got evolved to agile methodology where teams working one small sprints not more than two weeks. Although AGILE Scrum approach increase the speed of development but it does not match with the infrastructure operations. So, to overcome this delay they basically come up with the new methodology called DevOps Methodology. As Per this the development and operations team collaborates to fast and more reliable products to consumers.

So, after understanding the evolvement of DevOps we can now define a definition for DevOps. DevOps is a Software Development approach which consists of Continuous Integration, Continuous Delivery/Deployment, Continuous Testing, Automation, Continuous Monitoring of software throughout its lifecycle. It’s not possible with any traditional software lifecycle that the reason why most of the big product owners and organizations are looking for DevOps a solution to all their development problems. Also, they can achieve fast production deployment and maintaining customer satisfaction.

Pain points before DevOps There are quite few pain points which make the software development difficult to manage. We are discussing some of them as below:

  1. How to manage the increasing infrastructure especially in case of hundreds of servers.
  2. Configuration management on servers
  3. How to scale up and down applications server and how to manage deployments on web servers and application servers.
  4. How to monitor application servers.
  5. How to manage the events logs from each server and analyses the trend of each server.
  6. Code integration between various team members of a project.
  7. To achieve fully automated and fast code deployment once development is done.
  8. Difficult to maintain the uptime of production environment. These are some issues which basically increases the chance of manual errors in deployments and maintenance which can be easily solved by using some of the automation. The basic principles to implement DevOps is by implementing below steps one by one. DevOps is all about implementing principle CAMS (Culture, Automation, Monitoring and Sharing). Culture Culture is very important principle since its related to the people and processes. We cannot change the mind set of people implementing some tool. Without culture, no automation can make the system better. We need to engage more and more people so that we don’t have any communication gaps between teams. Below points can be implemented. • Reduce communication gap between peers. • Engage everyone at early stages itself. • Ask questions to reduce doubts about the system. • Regular feedbacks from various team to improve the processes. • Daily stands-up to discuss pending items and involve everyone from team. Automation Once we have evolved our culture with DevOps methodology we can proceed with automation which is the main key to achieve fast delivery and efficiency. But automation alone cannot implement the whole DevOps. We need to implement other DevOps principles with automation. Things which can be automated. • Build automation • Deployment automation • Monitoring • Infrastructure • Server logs • Configuration Management

Measurement (Metrics) If we want to improve the results, we must measure one and see if there is a scope for improvement. Metrics is one of the important principle for implementing DevOps successfully. Metrics which can be collected to improve software delivery. • Performance metrics of server and software with more no of users logged in. • Trends in no of users getting registered on application for capacity management.

Sharing Sharing is a never-ending process in CAMS principle. Without sharing the ideas and feedbacks between teams we cannot have effective DevOps implemented. Teams can share the metrics between each other to regularly improve the processes and products quality.

Images

http://app42paas.shephertz.com/wp-content/themes/twentytwelve/home/images/lifecycle.png https://cdn.edureka.co/blog/wp-content/uploads/2016/10/Devops-Cycle-01-1.png https://awesome-tech.readthedocs.io/images/jenkins_is_the_hub_CD_Devops.png https://cdn.edureka.co/blog/wp-content/uploads/2016/08/1.png Sourced:

DevOps Tools In previous article Introduction to DevOps we saw what is DevOps and what defines it. We also go through the various principles of DevOps. In this article, we are now looking forward for the list of tools which can be used to implement DevOps in an organization to increase the productivity.

DevOps tools

  1. Operating Systems

Linux (RHEL, CentOS, Ubuntu, Debian) Unix (Solaris, AIX, HP/UX, etc.) Windows Mac OS X

  1. Infrastructure as a Service

Amazon Web Services Rackspace Azure OpenStack Digital Ocean

  1. Virtualization Platforms

VMware Virtual Box Vagrant

  1. Containerization Tools

LXC Docker 5. Linux OS Installation

Kickstart Cobbler 6. Configuration Management

Puppet Chef Ansible RANCID 7. Test and Build Systems

Jenkins Maven Ant 8. Application Deployment

Capistrano 9. Application Servers

JBoss Tomcat Jetty Glassfish 10. Web Servers

Nginx Apache 11. Queues, Caches, etc.

ActiveMQ RabbitMQ Memcache 12. Databases

Percona Server MySQL PostgreSQL MongoDB Cassandra Redis Oracle MS SQL 13. Monitoring, Alerting, and Trending

New Relic Nagios Graphite Ganglia Cacti PagerDuty 14. Logging

PaperTrail Logstash Loggly Splunk 15. Process Supervisors

Monit Runit Supervisor God 16. Security

Snorby Threat Stack Tripwire Snort 17. Miscellaneous Tools

Multihost SSH Wrapper Code Climate