Integration of complex systems is an important aspect of systems engineering especially when it comes to medical systems and sophisticated measuring devices. Unifying databases, web and algorithmic services and Machine Learning modules and make them interact with dashboards and mobile applications, supporting their functionality is not an easy task. In TERMINET, we tackled this challenge with a systematic way based on the experience and knowledge gathered from the various and diverse EU funded projects that INTRASOFT International has participated. But first thing first. At the beginning, we started with the architectural approaches and the technologies that were chosen for the integration of the platform components, always following the Continuous Integration/Continuous Delivery (CI/CD) paradigm and the micro-services architectural approach, showcasing the flexibility that characterises the end-resulting solution.
Continuous Integration/Continuous Delivery is amongst the best practices of Development and Operations (DevOps) which include the mindset/culture, set of practices and specific tools that aim to improve communication and collaboration among development and operations teams, to increase the speed and quality of software deployment.
Continuous Integration requires developers to integrate code into a shared repository in a very frequently manner. Each integration can then be verified by an automated build and automated tests that check that the application is not broken whenever new commits are integrated into the main branch. Continuous Integration aims to speed up the release process by enabling teams to find and fix bugs earlier in the development cycle.
Continuous Delivery is an extension of Continuous Integration and the next step in the pipeline. Delivery phase is responsible for packaging an artifact together to be delivered to end-users. In this phase we run automated building tools to generate this artifact. This means that on top of having automated testing, we also have automated the release process. Continuous Delivery minimizes the risks associated with releasing software and new features, by ensuring that every change made to the underlying code of an application is releasable – meaning each update is smaller and can be delivered to users more frequently.
By adopting this integration strategy, the overall TERMINET Platform was structured as a collection of services that were highly maintainable and testable, loosely coupled, independently deployable, organized around business capabilities and each one owned by a small team. This way, the developer teams of the project were able to develop and deploy the necessary services independently by introducing new functionality to the system with minimal dependency among them. Finally, the added benefit of the abovementioned approach was the inherent ability to have a more systematic approach when identifying and debugging failing components which in most of the cases, do not tend to affect other microservices that can continue to function.