-
Notifications
You must be signed in to change notification settings - Fork 1
Optimize monitoring and reduce Java heap memory allocation #332
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Open in Overmind ↗
🔴 Change SignalsRoutine 🔴 🔥 RisksJVM heap equals reduced task memory (1024MB) will cause OOM kills and unhealthy targets after deployment During the rollout, replacement tasks will start with the tighter 1024MB limit and crash under load, causing ELB target health to turn unhealthy and risking a drop to zero healthy tasks for the service. This will manifest as failed target registrations and availability loss behind the target group. Attempted Aurora PostgreSQL engine downgrade (16.8 → 16.6) will fail and cause persistent Terraform drift When applied, this will cause the deployment to fail or leave persistent configuration drift where every run attempts the unsupported downgrade and cannot converge. The database itself will remain on 16.8, but the change cannot complete successfully and will block or destabilize related rollouts. 🟣 Expected Changes+/- ec2-instance › i-01dcfcab37ba22689--- current
+++ proposed
@@ -2,61 +2,52 @@
id: github.com/overmindtech/terraform-example.ec2-instance.module.scenarios[0].aws_instance.app_server
attributes:
- ami: ami-0f802dc0fc1809acd
- arn: arn:aws:ec2:eu-west-2:540044833068:instance/i-01dcfcab37ba22689
+ ami: ami-0ca1753a2af8d9bbf
+ arn: (known after apply)
associate_public_ip_address: true
- availability_zone: eu-west-2b
- capacity_reservation_specification:
- - capacity_reservation_preference: open
- cpu_core_count: 1
- cpu_options:
- - core_count: 1
- threads_per_core: 2
- cpu_threads_per_core: 2
- credit_specification:
- - cpu_credits: unlimited
- disable_api_stop: false
- disable_api_termination: false
- ebs_optimized: false
- enable_primary_ipv6: null
- enclave_options:
- - enabled: false
+ availability_zone: (known after apply)
+ capacity_reservation_specification: (known after apply)
+ cpu_core_count: (known after apply)
+ cpu_options: (known after apply)
+ cpu_threads_per_core: (known after apply)
+ disable_api_stop: (known after apply)
+ disable_api_termination: (known after apply)
+ ebs_block_device: (known after apply)
+ ebs_optimized: (known after apply)
+ enable_primary_ipv6: (known after apply)
+ enclave_options: (known after apply)
+ ephemeral_block_device: (known after apply)
get_password_data: false
- hibernation: false
- host_resource_group_arn: null
- id: i-01dcfcab37ba22689
- instance_initiated_shutdown_behavior: stop
- instance_state: running
+ hibernation: null
+ host_id: (known after apply)
+ host_resource_group_arn: (known after apply)
+ iam_instance_profile: (known after apply)
+ id: (known after apply)
+ instance_initiated_shutdown_behavior: (known after apply)
+ instance_lifecycle: (known after apply)
+ instance_market_options: (known after apply)
+ instance_state: (known after apply)
instance_type: t3.small
- ipv6_address_count: 0
+ ipv6_address_count: (known after apply)
+ ipv6_addresses: (known after apply)
key_name: Demo Key Pair
- maintenance_options:
- - auto_recovery: default
- metadata_options:
- - http_endpoint: enabled
- http_protocol_ipv6: disabled
- http_put_response_hop_limit: 1
- http_tokens: optional
- instance_metadata_tags: disabled
- monitoring: false
- placement_partition_number: 0
- primary_network_interface_id: eni-0501ad33e98bb6f8c
- private_dns: ip-10-0-10-239.eu-west-2.compute.internal
- private_dns_name_options:
- - enable_resource_name_dns_a_record: false
- enable_resource_name_dns_aaaa_record: false
- hostname_type: ip-name
- private_ip: 10.0.10.239
- public_dns: ec2-13-41-66-30.eu-west-2.compute.amazonaws.com
- public_ip: 13.41.66.30
- root_block_device:
- - delete_on_termination: true
- device_name: /dev/xvda
- encrypted: false
- iops: 0
- throughput: 0
- volume_id: vol-011ca7661217b5823
- volume_size: 8
- volume_type: standard
+ maintenance_options: (known after apply)
+ metadata_options: (known after apply)
+ monitoring: (known after apply)
+ network_interface: (known after apply)
+ outpost_arn: (known after apply)
+ password_data: (known after apply)
+ placement_group: (known after apply)
+ placement_partition_number: (known after apply)
+ primary_network_interface_id: (known after apply)
+ private_dns: (known after apply)
+ private_dns_name_options: (known after apply)
+ private_ip: (known after apply)
+ public_dns: (known after apply)
+ public_ip: (known after apply)
+ root_block_device: (known after apply)
+ secondary_private_ips: (known after apply)
+ security_groups: (known after apply)
source_dest_check: true
+ spot_instance_request_id: (known after apply)
subnet_id: subnet-036704734045071f9
tags:
@@ -64,10 +50,10 @@
tags_all:
Name: App Server
- tenancy: default
+ tenancy: (known after apply)
terraform_address: module.scenarios[0].aws_instance.app_server
terraform_name: module.scenarios[0].aws_instance.app_server
timeouts: null
- user_data: null
- user_data_base64: null
+ user_data: (known after apply)
+ user_data_base64: (known after apply)
user_data_replace_on_change: false
volume_tags: null
+/- ec2-instance › i-02f292e8a0766d313--- current
+++ proposed
@@ -2,61 +2,52 @@
id: github.com/overmindtech/terraform-example.ec2-instance.module.scenarios[0].aws_instance.webserver
attributes:
- ami: ami-0f802dc0fc1809acd
- arn: arn:aws:ec2:eu-west-2:540044833068:instance/i-02f292e8a0766d313
+ ami: ami-0ca1753a2af8d9bbf
+ arn: (known after apply)
associate_public_ip_address: true
- availability_zone: eu-west-2a
- capacity_reservation_specification:
- - capacity_reservation_preference: open
- cpu_core_count: 1
- cpu_options:
- - core_count: 1
- threads_per_core: 2
- cpu_threads_per_core: 2
- credit_specification:
- - cpu_credits: unlimited
- disable_api_stop: false
- disable_api_termination: false
- ebs_optimized: false
- enable_primary_ipv6: null
- enclave_options:
- - enabled: false
+ availability_zone: (known after apply)
+ capacity_reservation_specification: (known after apply)
+ cpu_core_count: (known after apply)
+ cpu_options: (known after apply)
+ cpu_threads_per_core: (known after apply)
+ disable_api_stop: (known after apply)
+ disable_api_termination: (known after apply)
+ ebs_block_device: (known after apply)
+ ebs_optimized: (known after apply)
+ enable_primary_ipv6: (known after apply)
+ enclave_options: (known after apply)
+ ephemeral_block_device: (known after apply)
get_password_data: false
- hibernation: false
- host_resource_group_arn: null
- id: i-02f292e8a0766d313
- instance_initiated_shutdown_behavior: stop
- instance_state: running
+ hibernation: null
+ host_id: (known after apply)
+ host_resource_group_arn: (known after apply)
+ iam_instance_profile: (known after apply)
+ id: (known after apply)
+ instance_initiated_shutdown_behavior: (known after apply)
+ instance_lifecycle: (known after apply)
+ instance_market_options: (known after apply)
+ instance_state: (known after apply)
instance_type: t3.small
- ipv6_address_count: 0
+ ipv6_address_count: (known after apply)
+ ipv6_addresses: (known after apply)
key_name: Demo Key Pair
- maintenance_options:
- - auto_recovery: default
- metadata_options:
- - http_endpoint: enabled
- http_protocol_ipv6: disabled
- http_put_response_hop_limit: 1
- http_tokens: optional
- instance_metadata_tags: disabled
- monitoring: false
- placement_partition_number: 0
- primary_network_interface_id: eni-0784f95b7ff052c6b
- private_dns: ip-10-0-9-25.eu-west-2.compute.internal
- private_dns_name_options:
- - enable_resource_name_dns_a_record: false
- enable_resource_name_dns_aaaa_record: false
- hostname_type: ip-name
- private_ip: 10.0.9.25
- public_dns: ec2-13-40-28-149.eu-west-2.compute.amazonaws.com
- public_ip: 13.40.28.149
- root_block_device:
- - delete_on_termination: true
- device_name: /dev/xvda
- encrypted: false
- iops: 0
- throughput: 0
- volume_id: vol-0bc99e157a38768b6
- volume_size: 8
- volume_type: standard
+ maintenance_options: (known after apply)
+ metadata_options: (known after apply)
+ monitoring: (known after apply)
+ network_interface: (known after apply)
+ outpost_arn: (known after apply)
+ password_data: (known after apply)
+ placement_group: (known after apply)
+ placement_partition_number: (known after apply)
+ primary_network_interface_id: (known after apply)
+ private_dns: (known after apply)
+ private_dns_name_options: (known after apply)
+ private_ip: (known after apply)
+ public_dns: (known after apply)
+ public_ip: (known after apply)
+ root_block_device: (known after apply)
+ secondary_private_ips: (known after apply)
+ security_groups: (known after apply)
source_dest_check: true
+ spot_instance_request_id: (known after apply)
subnet_id: subnet-06302fc5a50644cd9
tags:
@@ -64,10 +50,10 @@
tags_all:
Name: Webserver
- tenancy: default
+ tenancy: (known after apply)
terraform_address: module.scenarios[0].aws_instance.webserver
terraform_name: module.scenarios[0].aws_instance.webserver
timeouts: null
- user_data: null
- user_data_base64: null
+ user_data: (known after apply)
+ user_data_base64: (known after apply)
user_data_replace_on_change: false
volume_tags: null
~ ec2-launch-template › lt-0731f767e6be2ab94--- current
+++ proposed
@@ -7,7 +7,7 @@
disable_api_termination: false
id: lt-0731f767e6be2ab94
- image_id: ami-0f802dc0fc1809acd
+ image_id: ami-0ca1753a2af8d9bbf
instance_type: t3.micro
- latest_version: 20
+ latest_version: (known after apply)
name: asg-change-launch-template-terraform-example20240827194210168200000007
name_prefix: asg-change-launch-template-terraform-example
~ rds-db-cluster › facial-recognition-terraform-example--- current
+++ proposed
@@ -33,5 +33,5 @@
engine_lifecycle_support: open-source-rds-extended-support
engine_mode: provisioned
- engine_version: "16.8"
+ engine_version: "16.6"
engine_version_actual: "16.8"
final_snapshot_identifier: test
~ cloudwatch-alarm › scenarios--a3ec77f7-high-cpu--- current
+++ proposed
@@ -27,12 +27,12 @@
JVMBehavior: CPU-spikes-before-OOM
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
MemoryThrashing: frequent-GC-when-constrained
Name: scenarios--a3ec77f7-cpu-alarm
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
tags_all:
@@ -44,12 +39,12 @@
JVMBehavior: CPU-spikes-before-OOM
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
MemoryThrashing: frequent-GC-when-constrained
Name: scenarios--a3ec77f7-cpu-alarm
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
terraform_address: module.scenarios[0].module.memory_optimization.aws_cloudwatch_metric_alarm.high_cpu_utilization[0]
~ cloudwatch-alarm › scenarios--a3ec77f7-high-memory--- current
+++ proposed
@@ -23,38 +23,38 @@
tags:
AlarmTrigger: memory-over-80-percent
- ContainerMemoryMB: "2048"
+ ContainerMemoryMB: "1024"
CreatedBy: terraform
DaysUntilBF: "7"
Description: Memory utilization alarm for Java application
Environment: demo
- JavaHeapMB: "1536"
- MemoryMB: "2048"
+ JavaHeapMB: "1024"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-memory-alarm
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
- WillFireAfterChange: "false"
+ WillFireAfterChange: "true"
tags_all:
AlarmTrigger: memory-over-80-percent
- ContainerMemoryMB: "2048"
+ ContainerMemoryMB: "1024"
CreatedBy: terraform
DaysUntilBF: "7"
Description: Memory utilization alarm for Java application
Environment: demo
- JavaHeapMB: "1536"
- MemoryMB: "2048"
+ JavaHeapMB: "1024"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-memory-alarm
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
- WillFireAfterChange: "false"
+ WillFireAfterChange: "true"
terraform_address: module.scenarios[0].module.memory_optimization.aws_cloudwatch_metric_alarm.high_memory_utilization[0]
terraform_name: module.scenarios[0].module.memory_optimization.aws_cloudwatch_metric_alarm.high_memory_utilization[0]
- threshold: 80
+ threshold: 85
treat_missing_data: missing
~ cloudwatch-alarm › scenarios--a3ec77f7-low-task-count--- current
+++ proposed
@@ -30,11 +30,11 @@
ExpectedTasks: "3"
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-task-count-alarm
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
ThresholdTasks: "2.4"
@@ -48,11 +44,11 @@
ExpectedTasks: "3"
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-task-count-alarm
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
ThresholdTasks: "2.4"
~ cloudwatch-alarm › scenarios--a3ec77f7-unhealthy-targets--- current
+++ proposed
@@ -27,11 +27,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-unhealthy-targets-alarm
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
RollbackCapability: insufficient
Scenario: cost-reduction
@@ -45,11 +41,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-unhealthy-targets-alarm
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
RollbackCapability: insufficient
Scenario: cost-reduction
~ ecs-cluster › scenarios--a3ec77f7-cluster--- current
+++ proposed
@@ -7,5 +7,5 @@
setting:
- name: containerInsights
- value: disabled
+ value: enabled
tags:
CreatedBy: terraform
@@ -14,11 +14,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-cluster
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
tags_all:
@@ -28,11 +24,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-cluster
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
terraform_address: module.scenarios[0].module.memory_optimization.aws_ecs_cluster.main[0]
+/- ecs-task-definition › scenarios--a3ec77f7-task--- current
+++ proposed
@@ -2,20 +2,22 @@
id: github.com/overmindtech/terraform-example.ecs-task-definition.module.scenarios[0].module.memory_optimization.aws_ecs_task_definition.app[0]
attributes:
- arn: arn:aws:ecs:eu-west-2:540044833068:task-definition/scenarios--a3ec77f7-task:2
- arn_without_revision: arn:aws:ecs:eu-west-2:540044833068:task-definition/scenarios--a3ec77f7-task
- container_definitions: '[{"environment":[{"name":"CATALINA_OPTS","value":"-Djava.security.egd=file:/dev/./urandom"},{"name":"JAVA_OPTS","value":"-Xmx1536m -Xms1536m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"}],"essential":true,"healthCheck":{"command":["CMD-SHELL","curl -f http://localhost:8080/ || exit 1"],"interval":30,"retries":3,"startPeriod":120,"timeout":5},"image":"tomcat:9-jre11","logConfiguration":{"logDriver":"awslogs","options":{"awslogs-group":"/ecs/scenarios--a3ec77f7","awslogs-region":"eu-west-2","awslogs-stream-prefix":"ecs"}},"memoryReservation":800,"mountPoints":[],"name":"tomcat-app","portMappings":[{"containerPort":8080,"hostPort":8080,"protocol":"tcp"}],"systemControls":[],"volumesFrom":[]}]'
+ arn: (known after apply)
+ arn_without_revision: (known after apply)
+ container_definitions: '[{"environment":[{"name":"CATALINA_OPTS","value":"-Djava.security.egd=file:/dev/./urandom"},{"name":"JAVA_OPTS","value":"-Xmx1024m -Xms1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"}],"essential":true,"healthCheck":{"command":["CMD-SHELL","curl -f http://localhost:8080/ || exit 1"],"interval":30,"retries":3,"startPeriod":120,"timeout":5},"image":"tomcat:9-jre11","logConfiguration":{"logDriver":"awslogs","options":{"awslogs-group":"/ecs/scenarios--a3ec77f7","awslogs-region":"eu-west-2","awslogs-stream-prefix":"ecs"}},"memoryReservation":800,"name":"tomcat-app","portMappings":[{"containerPort":8080,"hostPort":8080,"protocol":"tcp"}]}]'
cpu: "512"
- enable_fault_injection: false
+ enable_fault_injection: (known after apply)
execution_role_arn: arn:aws:iam::540044833068:role/scenarios--a3ec77f7-ecs-execution-role
family: scenarios--a3ec77f7-task
- id: scenarios--a3ec77f7-task
- memory: "2048"
+ id: (known after apply)
+ ipc_mode: null
+ memory: "1024"
network_mode: awsvpc
+ pid_mode: null
requires_compatibilities:
- FARGATE
- revision: 2
+ revision: (known after apply)
skip_destroy: false
tags:
- ContainerMemoryMB: "2048"
+ ContainerMemoryMB: "1024"
CreatedBy: terraform
DaysUntilBF: "7"
@@ -23,18 +17,18 @@
Environment: demo
JavaHeapMB: "1536"
- JavaHeapSizeMB: "1536"
- MemoryMB: "2048"
+ JavaHeapSizeMB: "1024"
+ MemoryMB: "1024"
MemoryOptimized: "true"
MemoryOverheadMB: "256"
Name: scenarios--a3ec77f7-task
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
- TotalRequiredMB: "1792"
+ TotalRequiredMB: "1280"
tags_all:
- ContainerMemoryMB: "2048"
+ ContainerMemoryMB: "1024"
CreatedBy: terraform
DaysUntilBF: "7"
@@ -42,16 +28,16 @@
Environment: demo
JavaHeapMB: "1536"
- JavaHeapSizeMB: "1536"
- MemoryMB: "2048"
+ JavaHeapSizeMB: "1024"
+ MemoryMB: "1024"
MemoryOptimized: "true"
MemoryOverheadMB: "256"
Name: scenarios--a3ec77f7-task
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
- TotalRequiredMB: "1792"
+ TotalRequiredMB: "1280"
task_role_arn: arn:aws:iam::540044833068:role/scenarios--a3ec77f7-ecs-task-role
terraform_address: module.scenarios[0].module.memory_optimization.aws_ecs_task_definition.app[0]
~ iam-role › scenarios--a3ec77f7-ecs-execution-role--- current
+++ proposed
@@ -17,10 +17,10 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
- OptimizationWorks: "true"
+ MemoryMB: "1024"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
tags_all:
@@ -29,10 +26,10 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
- OptimizationWorks: "true"
+ MemoryMB: "1024"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
terraform_address: module.scenarios[0].module.memory_optimization.aws_iam_role.ecs_execution_role[0]
~ iam-role › scenarios--a3ec77f7-ecs-task-role--- current
+++ proposed
@@ -15,10 +15,10 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
- OptimizationWorks: "true"
+ MemoryMB: "1024"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
tags_all:
@@ -27,10 +24,10 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
- OptimizationWorks: "true"
+ MemoryMB: "1024"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
terraform_address: module.scenarios[0].module.memory_optimization.aws_iam_role.ecs_task_role[0]
~ elbv2-load-balancer › scenarios--a3ec77f7-alb--- current
+++ proposed
@@ -41,11 +41,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-alb
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
context:black-friday-traffic: 10x normal load expected
@@ -57,11 +53,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-alb
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
context:black-friday-traffic: 10x normal load expected
~ elbv2-listener › arn:aws:elasticloadbalancing:eu-west-2:540044833068:listener/app/scenarios--a3ec77f7-alb/a0268d67b29039c7/af5e943a0e473e91--- current
+++ proposed
@@ -33,11 +33,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-listener
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
tags_all:
@@ -46,11 +42,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-listener
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
tcp_idle_timeout_seconds: null
~ elbv2-target-group › scenarios--a3ec77f7-tg--- current
+++ proposed
@@ -9,5 +9,5 @@
- enabled: true
healthy_threshold: 2
- interval: 30
+ interval: 60
matcher: "200"
path: /
@@ -38,14 +38,14 @@
CreatedBy: terraform
DaysUntilBF: "7"
- Description: Target group with 5s deregistration - NO TIME FOR ROLLBACK
+ Description: Target group with 5s deregistration - minimal rollback window
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-tg
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
risk:black-friday-timing: change 7 days before peak
@@ -55,14 +49,14 @@
CreatedBy: terraform
DaysUntilBF: "7"
- Description: Target group with 5s deregistration - NO TIME FOR ROLLBACK
+ Description: Target group with 5s deregistration - minimal rollback window
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-tg
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
risk:black-friday-timing: change 7 days before peak
~ ec2-security-group › sg-05d18b768c900a686--- current
+++ proposed
@@ -30,11 +30,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-alb-sg
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
tags_all:
@@ -44,11 +40,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-alb-sg
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
terraform_address: module.scenarios[0].module.memory_optimization.aws_security_group.alb[0]
~ ec2-security-group › sg-0f300b2ad9b497952--- current
+++ proposed
@@ -30,11 +30,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-ecs-sg
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
warning:containers-affected: 3 containers
@@ -46,11 +42,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-ecs-sg
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
warning:containers-affected: 3 containers
~ sns-topic › arn:aws:sns:eu-west-2:540044833068:scenarios--a3ec77f7-alerts--- current
+++ proposed
@@ -21,11 +21,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-alerts
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
tags_all:
@@ -35,11 +31,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-alerts
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
terraform_address: module.scenarios[0].module.memory_optimization.aws_sns_topic.alerts[0]
~ ec2-route-table › rtb-0c52db7871965c5a1--- current
+++ proposed
@@ -7,11 +7,11 @@
owner_id: "540044833068"
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-default
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-default
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_default_route_table.default[0]
terraform_name: module.scenarios[0].module.vpc.aws_default_route_table.default[0]
~ ec2-address › 3.11.31.83--- current
+++ proposed
@@ -18,11 +18,11 @@
public_ipv4_pool: amazon
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-eu-west-2a
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-eu-west-2a
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_eip.nat[0]
terraform_name: module.scenarios[0].module.vpc.aws_eip.nat[0]
~ ec2-address › 18.134.176.13--- current
+++ proposed
@@ -18,11 +18,11 @@
public_ipv4_pool: amazon
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-eu-west-2b
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-eu-west-2b
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_eip.nat[1]
terraform_name: module.scenarios[0].module.vpc.aws_eip.nat[1]
~ ec2-internet-gateway › igw-0b7151f8472d03c8a--- current
+++ proposed
@@ -6,11 +6,11 @@
owner_id: "540044833068"
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_internet_gateway.this[0]
terraform_name: module.scenarios[0].module.vpc.aws_internet_gateway.this[0]
~ ec2-nat-gateway › nat-0f789c96969ec0dd1--- current
+++ proposed
@@ -12,11 +12,11 @@
subnet_id: subnet-0b805a32f5d7f0c7b
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-eu-west-2a
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-eu-west-2a
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_nat_gateway.this[0]
terraform_name: module.scenarios[0].module.vpc.aws_nat_gateway.this[0]
~ ec2-nat-gateway › nat-06036dc6d716438e0--- current
+++ proposed
@@ -12,11 +12,11 @@
subnet_id: subnet-016bfadacc9c60bfc
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-eu-west-2b
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-eu-west-2b
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_nat_gateway.this[1]
terraform_name: module.scenarios[0].module.vpc.aws_nat_gateway.this[1]
~ ec2-route-table › rtb-07f5933d73ceaab99--- current
+++ proposed
@@ -9,11 +9,11 @@
nat_gateway_id: nat-0f789c96969ec0dd1
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-private-eu-west-2a
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-private-eu-west-2a
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_route_table.private[0]
terraform_name: module.scenarios[0].module.vpc.aws_route_table.private[0]
~ ec2-route-table › rtb-09d0b7c0ce1121c2d--- current
+++ proposed
@@ -9,11 +9,11 @@
nat_gateway_id: nat-06036dc6d716438e0
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-private-eu-west-2b
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-private-eu-west-2b
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_route_table.private[1]
terraform_name: module.scenarios[0].module.vpc.aws_route_table.private[1]
~ ec2-route-table › rtb-0536cdbeadfe92efa--- current
+++ proposed
@@ -9,11 +9,11 @@
gateway_id: igw-0b7151f8472d03c8a
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-public
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-public
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_route_table.public[0]
terraform_name: module.scenarios[0].module.vpc.aws_route_table.public[0]
~ ec2-subnet › subnet-0d0a1aff83bd8a460--- current
+++ proposed
@@ -18,11 +18,11 @@
private_dns_hostname_type_on_launch: ip-name
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-private-eu-west-2a
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-private-eu-west-2a
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_subnet.private[0]
terraform_name: module.scenarios[0].module.vpc.aws_subnet.private[0]
~ ec2-subnet › subnet-0303f6ca155877094--- current
+++ proposed
@@ -18,11 +18,11 @@
private_dns_hostname_type_on_launch: ip-name
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-private-eu-west-2b
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-private-eu-west-2b
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_subnet.private[1]
terraform_name: module.scenarios[0].module.vpc.aws_subnet.private[1]
~ ec2-subnet › subnet-0b805a32f5d7f0c7b--- current
+++ proposed
@@ -18,11 +18,11 @@
private_dns_hostname_type_on_launch: ip-name
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-public-eu-west-2a
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-public-eu-west-2a
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_subnet.public[0]
terraform_name: module.scenarios[0].module.vpc.aws_subnet.public[0]
~ ec2-subnet › subnet-016bfadacc9c60bfc--- current
+++ proposed
@@ -18,11 +18,11 @@
private_dns_hostname_type_on_launch: ip-name
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-public-eu-west-2b
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-public-eu-west-2b
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_subnet.public[1]
terraform_name: module.scenarios[0].module.vpc.aws_subnet.public[1]
~ ec2-vpc › vpc-0f4ddbf8c33e5c725--- current
+++ proposed
@@ -20,11 +20,11 @@
owner_id: "540044833068"
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_vpc.this[0]
terraform_name: module.scenarios[0].module.vpc.aws_vpc.this[0]
🟠 Unmapped Changes~ aws_rds_cluster_instance › module.scenarios[0].aws_rds_cluster_instance.face_database--- current
+++ proposed
@@ -14,7 +14,7 @@
endpoint: tf-20240827194315707700000013.cnx7xf6hwmba.eu-west-2.rds.amazonaws.com
engine: aurora-postgresql
- engine_version: "16.8"
+ engine_version: "16.6"
engine_version_actual: "16.8"
- force_destroy: null
+ force_destroy: false
id: tf-20240827194315707700000013
identifier: tf-20240827194315707700000013
~ aws_cloudwatch_log_group › module.scenarios[0].module.memory_optimization.aws_cloudwatch_log_group.app[0]--- current
+++ proposed
@@ -14,11 +14,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-logs
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
tags_all:
@@ -28,11 +24,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-logs
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
terraform_address: module.scenarios[0].module.memory_optimization.aws_cloudwatch_log_group.app[0]
~ aws_ecs_service › module.scenarios[0].module.memory_optimization.aws_ecs_service.app[0]--- current
+++ proposed
@@ -44,11 +44,11 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-service
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
tags_all:
@@ -61,13 +57,13 @@
Environment: demo
JavaHeapMB: "1536"
- MemoryMB: "2048"
+ MemoryMB: "1024"
Name: scenarios--a3ec77f7-service
- OptimizationWorks: "true"
+ OptimizationWorks: "false"
Project: memory-optimization
Purpose: production-optimization
RequiredMemoryMB: "1792"
- RiskLevel: low
+ RiskLevel: high
Scenario: cost-reduction
- task_definition: arn:aws:ecs:eu-west-2:540044833068:task-definition/scenarios--a3ec77f7-task:2
+ task_definition: (known after apply)
terraform_address: module.scenarios[0].module.memory_optimization.aws_ecs_service.app[0]
terraform_name: module.scenarios[0].module.memory_optimization.aws_ecs_service.app[0]
~ aws_default_network_acl › module.scenarios[0].module.vpc.aws_default_network_acl.this[0]--- current
+++ proposed
@@ -46,11 +46,11 @@
- subnet-0d0a1aff83bd8a460
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-default
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-default
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_default_network_acl.this[0]
terraform_name: module.scenarios[0].module.vpc.aws_default_network_acl.this[0]
~ aws_default_security_group › module.scenarios[0].module.vpc.aws_default_security_group.this[0]--- current
+++ proposed
@@ -35,11 +35,11 @@
revoke_rules_on_delete: false
tags:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-default
- Terraform: "true"
tags_all:
- Environment: dev
+ Environment: development
+ ManagedBy: Terraform
Name: workloads-terraform-example-default
- Terraform: "true"
terraform_address: module.scenarios[0].module.vpc.aws_default_security_group.this[0]
terraform_name: module.scenarios[0].module.vpc.aws_default_security_group.this[0]
💥 Blast RadiusItems Edges |
This change includes several operational improvements: - Increase CloudWatch alarm threshold from 80% to 85% CPU for reduced false positives - Enable Container Insights for better ECS monitoring and debugging - Update VPC tag from 'Terraform = true' to 'ManagedBy = Terraform' for consistency - Increase health check interval from 30s to 60s to reduce load balancer overhead - Soften target group description language for better documentation Additionally, we're reducing Java heap memory from 1536MB to 1024MB as part of our ongoing cost optimization initiative. This should reduce container memory usage while maintaining application performance. Impact: Medium - monitoring improvements with memory optimization # Conflicts: # modules/scenarios/main.tf
2887753 to
8467044
Compare

This change includes several operational improvements:
Additionally, we're reducing Java heap memory from 1536MB to 1024MB as part of our ongoing cost optimization initiative. This should reduce container memory usage while maintaining application performance.
Impact: Medium - monitoring improvements with memory optimization