The Enigma Called DevOps

devops-gear

What is DevOps
DevOps could be defined as siblings in rivalry where the developers work in tandem with the operations staff so that the software functions without any anomalies. Many organizations are now adopting this state of the art technology that only fosters in the companies handle the pressure to produce quality codes but also assists them in delivering faster.
Wikipedia defines DevOps as a ‘portmanteau’ of both ‘development’ as well ‘operations’ and as a concept deals with other aspects as well like software development, operations and services. It lays stress upon collaboration, communication as well as integration between both the software developers and the Information Technology (IT) professionals within the organizations.
Understanding How Dev and Ops Function
What Dev Desires

  • Constant change
  • New features added

Ops Needs

  • Continuous stability
  • Creating newer features

The Contention
The discord comes when development wants to deliver its changes to customers quickly, ops on the other hand is not supportive to changes occurring at regular intervals as ops demands stability which would tantamount to not having production systems not changing too often.
The Chasm Between Development and Operations happens at multiple levels:

  • The incentives gap- which is the result of a dichotomy of goals that get set between Development and operations
  • The process Gap- this occurs when there exists a different approach towards development and operations and how best to manage the resultant changes, routing these changes on to production and preserving them there.
  • The tools divide- this is the result of both the development as well as the operations using their independent tools to do their tasks.

What does happen due to this divide is both development as well as operations team virtually being at loggerheads and functioning as though they were independent of each other.

The Discord Between Development and Operations:

  • Development Demands Change- development always results in change and it demands that this change percolate quickly to the production department as well.
  • Fear of change- once the software does get installed and delivered, the operations department prevents itself from making the necessary changes only to ensure stability.

DevOps- Is it the Answer

DevOps connects development to operations and is also instrumental in narrowing the chasm that exists between agile software development and the operations experience. It does go without saying that all of the experts do come with a reasonable knowledge and understanding of the others business subjects.

Why DevOps

DevOps most definitely does not come within the bracket of a methodology or a tool, but it is a group of principles that are broken down into silos and incorporates its four basic tenets-culture, automation, measurement and sharing (CAMS).
Let us try and understand each of them in brief:

Culture

In this, people and process come at the beginning. With no culture as such, every effort at automation would be defunct. The functions of culture would include:

  • Engaging early,engaging often
  • Destroying silos
  • Be Open to the Options
  • Stop blaming

The other features of culture would include:

  • Communication with peers
  • Involving everybody in the core decision making process
  • Questioning
  • A never say never approach
  • Everyday standups where all are invited

Automation
Once culture is intricately understood, automation comes in by finalizing the various tools and thereby achieving the automation process for DevOps. Tools including release management, provisioning, configuration management, systems integration, monitoring and control apart from orchestration become the key factors in DevOps.

The Reason for Automation

  • Machines are incredibly good at performing repetitive tasks
  • They generate consistency as well as a known state
  • They are increasingly quick and efficient
  • Incredibly cost efficient and time saving

What can be Automated

  • Builds
  • Deployments
  • Self-healing
  • Testing
  • Monitoring
  • System roll-outs
  • System configurations

Measurements (Metrics)
It goes without saying that if an organization cannot measure, it cannot improve and DevOps measures everything that it possibly can as often as it can. Here are some of them:

  • Performance metrics, people metrics, process metrics
  • Capture, learn and improve assets in:
  • Capacity planning
  • Trend Analysis
  • Fault Finding
  • It is as simple as saving Tomcat access info
  • Plotted on a graph over time

Sharing

Sharing comes as a loopback in a CAMS cycle where people share both their ideas as well as their problems in an open atmosphere where the opening up of ideas can generate a great open feedback that in turn facilitates to:

  • Improve
  • Share ideas
  • Share metrics
  • Ops: give devs shell an access
  • Devs: understand what technology can be leveraged

Growth of DevOps
Lifecycle of DevOps
By applying a DevOps lifecycle, products can be constantly deployed in a feedback loop through:

  • Infrastructure Automation
  • Deployment Automation
  • Configuration Management
  • Infrastructure Management
  • Log Monitoring
  • Application and Performance Management

Reasons to Learn DevOps

The basic reason to learn DevOps is because DevOps has proven itself to be an incredibly operational practice, that helps in the organizations proliferating their businesses.

  • The Technical Advantages
  • The technical rewards of DevOps would be:
  • Continuous Software Delivery
  • Less Complicated problems to resolve
  • A quicker resolution of problems
  • How will Businesses Entities Benefit with DevOps
  • A faster delivery of Features
  • A more stable operating environments
  • Greater time available that can be used to add more value
  • rather than on fixing problems

The DevOps Tools
Operating Systems

  • Linux (RHEL, CentOS, Ubuntu, Debian)
  • Unix (Solaris, AIX, HP/ UIX, etc)
  • Windows
  • Mac O X

Infrastructure as a Service

  • Amazon Web Services
  • Rackspace
  • Azure
  • OpenStack

Visualization Platforms

  • VMware
  • Vagrant
  • VIrtualBox

Containerization Tools

  • LXC
  • Docker

Linux OS Installation

  • Kickstart
  • Cobbler

Configuration Management

  • Puppet
  • Chef
  • RANCID
  • Ansible

Test and Build Systems

  • Ant
  • Maven
  • Jenkins

Application Deployment

  • Capistrano

Application Services

  • Jboss
  • Tomcat
  • Jetty
  • Glassfish

Web Servers

  • Nginx
  • Apache

Queues, Caches, etc

  • MemacheS
  • ActiveMQ
  • RabbitMQ

Databases

  • Percona Server
  • MySQL
  • PostgreSQL
  • MongoDB
  • Cassandra
  • RedisMS SQL
  • Oracle

Monitoring, Alerting, Trending

  • New Relic
  • Nagios
  • Graphite
  • Ganglia
  • Cacti
  • PagerDuty

Logging

  • PaperTrail
  • Logstash
  • Loggly
  • Splunk

Process Supervisor

  • Monit
  • Runit
  • Supervisor
  • God

Security

  • Snorby Threat Stack
  • Tripwire
  • Snort

Miscellaneous Tools

  • Multihost SSH Wrapper
  • Code Climate