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 a mobile application, some obstacles make cross-platform development somewhat complicated, and I’ll show how Azure DevOps helps overcome these complications. Finally, 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 requests. Users 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