Using SYBL - GeorgianaCopil/SYBL GitHub Wiki

SYBL is a language enabling elasticity requirements description for cloud services.

SYBL can be used by cloud providers, software providers, application developers or even end-users to describe their elasticity requirements concerning the application. The language allows for different levels of specification facilitating finer-grained elasticity specifications and enforcement depending on the actual needs of the users.

SYBL enables different levels at which users can specify elasticity requirements: application, component and programming. Application level allows for elasticity from the perspective of the whole application, while component-level and code-level elasticity requirements define user's elasticity needs for component, and respectively, sequnces of code.


SYBL Backus Naur Form (BNF)

Constraint:= constraintName : CONSTRAINT ComplexCondition

Monitoring:= monitoringName : MONITORING varName=MetricFormula

Strategy:= strategyName : STRATEGY WHEN ComplexCondition : action(parameterList)|
strategyName : STRATEGY WAIT ComplexCondition| strategyName : STRATEGY STOP| strategyName : STRATEGY RESUME

MetricFormula:= metric | number | metricFormula MathOperator metric | metricFormula MathOperator number

ComplexCondition:= Condition | ComplexCondition BitwiseOperator Condition| (ComplexCondition BitwiseOperator Condition)

Condition:= metric RelationOperator number| number RelationOperator metric | Violated(name)|Fulfilled(name)

MathOperator := + | - | * | /

BitwiseOperator := OR | AND | XOR | NOT

RelationOperator := <|>|>=|<=|==|!=

Examples of using SYBL

Cost-related elasticity requirements

A cloud customer can specify that when the total cost is higher than 800 euro, there should be a scale-in action for keeping costs in acceptable limits.

@SYBL_ApplicationContext(strategies="St1: STRATEGY CASE total_cost>800 Euro : ScaleIn")

Quality-related elasticity requirements

A software provider can specify constraints on the response time depending on the number of users currently accessing the provided software.

@SYBL_ComponentContext(constraints=
	"Co1: CONSTRAINT rt<2ms WHEN nbUsers<1000;
	Co2: CONSTRAINT rt<4ms WHEN nbUsers>=1000")

A developer could specify that the result from a data analytics algorithm must reach a certain data accuracy under a cost constraint without caring how many resources should be used for executing the code of that algorithm.

@SYBL_ProgrammingContext(
     constraints=
	"Co1: CONSTRAINT dataAccuracy>90%; 
	Co2:CONSTRAINT dataAccuracy>95% WHEN total_cost>400;
	Co3:CONSTRAINT total_cost<800;"
     priorities=
	"Priority(Co2)>Priority(Co1);
	Priority(Co3)>Priority(Co1);")	

Elasticity requirements on the relation between cost and quality

A cloud provider could specify its pricing schema or price computation policies, for example that when availability is higher than 99% the cost should increase by 10%.

@SYBL_ApplicationContext(strategies="St1: STRATEGY CASE availability>99%: 
				IncreaseCostBy(total_cost/10)")
⚠️ **GitHub.com Fallback** ⚠️