Skip to content

Commit 1d6131c

Browse files
APPS-12973: Update spec to include request metrics for autoscaling and alerts (#1157)
* APPS-12973: Update spec to include request metrics for autoscaling and alerts * remove autoscaling from job component type --------- Co-authored-by: SSharma-10 <shivanisharma@digitalocean.com>
1 parent 38172fa commit 1d6131c

6 files changed

Lines changed: 71 additions & 33 deletions

File tree

specification/resources/apps/models/app_alert_spec_rule.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,7 @@ enum:
1616
- FUNCTIONS_AVERAGE_WAIT_TIME_MS
1717
- FUNCTIONS_ERROR_COUNT
1818
- FUNCTIONS_GB_RATE_PER_SECOND
19+
- REQUESTS_PER_SECOND
20+
- REQUEST_DURATION_P95_MS
1921
type: string
2022
example: CPU_UTILIZATION
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# CPU-only autoscaling for worker components. Services use app_autoscaling_spec_service.yml.
2+
description: Configuration for automatically scaling this component based on metrics.
3+
type: object
4+
properties:
5+
min_instance_count:
6+
description: The minimum amount of instances for this component.
7+
type: integer
8+
format: uint32
9+
minimum: 1
10+
example: 2
11+
max_instance_count:
12+
description: >-
13+
The maximum amount of instances for this component. Maximum 250.
14+
Consider using a larger instance size if your application requires more than 250 instances.
15+
type: integer
16+
format: uint32
17+
minimum: 1
18+
maximum: 250
19+
example: 3
20+
metrics:
21+
description: The metrics that the component is scaled on.
22+
type: object
23+
properties:
24+
cpu:
25+
description: Settings for scaling the component based on CPU utilization.
26+
type: object
27+
properties:
28+
percent:
29+
description: The average target CPU utilization for the component.
30+
type: integer
31+
format: uint32
32+
minimum: 1
33+
maximum: 100
34+
default: 80
35+
example: 75
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Extends CPU autoscaling with request-based metrics. Only applicable to service components.
2+
allOf:
3+
- $ref: app_autoscaling_spec.yml
4+
- type: object
5+
properties:
6+
metrics:
7+
type: object
8+
properties:
9+
requests_per_second:
10+
description: Settings for scaling the component based on requests per second.
11+
type: object
12+
properties:
13+
per_instance:
14+
description: The target number of requests per second per instance for the component.
15+
type: integer
16+
format: uint32
17+
minimum: 1
18+
example: 100
19+
request_duration:
20+
description: Settings for scaling the component based on request duration.
21+
type: object
22+
properties:
23+
p95_milliseconds:
24+
description: The p95 target request duration in milliseconds for the component.
25+
type: integer
26+
format: uint32
27+
minimum: 1
28+
example: 500

specification/resources/apps/models/app_component_instance_base.yml

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -50,36 +50,3 @@ properties:
5050
example: basic-xxs
5151
deprecated: true
5252
example: apps-s-1vcpu-0.5gb
53-
54-
autoscaling:
55-
description: Configuration for automatically scaling this component based on metrics.
56-
type: object
57-
properties:
58-
min_instance_count:
59-
description: The minimum amount of instances for this component. Must be less than max_instance_count.
60-
type: integer
61-
format: uint32
62-
minimum: 1
63-
example: 2
64-
max_instance_count:
65-
description: The maximum amount of instances for this component. Must be more than min_instance_count.
66-
type: integer
67-
format: uint32
68-
minimum: 1
69-
example: 3
70-
metrics:
71-
description: The metrics that the component is scaled on.
72-
type: object
73-
properties:
74-
cpu:
75-
description: Settings for scaling the component based on CPU utilization.
76-
type: object
77-
properties:
78-
percent:
79-
description: The average target CPU utilization for the component.
80-
type: integer
81-
format: uint32
82-
minimum: 1
83-
maximum: 100
84-
default: 80
85-
example: 75

specification/resources/apps/models/app_service_spec.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ allOf:
44

55
- type: object
66
properties:
7+
autoscaling:
8+
$ref: app_autoscaling_spec_service.yml
9+
710
cors:
811
allOf:
912
- $ref: apps_cors_policy.yml

specification/resources/apps/models/app_worker_spec.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ allOf:
33
- $ref: app_component_instance_base.yml
44
- type: object
55
properties:
6+
autoscaling:
7+
$ref: app_autoscaling_spec.yml
8+
69
termination:
710
$ref: app_worker_spec_termination.yml
811
liveness_health_check:

0 commit comments

Comments
 (0)