Langsung ke konten utama
← Kembali ke Insight
CLOUD ARCHITECTURE29 April 2026
Read in English→

FinOps di AWS: Memangkas Biaya Virtual Machine Idle hingga 35%

Alokasi kapasitas berlebih (over-provisioning) pada virtual machine yang idle merupakan sumber pemborosan cloud terbesar. Kami menguraikan bagaimana pool kontainer elastis, kebijakan auto-scaling, dan query caching Redis memangkas biaya komputasi hingga 35%.

FinOps di AWS: Memangkas Biaya Virtual Machine Idle hingga 35%

Patologi utama dari anggaran cloud enterprise adalah alokasi kapasitas komputasi statis: mengunci ukuran armada virtual machine demi menahan beban puncak di siang hari, yang berujung pada terbuangnya lebih dari 60% kapasitas komputasi secara sia-sia di malam hari. Pada platform perbankan digital, rantai pasok, dan logistik di Asia Tenggara, kurva lalu lintas harian (diurnal volatility) sangat curam. Konkurensi sistem melonjak tinggi antara pukul 09.00 hingga 16.30 WIB, melandai di awal malam, lalu anjlok ke lembah nokturnal selama 8 jam di mana beban riil berada di bawah 15% dari kapasitas puncak.

Ketika tim infrastruktur mempertahankan klaster Amazon EC2 statis yang dikunci untuk skenario terburuk, perusahaan dipaksa membayar tarif penuh per jam untuk server-server yang hanya membakar siklus CPU tanpa memproses transaksi bisnis. Alokasi kapasitas berlebih (over-provisioning) kerap dibela sebagai mitigasi risiko lonjakan mendadak, namun membayar kapasitas idle pada layer hypervisor adalah kegagalan arsitektur, bukan bukti keandalan sistem.

Menghilangkan pemborosan struktural ini tanpa mengorbankan Service Level Objectives (SLO) memerlukan transisi dari instans EC2 statis ke arsitektur elastis tiga tingkat: kontainerisasi berbasis AWS ECS Fargate, kebijakan target-tracking autoscaling berbasis volume permintaan Application Load Balancer (ALB), dan lapisan caching terdistribusi via Redis. Pada platform produksi yang melayani 4.800 permintaan per detik di region AWS Jakarta (ap-southeast-3), pendekatan ini terbukti memangkas 35% total biaya komputasi bulanan sekaligus memperbaiki latensi persentil P99.

+----------------------------------------------------------------------------------------------------+
| TOPOLOGI KONTAINER FINOPS ELASTIS DI AWS (Region Jakarta ap-southeast-3)                           |
|                                                                                                    |
|                             [ Lalu Lintas Masuk Internet Publik ]                                  |
|                                             |                                                      |
|                                             v                                                      |
|                             +-------------------------------+                                      |
|                             | Application Load Balancer     |                                      |
|                             | - Terminasi HTTPS TLS 1.3     |                                      |
|                             | - Health Check Target Group   |                                      |
|                             +-------------------------------+                                      |
|                                             |                                                      |
|                   +-------------------------+-------------------------+                            |
|                   | Metrik Penyadapan Permintaan                      | Telemetri Metrik           |
|                   v                                                   v                            |
|   +-------------------------------+                   +-------------------------------+            |
|   | AWS Application Auto Scaling  |                   | Alarm Metrik CloudWatch       |            |
|   | - ALBRequestCountPerTarget:1k |                   | - Pemantauan Konkurensi P95   |            |
|   +-------------------------------+                   +-------------------------------+            |
|                   |                                                                                |
|                   v Skala Naik / Turun Dinamis (Min: 3 Task | Maks: 18 Task)                       |
|   +--------------------------------------------------------------------------------------------+   |
|   | Klaster Elastis AWS ECS Fargate (Subnet Privat di 3 Availability Zones)                    |   |
|   |  +-------------------+  +-------------------+  ...  +-------------------+                  |   |
|   |  | Task 1 (1vCPU/2G) |  | Task 2 (1vCPU/2G) |       | Task N (1vCPU/2G) |                  |   |
|   |  +-------------------+  +-------------------+       +-------------------+                  |   |
|   +--------------------------------------------------------------------------------------------+   |
|                   |                                                   |                            |
|                   | Pembacaan Cache-Aside (<1.2ms)                    | Mutasi / Cache Miss        |
|                   v                                                   v                            |
|   +-------------------------------+                   +-------------------------------+            |
|   | Amazon ElastiCache for Redis  |                   | Amazon Aurora PostgreSQL      |            |
|   | - Klaster 2-Node Multi-AZ     |                   | - Skalabilitas Serverless v2  |            |
|   | - Rasio Offload Kueri 72%     |                   | - Replikasi Baca Terdedikasi  |            |
|   +-------------------------------+                   +-------------------------------+            |
+----------------------------------------------------------------------------------------------------+

1. Patologi Kapasitas Berlebih dalam Angka

Dalam audit arsitektur infrastruktur untuk platform logistik pembayaran di Jakarta yang melayani 4.800 permintaan per detik pada jam sibuk, lapisan aplikasi sebelumnya berjalan di atas 12 instans EC2 statis tipe c6i.2xlarge (masing-masing 8 vCPU dan 16 GB RAM).

Data telemetri selama 90 hari memperlihatkan pola inefisiensi yang jelas:

  • Jam Sibuk (11.00 - 14.00 WIB): Rata-rata utilisasi CPU seluruh klaster berada di kisaran 58%, beroperasi dalam ambang batas aman.
  • Luar Jam Sibuk (22.00 - 06.00 WIB): Utilisasi CPU anjlok drastis ke 11,4%, dengan konsumsi memori tertahan di angka 18%.
  • Biaya Idle Terbuang: Dari 720 jam operasional setiap bulannya, 62% kapasitas komputasi yang dibayar perusahaan sama sekali tidak menghasilkan nilai bisnis. Biaya instans EC2 statis saja mencapai $3.283,20 per bulan, belum termasuk biaya volume EBS yang terpasang.

Tim rekayasa kerap mempertahankan alokasi statis akibat kendala operasional: inisialisasi boot virtual machine memakan waktu 3 hingga 5 menit, pembaruan AMI menambah beban kerja rilis, dan autoscaling berbasis CPU lambat mengantisipasi lonjakan mendadak. Solusinya bukan mematikan instans secara manual, melainkan memutus keterikatan ukuran beban kerja dari batasan mesin virtual statis.

2. Arsitektur Tiga Tingkat yang Elastis

Arsitektur FinOps modern mengganti provisi mesin virtual statis dengan tiga tingkat infrastruktur yang saling terintegrasi:

Tingkat 1: Task Serverless Berukuran Granular (AWS ECS Fargate)

Migrasi layanan aplikasi ke kontainer pada AWS ECS Fargate meniadakan pengelolaan sistem operasi dan instans virtual machine. Alih-alih membayar tagihan instans 24 jam penuh tanpa memedulikan utilisasi nyata, Fargate menagih secara presisi per detik berdasarkan alokasi vCPU dan memori task yang aktif. Sizing task yang granular (1 vCPU, 2 GB RAM per task) menghadirkan elastisitas linear: ekspansi kapasitas hanya menambah unit komputasi yang benar-benar dibutuhkan oleh lonjakan saat itu.

Tingkat 2: Target-Tracking Autoscaling Berbasis Permintaan ALB

Kebijakan autoscaling konvensional yang mengandalkan rata-rata CPU instans bersifat reaktif. Pada saat metrik lonjakan CPU terakumulasi di CloudWatch dan alarm berbunyi, antrean request backend biasanya telah mengalami degradasi.

Kami mengonfigurasi Application Auto Scaling untuk memantau metrik bawaan ALBRequestCountPerTarget. Dengan menetapkan ambang throughput baseline (dikalibrasikan pada 1.000 permintaan per kontainer per menit), sistem meluncurkan penambahan task secara proporsional sebelum CPU kontainer tersaturasi, serta secara otomatis menyusutkan kapasitas kembali dalam 300 detik setelah lalu lintas mereda.

Tingkat 3: Offload Kueri Database via Redis (Amazon ElastiCache)

Menambah kontainer aplikasi secara linear pada akhirnya hanya akan memindahkan beban kemacetan ke lapisan connection pool basis data relasional.

Dengan menerapkan pola cache-aside menggunakan Amazon ElastiCache for Redis (cache.m6g.large Multi-AZ), kueri baca berulang—seperti validasi token otorisasi, tabel harga komoditas, dan konfigurasi routing mitra—diselesaikan dalam waktu di bawah 1,2 milidetik. Mengalihkan 72% beban baca dari Amazon Aurora PostgreSQL menstabilkan connection pool database dan menurunkan jumlah task kontainer yang diperlukan untuk melayani beban puncak.

3. Konfigurasi Produksi Terraform

Spesifikasi Terraform berikut mendefinisikan target auto-scaling layanan ECS beserta kebijakan target-tracking responsif yang dikaitkan langsung dengan metrik permintaan ALB:

# ecs-autoscaling.tf

# 1. Definisikan Target Application Auto Scaling untuk Layanan ECS
resource "aws_appautoscaling_target" "ecs_service_target" {
  max_capacity       = 18
  min_capacity       = 3
  resource_id        = "service/${aws_ecs_cluster.production.name}/${aws_ecs_service.api_gateway.name}"
  scalable_dimension = "ecs:service:DesiredCount"
  service_namespace  = "ecs"
}

# 2. Kebijakan Auto-Scaling Target-Tracking berbasis ALB Request Count Per Target
resource "aws_appautoscaling_policy" "ecs_target_tracking_alb" {
  name               = "alb-request-count-target-tracking"
  policy_type        = "TargetTrackingScaling"
  resource_id        = aws_appautoscaling_target.ecs_service_target.resource_id
  scalable_dimension = aws_appautoscaling_target.ecs_service_target.scalable_dimension
  service_namespace  = aws_appautoscaling_target.ecs_service_target.service_namespace

  target_tracking_scaling_policy_configuration {
    target_value = 1000.0 # Target: 1.000 permintaan per kontainer per menit

    predefined_metric_specification {
      predefined_metric_type = "ALBRequestCountPerTarget"
      resource_label         = "${aws_lb.internal_alb.arn_suffix}/${aws_lb_target_group.ecs_targets.arn_suffix}"
    }

    # Stabilisasi scale-in untuk mencegah flapping task saat fluktuasi sesaat
    scale_in_cooldown  = 300
    # Agresivitas scale-out untuk menyerap lonjakan lalu lintas seketika
    scale_out_cooldown = 60
  }
}

Jeda scale-out 60 detik memastikan kesiapan armada kontainer saat menghadapi lonjakan seketika, sementara jeda scale-in 300 detik mencegah fenomena thrashing (terminasi dan peluncuran task yang berulang) saat fluktuasi sesaat terjadi.

4. Neraca Keuangan & Ekonomi Satuan

Berikut adalah rekapitulasi audit biaya bulanan sebelum dan sesudah migrasi arsitektur pada sistem berkapasitas 4.800 permintaan/detik di region AWS ap-southeast-3 (Jakarta):

Komponen Infrastruktur Arsitektur Statis Lama (12x EC2 c6i.2xlarge) Arsitektur Elastis Modern (ECS Fargate + Redis) Selisih Biaya Bulanan
Lapisan Komputasi $3.283,20 (12x instans @ $0,38/jam, 720j) $1.584,18 (Rata-rata dinamis 5,4 task @ 1vCPU/2GB) -$1.699,02 (-51,7%)
Penyimpanan (EBS) $192,00 (12x disk root gp3 100GB) $0,00 (Penyimpanan root efemeral kontainer sudah termasuk) -$192,00 (-100,0%)
Penyeimbang Beban (ALB) $44,20 (1x ALB + 12 LCU) $44,20 (1x ALB + 12 LCU) $0,00 (0,0%)
Basis Data (Aurora Postgres) $728,80 (db.r6g.xlarge primer + replika) $728,80 (Dipertahankan untuk mutasi transaksi) $0,00 (0,0%)
Lapisan Caching (ElastiCache) $0,00 (Belum menggunakan caching layer) $403,20 (Klaster 2-node Multi-AZ cache.m6g.large) +$403,20 (+100,0%)
Total Pengeluaran Bulanan $4.248,20 $2.760,38 -$1.487,82 (-35,0%)

Di luar penghematan langsung sebesar 35,0% pada pengeluaran infrastruktur bulanan (penghematan bersih $1.487,82 per bulan atau setara ~$17.850 per tahun), platform meraih dua peningkatan operasional signifikan:

  1. Peningkatan Latensi P99: Dengan melayani 72% kueri langsung dari memori Redis, waktu respons API persentil P99 terpangkas dari 185ms menjadi 108ms.
  2. Nol Beban Pemeliharaan OS: Fargate menghapus seluruh kebutuhan penambalan keamanan OS, rotasi patch kernel, dan scanning kerentanan AMI dari backlog tim rekayasa platform.

FinOps bukan tentang memangkas kapasitas secara serampangan atau menurunkan toleransi beban sistem, melainkan penyelarasan unit penagihan cloud secara presisi dengan volume transaksi riil.