In the development of embedded software, so-called cross-compilers are used to translate the source code for different source code for the different target platforms. For the execution of the compiler a license is required. Depending on the compiler and the target platform, a different number of floating licenses are available.
The compilers are used in the following way:
Developers start the compiler on their machine after making a change to the source code. If
the source code can be compiled without errors and the compiled software successfully passes all tests, the developer checks the change into a version control system such as SVN or Git.
Checking in to SVN or Git triggers a job in what is known as a continuous integration (CI) environment. (CI) environment, which translates the complete source code in the CI environment, tests it and creates a test report, on the basis of which the software is released.
Due to the limited number of licenses, bottlenecks occur during the day, especially when several
projects for the same target platform are being worked on at the same time. Developers complain that projects are slowed down if they have to wait a long time for a license.
Outside of working hours, the licenses are hardly used. The CI system should therefore be system should be adapted so that CI jobs run primarily at night when bottlenecks occur.
Requirements
A new central system for managing license usage should meet the following requirements:
For each compiler, it is possible to configure in the system in which time range how many licenses are available for CI. Possible time ranges are, for example, weekdays, nights or weekend.
The system has a REST interface with which the CI system can allocate a license and release it again.
The temporal course of the license allocation should be able to be visualized per compiler, so that one can estimate whether additional licenses should be purchased.
The system should have the highest possible availability.
Also the failure of a central computer or an update of the software should not result in any interruption of operation.
TASK
Outline a possible solution that meets the requirements:
What does the architecture look like? What are the components involved? Which technologies are
used? What does the domain model look like? Additionally, outline how you would proceed as part of an agile process:
What steps are necessary for implementation and rollout?
How can you ensure the smooth operation of the system
In the development of embedded software, so-called cross-compilers are used to translate the source code for different source code for the different target platforms. For the execution of the compiler a license is required. Depending on the compiler and the target platform, a different number of floating licenses are available. The compilers are used in the following way: Developers start the compiler on their machine after making a change to the source code. If the source code can be compiled without errors and the compiled software successfully passes all tests, the developer checks the change into a version control system such as SVN or Git. Checking in to SVN or Git triggers a job in what is known as a continuous integration (CI) environment. (CI) environment, which translates the complete source code in the CI environment, tests it and creates a test report, on the basis of which the software is released. Due to the limited number of licenses, bottlenecks occur during the day, especially when several projects for the same target platform are being worked on at the same time. Developers complain that projects are slowed down if they have to wait a long time for a license. Outside of working hours, the licenses are hardly used. The CI system should therefore be system should be adapted so that CI jobs run primarily at night when bottlenecks occur. Requirements A new central system for managing license usage should meet the following requirements: For each compiler, it is possible to configure in the system in which time range how many licenses are available for CI. Possible time ranges are, for example, weekdays, nights or weekend. The system has a REST interface with which the CI system can allocate a license and release it again. The temporal course of the license allocation should be able to be visualized per compiler, so that one can estimate whether additional licenses should be purchased. The system should have the highest possible availability. Also the failure of a central computer or an update of the software should not result in any interruption of operation. TASK
Outline a possible solution that meets the requirements:
What does the architecture look like? What are the components involved? Which technologies are
used? What does the domain model look like? Additionally, outline how you would proceed as part of an agile process:
What steps are necessary for implementation and rollout?
How can you ensure the smooth operation of the system