# Developing Microservice-Based Applications Using the Silvera Domain-Specific Language
## 2 Related Work
### Existing MSA Frameworks  
In this section, we will briefly describe current state-of-the-art tools for describing the architecture of distributed systems based on microservices. MAGMA [39], AjIL [40], TheArchitect [41], Microbuilder [42], JHipster (JHipster--[[https://www.jhipster.tech/jdl/](https://www.jhipster.tech/jdl/)]([https://www.jhipster.tech/jdl/](https://www.jhipster.tech/jdl/)) (accessed on 14 February 2021)), LEMMA [43], and Jolie [44] are currently available tools for describing distributed systems based on microservices. The main goal of these tools is to accelerate the development of microservices. By using these tools, users can model their systems and use the model to generate runnable applications. **MAGMA** (_Maven Archetype for Generating Microservice Architectures_) is a tool that is based on the Maven build management system. It aims at accelerating the development of microservices architectures (MSA) by generating infrastructure code that is: (i) specifically configured for the target application domain; (ii) directly runnable; and (iii) extensible with user-defined templates [39]. Users can easily create their systems through a simple input wizard. Services such as _discovery service_, _security service_, _user management service_, and _resource service_ come pre-implemented in MAGMA and are all available in the input wizard. The input wizard contains a small preview panel, which shows the architecture of the system to be generated. Although it is easy to use, it can be troublesome and time-consuming to setup MAGMA, especially for developers not accustomed to Maven. In addition, since MAGMA generates only project shells for services defined through user-defined templates, a domain model, together with an API and business logic, must be implemented manually. **AjiL** is a tool for creating and describing MSAs based on the Eclipse Modeling Framework (EMF) (Eclipse Modeling Framework--[[https://www.eclipse.org/modeling/emf/](https://www.eclipse.org/modeling/emf/)]([https://www.eclipse.org/modeling/emf/](https://www.eclipse.org/modeling/emf/)) (accessed on 10 January 2021)). AjIL comprises a graphical editor and a template-based code generator. The generator converts existing AjIL diagrams into runnable MSA, based upon Java and the Spring framework [40]. AjIL's graphical editor is nicely designed and easy to use. Since AjIL comes with the same set of pre-implemented services as MAGMA, modeling of MSA can be performed quickly. However, generating code from the model is not straightforward. To generate code from a model, the model needs to be copied into the generator project because there is no connection between the graphical editor and the code generator. In addition, AjIL currently provides no mechanism for the integration of manually added code with generated code. **TheArchitect** is a rule-based system used for generating serverless microservices [41]. MSAs in TheArchitect are created by providing system requirements into TheArchitect's input wizard. The obtained information is processed by the predefined set of models afterward. These models are subsequently analyzed by the code generator, which produces the application code. **MicroBuilder** is a tool for generating REST-based (REST-Representational State Transfer) microservices [42]. It consists of two modules: MicroDSL and MicroGenerator. MicroDSL is a domain-specific language (DSL) used to describe the architecture of the microservices. MicroGenerator uses the MicroDSL specifications to generate Java applications based on the Spring framework. **JHipster** is a tool for generating, developing, and deploying web applications and MSAs. MSAs in JHipster are modeled by using the JHipster domain language (JDL). Modeling of microservices in JDL can be performed quickly due to its user-friendly syntax. JDL specifications are transformed automatically into runnable Java applications by the JHipster code generator.