DevOps: Embrace the Culture and Speed App Development and Deployment

The past decade has seen some tectonic shifts in how application software is developed and deployed.

Traditional waterfall methods, which siloed teams and produced apps that mostly worked well (until they didn’t), gave birth to Agile, a fresh new way of including the various design, development and production teams in a holistic way while creating a lean operational approach.

iStock-607969272 DevOps: Embrace the Culture and Speed App Development and Deployment


Going Further with DevOps

While Agile spelled out a new, far more efficient way for teams – and clients – to work together to produce an app, DevOps goes one step further1. It recognizes that development and operations teams must also work efficiently with each other, because the full end-to-end life-cycle of creating, testing, rolling out and improvement are inextricably linked. A well-integrated DevOps environment can deliver the highest customer experience levels.

It’s all about evolution, and Optimus Information has embraced the concept of DevOps, putting it into practice earlier this year.


Taking a New Approach to Project Development

“Lean” was pioneered by Toyota in Japan at the end of the Second World War, where its principles of reducing waste and Continuous Improvement have influenced software development methods.

Khushbu Garg, Optimus’s Senior Technical Lead at the company’s office in Noida, southwest of New Delhi, refers to DevOps as a culture. It’s a way of approaching and working a project, she says, and should be the path that every new organization should follow.

“By ‘new organization’,  I mean a new company trying to make a name for itself to attract customers. The only way to do this is to deliver fast, with A+ quality in the work. You want to gain the trust of your customers and this is the only way to do it,” she explained.

The net result of using the DevOps approach, she says, is a significant increase in the speed of development, delivery and deployment time while dealing with issues and scaling up the application.


The Five Stages in the DevOps Process

Organizations, new or otherwise, can’t simply plunge into DevOps and expect it to work straight out of the box. There is a process that must be followed before success can be achieved.

It begins with delineating the stages:

  • Define your business logic and plan around that.
  • How will you build the solution, where will you place the coding, where will you put the configuration?
  • This is where you ensure the quality of the build through regression testing, acceptance testing, etc.
  • Package the app, release it and configure it.
  • Monitor, to be certain the app remains functional.

DevOps is not an outgrowth of the Agile methodology; it stands on its own. But the two share similarities in approach. Agile allows fast development and rapid bug fixes so deployment occurs in production as soon as possible – you test fast and release fast. The DevOps approach allows this to occur smoothly, especially within the CI/CD pipeline, where automated testing using the Optimus Test Harness can pay huge dividends.


Technology Considerations of DevOps

When faced with a new project, Khushbu points out, it’s important to determine if it will be easy to implement DevOps for that project. Then, an organization needs to consider which technology will be used. At Optimus, numerous projects are running at any given time and the company makes use of a variety of technologies, both cloud-based and open source.

“Currently,” she says, “we’re using Jenkins, an open source technology. Jenkins works well for us because it supports almost all the technologies we use, like Node, Angular, C# and Java. Also, there’s no cost to Jenkins because it’s open source.”

Her team in India uses pipelines for Continuous Integration and Continuous Development because the pipeline method requires very little developer knowledge – which contributes to fast app development.

She then tasks her team with researching which technology will work best. Once the project is underway, a great deal of testing occurs smoothly with the DevOps method:  unit testing, deployment stage testing, automated testing, and so on.


The Critical Role Played by the Customer

A hallmark of Agile app development is how the client, and sometimes the customer, is involved at every point in the project. That’s no different with DevOps, Khushbu explains.

“In fact, we place great emphasis on email notification of all stakeholders whenever a stage is deployed. Even here, we get granular: how many emails we send, what information we include, what test reports are pertinent, even what template we use to convey the information and which developer is working on which stage.” The result of this care and attention to communications means the stakeholder can identify how the project is progressing and contact the appropriate developer to offer input, if needed.

By putting the DevOps culture to work, through the step-by-step process that Optimus has implemented, the client is always up to speed because of the collaboration that occurs. “We don’t need a separate IT person to deploy our builds, we don’t need IT infrastructure time, and we can quickly share a build with a customer and give the development team any feedback needed,” said Khushbu.

DevOps is as much a discipline as it is a culture. Optimus has adopted DevOps for all our projects and we’ve already seen great success with it. We know it works because it’s inclusive when it’s deployed properly.

We invite you to contact us to learn more about this evolutionary approach to app development. Our job is to stay at the leading edge of software technology and our goal is to provide our clients and customers the benefits that such technologies bring. So, get in touch with us today!

More Resources:1

QA’s Strategic Role in DevOps

Fundamentally, DevOps adoption is about streamlining an organization’s conventional Software Development Life Cycle to achieve faster time-to-market for company products. Other factors held equal, faster TTM imparts increased competitive value due to the ability to meet customer requirements more accurately and more frequently.

In the quest for speed, however, many organizations transforming to a DevOps delivery model are inadvertently squeezing out essential QA functions. A narrow focus on improving SDLC speed causes them to miss the point that DevOps is about improving software quality too. In a perfect DevOps world, everyone is responsible for QA, but not everyone has the tools, knowledge and expertise to do QA right.

QA’s Central Role in DevOps

Those companies who have successfully deployed DevOps realize it actually should be called Dev-QA-Ops, since quality processes must play a central role in attaining the ultimate goals of cost reduction, more frequent releases and improved customer satisfaction.

They discovered that a conventionally centralized, time-discrete QA function needed to convert to an environment where quality processes permeate the entire SDLC from architecture to production. To accomplish that, their QA moved from direct testing responsibility to providing oversight, consultation and education leftward toward developers and rightward toward Ops.

Raising QA’s Value Proposition

DevOps shifts some early defect discovery to developers, which allows QA more time to evaluate new testing tools and frameworks plus striving for complete end-to-end automation. Furthermore, QA professionals become the logical agents for assessing the organization’s continuous development/integration/delivery pipeline for obstacles to producing quality code in a timely manner. Additionally, they act on development’s behalf to test and qualify the infrastructure they acquire from operations.

In other words, QA’s value in a DevOps house reaches beyond direct testing of software under development toward responsibility for ensuring utmost quality in the processes surrounding that development. This transition is not without difficulties, but it is necessary in order to make DevOps a meaningful success.

Steps to Achieving Dev-QA-Ops

  • Everyone must make the mental adjustment that QA is a strategic partner. They must discard the viewpoint of QA as a separate, transactional center and replace it with the perception of QA as a distributed facilitator and equal partner.
  • QA professionals must be added to planning and technical teams to provide insights and guidance regarding how early decisions affect the quality of development and the final product in the eyes of the customer. They also identify areas where automation is most effective and can quantify time and resource costs of automation implementation and support.
  • QA should be present at business planning meetings, which take advantage of their expertise in evaluating the risks of product decisions affecting testing costs both in development and production. Attendance at these meetings helps QA calibrate their own expectations against business requirements.
  • QA must be proactive about educating developers and others about smart testing methods that are most effective and efficient at catching defects early such as TDD and BDD.
  • QA members must take personal responsibility to educate themselves as necessary to deploy, support and use the best automation tools available. Furthermore, they must improve their communication skills to educate others about how best to utilize test automation and instill quality principles in their work.

QA as a Center of Excellence

QA should strive to be a center for excellence with regard to testing and quality principles from which everyone in the organization can benefit. They become evangelists and advocates for quality in all aspects of the enterprise mission. The enterprise will come to realize that their expertise is applicable to other processes besides software development as well. Throughout their transition, it is essential for QA to act proactively to maintain relevance to the business.

It is all too easy for organizations transitioning to DevOps to diminish the role of QA in the new world order. It may appear that QA can be “naturally” distributed between Dev and Ops functions and that QA personnel can be reduced.

The reality is that without strong QA expertise, DevOps is an incomplete solution that fails to achieve increased release velocity without costly defects at the wrong end of the process. Software organizations that leverage their present QA expertise into a higher-level, more broadly defined role also raise their business’ ability to deliver the best software possible that satisfactorily meets customer requirements.

Ultimately, the QA organization is responsible for incorporating key DevOps principles of shared responsibility and continuous software improvement, while raising the level of their present expertise. In doing so, they will secure their place in any DevOps transition.

The Impact of DevOps on Testing

A fundamental principle of DevOps is that the concept demands close collaboration between all the stakeholders involved in an end-to-end software production process from requirements to development to deployment and delivery.

However, because the portrayal of DevOps often exclusively emphasize melding development and IT Operations, other stakeholders may seem peripheral to the process. In particular, many outside observers assume that the continuous development, continuous integration and continuous delivery practices intrinsic to DevOps somehow reduce the need for testers.

In fact, DevOps testing is a primary contributor to assuring that the software delivered is of high quality and meets customers’ actual needs. It is also a fact that testing teams need to increase their contributions in the world of DevOps as well.

The Effect on DevOps without Integrated Testing

If an organization fails to recognize the crucial role QA plays within a successful DevOps transformation, it will be unable to achieve smooth operation of a continuous delivery model. Developers will continue to unit test with functional-only tunnel vision and hand over the remainder of testing to QA at their own pace. This situation creates an almost invisible disconnect between development and operations that creates undue friction toward reaching continuous delivery goals.

DevOps Testing Shifts Leftward …

A DevOps shop meeting its goals involves testers at all phases of the development process. The first step must be removing legacy boundaries between QA and development organizations in order that their processes merge and operate in parallel. Testers must integrate themselves tightly within development teams by working hand-in-hand as code is produced instead of waiting at the other end of an artificial pipeline. Dedicated test resources embedded in scrum meetings is a good, though insufficient, starting point.

A leftward shift in testing supports a DevOps philosophy of fail early, fail fast and fail often with respect to functional defects. It also enable verification of customer requirements at the head of the development cycle by the test team in collaboration with the production end of the CI/CD cycle.
To be completely effective, however, early testing responsibility must be shared by both testers and developers. QA’s role in this is to research and acquire the latest, most effective techniques, tools and technical expertise to make effective early testing processes happen with minimal disruption.

… and Rightward

Test teams in DevOps have a clear charter to increasingly use automation to streamline their own testing efforts. Additionally, test teams can play a logical role of integration between development and IT Operations to proactively increase system stability in the later phases of continuous delivery.

Beyond responsibility for automating builds and integrations, however, they should extend their automation skillsets to include automated tools for development infrastructure acquisition, configuration and provisioning. They are in the best position to evaluate time and resource requirements from both Dev and Ops, and how to serve these needs in the most efficient manner.

Furthermore, since their new role in DevOps extends beyond defect discovery into evaluating deployment/customer requirements, they can facilitate a leftward shift of Ops by adopting or facilitating other processes as well such as requirement management and production monitoring functions.

Continuous Testing Is Paramount

Regardless of how far left or right testing teams expand their responsibilities, their overarching obligation is creating a continuous testing approach that spans the entire CI/CD cycle. This means testers must be cognizant of early design and requirements decisions and provide feedback based on their expertise and experience, plus respond to later-phase testing and production requirements.

Early involvement enables tester to prepare their own requirements and implement test scripts even as the first lines of code are written. As development proceeds, involved, knowledgeable testers are key to ensuring that developers receive immediate feedback on defects and understand the impacts of their implementation decisions on later stages of a CI/CD pipeline, such as performance testing, infrastructure scaling and disaster recovery.

Clearly, to effectively complete a realistic, productive DevOps transition, testing plays an enormous role. In fact, its role expands and tester technology expertise, especially with respect to automation, significantly increases. Additionally, testing is uniquely positioned to further increase its value by stretching itself into areas traditionally allocated to Ops in a general leftward shift of shared responsibilities.

Far from being diminished, in a DevOps context testing becomes an ubiquitous function and tightly integrated into all the myriad “continuous” processes central to a successful DevOps conversion.

Some may argue that extending the testing organization’s reach both leftward into Development and rightward into Ops blurs the distinction of testing objectives and may lead to a dilution of its core value.

To view it as “blurring,” however, is a glass half-empty stance that overlooks key tenets of DevOps, which are reducing specialization, increasing collaboration and broader sharing of responsibility across artificial process boundaries. Without those principles in place and extended to test teams, the real benefits of DevOps are impossible to achieve.


Nothing Found

Sorry, no posts matched your criteria