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 service-level objective (SLO) of a first aspect of the first computer-implemented service;
receiving a second annotation in the first source code, the second annotation comprising second metadata associated with an SLO specification;
compiling the first source code to generate first compiled code;
executing the first computer-implemented service using the first compiled code;
generating the SLO specification based on the first annotation, the SLO specification including 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 during processing of the first source code; and
generating, using the second metadata, a yet another markup language (YAML) descriptor in the SLO specification.
2. The method of claim 1 , wherein the second metadata defines a name of the SLO specification.
3. The method of claim 2 , wherein the first annotation and the second annotation are Java annotations.
4. The method of claim 3 , wherein an annotation processor generates the SLO specification during the processing of the first source code.
5. The method of claim 1 , wherein the second metadata defines a uniform resource locator (URL) at which the SLO specification is published.
6. 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.
7. The method of claim 6 , 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.
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 first 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
a 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 service-level objective (SLO) of a first aspect of the first computer-implemented service;
receive a second annotation in the first source code, the second annotation comprising second metadata associated with an SLO specification;
compile the first source code to generate first compiled code;
execute the first computer-implemented service using the first compiled code;
generate the SLO specification based on the first annotation, the SLO specification including 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 during processing of the first source code; and
generate, using the second metadata, a yet another markup language (YAML) descriptor in the SLO specification.
11. The system of claim 10 ,
wherein the second metadata defines a name of the SLO specification.
12. The system of claim 11 , wherein the first annotation and the second annotation are Java annotations.
13. The system of claim 12 , wherein an annotation processor generates the SLO specification during the compilation of the first source code.
14. The system of claim 10 , wherein the second metadata defines a uniform resource locator (URL) at which the SLO specification is published.
15. 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.
16. The system of claim 15 , 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.
17. A system comprising:
at least one processor; and
a non-transitory computer-readable memory storing instructions for an integrated development environment, a compiler, and an annotation processor;
the integrated development environment effective 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 service-level objective (SLO) of a first aspect of the first computer-implemented service; and
receive a second annotation in the first source code, the second annotation comprising second metadata associated with an SLO specification;
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;
generate the SLO specification based on the first annotation, the SLO specification including 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 during processing of the first source code; and
generating, using the second metadata, a yet another markup language (YAML) descriptor in the SLO specification.
18. The system of claim 17 , wherein the first annotation is a Java annotation.