HO Application Deployment (ID) - addianto/flaskr-tdd GitHub Wiki

Hands-on: Application Deployment (ID)

Deploying a Web app on AWS Elastic Beanstalk.

Daftar Isi

  1. Tujuan Pembelajaran
  2. Pengantar
  3. Prasyarat
  4. Persiapan Awal Kode Sumber
  5. Drag-n-Drop Deployment di AWS Elastic Beanstalk
  6. Checklist Pencapaian Pembelajaran
  7. 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 dasar git. Laman Learn Git di situs Atlassian dapat menjadi acuan untuk bahan bacaan sekaligus latihan pengoperasian git.
  • Pasang Python minimal versi 3.6 dan pastikan kamu bisa memanggil perintah python dan pip 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:

  1. Buat salinan (fork) dari repositori addianto/flaskr-tdd ke akun GitHub milikmu. Kamu akan memiliki salinan kode sumber Flaskr tersimpan di repositori GitHub milikmu.

  2. 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.

  3. Buka shell lalu panggil perintah git clone untuk membuat salinan kode sumber Flaskr dari repositori GitHub milikmu ke suatu lokasi di komputer pribadi.

  4. 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 branch fga-handson menggunakan perintah git 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 dari URL_REPOSITORI, lalu otomatis membuat branch aktif di salinan lokal menunjuk ke branch fga-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.

  1. Buka laman Elastic Beanstalk Management dan tekan tombol Create New Application yang terletak di pojok kanan atas laman.

    Cuplikan laman dapan Elastic Beanstalk Management

  2. 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.

    Cuplikan kotak popup ketika membuat aplikasi baru

    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.

  3. Kamu akan melihat daftar Environments yang saat ini seharusnya masih kosong. Tekan tombol Actions untuk memunculkan kotak dropdown, lalu pilih Create environment.

    Cuplikan laman daftar environments

  4. Di laman pemilihan environment tier, pilih Web server environment, lalu tekan tombol Select.

    Cuplikan laman pemilihan environment tier

  5. 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
  6. 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

    Cuplikan form penunggahan arsip kode sumber

    Jika form telah dilengkapi, unggah arsip kode sumber lalu tekan tombol Create environment.

  7. Harap menunggu beberapa saat hingga proses pembuatan environment selesai.

    Cuplikan proses pembuatan environment

  8. 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.

    Cuplikan tampilan dashboard

  9. 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.

    Cuplikan tampilan aplikasi Web setelah deploy

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).