ROR Application Development Tips

I'm Ruby on Rails developer. I love to share my experience, technical knowledge. I work at Crypex Technologies which is developing applications in ROR for more than a decade.

DevOps Tutorials for Beginners by Soma Paul

Introduction to DevOps…

DevOps is a combination of Development (Software Development) and Operations (Software Productions/IT Operations…)

What is DevOps?

f:id:michaleleo432:20180315153422j:plain

DevOps is not a technology or tool, it is a concept of behavior, and it is an extension of Agile Methodology.

The DevOps is a set of practices designed to overcome the gap between development, QA and Operations by effective communication and collaboration, incorporating continuous integration process with automated deployment.

DevOps helps to increase an organization’s speed to deliver applications and services. It allows organizations to serve their customers better and compete more strongly in the market.

There are four basic continuous processes in DevOps:

  • Continuous Integration
  • Continuous Delivery
  • Continuous Testing
  • Continuous Monitoring

Relationship between Agile and DevOps

Agile Development is an umbrella term for several iterative and incremental software development methodologies.

The most popular agile methodologies include Extreme Programming (XP), Scrum, Crystal, Lean Development, and Feature-Driven Development (FDD).

On the other hand, DevOps is about a culture where development, and operations collaborate to give maximum throughput and high-end outcomes.

Similar to Agile, there are ways through which DevOps can be implemented such as deep communication and automated deployment.

Agile is all about software development while DevOps deals with software development and operations.

Note: Therefore one thing is clear that DevOps is an extension of Agile methodology.

DevOps Lifecycle

DevOps is deep integration between development and operations. Understanding DevOps is not possible without knowing DevOps life cycle.

Here is a brief information about the Continuous DevOps life-cycle:

  • Development
    In this DevOps stage the development of software takes place constantly. In this phase, the entire development process is separated into small development cycles. This benefits DevOps team to speed up software development and delivery process.
  • Testing
    QA team use tools like Selenium to identify and fix bugs in the new piece of code.
  • Integration
    In this stage, new functionality is integrated with the prevailing code, and testing takes place. Continuous development is only possible due to continuous integration and testing.
  • Deployment
    In this phase, the deployment process takes place continuously. It is performed in such a manner that any changes made any time in the code, should not affect the functioning of high traffic application.
  • Monitoring
    In this phase, operation team will take care of the inappropriate system behavior or bugs which are found in production.

Software Tools for DevOps

f:id:michaleleo432:20180315153442j:plain

As DevOps is the collaboration of Development, QA and Operations, it is obvious that a single tool cannot be adequate for all the needs. So there are multiple tools required in each stage to perform all the operations successfully.

Popular Tool for DevOps Automation:

  • Git : Version Control System tool
  • Jenkins : Continuous Integration tool
  • Selenium : Continuous Testing tool
  • Puppet, Chef, Ansible : Configuration Management and Deployment tools
  • Nagios : Continuous Monitoring tool
  • Docker : Containerization tool

How do all these tools work together?

This flow may vary from organization to organization as per the requirement.
  • Developers develop the code and this source code is managed by Version Control System tools like Git etc.
  • Developers send this code to the Git repository and any changes made in the code is committed to this Repository.
  • Jenkins pulls this code from the repository using the Git plugin and build it using tools like Ant or Maven.
  • Configuration management tools like puppet deploys & provisions testing environment and then Jenkins releases this code on the test environment on which testing is done using tools like selenium.
  • Once the code is tested, Jenkins send it for deployment on the production server (even production server is provisioned & maintained by tools like puppet).
  • After deployment It is continuously monitored by tools like Nagios.
  • Docker containers provides testing environment to test the build features

Source: http://www.cryptextechnologies.com/blogs/devops-tutorials-for-beginners