TMentors Blog

We play it smart, fast and professional.

Let’s Do DevOps


By:
Tarek Selem | Senior Software Developer
  • What is DevOps?

DevOps is one of the hottest new trends and had the highest record number of attendees and speakers few months ago which coined as a term in 2009 by Patrick Debois.

DevOps is a software development approach which involves Continuous Development, Continuous Testing, Continuous Integration, Continuous Deployment and Continuous Monitoring of the software throughout its development life cycle.

DevOps is more than just a shift in how operations, development and business stockholders technically work together to develop new services.

These activities are possible only in DevOps, not Agile or Waterfall, and this is why Facebook and other top companies have chosen DevOps as the way forward for their business goals.

 

 

  • Why DevOps?

 

DevOps is the preferred approach to develop high-quality software in shorter development cycles which results in greater customer satisfaction.

There are many different types of benefits like technical, cultural and business benefits like below:

  • Technical Benefits:
  1. Continuous software delivery.
  2. Less complexity to manage.
  3. Faster resolution of problems.
  4. Reduce deployment failures, rollbacks, and time to recover.

 

  • Cultural Benefits:
  1. Happier, more productive teams.
  2. Higher employee engagement.
  3. Greater professional development opportunities.

 

  • Business Benefits:
  1. Faster delivery of features.
  2. More stable operating environments.
  3. Improved communication and collaboration.
  4. More time to innovate rather than fixing and maintain.
  5. Reduced costs and IT headcount.

 

 

  • Terminologies:

These terminologies may remove your concerns, questions, and confusion

 

Continuous Development (CTDD):

Continuous Development is a software development practice that extends test-driven development by means of automatic test execution in the background.
In CTDD the developer writes a test first but is not forced to execute the tests manually. The tests are run automatically by a continuous testing tool running in the background.

 

Continuous Testing (CT):

Continuous Testing is the process of executing automated tests as part of the software delivery pipeline to obtain immediate feedback on the business risks associated with a software release candidate.
For Continuous Testing, the scope of testing extends from validating bottom-up requirements or user stories to assessing the system requirements associated with overarching business goals.

 

Continuous Integration (CI):

Continuous Integration is a development practice that requires developers to integrate code into a shared repository several times a day.
Each check-in is then verified by an automated build, allowing teams to detect the problems early.

 

Continuous Delivery (CD):

Continuous Delivery is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. It incremental updates to applications in production.

 

 Continuous Monitoring (CM):

Continuous Monitoring is the process and technology used to detect compliance and risk issues associated with an organization’s financial and operational environment. The financial and operational environment consists of people, processes, and systems working together to support and effective operations.

 

  • Who is DevOps Specialist? Is he a Software Engineer or a System Engineer?

The demand of people with DevOps skills is growing rapidly because businesses get great results from DevOps.

A DevOps engineer must know how to manage the IT infrastructure that is needed to support software code in dedicated, multi-tenant or hybrid cloud environments.

He/she may be required to provide required resources, select an appropriate deployment model, direct the testing protocol to validate release and monitor performance after release.

Tasks may include preparing test data, analyzing results, troubleshooting problems and communicating issues back to development.

The DevOps approach to software development requires frequent, incremental changes to code versions, which means frequent deployment and testing regimens.

A DevOps engineer will work with development staff to tackle the coding and scripting needed to connect elements of code, such as libraries or software development kits (SDKs), and integrate other components such as SQL data management or messaging tools that are needed to run the software release on operating systems and production infrastructure. If DevOps is understood primarily as a mindset, it can get awfully fuzzy. But enough people are attempting definitions for us to offer the list of core DevOps attributes:

  1. Ability to use a wide variety of open source technologies and tools.
  2. Ability to code and script.
  3. Experience with systems and IT operations.
  4. Comfort with frequent, incremental code testing and deployment.
  5. Strong grasp of automation tools.
  6. Data management skills.
  7. A strong focus on business outcomes.
  8. Comfort with collaboration, open communication and reaching across functional borders.

 

 

 

  • DevOps Tools

Now we are ready to take a look at the below DevOps diagram with various DevOps tools:

    1. ANSIBLE:

      It is an automation engine that enables IT admins to automate parts of their daily tasks. Enterprises that use ANSIBLE stand to benefit from increased accountability and compliance in their IT environments as well as innovation and collaboration among their employees.
      Organizations can also take their ANSIBLE deployment one step further with Tower, which adds control, security and other capabilities that enterprises can monitor with a UI and RESTful API.

    2. DOCKER:

      An infrastructure-natural platform, DOCKER integrates into any environment and provides full stack portability for apps.
      The framework comes with certified containers that enterprises can use to build secure, safer applications.

    3. JENKINS:

      It is another automation server that supports developers as they build, deploy and automate their projects. Users can employ JENKINS as a continues integration server or leverage it for continues delivery.
      Easy to install and configure, the platform is customizable with nearly every type of CI and CD utility via plugins, in addition to allowing users to distribute their work across multiple machines.

    4. GIT:

      As a version control system tool, GIT helps developers manage their projects with speed and efficiency.
      It’s free and open-source, which means anyone can use it. One of its signature features is a branching model that allows developers to create multiple local branches, or pointers to a commit, that are independent of one another.
      Developers can then merge, create, or delete these branches as their infrastructure evolves.

    5. JIRA:

      The focus of JIRA is to streamline the collaborative efforts of software teams. Teams can use the tool to distribute tasks to each and every member.
      They can then leverage JIRA real-time, visual data to track their goals and improve their overall performance additionally.
      JIRA provides software teams with an out-of-the-box solution for shipping out software as well as the opportunity to create their own custom workflows.

    6. CHEF:

      CHEF is a platform designed to help organizations manage their infrastructure. The CHEF servers stores an enterprise’s “cookbooks”, or repositories which houses information about the desired state of a customer’s infrastructure, as well as about the details pertaining to every “node”, or network machine on which the CHEF client runs and obtains configuration information.

    7. SPLUNK:

      SPLUNK is a platform that offers solutions designed with security, IT service intelligence, and user behavior analytics in mind.
      Customers can customize their SPLUNK experience with hundreds of apps available directly from SPLUNK, its partners, and the Splunkbase community.

    8. PUPPET:

      PUPPET technology helps organizations know what’s in their infrastructure and learn how those assets are configured in their data center, virtualized and cloud infrastructure, and containers.
      The tool helps enterprises remain compliant while allowing them to make changes while their business needs evolve.

       

 

References:
https://www.edureka.co/blog/devops-tutorial

https://newrelic.com/devops

https://en.wikipedia.org

http://searchitoperations.techtarget.com/definition/DevOps-engineer

no responses

Leave a Reply

Your email address will not be published. Required fields are marked *

Categories

Archive

Latest posts