Generation of service-level objective specifications using java annotation
Systems and methods for generating SLO specifications using annotations are generally described. In various examples, first source code associated with a first computer-implemented service is received. In various cases, a first annotation in the first source code may be received. The first annotation may include first metadata defining a name of an SLO specification. A second annotation in the first source code may be received. The second annotation may include second metadata defining a service-level objective (SLO) of a first aspect of the first computer-implemented service. In some cases, the first computer-implemented service may be executed using the first source code. In various examples, the SLO specification may be generated based on the first annotation and the second annotation.
1. A method comprising:
receiving first source code associated with a first computer-implemented service;
receiving a first annotation in the first source code, the first annotation comprising first metadata defining a name of an SLO specification;
receiving a second annotation in the first source code, the second annotation comprising second metadata defining a service-level objective (SLO) of a first aspect of the first computer-implemented service;
compiling the first source code to generate first compiled code;
executing the first computer-implemented service using the first compiled code; and
generating the SLO specification based on the first annotation and the second annotation, the SLO specification including the name of the SLO specification and a definition of the SLO of the first aspect of the first computer-implemented service, wherein the SLO specification is generated using the first metadata and the second metadata during compilation of the first source code.
2. The method of claim 1 , wherein the first annotation and the second annotation are Java annotations.
3. The method of claim 1 , wherein an annotation processor generates the SLO specification during the compilation of the first source code.
4. The method of claim 1 , further comprising generating a third annotation in the first source code, the third annotation comprising third metadata defining a uniform resource locator (URL) at which the SLO specification is published.
5. The method of claim 1 , further comprising:
generating, using at least one script, a first load for the first computer-implemented service;
receiving, by the at least one script, the SLO specification as an input;
determining first metric data describing performance of the first aspect of the first computer-implemented service; and
comparing the first metric data to the SLO of the first aspect of the first computer-implemented service.
6. The method of claim 5 , further comprising:
determining, using the at least one script, that the first metric data does not meet the SLO; and
generating first output data indicating that the first metric data does not meet the SLO.
7. The method of claim 1 , further comprising generating, using the first metadata, a first yet another markup language (YAML) descriptor in the SLO specification.
8. The method of claim 1 , wherein the SLO specification comprises a standardized definition for defining service-level objectives (SLOs).
9. The method of claim 1 , wherein the second metadata logically maps to a field of the SLO specification that is associated with the first aspect of the first computer-implemented service.
10. A system comprising:
at least one processor; and
non-transitory computer-readable memory storing instructions that, when executed by the at least one processor are configured to:
receive first source code defining a first computer-implemented service;
receive a first annotation in the first source code, the first annotation comprising first metadata defining a name of an SLO specification;
receive a second annotation in the first source code, the second annotation comprising second metadata defining a service-level objective (SLO) of a first aspect of the first computer-implemented service;
compile the first source code to generate first compiled code;
execute the first computer-implemented service using the first compiled code; and
generate the SLO specification based on the first annotation and the second annotation, the SLO specification including the name of the SLO specification and a definition of the SLO of the first aspect of the first computer-implemented service, wherein the SLO specification is generated using the first metadata and the second metadata during compilation of the first source code.
11. The system of claim 10 , wherein the first annotation and the second annotation are Java annotations.
12. The system of claim 10 , wherein an annotation processor generates the SLO specification during the compilation of the first source code.
13. The system of claim 10 , the non-transitory computer-readable memory storing further instructions that, when executed by the at least one processor are further configured to generate a third annotation in the first source code, the third annotation comprising third metadata defining a uniform resource locator (URL) at which the SLO specification is published.
14. The system of claim 10 , the non-transitory computer-readable memory storing further instructions that, when executed by the at least one processor are further configured to:
generate, using at least one script, a first load for the first computer-implemented service;
receive, by the at least one script, the SLO specification as an input;
determine first metric data describing performance of the first aspect of the first computer-implemented service; and
compare the first metric data to the SLO of the first aspect of the first computer-implemented service.
15. The system of claim 14 , the non-transitory computer-readable memory storing further instructions that, when executed by the at least one processor are further configured to:
determine, using the at least one script, that the first metric data does not meet the SLO; and
generate first output data indicating that the first metric data does not meet the SLO.
16. The system of claim 10 , the non-transitory computer-readable memory storing further instructions that, when executed by the at least one processor are further configured to generate, using the first metadata, a first yet another markup language (YAML) descriptor in the SLO specification.
17. A system comprising:
at least one processor;
an integrated development environment executed by at the least one processor;
a compiler executed by the at least one processor;
an annotation processor executed by the at least one processor; and
non-transitory computer-readable memory storing instructions that, when executed by the at least one processor, are effective to cause the integrated development environment to:
receive first source code associated with a first computer-implemented service;
receive a first annotation in the first source code, the first annotation comprising first metadata defining a name of an SLO specification; and
receive a second annotation in the first source code, the second annotation comprising second metadata defining a service-level objective (SLO) of a first aspect of the first computer-implemented service;
the compiler effective to compile the first source code to generate executable code for the first computer-implemented service; and
the annotation processor effective to:
receive the first annotation from the first source code;
receive the second annotation from the first source code; and
generate the SLO specification based on the first annotation and the second annotation, the SLO specification including the name of the SLO specification and a definition of the SLO of the first aspect of the first computer-implemented service, wherein the SLO specification is generated using the first metadata and the second metadata during compilation of the first source code.
18. The system of claim 17 , wherein the first annotation and the second annotation are Java annotations.