The Dark Art of DevOps (and how Azure DevOps fits in)

Here is a Post n wrote for my Companies blog, originally posted here.

DevOps has become a hot topic in organisations over the past year or so. However, there seems to be a lot of confusion regarding what DevOps actually entails. So, what is DevOps?

If you asked a more sales-inclined individual, you may get a response along the lines of: DevOps digitally transforms an organisation’s development department by bridging the gap between development and operations, resulting in higher quality solutions, fewer bugs, quicker delivery times, shorter recovery times, and controlling scope creep.”

This sounds amazing! However, it does not answer the question as to what DevOps really is. So, I will be taking a different approach to delve into what DevOps entails.

DevOps is based on the principal of continuous improvements in the Software Development Lifecycle, and consists of principles, practices and tools that allow an organisation’s development department to deliver projects at a high velocity, while maintaining quality and continuously improving the process associated with delivery. This is where Azure DevOps comes in. Azure DevOps is a selection of tools that facilitate the implementation of DevOps within an organisation.

DevOps consists of five main pillars (which are supported by processes, practices and tools), namely:

1. Plan and Track

This involves planning what development work needs to be completed and tracking progress against that. The tool Azure DevOps offers here is Azure Boards.

2. Develop

This is where your software developers write code and store that code. In the Azure DevOps ecosystem, the tools that used here are Visual Studio, Visual Studio Code and Azure Repos as a source code repository.

3. Build and Test

Automated builds and testing are a very important part of DevOps, as this automation frees up valuable resource time to focus on more imperative tasks. Automated builds can be set up to trigger new builds (compiling source code into executable programs) based on certain criteria (for example, “once a day”), and automated tests can then be run to verify that everything is working as expected without the intervention of a person.  Azure Pipelines and Azure Test Plans are the tools utilized here.

4. Deploy

The next step is Automated Deploy – first to a UAT\Test environment and eventually to production. Doing deploys in this manner prevents unwanted changes being accidentally deployed from a developer’s machine and introduces additional controls to only deploy what is wanted and limiting the introduction of problems.  By automating the deployment of systems deployment times are also drastically reduced and thus system down time is reduced. Azure Release Management is the Azure DevOps tool used to automate deployments.

5. Monitor and Operate

After a system has been deployed, it needs to be monitored and operational activities need to be performed to ensure it is up and running and running optimally. Azure Monitor and Application Insights are the tools available in the Azure DevOps tool-belt for this.

With the tools provided by Microsoft Azure DevOps, as well as industry tried and tested principles, the above five pillars can dramatically improve the operations and output of a development department while driving down operational costs.

Now that we understand what DevOps is and how it works, what outcomes can we expect from mastering the 5 pillars?

  • Better quality solutions
  • Quicker delivery times
  • Fewer bugs
  • Shorter recovery times to resolve bugs
  • Prevents uncontrolled scope creep
  • Improved collaboration and agility in teams
  • Better cross-skilling in teams
  • More automation
The Dark Art of DevOps (and how Azure DevOps fits in)

What is the Cloud? A Layman’s Guide

The Cloud

Wikipedia defines the Cloud as “Cloud computing is a kind of Internet-based computing that provides shared processing resources and data to computers and other devices on demand”. This is a great and concise definition, but what does it really mean and how would you explain it to someone with minimal technological knowledge?

So, let us try to break it down in a way in which you can explain it to the more technologically challenged in your life.

In reality most households own multiple computers, and by computers I mean any device capable of a fair amount of processing power, this includes laptops, desktop PCs, gaming consoles, tablets and even smart phones. This is a sign of the times and it is great to have all this computing power and the potential it holds available to us, but in reality it is not very cost efficient. We all spend a lot of money on all these devices (and inherently the computing power they hold) but we only use them a fraction of the time. I know I am lucky if I get to turn on my game console for 4 hours a week, which means it sits idle and unused the remaining 164 hours of the week, resulting in a utilisation rate of just over 2%. Would it not be much more economical for a group of people to buy and share these devices thus ensuring their usage is as close to 100% as possible? This sounds like an easy question to answer, but in reality the practicalities thereof are a bit more difficult to address, issues arise regarding things like everyone getting access to the device, what happens if more than one person wants to use the device at the same time, etc. This fundamental reasoning is where the concept of the Cloud comes in.

The Cloud is a way of sharing computing power and data storage remotely over the Internet, thus resolving the issues related to physical access to the device in question. Now how does this work? Let us take data storage as an example. In the past if you wanted to store files (such as music, picture, documents or anything else really) you had to go to a shop and purchase some form of storage device, be that a USB memory stick, a hard drive, etc. You had to carry the cost of purchasing the item, but also the risk that you could lose it or it could break, which would result in the loss of your data. So you also had to get some additional storage to create a second copy, i.e. a backup, which increased the cost even more. But these days Cloud Storage solutions like Dropbox, OneDrive, Google Drive and iCloud offer a way of storing your files at a low cost and with backups and other maintenance activities and costs being taken care of by the provider, all for a small subscription fee (although all the above mentioned offer a free entry-level package and you only pay if you require additional capacity). The purchase of an ‘asset’ is thus replaced by a paid-for service. And because many people use these services, economies of scale come into play, thus everyone ends up paying less that they would have if they had gone and purchased the storage devices themselves.

Another example is the concept of Cloud Gaming. In the past if you wanted to play video games you either had to buy a gaming console or invest a fair amount of money into a gaming PC. There are now however quite a few Cloud Gaming companies (such as UGameNow, GameFly and Nvidia GeForce Now) that allow you to play video games on nothing more than a Smart TV or entry-level PC. How this is achieved is that the device used by the player simply acts as a mechanism to receive and send user input and render a video stream to display, with all the processing and intensive tasks being performed remotely on servers in the service providers’ data centres. These Cloud Gaming Companies also operate on a subscription bases, and although this industry is still in its infancy and is still experiencing numerous growing pains, it is not unreasonable to think that in the future we will no longer have to purchase specialised hardware to play video games, but will simply pay a monthly subscription fee, knowing we will never have the pains of upgrading hardware to play the latest games again.

Obviously the Cloud goes further than just individual consumer uses and spans into the space of revolutionising business information systems as well. No longer will businesses have to spend millions on buying expensive servers and building data center in isolation of one another, with enough computational and storage capacity to cater for peak usage which only occurs a fraction of the time and the majority of these computational and storage resources sitting idle the majority of the time. An example of this is a company’s payroll system which gets used 1 or 2 days a month when the employee payroll is processed and sits idle for the remainder of the month. Businesses can reap the same rewards that individual consumers can by utilising a Cloud Service, with economies of scale once again resulting in cost savings and less maintenance for the businesses who are the clients of these Cloud Services. The Cloud also offers businesses a great deal of agility in adjusting to changes in demand for processing and storage resources by providing on-demand access to a shared pool of configurable computing resources. The two main players in this space are Microsoft and Amazon, with their Microsoft Azure and Amazon Web Services offerings.

These Cloud Offerings are broken down into 3 main categories, namely Infrastructure As A Service (IaaS), Platform As A Service (PaaS) and Software As A Service (SaaS). Let us briefly have a look at each of these:

Infrastructure As A Service (IaaS) – This model involves only paying for the hardware, i.e. processing and storage utilised. All software related installations, licensing costs and maintenance remains the responsibility of the client. This process typically involves businesses migrating Virtual Machines from their on premise servers to the cloud.

Platform As A Service (PaaS) – Similarly to IaaS the client still pays for the processing and storage utilised, but now additionally for the provider to maintain all system software. This means that the client is no longer responsible for the installations, licensing costs and maintenance of system software, and these become the responsibility of the Cloud provider.

Software As A Service (SaaS) – In this case the business simply rents an application from a vendor. The maintenance and backup activities thus are the responsibility of the Cloud provider. Great examples of this is Microsoft Office 365, OneDrive, Dropbox and iCloud. Even Netflix operates on this model.

Businesses can choose one of the following options for their Cloud configuration:

Public Cloud – In this configuration the business will utilise computer resources and storage shared in the public cloud, by multiple companies and individuals.

Private Cloud – This is when the business makes use of cloud infrastructure operated only for them and the computer resources and storage are only shared by divisions from within the business itself. This cloud Infrastructure can be managed internally by the company or externally by a service provider.

Hybrid Cloud – When utilising a combination of the Cloud and traditionally on premise data center it is referred to as a hybrid cloud configuration.

One major requirement for the utilisation of the Cloud and reaping the benefits thereof by either businesses or by individual consumers is the presence of a reliable high-speed internet connection, which is not a problem in most first world countries, however in the developing world this is not always available. This can result in a compounded negative economic impact on these countries who then become even more uncompetitive compared to their first world counterparts.

One question I get asked more than any other is whether the Cloud is secure? And the answer is, as long as good security practices are followed (like not sticking your password on a post-it note on your screen etc.), that it is as secure as any other computer resource and quite often due to the increased focus on security in the cloud it might even be more secure. I also get asked whether other people will be able to see your files as the files are stored on shared resources, the answer to this is no. Although the files might be stored on a shared storage resource there are various layers of security technologies in play to prevent unauthorised access to individuals and companies’ files in the cloud.

This concept of sharing the cost of an underlying infrastructure so that everyone can benefit from the service thereof is not a new concept (think of public libraries, gyms or even the electricity generation and distribution infrastructure) but it is becoming ever more prevalent as an increased emphasis is being placed on the service being rendered as opposed to owning the item that renders that service. Even companies like Uber are built on this model as well as the planned Tesla car share initiative, and in the future we will see many more companies and offerings that follow this mindset.

What is the Cloud? A Layman’s Guide