# Developing Microservice-Based Applications Using the Silvera Domain-Specific Language
## 3 Silvera
### Silvera Concrete Syntax
#### 3.3.2 Service Registry Declaration
[PERSON] and [PERSON] [13] define reliability of a DSL as \"the property of a language that aids producing reliable programs (model checking ability/preventing unexpected relations)\". Hypotheses 6 and 7 test the _productivity_. Productivity is a characteristic related to the amount of resources expended by the user to achieve specified goals [13]. Hypotheses 8-10 test the _uniqueness_, _orthogonality_, and _conflicting elements_, respectively. In FQAD, these characteristics are sub-characteristics of _expressiveness_, which is defined as \"the degree to which a problem solving strategy can be mapped into a program naturally\" [13]. ### Selection of Participants

The target population of the study was software developers with experience in designing microservices. We also included developers that had significant experience in software architectures in general, but with lesser experience with microservices. Participants were selected based on their availability and willingness to participate in the study. We did not offer any incentives for participation. All participants were identified through authors' professional networks. Participants were given 3 days to complete the study. Participants completed the study at their homes, so that they could work at their own pace. Participants were provided with video tutorials (Silvera tutorials--[[https://www.youtube.com/playlist?list=PIX6](https://www.youtube.com/playlist?list=PIX6) VwwnTqUKdCudkeFKWXuUcRRcZrpSKL]([https://www.youtube.com/playlist?list=PIX6](https://www.youtube.com/playlist?list=PIX6) VwwnTqUKdCudkeFKWXuUcRRcZrpSKL) (accessed on 4 April 2022)), documentation (Silvera documentation--[[https://alensuljkanovic.github.io/silvera/](https://alensuljkanovic.github.io/silvera/)]([https://alensuljkanovic.github.io/silvera/](https://alensuljkanovic.github.io/silvera/)) (accessed on 1 June 2022)), examples (Silvera examples--[[https://github.com/alensuljkanovic/silvera-demo](https://github.com/alensuljkanovic/silvera-demo)]([https://github.com/alensuljkanovic/silvera-demo](https://github.com/alensuljkanovic/silvera-demo)) (accessed on 4 April 2022)), and authors' email where they could ask questions. After studying the provided materials, participants were asked to implement a small microservice-based application both using the Silvera and manually (see Section 5.4). This survey was not anonymous for two reasons. First, we wanted to make sure that each participant could only participate in the survey once. Second, we needed to be able to contact participants and ask for further explanations if they were needed. All participants were informed about the terms of participating in the survey, and we guaranteed that personal data would not be shared with third parties. ### The Task

The task given to the participants is defined as follows:

_Implement a distributed system based on microservices for publishing scientific papers. The system contains the following microservices: User, SciPaper, and Library. The User microservice allows users to register and log in. When registering, a user provides a username (ID), password (mandatory), first name (mandatory), last name (mandatory), and email (optional). To log in, the user must provide a username and password. The SciPaper microservice allows logged-in users to write new scientific papers. Each paper has an author, a title, and an arbitrary number of sections. Each section has its name and content. This microservice has a special method, publish, which, for a given paper ID, publishes a PUBLISH_PAPER message to a message broker. The message contains the paper's ID, paper's title, and author. The Library microservice has a method that listens to the PUBLISH_PAPER message and keeps data provided via a message in the database. This microservice also has a public method that lists all data from the database. The user is not aware of the application's architecture and uses the API gateway as an entry point. All services are registered in the service registry. Even though the task is simple, it covers all the basic concepts of Silvera.