Cloud IDE dengan Amazon EC2 Spot Instances dan AWS Cloud9

4 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Cloud IDE dengan EC2 Spot dan AWS Cloud9
Photo by Joan Gamell on Unsplash

TeknoCerdas.com – Salam cerdas untuk kita semua. Cloud IDE merupakan sebuah Integrated Development Environment (IDE) yang dijalankan di atas cloud. Developer hanya memerlukan internet dan browser untuk menjalankan cloud IDE. Pada artikel ini kita membangun Cloud IDE dengan Amazon EC2 Spot Instance dan AWS Cloud9. Dalam melakukan otomasi pembangunan cloud IDE tersebut kita akan memanfaatkan sebuah project bernama spot-dev-machine.

Dengan berjalan di atas cloud maka kita dapat berpindah spesifikasi mesin yang beragam mulai dari RAM 1GB hingga ribuan GB, mulai dari 1 vCPU hingga ratusan vCPU. Jika sedang tidak diperlukan kita bisa mematikan mesin tersebut untuk menghemat biaya.

Baca Juga
Perbandingan Harga Amazon EC2 Spot Instances dan Amazon Lightsail

Daftar isi

Apa itu EC2 Spot Intances dan AWS Cloud9?

Dari website resmi AWS, Amazon EC2 Spot Instances adalah kapasitas EC2 yang sedang tidak digunakan pada AWS. Amazon EC2 Spot Instances lebih murah sampai 90% dibanding On-Demand instances.

Kekurangan utama EC2 Spot Instances adalah instance tersebut bisa dimatikan oleh AWS sewaktu-sewaktu ketika kapasitas EC2 sedang dibutuhkan.

AWS Cloud9 adalah sebuah IDE berbasis cloud yang memungkinkan kita untuk menulis, menjalankan, dan melakukan debugging kode cukup melalui browser.

Nantinya kita akan menginstal komponen AWS Cloud9 pada EC2 Spot yang telah dibuat. Komunikasi antara AWS Cloud9 dan EC2 Spot melalui protokol SSH.

Apa itu spot-dev-machine?

spot-dev-machine adalah project untuk membantu otomasi pembuatan Amazon EC2 Spot Instances yang dapat digunakan untuk development machine. Project ini terdari dari Terraform HCL script untuk membuat AWS resources dan shell script untuk melakukan instalasi komponen dan konfigurasi.

Project ini open source dan dapat dilihat pada GitHub:
https://github.com/rioastamal/spot-dev-machine

Karena kekurangan utama EC2 Spot Instances adalah dapat diinterupsi sewaktu-waktu. Agar data development tersimpan secara permanen meskipun EC2 Spot dimatikan maka spot-dev-machine menggunakan Amazon EFS.

Project ini menggunakan Amazon Linux 2 dengan arsitektur x86_64 sebagai basis untuk development machine.

spot-dev-machine in action

Keuntungan Cloud IDE dengan EC2 Spot dan AWS Cloud9

Beberapa keuntungan yang didapat ketika menggunakan kombinasi antara EC2 Spot dan AWS Cloud9 sebagai Cloud IDE adalah:

Cukup dengan browser

Anda sudah bisa mulai melakukan coding hanya sebuah browser. Tidak perlu instalasi apa pun pada komputer. AWS Cloud9 menyediakan code editor yang dilengkapi dengan debugger yang memudahkan developer mengembangkan aplikasi.

Selain itu Cloud9 juga menyediakan shell akses lewat terminal emulator sehingga memudahkan untuk menjalankan perintah-perintah pengembangan. Seperit melakukan git push, instal software atau perintah lainnya.

Mobilitas

Anda dapat berpindah-pindah lokasi atau perangkat tanpa perlu memikirkan konfigurasi ulang lingkungan pengembangan anda.

Fleksibilitas mesin komputasi

Jika satu waktu membutuhkan komputasi yang besar hingga puluhan core vCPU dan ratusan GB RAM maka cukup ganti tipe EC2 instance dan mesin siap digunakan.

Jika sudah selesai cukup kembalikan ke kapasitas kecil misal t3.micro. Sangat fleksibel dan mudah.

Biaya yang rendah

Dengan memanfaatkan EC2 Spot Instances maka biaya komputasi menjadi rendah. Dikombinasikan dengan sedikit otomasi maka proses interupsi EC2 menjadi tidak masalah.

Jika memang sedang tidak digunakan maka kita bisa mematikan mesin tersebut.

Kemudahan kolaborasi

AWS Cloud9 memudahkan tim untuk melakukan kolaborasi ketika melakukan coding. Setiap anggota tim dapat melihat kode yang diketikkan yang lain secara realtime. Ini memudahkan kolaborasi dan pair programming.

Integrasi dengan layanan AWS

Karena menggunakan Amazon EC2 dan AWS Cloud9 maka integrasi dengan AWS lain akan mudah dilakukan. Contohnya AWS CLI yang sudah terotentikasi lewat EC2 instance role.

Apa yang diperlukan?

Sebelum dapat membuat lingkungan cloud IDE dengan EC2 Spot Instances dan AWS Cloud9 menggunakan spot-dev-machine, maka pastikan anda sudah memiliki:

  • akun AWS yang aktif
  • Terraform versi 1.x

Anda dapat menjalankan project spot-dev-machine pada komputer lokal atau dapat menggunakan AWS CloudShell yang dapat dijalankan dari AWS Management Console.

Memulai pembangunan Cloud IDE

Clone repository dari project spot-dev-instance dari GitHub atau download archive-nya.

$ git clone https://github.com/rioastamal/spot-dev-machine.git
$ cd spot-dev-machine

Pastikan credentials AWS untuk Terraform sudah siap sebelumnya.

Pada contoh ini kita akan membuat EC2 Spot instance di region Singapore (ap-southeast-1). Buat sebuah Terraform variable file terraform.tfvars untuk menimpa konfigurasi default yang akan digunakan.

$ vim terraform.tfvars
dev_machine_region = "ap-southeast-1"
dev_efs_az = "ap-southeast-1a"
dev_ssh_public_key = "YOUR_SSH_PUBLIC_KEY"
dev_my_ip = "YOUR_IP_ADDRESS/32"

Ganti YOUR_IP_ADDRESS dengan alamat IP komputer anda di internet. Ganti YOUR_SSH_PUBLIC_KEY dengan konten dari SSH public key milik anda biasanya ada didalam file ~/.ssh/id_rsa.pub.

Jika ingin menggunakan region dan AZ selain Singapore silahkan sesuaikan dengan preferensi anda.

Jika semua sudah siap, maka jalankan perintah ini untuk mendownload modul-modul yang diperlukan Terraform. Perintah ini cukup dijalankan satu kali saja.

$ terraform init

Untuk berikutnya gunakan apply untuk membut AWS resources yang diperlukan.

$ terraform apply

Review jika memang diperlukan. Jika sudah merasa ok, maka masukkan “yes” untuk memproses. Setelah proses selesai maka resources berikut akan dibuat:

  • Amazon EC2 Spot Instance (default ke t3.micro)
  • Amazon S3 bucket
  • Amazon EFS
  • AWS IAM roles
  • AWS System Manager (Parameter Store)
  • Elastic IP
  • Security Group

Silahkan gunakan perintah terraform output untuk melihat beberapa informasi tentang resources yang dibuat.

Mengakses EC2 Spot instance lewat SSH

Untuk mengakses development machine yang baru saja dibuat lakukan koneksi SSH ke Elastic IP dari instance tersebut.

$ ssh ec2-user@ELASTIC_IP_ADDRESS

Ada beberapa aplikasi yang diinstal secara default oleh user-data script setelah proses boot. Ini adalah daftar aplikasi tersebut:

Home directory dan Amazon EFS

Ketika proses cloud init terjadi maka user-data script akan diekekusi, home directory secara otomatis akan di-remount ke Amazon EFS. Terdapat dua EFS access point:

  • Access point /data (ec2-user) akan di-mount ke /home/ec2-user
  • Access point /docker (root) akan di-mount ke /dockerlib

Karena home directory di-mount ke EFS maka datanya tidak akan hilang ketika EC2 Spot instance diinterupsi.

Integrasi dengan AWS Cloud9

Sebelum memulai proses integrasi, pastikan pada EC2 Spot instance terdapat instalasi Node.js versi 12. Kita dapat menginstal dengan nvm.

$ nvm install 12

Kemudian jalankan installer AWS Cloud9 dari repository spot-dev-machine.

$ curl -s https://raw.githubusercontent.com/rioastamal/spot-dev-machine/master/scripts/install-cloud9.sh | bash

Setelah proses instalasi selesai, kita dapat masuk ke console AWS Cloud9 untuk membuat SSH environment baru. Ketika membuat SSH environment pada AWS Cloud9, isikan setting seperti dibawah ini.

  • User – SSH username, masukkan ec2-user
  • Host – Masukkan alamat Elastic IP dari EC2 Spot
  • Port – Biarkan port 22 sebagai default

Sekarang coba buka environment tersebut. Jika semua sudah benar maka AWS Cloud9 yang berjalan diatas EC2 Spot instance siap digunakan.

Bagaimana selanjutnya?

Untuk informasi yang lebih komprehensif tentang spot-dev-machine, termasuk FAQ-nya silahkan merujuk repository GitHub.

https://github.com/rioastamal/spot-dev-machine