The first day of the Software Development Summit (#SDsummit) was dedicated to Continuous Delivery and we had the pleasure of having Angélica Lozano, who gave us a different point of view on this topic.
Angélica Lozano, CTO of MOBILE LEAN (m-lean), told us how they work to bring continuous deployment to the context of industrial environments. They facilitate the day-to-day life of factory workers through native mobile applications, known as MPS (Mobile Production System).
MOBILE LEAN was born in 2014 and since its first client, in France, it has always been an international company. Today they are present in 180 factories in the automotive and food sector over 24 countries.
According to Angélica, “a trait of our clients is that they operate in a reasonably standardized way in all their factories”. Thanks to that, they can add value to the group with a greater impact.
m-lean’s strategy is “to grow the number of factories while keeping the number of customers low” and to take advantage of this uniformity in processes.
The 17 people from the engineering team work on the develop branch and they merge as they add functionality in feature branches. This approach is “less glamorous than what Edu told in his talk” in SDSummit, but it works for them.
The way they integrate product functionalities is through Pull Requests that end up being integrated through an automatic Jenkins pipeline that identifies the parts of code that have changed and launches only the affected tests. This happens continuously several times a day. To prevent regression problems and for increased security, all tests are run on a scheduled basis every night.
Additionally, they use Sonarqube to monitor the quality of the code and through Quality Gates they ensure that it does not drop.
They have two-week iterations, after which the code does not go to production but to the demo branch “from which it is deployed in the testing and demo environments”. These testing and demo environments are used by salespeople to teach the product. It is also deployed in a few pilot factories of each client to “reduce the feedback cycle” and “they validate the functionality in relatively short cycles.“
Every 4 iterations, 2 months, they merge from demo to master and the code is brought to all factories.
The product is composed of webs, some backend and native mobile applications. The latter are not deployed through the store; instead “it is private corporate deployment.” It should be noted that these are independent deployments in each factory since their applications are not multitenant and are also subject to other restrictions, may it be for security or because of technical limitations at the client’s.
They have an update system that alerts the user that there is a new version and only allows them to install it. This way of working simplifies maintenance, since they do not need to version their API because they always use the latest version.
“You only maintain the latest version of the product (…) if you have to do a hotfix (…) for a factory, we always know what point in the code we’re at.“
Initially, more continuous deployments were made, but the feedback from users was that they were bothered by interruptions due to updates and asked for them to be spread out more over time. “What I perceived as a super added value turns out that the other way around (…) perhaps because it was an industrial environment (…) it was perceived as something negative“.
The server part is containerized with docker and orchestrated by docker-compose. In most cases they run on Ubuntu.
All this process which consists of the generation of images and binaries as well as the network transfer takes, for a normal factory, about half an hour with the loss of service lasting some seconds.
The usual deployment model used to be on-premises, but there is a general trend to migrate to the cloud. They continue to work “on automation as a mantra” and progressing towards the best practices that Eduardo Ferro told us about. During 2021 they want to separate the build, deploy and release parts. In fact, the idea is that the release phase will be handed over to the sales team.
Angélica’s presentation was very interesting both because of the theme and how enjoyable she made it, getting into a lot of details of the industrial environments and its product development process, which although it is not yet fully optimized, is continually evolving towards that goal.
I encourage you to watch her talk:
About the author: