HO Application Deployment (ID) - addianto/flaskr-tdd GitHub Wiki
Hands-on: Application Deployment (ID)
Deploying a Web app on AWS Elastic Beanstalk.
Daftar Isi
- Tujuan Pembelajaran
- Pengantar
- Prasyarat
- Persiapan Awal Kode Sumber
- Drag-n-Drop Deployment di AWS Elastic Beanstalk
- Checklist Pencapaian Pembelajaran
- Lisensi
Tujuan Pembelajaran
Dengan mengikuti dan mengerjakan sesi hands-on ini, kamu diharapkan dapat:
- Mengetahui layanan AWS Elastic Beanstalk.
- Mengoperasikan antarmuka laman manajemen AWS Elastic Beanstalk.
- Menyiapkan environment aplikasi Web di AWS Elastic Beanstalk.
- Melakukan deploy aplikasi Web melalui AWS Elastic Beanstalk.
Pengantar
AWS Elastic Beanstalk adalah salah satu layanan model PaaS yang ditawarkan oleh Amazon untuk mempermudah proses deployment aplikasi dan layanan Web di infrastruktur cloud milik Amazon. Pengguna layanan cloud dapat menyajikan aplikasi dan layanan Web mereka tanpa harus menyiapkan infrastrukturnya (misal: VM, load balancer, database, CDN) terlebih dahulu. Penyedia layanan cloud telah menyediakan sebuah platform lengkap dengan kebutuhan-kebutuhan yang umum diperlukan sebuah aplikasi dan layanan Web. Dengan kemudahan tersebut, akan ada aturan atau konvensi yang perlu diikuti oleh pengguna supaya aplikasi dan layanan Web mereka dapat berjalan di platform penyedia layanan.
Contoh: Pada penyedia layanan PaaS Heroku, salah satu konvensi yang ditetapkan oleh penyedia layanan agar kode aplikasi Web dapat dibangun (build) dan berjalan di Heroku adalah ketersediaan berkas
Procfile
di root folder kode sumber yang diunggah.
AWS Elastic Beanstalk cukup fleksibel dalam menyediakan platform kepada pengguna. Pengguna tidak dibatasi oleh platform yang telah ditawarkan, namun juga diberikan kemampuan untuk mengubah konfigurasi hingga melakukan kustomisasi platform agar lebih sesuai dengan kebutuhan aplikasi dan layanan Web yang akan disajikan. Tidak hanya itu, AWS Elastic Beanstalk juga dapat diintegrasikan dengan layanan CI/CD yang ditawarkan Amazon seperti AWS CodeBuild dan CodePipeline.
Dalam sesi hands-on ini, kamu sebagai pengguna akan mencoba langsung bagaimana menggunakan AWS Elastic Beanstalk untuk deploy sebuah aplikasi Web sederhana dengan kode sumber terbuka bebas (open-source).
Prasyarat
Sebelum memulai hands-on ini, ada beberapa hal yang perlu kamu persiapkan terlebih dahulu:
- Punya akun GitHub dan tidak asing dengan penggunaan
git
.- Jika kamu masih asing dengan
git
, atau version control secara umum, pengajar sarankan kamu langsung mempraktikan beberapa perintah dasargit
. Laman Learn Git di situs Atlassian dapat menjadi acuan untuk bahan bacaan sekaligus latihan pengoperasiangit
.
- Jika kamu masih asing dengan
- Pasang Python minimal versi 3.6 dan pastikan kamu bisa memanggil perintah
python
danpip
dalam shell (Windows:cmd
; Unix-based:bash
) di sistem operasi yang kamu gunakan.
Jika sudah merasa siap, silakan lanjut ke bagian awal dari hands-on, yaitu menyiapkan kode sumber yang akan di-deploy.
Persiapan Awal Kode Sumber
Pada sesi hands-on ini, kamu akan melakukan deploy sebuah aplikasi Web
sederhana bernama Flaskr. Aplikasi ini merupakan sebuah contoh microblog
seperti Twitter. Fiturnya hanyalah membuat pesan singkat dan mempublikasikannya
secara daring (online). Kode sumber Flaskr dapat dilihat pada branch
fga-handson
di repositori GitHub addianto/flaskr-tdd.
Catatan: Contoh repositori di atas merupakan pengembangan lebih lanjut dari tutorial resmi penggunaan framework Flask. dengan penerapan TDD yang diambil dari repositori mjhea0/flaskr-tdd dan modifikasi kode sumber agar sesuai dengan konvensi platform di AWS Elastic Beanstalk.
Langkah-langkah latihan yang perlu kamu lakukan adalah sebagai berikut:
-
Buat salinan (fork) dari repositori addianto/flaskr-tdd ke akun GitHub milikmu. Kamu akan memiliki salinan kode sumber Flaskr tersimpan di repositori GitHub milikmu.
-
Lihat laman repositori kode sumber Flaskr yang telah disalin ke akun GitHub kamu, lalu tekan tombol Clone or download dan salin tautan URL clone yang muncul.
-
Buka shell lalu panggil perintah
git clone
untuk membuat salinan kode sumber Flaskr dari repositori GitHub milikmu ke suatu lokasi di komputer pribadi. -
Masuk ke dalam folder yang menyimpan hasil pemanggilan perintah
git clone
. Kemudian di dalam folder tersebut, atur supaya branch aktif di repositori lokal mengacu ke branchfga-handson
menggunakan perintahgit checkout
.Tips: Dua langkah terakhir dapat dilakukan hanya dengan satu kali pemanggilan perintah
git
, yaitu:git clone -b fga-handson URL_REPOSITORI
. Perintah tersebut akan membuat salinan repositori Git dariURL_REPOSITORI
, lalu otomatis membuat branch aktif di salinan lokal menunjuk ke branchfga-handson
.
Sekarang kamu sudah memiliki salinan kode sumber Flaskr. Langkah selanjutnya
adalah membuat application source bundle
yang akan diunggah ke AWS Elastic Beanstalk. Bundle adalah sebuah berkas
arsip yang mengandung kode sumber beserta konfigurasi aplikasi. Pembuatannya
cukup mudah, yaitu melalui pemanggilan perintah git archive
. Contoh:
$ git archive -v -o flaskr-tdd-source.zip --format=zip HEAD
Contoh pemanggilan di atas akan membuat sebuah berkas ZIP baru bernama flaskr-tdd-source.zip
yang mengandung berkas-berkas versi terkini dalam repositori Git lokal
yang sedang dibuka oleh shell. Jika sudah membuat bundle, kamu sudah siap
untuk mencoba deploy melalui AWS Elastic Beanstalk. Silakan lanjut ke
instruksi selanjutnya.
Drag-n-Drop Deployment di AWS Elastic Beanstalk
Drag-n-drop deployment adalah istilah yang penulis karang untuk menggambarkan secara singkat mekanisme deployment sederhana yang ditawarkan di AWS Elastic Beanstalk, yaitu dengan mengunggah bundle yang mengandung keseluruhan kode sumber aplikasi melalui browser.
-
Buka laman Elastic Beanstalk Management dan tekan tombol Create New Application yang terletak di pojok kanan atas laman.
-
Setelah tombol tersebut ditekan, akan muncul kotak popup yang mengandung form isian yang meminta keterangan nama aplikasi. Silakan diisi dengan nama aplikasi yang akan di-deploy.
Catatan: Contoh di atas memasukkan sebuah buah tag, yaitu
project
. Tag tersebut hanyalah label yang melambangkan aplikasi ini adalah bagian dari proses pembelajaran dalam program DTS-FGA Cloud Computing tahun 2019. -
Kamu akan melihat daftar Environments yang saat ini seharusnya masih kosong. Tekan tombol Actions untuk memunculkan kotak dropdown, lalu pilih Create environment.
-
Di laman pemilihan environment tier, pilih Web server environment, lalu tekan tombol Select.
-
Di laman pembuatan Web server environment, isi informasi yang dibutuhkan oleh Elastic Beanstalk. Sebagai contoh:
- Application Name: Flaskr
- Environment:
Flaskr-development
- Domain: biarkan kosong (Leave blank for autogenerated value)
- Description: silakan diisi dengan bebas
- Platform: Preconfigured Platform - Python
- Application Code: Upload your code
-
Pastikan opsi Upload your code telah dipilih, lalu tekan tombol Upload. Akan muncul form baru di panel samping. Isi form tersebut dengan isian berikut:
- Source code origin: Local file - pilih berkas ZIP berisi kode sumber aplikasi
- Version label: silakan diisi dengan bebas
Jika form telah dilengkapi, unggah arsip kode sumber lalu tekan tombol Create environment.
-
Harap menunggu beberapa saat hingga proses pembuatan environment selesai.
-
Apabila tampilan laman Dashboard telah menunjukkan status Health menjadi OK, catat tautan URL di atas laman (tepatnya setelah Environment ID) lalu coba tekan tautan tersebut membuka aplikasi yang telah di-deploy.
-
Apabila tidak terjadi masalah di sisi server, maka tampilan browser kamu seharusnya menyerupai cuplikan pada gambar di bawah. Jika serupa, maka selamat! Kamu telah berhasil melakukan deploy aplikasi Web sederhana menggunakan Elastic Beanstalk.
Checklist Pencapaian Pembelajaran
- Paham konsep deployment melalui PaaS.
- Mampu menggunakan antarmuka laman Elastic Beanstalk Management.
- Berhasil deploy contoh aplikasi Web ke AWS Elastic Beanstalk.
Lisensi
Materi hands-on ini disusun oleh Daya Adianto dalam rangka persiapan materi Cloud Computing program Digital Talent Scholarship Fresh Graduate Academy (DTS-FGA) Kementrian Komunikasi & Informatika (Kemenkominfo) Republik Indonesia tahun 2019. Dokumen hands-on dapat disebarluaskan di bawah lisensi Creative Commons Attribution 4.0 International (CC BY 4.0).