Skip to content

Commit 32ad457

Browse files
authored
Merge pull request #52 from EOSC-synergy/dev
towards release v2.1
2 parents b2d0d98 + 71e32c1 commit 32ad457

File tree

6 files changed

+171
-73
lines changed

6 files changed

+171
-73
lines changed

content/00.front-matter.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
![](images/logo-SYNERGY.png){height="50px"}    
99
{## Uncomment & edit the following line to reference to a preprinted or published version of the manuscript.
1010
##}
11-
_A DOI-citable version of this manuscript is available at <http://hdl.handle.net/10261/214441>_.
11+
_A DOI-citable version of this manuscript is available at <https://doi.org/10.20350/digitalCSIC/12533>_.
1212

1313
{## Template to insert build date and source ##}
1414
<small><em>

content/02.document-log.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
| v1.0-beta03 | 09/06/2020 | beta03 draft version |
88
| v1.0 | 12/06/2020 | v1.0 release |
99
| v2.0 | 02/02/2022 | Issues: #6, #15, #23, #25, #27, #28, #29, #30, #31, #32, #33, #34, #35, #36 |
10+
| v2.1 | 09/11/2022 | Issues: #43, #47, #49, #50 |

content/06.quality_criteria.md

Lines changed: 13 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 6. Quality Criteria {.page_break_before}
1+
# 6. Quality Criteria - Automation {.page_break_before}
22

33
The following sections describe the quality conventions and best practices that apply to the
44
development, operation and integration phases of a **Service** with a production infrastructure for
@@ -9,7 +9,9 @@ The criteria in this document complements the criteria described in the "Softwar
99
baseline" [@https://digital.csic.es/handle/10261/160086], while following the same pragmatic DevOps
1010
approach of automation.
1111

12-
## 6.1. Automated Deployment [SvcQC.Dep] {#dep}
12+
## 6.1. Deployment
13+
14+
### 6.1.1. Automated Deployment [SvcQC.Dep] {#dep}
1315

1416
The automated deployment of **Services** implies the use of code to install and configure them in
1517
the target infrastructures. Infrastructure as Code (IaC) templates allow operations teams to treat
@@ -30,7 +32,9 @@ simplifies maintenance and enhances repeatability and reliability.
3032

3133
* **[SvcQC.Dep03.1]** IaC (unit) tests **MUST** be idempotent.
3234

33-
## 6.2. API Testing [SvcQC.Api] {#api01}
35+
## 6.2. Dynamic testing - Black box testing
36+
37+
### 6.2.1. API Testing [SvcQC.Api] {#api01}
3438

3539
Web services commonly use application programming interfaces (APIs) to expose the available features
3640
to external consumers, which can be either oriented to the end-user or suitable for
@@ -56,7 +60,7 @@ an API specification.
5660
* **[SvcQC.Api03]** API testing **SHOULD** involve the use of test doubles, such as mock servers or
5761
stubs, that act as a validation layer for the incoming requests.
5862

59-
## 6.3. Integration Testing [SvcQC.Int]
63+
### 6.2.2. Integration Testing [SvcQC.Int]
6064

6165
Integration testing refers to the evaluation of the interactions among coupled **Services** or parts
6266
of a system that cooperate to achieve a given functionality.
@@ -73,11 +77,11 @@ of a system that cooperate to achieve a given functionality.
7377

7478
* **[SvcQC.Int03]** On lack of automation, ad-hoc pilot **Service** infrastructures and/or local
7579
testbeds **MAY** be used to cope with the integration testing requirements.
76-
80+
7781
* **[SvcQC.Int04]** In the presence of CI environments, integration tests **SHOULD** be suitable for
7882
the automated testing.
7983

80-
## 6.4. Functional tests [SvcQC.Fun] {#fun}
84+
### 6.2.3. Functional tests [SvcQC.Fun] {#fun}
8185

8286
Functional testing is a type of black-box testing. It involves the verification of the **Service**
8387
identified functionality, based on requested requirements and agreed design specifications. This
@@ -99,7 +103,7 @@ exposes, leaving apart any internal design analysis or side-effects to external
99103
* **[SvcQC.Fun03]** Functional tests **SHOULD** be provided by the developers of the underlying
100104
software.
101105

102-
## 6.5. Performance tests [SvcQC.Per]
106+
### 6.2.4. Performance tests [SvcQC.Per]
103107

104108
Performance testing verifies that the software meets the specified performance requirements and
105109
assesses performance characteristics - for instance, capacity and response time
@@ -132,7 +136,7 @@ Elasticity is based on how quickly **Services** in an infrastructure are able to
132136
* **[SvcQC.Per04]** Elasticity testing **MAY** be carried out to check the **Service** ability to
133137
scale out or scale in, depending on its demand or workload.
134138

135-
## 6.6. Security [SvcQC.Sec] {#security}
139+
## 6.2.5. Security [SvcQC.Sec] {#security}
136140

137141
Security assessment is essential for any production **Service**. While an effective implementation
138142
of the security requirements applies to every stage in the software development life cycle (SDLC)
@@ -201,7 +205,7 @@ deployments.
201205
Assurance Requirements for Linux Application Container Deployments [@doi:10.6028/NIST.IR.8176]
202206
**MUST** be considered for this task.
203207

204-
* **[SvcQC.Sec07]** IaC testing, from [SvcQC.Aud02](#dep) criterion, **MUST** cover the security
208+
* **[SvcQC.Sec07]** IaC testing, from [SvcQC.Dep02](#dep) criterion, **MUST** cover the security
205209
auditing of the IaC templates (_SaC_) in order to assure the deployment of secured **Services**.
206210
For all the third-party dependencies used in the IaC templates (including all kind of software
207211
artifacts, such as Linux packages or container-based images):
@@ -222,60 +226,3 @@ deployments.
222226
operation. Whenever they are required, the relevant files **MUST** be documented.
223227

224228
* **[SvcQC.Sec07.6]** World-readable files **MUST NOT** contain passwords.
225-
226-
## 6.7. Documentation [SvcQC.Doc]
227-
228-
Documentation is an integral part of any Software or Service. For example, it describes how and what
229-
users can use and interact with it, or how operators can deploy, configure and manage a given
230-
Software or Service.
231-
232-
* **[SvcQC.Doc01]** Documentation **MUST** be available online, easily findable and accessible.
233-
234-
* **[SvcQC.Doc02]** Documentation **SHOULD** have a Persistent Identifier (PID).
235-
236-
* **[SvcQC.Doc03]** Documentation **MUST** be version controlled.
237-
238-
* **[SvcQC.Doc04]** Documentation **MUST** be updated on new **Service** versions involving any
239-
change in the installation, configuration or behavior of the **Service**.
240-
241-
* **[SvcQC.Doc05]** Documentation **MUST** be updated whenever reported as inaccurate or unclear.
242-
243-
* **[SvcQC.Doc06]** Documentation **SHOULD** have a non-software license.
244-
245-
* **[SvcQC.Doc07]** Documentation **MUST** be produced according to the target audience, varying
246-
according to the **Service** specification. The identified types of documentation and their
247-
RECOMMENDED content are:
248-
249-
* **[SvcQC.Doc07.1]** Deployment and Administration:
250-
251-
* Installation and configuration guides.
252-
253-
* Service Reference Card, with the following RECOMMENDED content:
254-
255-
* Brief functional description.
256-
257-
* List of processes or daemons.
258-
259-
* Init scripts and options.
260-
261-
* List of configuration files, location and example or template.
262-
263-
* Log files location and other useful audit information.
264-
265-
* List of ports.
266-
267-
* Service state information.
268-
269-
* List of cron jobs.
270-
271-
* Security information.
272-
273-
* FAQs and troubleshooting.
274-
275-
* **[SvcQC.Doc07.2]** User:
276-
277-
* Detailed User Guide for the **Service**.
278-
279-
* Public API documentation (if applicable).
280-
281-
* Command-line (CLI) reference (if applicable).

content/07.ops_quality_criteria.md

Lines changed: 69 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,69 @@
1-
# 7. Operational Quality Criteria {.page_break_before}
1+
# 7. Quality Criteria - Operational {.page_break_before}
22

33
This section describes the operational quality criteria that is not fit for automation, but that
44
contribute to the assessment of the quality of the service when it's in an operational production
55
state.
66

7-
## 7.1. Policies [SvcQC.Pol]
7+
## 7.1. Files and documents
8+
9+
### 7.1.1. Documentation [SvcQC.Doc]
10+
11+
Documentation is an integral part of any Software or Service. For example, it describes how and what
12+
users can use and interact with it, or how operators can deploy, configure and manage a given
13+
Software or Service.
14+
15+
* **[SvcQC.Doc01]** Documentation **MUST** be available online, easily findable and accessible.
16+
17+
* **[SvcQC.Doc02]** Documentation **SHOULD** have a Persistent Identifier (PID).
18+
19+
* **[SvcQC.Doc03]** Documentation **MUST** be version controlled.
20+
21+
* **[SvcQC.Doc04]** Documentation **MUST** be updated on new **Service** versions involving any
22+
change in the installation, configuration or behavior of the **Service**.
23+
24+
* **[SvcQC.Doc05]** Documentation **MUST** be updated whenever reported as inaccurate or unclear.
25+
26+
* **[SvcQC.Doc06]** Documentation **SHOULD** have a non-software license.
27+
28+
* **[SvcQC.Doc07]** Documentation **MUST** be produced according to the target audience, varying
29+
according to the **Service** specification. The identified types of documentation and their
30+
RECOMMENDED content are:
31+
32+
* **[SvcQC.Doc07.1]** Deployment and Administration:
33+
34+
* Installation and configuration guides.
35+
36+
* Service Reference Card, with the following RECOMMENDED content:
37+
38+
* Brief functional description.
39+
40+
* List of processes or daemons.
41+
42+
* Init scripts and options.
43+
44+
* List of configuration files, location and example or template.
45+
46+
* Log files location and other useful audit information.
47+
48+
* List of ports.
49+
50+
* Service state information.
51+
52+
* List of cron jobs.
53+
54+
* Security information.
55+
56+
* FAQs and troubleshooting.
57+
58+
* **[SvcQC.Doc07.2]** User:
59+
60+
* Detailed User Guide for the **Service**.
61+
62+
* Public API documentation (if applicable).
63+
64+
* Command-line (CLI) reference (if applicable).
65+
66+
### 7.1.2. Policies [SvcQC.Pol]
867

968
Policy documents describe what are the user's expected behavior when using the **Service**, how they
1069
can access it and what they can expect regarding privacy of their data.
@@ -25,7 +84,9 @@ can access it and what they can expect regarding privacy of their data.
2584
the **Service**. It states which rights the users (and/or customers) have regarding the
2685
processing of their data.
2786

28-
## 7.2. Support [SvcQC.Sup]
87+
## 7.2. Support
88+
89+
## 7.2.1. Support [SvcQC.Sup]
2990

3091
Support is the formal way by which users and operators of the **Service** communicate with other
3192
operators and/or developers of the **Service** in case of problems, be it operational problems or
@@ -43,7 +104,9 @@ documentation issues.
43104

44105
* **[SvcQC.Sup04]** The **Service** MAY include Service Level Agreement (SLA) with user communities.
45106

46-
## 7.3. Monitoring [SvcQC.Mon]
107+
## 7.3. Monitoring and Metrics
108+
109+
### 7.3.1. Monitoring [SvcQC.Mon]
47110

48111
Monitoring is a periodic testing of the **Service**. It requires a monitoring service from where
49112
tests are executed or sent and results of those tests are shown. The tests can be the same, in part
@@ -72,10 +135,10 @@ from the infrastructure(s), where the **Service** is foreseen to be integrated.
72135

73136
* **[SvcQC.Mon03]** The **Service** **MUST** be monitored for infrastructure-related criteria:
74137

75-
* **[SvcQC.Mon03.1]** IaC (unit) tests [SvcQC.Aud02](#aud) **SHOULD** be reused as monitoring
138+
* **[SvcQC.Mon03.1]** IaC (unit) tests [SvcQC.Dep02](#dep) **SHOULD** be reused as monitoring
76139
tests, thus avoiding duplication.
77140

78-
## 7.4. Metrics [SvcQC.Met]
141+
### 7.3.2. Metrics [SvcQC.Met]
79142

80143
A metric is a quantifiable measure used to track and assess the status of a specific process.
81144

content/09.annex.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# A1. Annex {.page_break_before}
2+
3+
The Quality Criteria described in this document follows a technology-agnostic approach. As such the
4+
choice of tools and services to implement the workflow for service quality assessment process, is up
5+
to the team or community developing or operating a given service.
6+
7+
This annex describes an implementation approach to help service developers and operators, cover the
8+
Quality Criteria detailed in this document.
9+
10+
## A1.1. Code workflow
11+
12+
The workflow for service quality assessment, is shown in Figure @fig:workflow. It depicts a real
13+
case example, GitHub is used in particular to host the Dockerfiles to build the service Docker
14+
image, it also hosts the Ansible role for the service deployment and configuration, thus the
15+
IaC (Infrastructure as Code).
16+
17+
The SQA as a Service (SQAaaS), is used to create the Jenkinsfile (pipeline) to be executed in the
18+
Jenkins service.
19+
20+
Before the Jenkins pipeline execution phase, the figure depicts the build and upload/publish of the
21+
service Docker image in the Docker Hub.
22+
23+
The Jenkins service is the main service used to execute he pipeline. The figure show a simple
24+
pipeline with automated deployment of the service, execution of functional tests and dynamic
25+
security tests, but in general the pipeline can be more complex and execute other tools to assess
26+
the other service quality criteria.
27+
28+
The bottom part of the figure shows the services, tools and infrastructures that are actuated by the
29+
Jenkins pipeline execution: The [IM (Infrastructure Manager)](https://www.grycap.upv.es/im) is the
30+
service that is used to deploy the service in cloud resources, fetching the corresponding Ansible
31+
role from Ansible Galaxy to instantiate and configure it.
32+
33+
![Workflow for service quality assessment](images/service-qa-workflow.png){height="700px"}{#fig:workflow}
34+
35+
## A1.2. Services
36+
37+
As it can be seen in Figure @fig:workflow, multiple services take part in the execution of the CI/CD
38+
pipelines. Table 1 shows the list of services used for the service for the Quality Criteria
39+
assessment detailed in this document.
40+
41+
One of the most popular services for Software source code management is GitHub. It is uses Git
42+
as the Version Control System, branching and tag management.
43+
44+
Ansible and Ansible-Galaxy are used in many software frameworks as deployment and configuration
45+
tools.
46+
47+
The software is packed/built into executable artifacts that can be RPMs (case of RedHat and
48+
derivative OS), DEBs (case of Debian/Ubuntu and derivatives) and in many cases containers such as
49+
Docker images.
50+
51+
The artifacts are provided, in general, by public repositories and most notably Docker Hub
52+
[@url:https://hub.docker.com/] in the case of Docker images.
53+
54+
Regarding the CI/CD automation, Jenkins pipelines can be easily composed through the SQAaaS platform
55+
and put into the git repositories to be used by the Jenkins CI service to perform the tests. The
56+
tools used in the CI automation are shown in section A1.2.
57+
58+
Kubernetes is a container management platform where services or platforms can be deployed while the
59+
IM (Infrastructure Manager) can also be used to automatically deploy services both in cloud
60+
resources or kubernetes clusters.
61+
62+
| Service | Usage | Criteria | Repo URL or documentation | Comment |
63+
|-----------------------------|-------------------------------|---------------|------------------------------------------|------------------------------------------|
64+
| GitHub | VCS | **SvcQC.Dep** | <https://docs.github.com/> | Source code repository - git |
65+
| Ansible, Galaxy | Install, Config | **SvcQC.Dep** | <https://docs.ansible.com/> | Automated deployment and configuration |
66+
| SQAaaS platform | Pipeline composition | **All** | <https://sqaaas.eosc-synergy.eu> | Pipeline composition for automatic tests |
67+
| SQAaaS platform | Assessment & awarding | **All** | <https://sqaaas.eosc-synergy.eu> | Badge awarding |
68+
| Jenkins CI service | Automated tests | **All** | <https://www.jenkins.io/> | Execution of automatic tests |
69+
| Docker Hub | Docker images | N.A. | <https://hub.docker.com/> | Public repository of Docker images |
70+
| Kubernetes | Service deployment/management |**SvcQC.Dep** | <https://kubernetes.io/> | Docker container management |
71+
| Infrastructure Manager (IM) | Service deployment |**SvcQC.Dep** | <https://www.grycap.upv.es/im> | Service deployment |
72+
73+
Table 1: Tools and services used to implement the Service QA criteria, also shown the criteria where
74+
applicable.
75+
76+
## A1.3. Tools for CI/CD
77+
78+
This section shows the tools being used in the CI pipelines and the criteria that it verifies. This
79+
list is based on the template file in
80+
<https://github.com/EOSC-synergy/sqa-composer-templates/blob/main/tooling.json>.
81+
82+
| Tool | Criteria | Language | Repo URL or documentation | Summary |
83+
|------------|---------------|------------|-------------------------------------------------------|--------------------------|
84+
| kubectl | **SvcQC.Dep** | Agnostic | <https://kubernetes.io/docs/tasks/tools/> | Automated deployment |
85+
| im_client | **SvcQC.Dep** | RADL/TOSCA | <https://imdocs.readthedocs.io/en/latest/client.html> | Automated deployment |
86+
| ec3_client | **SvcQC.Dep** | RADL/TOSCA | <https://github.com/grycap/ec3> | Automated deployment |
87+
| tox | **SvcQC.Fun** | Python | <https://tox.readthedocs.io/> | Automated test framework |
318 KB
Loading

0 commit comments

Comments
 (0)