AWS Auto Scaling Group: Mengatasi Perubahan Beban pada Situs Web dan Aplikasi Anda

NDID Engineering Blog
NDID Engineering
Published in
9 min readOct 6, 2023

Author: Hidayatulloh

Pendahuluan

Dalam dunia yang semakin dinamis, situs web dan aplikasi seringkali menghadapi fluktuasi dalam beban kerja. Amazon Web Services (AWS) menawarkan Auto Scaling Group sebagai solusi untuk mengotomatisasi penyesuaian kapasitas sumber daya komputasi Anda. Meskipun Auto Scaling Group sangat berguna, masalah dapat timbul ketika beban kerja situs web dan aplikasi Anda berubah secara dinamis. Artikel ini akan menjelaskan bagaimana Auto Scaling Group di AWS dapat menghadapi masalah ini dan menyajikan solusi dan implementasinya.

Sebelum itu kita perlu tahu dahulu terkait tentang Skalabilitas dan Load Balancer.

Skalabilitas berarti suatu aplikasi/sistem dapat menangani beban yang lebih besar dengan beradaptasi.

Ada dua jenis skalabilitas:

  • Skalabilitas Vertikal
  • Skalabilitas Horizontal

Skalabilitas Vertikal

Skalabilitas Vertikal berarti memperbesar ukuran dari suatu instance

  • Misalnya, aplikasi Anda berjalan pada t2.micro dengan spesifikasi 1 CPU dan 1 GB RAM
  • Menskalakan aplikasi tersebut secara vertical menjalankannya di t2.large dengan spesifikasi 2 CPU dan 8 GB RAM

Skalabilitas Horizontal

Skalabilitas Horizontal berarti meningkatkan jumlah instance / sistem untuk aplikasi Anda.

Contoh: dari 1 instance menjadi 2 atau 3 instance.

  • Penskalaan horizontal diartikan sebagai sistem terdistribusi.
  • Ini sangat umum untuk aplikasi web /aplikasi modern

Load Balancer

Load Balancer adalah server yang meneruskan lalu lintas internet ke banyak server (Instance EC2).

Mengapa menggunakan Load Balancer?

  • Menyebarkan beban ke beberapa instance
  • Mengekspos satu titik akses (DNS) ke aplikasi Anda
  • Menangani kegagalan instance
  • Melakukan pemeriksaan kesehatan rutin pada instance Anda
  • Menyediakan SSL (HTTPS) untuk situs web Anda
  • Ketersediaan tinggi di seluruh zona

Masalah: Perubahan Beban Kerja yang Dinamis

Salah satu tantangan utama dalam mengelola situs web dan aplikasi adalah perubahan yang dinamis dalam beban kerja. Pada saat-saat tertentu, Anda mungkin menghadapi lonjakan lalu lintas yang signifikan, sedangkan pada saat lain, permintaan bisa menurun drastis. Masalah utama adalah bagaimana mengatur sumber daya komputasi agar sesuai dengan beban kerja yang berubah-ubah ini, agar dapat terus sesuai dengan lonjakan lalu lintas yang ada.

Solusi: Menggunakan Auto Scaling Group

AWS Auto Scaling Group adalah solusi yang memungkinkan Anda untuk secara otomatis menyesuaikan jumlah instance EC2 Anda berdasarkan metrik pemantauan tertentu. Ini adalah solusi yang sangat efektif untuk mengatasi perubahan beban kerja yang dinamis.

Langkah-langkah Implementasi Auto Scaling Group:

  • Sign-in ke dalam aws console (jika belum punya akun anda bisa untuk daftar dahulu)
  • Pilih EC2
  • Pilih Instances, lalu Klik Launch instances
  • Input Name Instance dan Number of instance, disini kita akan create 2 instance
  • Pilih Quick Start, Pilih Amazon Linux dan Pilih Amazon Linux 2 AMI (HVM)
  • Untuk Key pair, pilih Proceed without a key pair
  • Untuk Firewall(security groups), Pilih Create security group lalu ceklis semua rules
  • Klik Advanced details, lalu input user data berikut :
#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
  • Klik Launch instance.
  • Create instance success
  • Klik Instance, disini sudah tampil 2 instance yang telah kita create sebelumnya
  • Pilih salah satu instance dan Klik name untuk merubah nama instance menjadi MySecondInstance
  • Klik Save
  • Setelah create instance, kita akan create Load Balancer sebagai pendistribusi/penyeimbang trafik yang akan menuju ke instance. Pilih Load Balancer, lalu Klik Create Load Balancer
  • Kita akan Pilih Create untuk Application Load Balancer
  • Input Load balancer name
  • Untuk Mappings, ceklis semua Availability Zone
  • Untuk Security groups, kita akan Klik create new security group
  • Input Security group name dan juga Description
  • Untuk Inbound rules, Type Pilih HTTP dan Source Any 0.0.0.0/0
  • Scroll kebawah lalu Klik Create security group
  • Security group berhasil tercreate.
  • Setelah berhasil, kita akan Kembali ke halaman Load Balancer dan Refresh lalu Pilih DemoSecurityGroupLoadBalancer yang telah kita create sebelumnya.
  • Klik Create target group
  • Untuk Basic Configuration, Disini kita akan pilih Instances untuk mengelompokkan instance
  • Input Target group name
  • Scroll kebawah lalu Klik Next
  • Ceklis semua instance
  • Klik Include as pending below
  • Lalu Klik Create target group
  • Sukses create target group
  • Setelah itu kita Kembali kehalaman Load Balancer, Refresh dan Pilih DemoTargetGroup
  • Scroll kebawah lalu Klik Create load balancer
  • Sukses create load balancer
  • Klik Load Balancer, Disini sudah tampil DemoApplicationLoadBalancer
  • Scroll kebawah lalu Pilih Auto Scaling Groups, lalu klik Create Auto Scaling group
  • Input Auto Scaling group name
  • Karena launch template belum ada maka kita harus buat dahulu, Klik Create a launch template.
  • Input Launch template name
  • Pilih Quick Start, Pilih Amazon Linux dan Pilih Amazon Linux 2 AMI (HVM)
  • Untuk Security Group, pilih DemoSecurityGroupLoadBalancer yang telah dicreate sebelumnya
  • Klik Advanced details, lalu input user data berikut :
#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
  • Klik Create launch template.
  • Create launch template success
  • Setelah berhasil create launch template, kita Kembali halaman auto scaling group, Pilih DemoLaunchTemplate, lalu klik Next
  • Input Default VPC and pilih semua Availability Zones
  • lalu klik Next
  • Untuk Load balancing, pilih Attach to an existing load balancer, lalu pilih DemoTargetGroup yang telah kita create sebelumnya, lalu klik Next
  • Untuk Group size, disini kita menentukan jumlah dari instance, lalu klik Next
  • Saat ini tidak ada notification, klik Next
  • Tag Optional, Klik Next
  • Scroll kebawah dan klik Create Auto Scaling Group
  • Auto Scaling Group Status sedang Updating
  • Klik DemoAutoScalingGroup, pilih Tab Activity
  • Scroll kebawah, bisa kita lihat di activity history akan otomatis create 2 instance
  • Di Tab Instance Management, ada 2 instance dalam status Inservice
  • Copy DNS name di Load Balancer
  • Paste di new tab browser, setelah dipaste lalu open dan jika kita refresh berulang-ulang maka akan balance menuju ke 2 instance yang ada.
  • Keunggulan dari Auto Scaling ini, jika ada suatu instance yang mengalami kegagalan maka akan otomatis create instance baru, disini kita akan coba untuk terminate salah satu instance dan lihat apa yang akan terjadi, Pilih salah satu instance lalu klik instance tersebut, lalu klik Terminate Instance
  • Klik Terminate
  • Instance yang kita terminate tadi statusnya akan Unhealthy dan otomatis akan create instance baru sesuai jumlah Desired instance yang kita set sebelumnya
  • Berikut di tab Activity, adanya activity baru Terminating EC2 dan Launching new EC2

Kesimpulan

Auto Scaling Group di AWS adalah alat yang sangat berguna untuk mengatasi perubahan beban kerja yang dinamis pada situs web dan aplikasi Anda. Dengan memilih metrik pemantauan yang tepat dan mengkonfigurasi Auto Scaling Group secara cermat, Anda dapat memastikan bahwa sumber daya komputasi Anda selalu sesuai dengan kebutuhan. Solusi ini memungkinkan Anda untuk menjalankan situs web dan aplikasi Anda secara efisien dan mengurangi resiko terhadap fluktuasi dalam beban kerja.

--

--