index

Tentang AWS Elastic Beanstalk

· 4min
Generated by AI
Generated by AI

AWS Elastic Beanstalk adalah sebuah service yang memungkinkan kita untuk mengupload code web app beserta konfigurasi environment. Elastic Beanstalk kemudian akan secara otomatis menyediakan resources yang diperlukan—seperti EC2, Elastic Load Balancing, automatic scaling, dan lain-lain—untuk menjalankan aplikasi tersebut.

Service ini memudahkan developer yang belum familiar dengan AWS untuk deploy, scale, dan memonitor web app. Elastic Beanstalk sangat fleksibel karena mendukung berbagai platform dan bahasa pemrograman seperti Ruby, PHP, Node.js, Python, .NET (Windows), Go, Java, Docker, dan lainnya.

Di AWS Elastic Beanstalk ada 2 environment tier:

Web server environment

Environment ini biasanya digunakan untuk aplikasi web pada umumnya yang berjalan di HTTP port 80. Tier ini menyediakan beberapa resources penting:

  • Amazon Route 53: URL yang dibuat Route 53 akan diasosiasikan dengan Elastic Load Balancer.
  • Elastic Load Balancer: Terintegrasi dengan auto-scaling group untuk menyesuaikan kapasitas aplikasi sesuai traffic.
  • EC2 Instances: Elastic Beanstalk minimal menyediakan satu instance untuk menjalankan aplikasi.

Worker environment

Environment ini cocok untuk aplikasi dengan backend processing task yang berinteraksi dengan AWS SQS. Di tier ini akan terpasang daemon pada setiap EC2 instance untuk menarik request dari SQS queue.

Deployment Options

Elastic Beanstalk menyediakan beberapa deployment option untuk memudahkan pengelolaan infrastruktur: All at once, Rolling, Rolling with additional batch, dan Immutable.

All at once

Ini adalah deployment option default. Opsi ini akan merilis aplikasi ke semua resources secara bersamaan sehingga berpotensi menimbulkan downtime bagi user.

Ada jawaban bagus dan mudah dimengerti di stackoverflow tentang opsi deployment EB, bisa dilihat disini https://stackoverflow.com/questions/38656595/difference-between-rolling-rolling-with-additional-batch-and-immutable-deployme.

All at once: Replace all v1 with v2 at the same time. Failure not handled.

Rolling

Rolling dapat meminimalkan disruption dibanding all at once. Elastic Beanstalk akan melakukan deployment dalam beberapa batch, mengupdate sebagian resources setiap kali sehingga kita mungkin memiliki dua versi aplikasi dalam waktu singkat. Aplikasi tetap bisa melayani request selama proses berlangsung.

Rolling: Replace v1 instances with v2 instances one at a time. Watch for failures.

Rolling with additional batch

Prinsipnya mirip rolling, tetapi opsi ini menambahkan batch ekstra sehingga kapasitas tersedia tetap stabil selama update berlangsung.

Rolling with batch: Create some new v2 instances. If successful, roll out on v1 instances. When all are v2 instances, scale back to original size.

Immutable

Opsi ini membuat instance baru sebanyak resource yang ada sehingga ukuran environment sementara menjadi dua kali lipat. Setelah instance baru lolos health check, environment lama akan dihapus untuk deployment yang aman dan tanpa downtime.

Immutable: Don’t change v1 instances. Create same number of v2 instances. Wait for success, then stop v1 instances.

Demonstrasi

Untuk pergi ke halaman AWS Elastic Beanstalk, kita bisa search Elastic Beanstalk di kolom pencarian di AWS Console lalu klik menu Elastic Beanstalk. Untuk deploy di Elastic Beanstalk, kita bisa mulai dengan klik button Create Application.

captionless image
captionless image

Kita bisa memberi nama aplikasi serta menambahkan tag, misalnya key “env” dengan value “test” untuk membantu pengelompokan resource.

captionless image
captionless image

Pilih platform aplikasi—contoh demo ini menggunakan PHP di Amazon Linux 2. Untuk application code, kita bisa upload dari lokal ataupun S3; pada demo ini digunakan sample application bawaan.

Kita bisa langsung buat aplikasi dengan default setting, tapi aku akan coba menjelaskan custom configuration. Klik configure more options untuk pergi ke menu configurations.

captionless image
captionless image

Di Presets tersedia opsi Low cost, High availability, dan Custom. Low cost akan menggunakan resource minimal, sementara High availability menerapkan deployment ke beberapa Availability Zone dengan auto-scaling dan load balancing aktif.

captionless image
captionless image

Kita juga bisa mengatur instance agar meng-upload rotated logs ke S3. Di bagian ini kita dapat mengaktifkan log rotation dan mengatur lama retensi log, misalnya hingga 10 tahun.

captionless image
captionless image

Untuk instances, t2.micro akan menjadi instance default kita, yang mana cukup oke. Kita juga bisa atur konfigurasi root volume instance ini.

Pada auto-scaling, tentukan jumlah minimum dan maksimum instance, pilih Availability Zone, serta atur trigger. Misalnya, set upper threshold CPU utilization 75% dan lower threshold 30%. Jika CPU melampaui 75% selama lima menit, auto-scaling akan otomatis menambah instance.

captionless image
captionless image
captionless image
captionless image

Lalu ada notifikasi, kita bisa input email kita untuk mendapatkan updates terkait event yang terjadi di environment kita. Kita bisa menggunakan SNS. SNS ini akan mengirim email ke kita tiap ada event penting.

Kita juga bisa menambahkan database ke EB kita dengan cara restore existing snapshot atau setup database baru.

captionless image
captionless image

Kalau kita klik save, Elastic Beanstalk akan membuat environment kita sesuai dengan konfigurasi kita. Ini akan memakan waktu selama beberapa menit untuk menyiapkan dan memproses semua resources yang dibutu

captionless image
captionless image

Berhasil! Kita telah berhasil deploy aplikasi php ke Elastic Beanstalk. Kita bisa langsung membuka web app tersebut dengan klik link yang tersedia di detail environments.

captionless image
captionless image

AWS EB juga menyediakan logs, kita bisa mendownload logs dari EC2 Instance di menu logs. Kita juga bisa melihat total requests, CPU Utilization di menu Monitoring, juga kita bisa melihat semua event yang terjadi di menu Events.

captionless image
captionless image
captionless image
captionless image
captionless image
captionless image
captionless image
captionless image

Semuanya sangat simpel dan memudahkan ya. Gimana? Tertarik untuk coba AWS Elastic Beanstalk untuk web app kamu yang selanjutnya?