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?
- Apa itu spot-dev-machine?
- Keuntungan Cloud IDE dengan EC2 Spot dan AWS Cloud9
- Apa yang diperlukan?
- Memulai pembangunan Cloud IDE
- Mengakses EC2 Spot instance lewat SSH
- Home directory dan Amazon EFS
- Integrasi dengan AWS Cloud9
- Bagaimana selanjutnya?
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.
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.