SYBL is a language enabling elasticity requirements description for cloud applications.
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)")
SYBL Runtime System

Programming Level Elasticity Specifications
The following SYBL annotation describe elasticity requirements with a special focus on the data side of the application, which in this case is a NoSql database.
@SYBL_ProgrammingContext(type=AnnotType.DURING,
constraints="Co1:CONSTRAINT cpuUsageData < 65;
Co2: CONSTRAINT cpuUsageData > 30;
Co3: CONSTRAINT cpuUsageData < 85 WHEN cost > 70;
monitoring="Mo1:MONITORING cost = cost.instant;
Mo2: MONITORING dataThroughput = throughput.datasource;
Mo3: MONITORING cpuAllocatedData = cpu.size.datasource;
Mo4: MONITORING cpuUsage = cpu.usage;
Mo5: MONITORING cpuUsageData = cpu.usage.datasource",
strategies="St1:STRATEGY CASE Violated(Co2): scaleInDataSource;
St2: STRATEGY CASE Enabled(Co1) AND Violated(Co1): scaleOutDataSource;
St3: STRATEGY CASE Enabled(Co3) AND Violated(Co3): scaleOutDataSource;"
priorities="Priority(Co3) > Priority(Co1)")
Results
Enforcing the above SYBL annotations we get the following elasticity evolution:
Publications
- SYBL: an Extensible Language for Controlling Elasticity in Cloud Applications (PDF), the 13th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing - CCGRID2013, to be held in Delft, the Netherlands, on May 14-16, 2013. (Accepted)
- Schahram Dustdar, Yike Guo, Rui Han, Benjamin Satzger, Hong Linh Truong: Programming Directives for Elastic Computing. IEEE Internet Computing 16(6): 72-77 (2012)
Contact
If you need any further information please contact Georgiana Copil.


