Why try Azure DevOps? 

Homepage Why try Azure DevOps? 

As a cross-platform mobile developer I am interested in every technology that allows me to design mobile applications: Native, Xamarin, Flutter, the list goes on! This also means I’m a fan of languages like Java, Swift or C.  

However, when it comes to software design there have always been two worlds: development and operations. DevOps aims to unite these two worlds by making them work together. The goal is, of course, to deliver software faster and more securely. In this way, people, processes and technologies are linked to providing continuous value. 

I wanted to share with you my Azure DevOps experience for several reasons, beginning with the fact that it allows me to combine several Microsoft technologies, development languages, and tools, thus making it a perfect candidate for adopting DevOps.  

In future articles in this series, I’ll note that to compile mobile application, some obstacles make cross-platform development somewhat complicated, and I’ll show how  Azure DevOps helps overcome these complicationsFinally, if you consider the large number of tools that can interface with Azure DevOps (including Visual Studio, App Center, and Azure), you can imagine the perfect cocktail to set up a DevOps environment with ease and without reducing your options.  

A quick reminder about the basics of DevOps 

Why do we need DevOps? 

Developing software can often be a very manual process. As a result, this results in a large number of errors, both within the code and in the deployment. Often development and exploitation, as well as the associated teams, are out of sync. This in turn leads to delays in delivery and, in the context of a services company, this delay will cause disappointment among some stakeholders. 

DevOps improves visibility, builds on more precise requirements and encourages better communication, all of which will accelerate the time to market. 

What is the difference between DevOps and other development practices? 

In the software development process, several tasks (including build, deployment, interface testing, and unit testing) are repetitive and time-consuming, and sometimes bring little end-value to the product.  

In a world where acceleration to market is prized, it is increasingly important to save time by delegating certain tasks to a computer and then automating those tasks. DevOps puts its focus here to reduce the human errors that can be so time-consuming. 

What is the philosophy of DevOps? 

DevOps is not just a tool; it is a philosophy and an ideology.  

DevOps role is to smooth communication and exchanges between two worlds: development and exploitation. It is a combination of tools, agile methods and – above all – common sense. 

To achieve this, you have to break the silos and promote collaboration between teams. DevOps attempts to eliminate conflicts (inter-team and intra-team)risks (bugs and errors) and constraints (timetables and technology) to improve delivery both from a time perspective, as well as in terms of quality. 

Want to know more? Read former Witekio System Architect Tangi Colin’s article on software factory infrastructure.

Overview of the 5 services offered by Microsoft’s DevOps solution 

As mentioned, the DevOps philosophy aims to bring together several tools for the design and deployment of software. With this in mind, Microsoft has designed several services to fulfil all DevOps missions and here’s my take on each.  

Azure Boards 

These tables offer you a convenient way to track individual work units. Depending on the type of project and the phase you are in, you will want to follow problems and develop backlogs. You should also be able to plan, monitor, and discuss these issues throughout the project. 

Today Azure DevOps offers both tables for the Agile method and the Scrum method. The different columns are fully customizable, and the tool is connected to the pipeline. As a result, tickets can evolve depending on the state of the git (creation of a pull request, the merge of a pull request, cancellation of a pull request, and so on) which, once again, it automates. 

Azure Repo 

Here we find a useful tool that we already know well thanks to a lot of services such as Bitbucket, GitHub or GitLab. Azure Repos is a public or private source code repository manager. It manages the Git as well as SVN or TFVC.  Just like its competitors, Azure Rest handles the files and changes them, as well as creating pull requestsUsers can exchange the code via comments. Where Azure Repos stands out from these competitors, however, is the ability to do semantic research that can distinguish the methods from the classes to allow you to do much more precise research. 

Azure Pipelines 

Azure Pipelines is, in my opinion, the most interesting part of Azure DevOps. It is a comprehensive tool to manage both continuous integration (CI) and continuous deployment (CD) and many platforms and languages are supported. Azure Pipeline is completely independent of Azure Repos, so you can use a preferred source code manager such as Bitbucket, GitHub, SVN or any other Git manager that allows for the use of the command line. It offers a great predefined pipeline tool that allows anyone to launch a new pipeline very quickly. It also manages the pipeline configuration via standard YAML scripts to store and version it directly in your externally dependent code on an additional tool. Its deployment functionality will also allow you to automate certain deliverables including a website, mobile application, IoT application, and Azure services. It can also manage so-called sensitive files and limits access only to trusted people to maximize security.  All of these features make it the perfect partner for app generation and deployment, but its greatest advantage remains ts support of a large number of platforms and languages, which I’ll mention more about below. 

Azure Test Plan

Any software development project worthy of the name comes with testing. As developers, we understand and must master unit tests, integration tests and performance tests, among others. But there’s also all the tests that our testers complete and Azure DevOps has planned for them. With Azure Test Plans it is possible to set scripted tests with end-to-end traceability, and exploratory tests can also be carried out. All this is directly linked to an Azure Board allowing you to add bugs you encounter. 

Azure Artifacts 

During the development phase, we often create libraries or frameworks that are shared with other developers, both internal and external to the company. Azure Artifacts makes it easy to share these libraries and – coupled with the Pipeline – it allows you to deliver new versions continuously. 

4  good reasons to use Azure DevOps 

DevOps means continuous integration or even continuous deployment. Personally being a mobile developer and IoT, I am confronted with very different environments, platforms and languages and not always compatible with each other.

Let’s take the example of developing a mobile application on Android and iOS. Whether you are native (Java, Kotlin, Swift or Objective-C) or not (Xamarin, Ionic, React, Flutter), you will have to switch to native tools at some point to generate an APK on the Android side and an IPA for iOS.

It’s easy when you’re developing, you have your own development machine, but in the case of continuous integration that takes place on a remote server, it’s a little more complicated.

DevOps means continuous integration and even continuous deployment. While continuous integration and deployment seem simple when working on a development machine, it can get a lot more complicated when you’re tasked with continuous integration on a remote server. 

Personally, being a mobile developer and working in IoT, I am faced with very different environments, platforms and languages that are not always compatible with each other. 

For example, take the job of developing a mobile app running on both Android and iOS. Whether you are working in native languages (Java, Kotlin, Swift or Objective-C) or not (Xamarin, Ionic, React, Flutter), you will need to switch at some point to native tools to generate an APK on the Android side and an IPA for iOS. 

Lucky for me, Azure DevOps has options to help tackle these challenges. 

1. Azure DevOps Supported Platforms 

Let’s consider what we need to compile our two native mobile applications: 

Native Android app  Native iOS app 
  • Windows, Linux or Mac 
  • Android Studio 
  • Gradle 
  • Mac 
  • XCode Build Tools 
  • Cocoapods / Swift Package Manager / Carthage 

For those who do not often work in native development on iOS, Cocoapods, Swift Package Manager and Carthage are the equivalents of an addiction manager like NuGet and (in part) Gradle. 

As is clear, for the first application, no matter which operating system is used, as long as we have the compilation tools, we will be able to generate the APK of our application. 

Unfortunately for this example, it’s the second one that has become more complicated, since it necessarily takes a Mato compile the application.  

And be careful: there’s no way to use a virtual machine to compile and sign – you need a Mac, a real one. 

And that’s where Azure DevOps becomes interesting.  

Most of the solutions offered for compiling applications like Bitbucket, GitLab or Jenkins do not offer macOS support. Most often, they only support Linux. Some manage to get around this problem by using Docker, but again this can only work for compiling an iOS application. 

Fortunatelythanks to Azure datacenters, Azure DevOps offers macOS machinewith a different version of OSX and XCode development tools. 

In fact, in this case, Azure DevOps seems to be a good way to compilour application. All Azure DevOps tasks are natively present in the pipeline editor or via YAML files:  

Native Android app :

Native iOS app


Windows (x64 and x86) From a compilation point of view, the majority
 of platforms are supported: 

  • Linux (x64, ARM, RHEL6) 
  • macOS 
  • Docker 

 

2. Languages, projects, Azure DevOps is highly flexible 

Just as with platforms, Azures DevOps supports a large number of languages and has a lot of predefined tasks. These include: 

  • Core .NET 
  • IoT Edge Azure 
  • MSBuild 
  • Xamarin.Android 
  • Xamarin.iOS 
  • Android 
  • Ant 
  • Cmake 
  • Docker 
  • Go 
  • Gradle 
  • Grunt 
  • Gulp 
  • Maven 
  • Xcode 

As a result, a large number of projects are therefore compilable, whether mobile, web, low level or IoT:  

  • ASP.NET 
  • core ASP.NET 
  • Azure Cloud Service 
  • Azure Function 
  • Js 
  • UWP 
  • Python 
  • ViewJS 
  • React 
  • Angular 
  • Webpack 

 

All of this should allow you to compile all or most of the applications you design.  

And if you can’t, you can always create your tasks or simply run command lines! 

 

3. Integration into Azure and other Microsoft services 

For some time, Microsoft has become a master at creating and selling services to businesses and consumers 

Of course, developers are not left out and the Seattle-based firm has made a lot of services available to help them including Azure, App Center, .NET, and Visual Studio. 

And Azure DevOps is now added to that list 

It has been designed to communicate and exchange with the full range of service that Microsoft offers. As a result, it is possible to deploy, administer, modify and query most of these services via Azure DevOps making the developer’s work even easier. 

 

4. Azure DevOps and GitHub are complementary 

When it comes to modern software development, collaboration is the watchword. In this process, developers have a large number of tools at their disposal, perhaps even too many! 

GitHub has been part of Microsoft’s product offering for the past few months. With a user base of millions, GitHub is the preferred tool for sharing, collaborating and filing code. While Azure DevOps is obviously aimed at professionals, every developer already has its own habits and tastes. So why have one if you already have the other? 

I will not focus on the commercial or marketing strategy of this acquisition by Microsoft, but simply make a couple of comments from a technical and practical point of view. 

Are they compatible? 

If you already use GitHub, you are lucky because Microsoft has put everything in place to allow you to use one with the other. 

For example, GitHub only has a very simple kanban for task management while, as mentioned above, Azure DevOps arrives with a much more complete tool: Azure Board. It is possible to link these to each other thanks to the GitHub “Azure Boards” extension, and it is also possible to use Git repository hosting directly within Azure DevOps. 

Who’s using them? 

GitHub has been around for 12 years now and has been able to win a large market share. Today governments around the world, as well as companies like Google, Adobe, Twitter, Facebook, PayPal and Yahoo all use this service. 

On the Azure DevOps side, the list is a little more limited: Chevron, Swiss Re, Itron, Axonize, Cargill, Shell, Alaskan Airlines, Hawaiian Airlines and OSIsoft. The list is more modest than for GitHub, but what is really interesting is what these companies think about each service: 

GitHub  Azure DevOps 
  • It’s easy to use 
  • Used by developers around the world 
  • Minimalist interface that allows you to focus on the essentials 
  • Easily accessible integrations and tools  
  • Easy to integrate into any workflow 
  • Reliable 
  • Complete and extremely competent 
  • Has a large expansion ecosystem 
  • A one-stop-shop for server construction, project management, CI/CD 
  • Excellent integration with Azure 

As should be clear, the purpose of the two is very similar but their environmenthistory, and tools make them complementary and equally useful, hence Microsoft’s presence with two products in the same market. 

I hope you enjoyed this presentation of Azure DevOps and that it encourages you to try it out. As I mentioned above, it is possible to use Azure DevOps for free, so do not hesitate to launch and begin your exploration of this tool! 

In the articles to followI’ll explain how to design your first Azure DevOps pipeline, how to connect Azure DevOps to your Bitbucket, and how to compile various technologies with Azure DevOps. 

Kevin Sibué - Software Engineer
17 September 2020