Deploy Aplikasi Web PHP di AWS Elastic Beanstalk

Ridwan Fajar
Serverless Indonesia
4 min readMay 8, 2020
Suasana berkabut di perkebunan warga di Kampung Pasangrahan, Desa Ciburial, Kecamatan Cimenyan, Kabupaten Bandung

Pendahuluan

Elastic Beanstalk merupakan salah satu layanan dari Amazon Web Service (AWS) berupa platform as a service (PaaS). Anda hanya memerlukan source code dari aplikasi web Anda, kemudian di-deploy ke Elastic Beanstalk melalui awscli atau AWS Console.

Dengan menggunakan Elastic Beanstalk, Anda tidak perlu mengelola infrastruktur secara langsung seperti mengelola server dan auto scaling. Selain itu dengan menggunakan Elastic Beanstalk, Anda dapat menghubungkannya dengan berbagai layanan AWS lainnya seperti SQS, SES, SNS, RDS, S3 dan lainnya.

Elastic Beanstalk sendiri memiliki perbedaan yang mencolok dengan AWS Lambda. AWS Lambda sendiri merupakan function as a service (Faas) dimana kode yang dapat di deploy dapat berupa function saja tanpa mekanisme HTTP routing. Selain itu Elastic Beanstalk akan tetap membuat server yang digunakanya (berupa instance EC2) tetap menyala selama 24 jam, namun AWS Lambda hanya akan menghitung biaya penggunaan selama terjadi eksekusi saja. Disanalah salah satu letak perbedaannya.

Masih banyak perbedaan lain yang dapat dibahas, namun lebih baik kita mencoba langsung bagaimana membuat Elastic Beanstalk sebagai host dari aplikasi web PHP.

A. Membuat Elastic Beanstalk untuk Aplikasi PHP

Untuk memulainya, kita akan masuk ke AWS Console. Kemudian cari menu untuk “Elastic Beanstalk”.

Cari tombol “Create Application” di halaman depan Elastic Beanstalk. Kemudian Anda akan dibawa menuju form untuk membuat Elastic Beanstalk.

Contoh halaman awal membuat Elastic Beanstalk

Kita asumsikan nama aplikasi web kita adalah backend-laravel .

Kemudian Anda dapat mengatur juga environment variables yang akan dimuat oleh Elastic Beanstalk saat aplikasi web berjalan. Misal saya ingin menandai aplikasi web ini dengan key environment yang memiliki value staging.

Selain itu, Anda dapat memilih platform yang diinginkan, misal PHP. Kemudian dengan image sistem operasi yang dapat diplih. Dan PHP yang digunakan adalah versi 7.4 sebagai runtime.

Di bagian “Application Code” pilih saja Sample Application karena kita tidak akan meng-upload kode aplikasi web saat ini juga. Namun Anda dapat memilih Upload your code bila memang ingin meng-upload kode aplikasinya bersamaan dengan pembuatan Elastic Beanstalk-nya sendiri.

Contoh halaman aplikasi Elastic Beanstalk yang sudah siap digunakan

Elastic Beanstalk pun berhasil dibuat dengan berisi Sample Application dan memiliki runtime. Anda dapat melihat — lihat berbagai tools yang ada di dalam aplikasi Elastic Beanstalk seperti instance monitoring, network monitoring, health check dan lainnya.

Sebuah Elastic Beanstalk dapat memiliki banyak environment. Jadi Anda dapat mengaturnya sesuai kebutuhan Anda.

Mari kita coba Elastic Beanstalk yang sudah berhasil kita buat.

B. Menguji Aplikasi PHP di Elastic Beanstalk

Bila pengaturan Elastic Beanstalk berhasil dilakukan, Anda dapat mengakses sample application melalui URL yang sudah disediakan oleh Elastic Beanstalk di halaman overview.

Kurang lebih tampilan sample application adalah seperti berikut ini:

Contoh tampilan Sample Application yang disediakan oleh Elastic Beanstalk

Sebagai contoh, saya memiliki aplikasi web berupa RESTful API yang dibangun dengan menggunakan Lumen (micro framework berbasis Laravel). Kemudian proyek aplikasi tersebut dibungkus dengan zip, kemudian di-upload ke Elastic Beanstalk melalui panel drag and drop. Dan aplikasi web tersebut dapat berjalan langsung dengan default domain dari Elastic Beanstalk.

Walaupun masih memerlukan beberapa konfigurasi tambahan seperti .htaccess untuk URL rewriting, aplikasi web yang di-deploy sebelumnya dapat segera diakses melalui web browser.

Contoh aplikasi web PHP dengan Lumen yang di deploy ke Elastic Beanstalk

Kesimpulan

Dengan menggunakan Elastic Beanstalk, kita dapat lebih mudah melakukan deployment aplikasi web PHP. Berbeda dengan deployment yang dilakukan diatas instance EC2 secara manual. Selain itu Elastic Beanstalk pun memiliki sejumlah tools seperti monitoring instance dan health check.

Terima kasih kepada Fajri Abdillah yang telah berkenan meminjamkan akun AWS-nya untuk keperluan artikel ini :D.

--

--