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 https://theagileadmin.com/what-is-devops/

Evolution or Revolution? The Power of Microservices in Azure PaaS

Constant business pressures are demanding more and more from software developers, and they are responding with some remarkable new technologies.

As always, necessity is the mother of invention. Developers are pioneering new architecture that can break down apps into small, independent components, allowing those individual parts to be updated when necessary with speed and reliability, all without impacting the integrity of the overall application while it’s running.

This new app architecture is known as “microservices”.

Traditional app architecture typically has three layers:

  • The front end, which is linked to a website
  • The middle layer, where the business functions occur
  • The back end, typically where the database resides

Restrictive App Design Can Impact Business

This was the style of design used for applications that were static in size and made to suit specific hardware. However, the style did not lend itself well to updating, let alone scaling up; if one component of an app needed improving or modifying in some way, the monolithic design necessitated that the entire app would have to be modified and then tested before going back online.

As recently as a few years ago, many people would see “site under maintenance” messages when they tried to access their banking website or their insurance company’s website, for example. That is no longer acceptable for any business.

So, the time was ripe (and the pressure was ratcheting higher) for a better way forward.

iStock-871030872 Evolution or Revolution? The Power of Microservices in Azure PaaS

Seamless Updates Are the Norm

Microservices provide developers with the means to refresh a single area of an app without taking down the entire site to do so. Likewise, a problem arising with one area doesn’t result in the entire app going down.

“Microservices is very fluid,” says Gurinder Singh-Mann, an Azure architect at Optimus Information. “You have multiple teams working on different areas of an app, with each team ‘owning’ their component and knowing it inside-out. If I’m a business owner with a promotions page on my website that goes down, I don’t want the entire site going down; that would really impact my business. And when I refresh, I want to be able to refresh just that component.”

An app designed with this approach has each of its elements – or microservices – independent from the others to allow for updates, repairs and security improvements specific to that microservice.

The net result is an app that is ready to be scaled, altered or updated in any manner necessary without incurring downtime.

Faster Database Access

Another important characteristic of microservice apps lies with the database. Recall the earlier description of a three-tiered architecture, with the database being the third tier at the back end of the app. Using the microservice approach, each individual microservice can have its own database, pertinent to just its function. Once again, an update or change can be made without impacting the app’s overall function, something not possible using a traditional approach with a single database at the back end.

There is also a dramatic improvement in the time it takes an app to perform a function– from several minutes down to as little as a second, in many cases.

Azure: A Tailor-made Platform

Like so much in technology today, microservices have come into being largely because the cloud is offering developers endless opportunities to innovate. In the case of Azure Cloud, it’s also reducing workloads and saving time.

Every website hosting an app needs to be monitored in real time. It’s important to know how the site is running in different geographic regions, explains Gurinder Singh-Mann, as well as how many instances of the site are running and whether there is an emergency and a need for disaster recovery.

These tasks would ordinarily fall to developers to deal with. They would have to write appropriate code, test it and then deploy it – added steps that extend the time to get an app to market.

Azure takes that major headache away from the developers so that they can focus simply on building out their code for the app. “Azure is pretty remarkable. It can take care of tuning your database and even takes care of disaster recovery automatically,” says Gurinder.

Power Your Business with Microservices on Azure PaaS

Azure and microservices create a powerful combination that allows businesses to maintain a problem-free web presence at all times, along with the ability to alter or update an app seamlessly in real time.

Optimus Information is actively using microservices architecture for our clients. We are experts in Azure cloud migration, optimization, management and support.

Today, over 60% of new apps are using cloud-enabled continuous delivery for faster innovation and business agility. It’s worth contacting the people who know how to make this happen.

Contact us today and we’ll be happy to share our expertise with you and show you how the combination of Azure and microservices can power your business.


More Resources:

Helpful Tools for Agile Development

Today’s businesses require project managers and systems to retain the ability to change when and where necessary regardless of which stage project development is in. This must also be achieved without severely impacting scope, time, and cost. Agile software development platforms enable businesses to adapt, plan, evolve, continuously improve, and quickly respond to change. Selecting the appropriate tool to manage agile development is essential. Specifications, requirements, and solutions change and develop through cross-functional cooperation. Change driven agile project management effectively addresses rapidly changing, short duration, or fast-tracked projects and encourages a team approach, project team and client collaboration, and flexible problem solving and decision making.

Agile development must consider that the client retains control of project execution, quality is never compromised, and deliveries are timely. Agile development tools provide clients with adaptability through delivered iterative development derived from continued open team and client collaboration throughout the project’s life. Software specifications changes are accommodated at any stage during the project through agile development. Iterative development permits development process customization. The software is delivered at set intervals allowing client feedback to be used to make changes to the software specifications. Open office and free communication is essential to agile development, not only among the programming team, but with the client.

Agile development and management tools are only intended to aid the agile process, such as moving project tasks forward from one stage to the next. Different businesses prefer different agile development tools. Cost, ease of learning and operation, and complexity determine a client’s choice of agile development tools and add-ons.

 

JIRA-300x118 Helpful Tools for Agile DevelopmentJira Agile monitors product development and team progress and assists in issue organizing and work assignments. It is a good “large company” tool. It integrates with JIRA, Confluence, and Dev Tools such as Stash. In addition to identifying and reporting on team pace, progress, and commitment, it aids in building a sprint backlog and creating and estimating stories. Scrum predictably and uniformly delivers complex solutions and its established lean kanban methodology incrementally changes the existing process. Kanban can be effectively applied to software development, DevOps, IT operations, and other processes. JIRA Agile is compatible with JIRA Capture and supports agile team exploratory testing. Some reviewers consider it expensive, complex, and “UI/UX is not good.”

Jira Agile Add-On facilitates the development of user stories, building of sprint backlogs, and visualization of team activities. The Jira Agile Add-On may be a good choice when the client has a defined project lifecycle with a specified workflow it is expected to go through. Code, configurations, and documentation may be independently reviewed and tested before accepting each phase of work.

 

yodiz Helpful Tools for Agile DevelopmentYodiz is considered a good small business / startup tool. Yodiz has dependency tracking’ for stories and follows the scrum process that predictably and uniformly delivers complex solutions. Backlog management is simplified with a centralized online repository that quickly prioritizes stories. The scrum tool may be customized and effectively organizes backlog items and drag-and-drop user stories, tasks and issues. It sets sprint goals and plans sprint contents, defines team specific “Definition of Done”, offers sprint analytics, burndown charts, average velocity, and trend graphs. Dashboards provide detailed statistics, graphs, user level reports, time sheets and more. Its epics-features represent requirements that reduce larger features into smaller stories for sprints and releases. This tool enables teams to create, schedule, plan, and prioritize current and future sprints and sprint user stories and issues. Sprints may be linked to release and track progress across teams. Multiple projects and issues are tracked and managed using the visual issue board. Yodiz offers a UI with group chat and real-time activity updates, notifications emails, updates, and tags. Yodiz operates on Amazon servers adding security and reliability. It may be integrated with existing workflows and connected with services such as Jenkins, Uservoice, GitHub, Dropbox and Zendesk.

Most reviewers seem to prefer Yodiz, considering it “superior,” easy to use UI/Ux, and easier to learn than other agile tools.

 

Rally-Software-01-300x194 Helpful Tools for Agile DevelopmentRally is a cloud-based agile lifecycle management platform. It offers three levels to suit small, large, and enterprise sized companies. Rally – Community is free for 10 users / five projects. Agile and lean processes are used to manage project and team activities, work, and progress. Rally – Enterprise makes work visible across multiple teams, and is scaled to an unlimited number of users. Rally – Unlimited connects to Enterprise features, with added portfolio, collaboration, and analytics features. It is also scaled to an unlimited number of teams. Custom pages, apps, and dashboards that automate a variety of development processes are included. Teams and clients rely on Rally to report sprint burndown and team velocity reports. Software product teams use scrum and maintain their product and sprint backlogs. These agile development tools manage all work types, enable teams to create, schedule, plan, and prioritize sprints and sprint user stories and issues, offer training, and ongoing collaboration. Rally offers are comparable to Jira and Yodiz. Overall, reviewers consider Rally expensive, complex, and slow.

There are many other agile development tools available that offer boards, notifications email support, burndown capabilities, logging, sprints, team monitoring, customizing, and other features.

 

header-logo-axosoft@2x-300x113 Helpful Tools for Agile DevelopmentAxosoft OnTime Scrum part of Axosoft’s OnTime platform, is a HTML-5 based program that helps development teams manage backlog, releases, and sprints. It features burndown charts, a management dashboard, collaboration, and coding and bug-repair tracking.

 

leankit-300x86 Helpful Tools for Agile DevelopmentLeanKit uses “a cloud-based whiteboard metaphor” for tracking teams and organization processes. Cards represent work items, and status updates are provided. Teams see workload distribution and may export historical data. Scrum and Kanban extends software development, support, and team monitoring.

 

Using the most relevant and effective agile development tools, managers control rapidly changing conditions. Change-based agile project management successfully improves team productivity, customer and client relations, product, and service in a timely and cost effective manner through collaboration.

Diving deeper into the Redmine Backlogs Plugin

Agile software development practices are now common and are even finding their way in to large companies that don’t readily embrace change. With the rise of agile has come a number of tools for managing agile software development projects.

One tool that we have worked with here is the Backlogs plugin for Redmine which turns Redmine in to an agile tool.

For those who are not familiar with Redmine. Redmine is a web based project management application based on Ruby on Rails framework.

Redmine Backlogs has a number of standard features for managing your agile team:

  • Sort stories in product and iteration backlogs
  • Track story points for stories
  • Display burn down charts
  • Track tasks via task board
  • Produce printable task board cards
  • Track impediments within each iteration

Most Appealing Redmine Backlogs Features

Backlogs offers the burn down charts for sprints and also the release burn downs.

redmine-backlogs-burndown Diving deeper into the Redmine Backlogs Plugin

The drag and drop interface to manage the product and sprint backlogs and the inline editing features are really nice.

The sprint task board maintenance is faster compared to a updating tickets in a standard Redmine installation. New tasks are easy to add and easy to update.

redmine-backlogs-sprint-taskboard Diving deeper into the Redmine Backlogs Plugin

The wish list still continues…

Tasks can be associated with only one tracker in Redmine. In case your current Redmine process makes use of separate trackers for defects, change requests, enhancements etc, only one can be configured with backlogs.

Backlogs could provide more customized visualisation and sub filters to sub categorize the tasks further. If everything can be treated as a task at a broader level and have further sub categories to identify other trackers such as defects or change request, this would really help make the tool more flexible and easy to use.

Installation

Refer here if you are looking for the Backlogs installation procedure for your Redmine instance.

I recommend trying out the plugin on a local Redmine setup, check out the features and play with the settings before you configure it on your production environment.

An important point to be noted here is that the latest version 0.9.35 for Backlogs is supported on a Redmine versions 2.0.4 , 2.1.6 and 2.2.1 only. For the other Redmine versions Backlogs might work after installation, however they are not supported.