JumpStart with DevOps

February 22, 2020
7 mins read

What is DevOps;

DevOps is a Software Development Strategy, that bridges the gap between the Dev and the Ops side of the company.

* It’s not a tool, it’s a Methodology to bridge the gap b/w development and operations teams!

As there is always a lot of conflicts between the two teams;

  • E.g. a Software build works fine in a Developer laptop or machine but doesn’t work in the test or the production environment.
  • Moreover, Dev team wants agility whereas the ops team wants stability.

So there are many other conflicts like these between the dev and off the side of the company which resolved with the help of DevOps.

DevOps Scenarios;

As the development of multi-tier apps is always challenging, so a proper discipline, communication, and transparency required between teams to go for success.

As mentioned above, the DevOps is an organizational capability focused on the agile relationship among the business, development, test and operations organizations. And as the ultimate goal of DevOps is to deliver faster with higher quality in a continuous and integrated manner. So for that purpose, different teams and organized choose appropriate scenarios to align best as per their comfort and ease.

Talking about scenarios, if we talk about DevOps scenarios can easily be followed with IBM services, following are the scenarios;

Perhaps again, the idea is to;

  • Accelerate Delivery
  • Balance Speed, Cost, Quality, and Risk.
  • Reduce Time to Feedback.

So, by following these motivations, we can review the process follows supporting a sequential approach to mapping the various activities.

Continuous Delivery

To implement new updates to the project, the following scenario defines steps to efficiently implement a code change while explicitly validating the value delivered to the business;

Working with projects, several loops mentioned above can exist between several of these activities resulting from the collaborative and interconnected nature of a DevOps flow.

Continuous Monitoring

This is totally related to the production side of the party. As production environments are key to running the business. When a production environment encounters a problem, it needs to be resolved quickly with high quality and with safeguards to ensure the problem does not recur.

Because of the criticality of production systems, transparency is key to development. Operations and management will want to know what happened;

  • How the problem is being looked at?
  • How and when it is being resolved.
  • When did this happen?

Having a guided set of steps to resolve the issue helps ensure communication, transparency, and quality in resolving the issue.

Continuous Feedback

This is related to if you have several innovative ideas on how to approach a solution but not sure which ones your customers would prefer. : – )

This is important when we require confirmation that business objectives can be met before you invest too heavily.

  • Use the Innovation scenario to determine which outcome best fits your customer needs.
  • The innovation scenario provides a guide on how to take different possible solutions.
  • Narrow down to the right approach to your solution using real customer usage feedback.

Continuous Integration

This is related to the use the Quality Improvement scenario to “shift left” your testing activities. These shift-left practices to help to avoid rework, delays, and churn that can occur when major defects are discovered late in the testing cycle–after all integrations and product components are finally brought together as a composite application and made available for the team to test.

It helps with if any of the dependent application components are not available to test, virtual services can mimic the real components’ behavior until they are ready.

Further its extremely helpful if;

  • Our teams finding high-impact defects late in the lifecycle, or even in production.
  • Teams discover a lot of unreproducible defects in their different test environments.
  • Teams waiting to test until all the systems are available

Scaled Agile Framework

If we challenged with scaling agile practices across a growing set of inter-dependent teams, required to tightly collaborate towards the delivery of complex releases or systems, then we are likely looking to adopt a SAFe (Scaled Agile Framework) style development model.

SAFe is a structure for applying agile development practices to teams-of-teams working in programs. The framework describes how to drive business value that is captured at the enterprise portfolio level down to its implementation across programs and teams.

The IBM implementation of SAFe, combined with our scenario for program-level delivery to production, helps ensure timely and cohesive delivery of large-scale business value.


By further breakdown some major activities of the lifecycle we can further clear on each point.

  • Planning

We get the requirement from the client, we start planning our application. Once planning is done, we start writing the code;

  • Code

Now there are multiple developers who are writing code for that particular application so we need a system that can manage the code.

  • E.g. If we want to go back to the previous commit, how can I do that? or if I want to check the previous version of the code.
    • Basically, to manage the source code, we’ve multiple tools like Git.
      • Git is a decentralized version control tool.
      • After that, the code is built.
  • Build;

Now the build life cycle includes a lot of things, it includes;

  • Validation of our application.
  • Compiling our applications.
  • Packaging our applications,
  • Performing unit tests integration tests,

All those things are done in this phase.

For the build, we’ve multiple tools like Maven and gradle depending on the kind of application we have. Like for Java, we go for Maven.

Then the build application is deployed onto the test servers for testing

  • Test;

Different types of tests performed in this phase.  For testing that is the end-user testing, or we can consider it as functional testing, in this case, we use selenium or JUnit.

Once testing is done, it is deployed onto the production servers

  • Deploy;

It deploys to production servers for release and after that, it is continuously monitored by tools like Nagios and Splunk.
After that in order to deploy the application onto the production server, there’re tools like puppet and salsa, tools like these are called configuration management tools.
The major aim is to provision and deploy our application to provision our nodes.

So all of these four tools have a similar architecture that is a master/slave architecture in which I can write the scripts for a particular Software stack in the master and deploy it onto the nodes.

So that’s how can maintain an accurate historical record of a previous system state as well. So if we want to roll back to the previous version of the software stack, we can easily do that as well. Because everything is well documented in the master.
These’re the tools we called configuration management tools and they play major role in DevOps

  • Operate

For example, in the test server, we might require a particular software stack may be a lampstack, so we can write scripts using these tools and can deploy it onto the test servers as well as in the production servers.

  • Monitor

Continuously monitored by tools like Nagios and Splunk.

The Integration Phase;

The heart of DevOps is this integration phase. We’ve continuous integration tools available over the Cloud with a number of plugins for various development testing and deployment technologies.


Docker role in DevOps

For docker, it is basically a containerization platform.

  • We can create a docker containers which provide a consistent computing environment throughout the HDLC lifecycle plus it basically containerized our application and has a lot of advantages over the VMs
  • Docker is an ideal environment to have a micro-service architecture.

So basically integration is integrating all the stages that we’ve seen above in the image, all the stages.

  • The moment any developer makes a change in the source code in the shared repository, cloud tools will pull that code and prepare a build, once the build lifecycle is complete, it will deploy that build application on the test servers for testing, then it will deploy it onto the production servers for release.
  • And finally it will be continuously monitored by tools which will give the feedback and it will notify the concern teams about it. And that is what continues deployment is.

Implement Docker in DevOps;

So there are two ways in which we can use Docker in DevOps.

  1. So a developer writes a project code in a docker file, for example, a requirement for a microservice whatever the requirement for the application is, a developer will write a simple docker file, right;
    • Once the docker file is written, we can build docker images from that and with that docker image we build as many continaers as we want.

Now containers are nothing but an environment where we can run our application.

  • E.g. if we require a Linux environment, we can run a Linus docker contianer. Similarly, that depends on the kind of environment that we want.
  • Then what we can do is, we can upload the docker image onto docker hub. And through docker hub, various teams from staging or production can pull that docker image and prepare as many contianers as they want.

* Docker hub is nothing but a git repository of docker images!

  • Now with this architecture, the advantage is, whatever was there in the developers laptop or machine, we were able to replicate it in the staging as well as in the production environment.

Similarly,

There is one more way we can use docker.
2. If we write a complex requirement for a Microservice in a docker file, upload that onto the git repository, so from the git repository, Jenkins can pull that docker file and build whatever was there in the developers laptop or machine into testing, staging, and production.
CI/CD – (Continous Integration / Continous Delivery) and Continous Deployment.
#Image4


CI – Continous Integration;

So the moment any developer commits a change in the source code, the continuous integration tools like Jenkins can pull that code and prepare a build.
Once build is done, it can perform unit and integration testing as well.
Till this stage, its called continuous integration. (As we’re not deploying our app on to any server even for testing purpose, even for functional, regression testing) – So this is basically an integration stage.

CD – Continous Delivery

Now we can do next is, automatically deploy that on the test environment to perform acceptance testing or we can even call in UAT (User acceptance testing) or end-user test.

So once we do that in an automation way, it becomes continuous delivery.

CD – Continous Deployment

It’s basically deploying our application after testing into production for release. So continuous deployment is something which is not a good practice because even after the end-user testing, there might be some checks that we need to do or we need to market our application etc…
So we may want to perform a lot of checks before the release it in the market.

So that’s why continuous deployment is not a good practice perhaps continuous delivery, is what every company tries to achieve nowadays.
so the moment any developer commits a code and till the unit and integration test where our application is not deployed on to any server or any environment, it is integration testing, once it is deployed to the test environment for UAT, it becomes Continous Delivery, and when it is deployed to production for release then it becomes continuous deployment.

The blog is compiled with the help of an article from  Marianne Hollier, Cindy VanEpps, Roger LeBlanc and Anita Rass Wan.

Data Scientist & Solution Architect || IBM Recognised Speaker, Mentor, and Teacher || Debater || Blogger || Guinness World Record Holder || Watson Solution Developer || IBM Community Activist || Aspiring to Inspire.

Leave a Reply

Your email address will not be published.

Previous Story

JumpStart Programming with Python 3

Next Story

Up & Running with Big Data

Latest from Blog

Quantum Computing | What, Why & How

Now as we are starting the 5th decade after the very first proposed model in the 1980s, quantum computers are now commercially available, brought out of the lab, and into the industry by IBM Quantum. With many experts predicting it will revolutionize the way we approach problem-solving. With the recent

Case Study: Digital Transformation of “justSajid Bank”

In this current era of what we call “digital first”, industries are repeatedly changing and evolving with the help of technology. So as the banking industry is reshaping itself, banks need to keep adopting positive changes to counter and overcome the key challenges of the modern world to overcome the

Metaverse || A Whole New World.

Things are going to be super dramatic in the next few years. Metaverse is going to open a lot of new doors to revise things that we are doing now. The culture and lifestyle would be changed. Some new cultures would have emerged and everybody would be living without physical

Pakistan Day 2020 | Coronavirus Technical Solutions

Well, on Pakistan Day 2020 our nation along with the rest of the world is facing Corona Pandemic. As the sons of this great motherland, we are trying to play our roles at our places. Within the last few weeks, Alhamdulillah I’ve got a chance to develop two technical solutions

Password: Choose the Secure, Easy and Cool Password

A super secure Password is very common nowadays. Although according to experts the password is going to expire very soon. Moreover, the pin codes are also replacing password in some why. Perhaps still there is a lot of importance of a secure password in many places. The one of the most

JumpStart Programming with Python 3

Motivation; Well, if you want to play with data and deal with complex analytics problems then Python is the best for you. We can use Python for developing complex scientific and numeric apps. Python is designed with features to facilitate data analysis and visualization. The syntax in Python helps the programmers to do coding

Understanding of Data Science Methodology

Motivation: It’s all about the different methods used in data science. Data Science Methodology: There is the following methodology used in data science which can further categories into different phases; From Problem to Approach Business Understanding Analytical Approach Working with Data Data Requirements Data Collection Data Understanding Data Preparation Deriving the

Understanding Machine Learning Methodology

Motivation Well, if we talk about a human cell sample extracted from a patient. The cell would have some characteristics. One of the interesting questions we can ask, what kind of statistics that cell have? One could easily presume that only a doctor with years of experience could diagnose a tumor and

SIMPLE NAVIGATION IN WINDOWS APPLICATION

The Navigation of UWP Apps is extremely cool and easier than other platforms. It allows enabling a variety of intuitive user experiences for moving between apps, pages, and content. Navigation is the key part of the Application. In your small Apps, you may maintain your contents and functionality in a

UNDERSTANDING THE ARCHITECTURE OF UNIVERSAL WINDOWS PLATFORM

The architecture of Universal Windows Platform is most exclusive with the center of gravity which is One Windows Core. Now the whole development will follow the common refactored core that will common for all the windows Releases. It’s all about One Core, One Hardware Platform, Universal Hardware Driver and Standalone

Guinness World Record Holder | Hajj Hackathon | Khadim Al-Haramain Al-Sharifain

Khadim Al-Haramain Al-Sharifain Built an MVP of a cognitive platform name “Khadim Al-Haramain Al-Sharifain“.  Objective The objective was to facilitate Hajj operations by introducing cognitive services integrated with Hajj systems. Hence millions of Muslims who are there for Allah Rab-ul-Izat, can perform anything without disturbing their focuses and concentrations.  Functionalities

JumpStart with IBM Bluemix

IBM Bluemix is the world most exclusive cloud platform that provides developers to quickly develop, Deploy and manage Apps over the cloud without dealing with any underline infrastructure. Bluemix provides great open source platforms for your needs. Tech experts believe that up to 2020 the computing era would completely change.

JumpStart Into Big Data With HDInsight

What would happen when the volume of your data increased repeatedly over time and you need high velocity at the same time. Not only that but you have a different variety of data and Variability also exists in your data. So how would you handle all that data? If we

Microsoft SharePoint: Create an Intranet in SharePoint

As you should already have some hands on with SharePoint. So, Lets do some hands on with SharePoint Intranet for Small company. Simply start with a Blank Site Collection. Let’s assume that the company has 3 Departments: Sales, Production and Support. They each have their own area in which they should

.NET Core

.NET Core 1.0  .NET Core 1.0 is a major new investment in the future of .NET and laying the foundation for decades to come. Still, it is in its early stage, and for some time you might still focus .NET Framework 4.6 depending on your application needs. But for many scenarios,

JUMPSTART WITH DATA BINDING IN UWP

Data Binding is one of the most interesting topics in Universal App Development. In order to perform the better functionality, you really need to have some great usage of Data Binding in you Apps. So! First thing first. What is actually the Data Binding and is its usage in UWP.

justSajid | A PLACE FOR MY THOUGHTS

This blog is my personal mental playground. The views expressed are mine, and mine alone. They do not represent the views of my employer, my family, my friends, my imaginary friends, my neighbors, people who live in my city, province, country, region, or planet, nor do they represent the views

justSajid | A PLACE FOR MY THOUGHTS

justSajid is my personal mental playground. The views expressed are mine, and mine alone. They do not represent the views of my employer, my family, my friends, my imaginary friends, my neighbors, people who live in my city, province, country, region, or planet, nor do they represent the views of

Agentic AI: The Future of Machines Acting with Purpose

Artificial Intelligence (AI) has come a long way from being a fancy algorithm for chess games to becoming our digital assistant, creative collaborator, and even a philosopher’s muse. One of the more intriguing advancements in AI is Agentic AI—an AI system that can act autonomously, pursue goals, and make decisions,
GoUp