SmartCLIDE Service Creation aims to deliver a faster, easier, and more user-friendly solution than from-scratch development of services. The approach aims to automate several steps and easily provide functionalities to developers, in a manner that enhances productivity and minimizes distractions and time-consuming interactions with external tools. SmartCLIDE analyzes the required steps a developer has to perform so as to deliver a fully functional service, in order to come up with ways to fine-tune the flow.
Before starting the development process, several steps are required to setup the development process:
- Creating a code repository, for e.g., a GitLab project
- Creating a CI/CD pipeline, for e.g., GitLab CI/CD or a Jenkins job
- Configuring them both to interact with each other
During code development, e.g., for the creation of a new service the developer needs to interact with several tools:
- for writing code
- for collaborative development
- for performing tests and verifying the results
- for evaluating the quality and maintainability of the code
- for monitoring the progress of the project
- making the service invokable by being packaged into an image
Considering the actual coding part as the central point of software development, the main UI for service creation should be the IDE. Several code development tools were evaluated, and Eclipse Theia was selected as the final solution. Following our previous way of thinking, all the other service creation functionalities should be accessible through the Eclipse Theia IDE to minimize distractions and make the whole process easier and more efficient.
Starting with the creation of the necessary structure for development, a new widget was developed for the IDE.
Here the user can input the required information (fig.1), and the Service Creation component will create and configure a new GitLab project. For now, there is also the ability to use Jenkins as the CI/CD server. In that case, the GitLab project and the Jenkins job pairing is done by the component automatically in the background, thus relieving the user from an otherwise dull and time-consuming sequence of steps. After the completion of the structure creation, the user is presented with a new Git URL.
Cloning the Git repository using Theia’s Git commands, the user can begin to code. Through Theia’s integrated Git, the process of staging, committing, and pushing code changes is made easy. Considering that the code repository is either paired with a Jenkins job or handled by GitLab CI/CD, every code push triggers a pipeline. During the pipeline execution, tests and code analysis can be executed automatically.
The next step, that provides valuable information to the user, is the evaluation of the quality and maintainability of the code. This is achieved by using another newly created widget that acts as a middleman between the IDE and the SmartCLIDE backend services. (fig 2)
The user provides the required information, in this case, the Git URL of the project (fig 3), and receives the results of code analysis. Depending on the user-specified steps of the pipeline, the analysis process can vary in execution time. The request is passed to the SmartCLIDE backend services, where the Reusability Index, Technical Debt Principal, and Technical Debt Interest are calculated for the project.
As a final step, again using the pipeline, you have the ability to package the finished project to a Docker image ready for deployment. Of course, considering that the above are part of an early prototype, there is pending research and experimentation in order to find an optimum and user-friendly approach.