Bagi yang baru mengenal tentang Amazon Web Services (AWS) biasanya akan kebingungan dengan jargon yang mereka gunakan pada produk dan jasa mereka, sampai anda membaca atau mendengar penjelasan yang lebih sederhana dari orang lain dan berujar "Oh … buat itu". Tulisan ini mencoba menjelaskan layanan yang terdapat di AWS menggunakan istilah umum yang biasa digunakan dalam teknologi informasi, berdasarkan pengetahuan yang saya dapat selama menggunakan layanan mereka dan sebagian lewat acara AWSome Day.
Bagi yang belum tahu, AWS adalah produk cloud computing yang disediakan oleh perusahaan Amazon. Cloud computing secara sederhananya adalah layanan komputer yang diatur baik melalui peramban maupun program (biasanya dalam bentuk program console) yang harus terhubung ke internet. Pengguna tidak perlu lagi memikirkan tentang perangkat keras, semuanya sudah diatur dan disiapkan oleh penyedia jasa tersebut, yang anda perlu ketahui hanya layanan yang disediakan oleh penyedia jasa, biasanya dalam bentuk paket atau jasa aplikasi yang dihitung per waktu atau jumlah pemakaian.
Layanan AWS secara lengkap dapat dilihat di halaman ini. Saya hanya akan menjelaskan bagian "Broad &Deep Core Cloud Infrastructure Services", yang bisa dilihat memiliki lima kelompok yaitu "Compute", "Storage &Content Delivery", "Database", "Networking", "Security &Identity".
Compute
Amazon EC2: Virtual Servers in the Cloud. Sebutan lainnya adalah "instance", nama kitanya "server". EC2 adalah singkatan dari Elastic Compute Cloud. Seperti keterangannya, EC2 adalah virtual server. Kalau anda ingin membangun server dari dasar, dengan sistem operasi pilihan, besar ruang harddisk, beserta aplikasi dan pengaturan yang anda inginkan sendiri, gunakan EC2. Ada banyak lagi istilah dalam layanan ini, seperti "Volumes", "Instances", "Security Groups", dll. yang perlu halaman tersendiri untuk menjelaskannya.
EC2 dihitung pemakaiannya per jam.
Amazon EC2 Container Service: Scalable Container Management Service. Disebut juga dengan ECS. Bagi yang mengenal aplikasi Docker, ECS dapat membantu mengatur dan menjalankan image dalam EC2 anda. Masalahnya anda harus tetap menggunakan EC2 karena image dan kapasitas RAM yang digunakan berdasarkan kapasitas dari EC2 tersebut.
ECS tidak kena cas, tapi tetap anda perlu EC2 untuk menjalankannya.
AWS Elastic Beanstalk: Run and Manage Web Apps. Beanstalk adalah layanan yang menggabungkan EC2, ECS, EBS, Load Balancing, Amazon RDS, dll. dalam satu layanan tergantung pilihan saat pengaturan pertama. Anda tinggal unggah aplikasi web anda (biasanya dalam bentuk zip dengan berkas metadata tambahan) dan Beanstalk akan mengatur dibelakangnya dan aplikasi web akan siap jalan. Tampaknya sangat mudah, tapi bila anda tidak mengetahui cara kerja dibelakangnya akan ada dua kemungkinan: pertama, karena semuanya sudah diatur oleh Beanstalk, pada saat ada kerusakan dan anda tidak bisa memperbaikinya, anda akan kebingungan sendiri; kedua, jika tidak hati-hati tagihan anda akan bengkak karena beberapa layanan dipakai sekaligus, misalnya anda hanya ingin aplikasi web static tapi dibelakangnya anda tidak tahu bahwa load balancing digunakan padahal EC2 yang digunakan hanya satu instan.
Beanstalk dihitung bergantung layanan yang anda gunakan, bisa EC2 saja, bisa EC2 dan ELB, dst.
AWS Lambda: Run Your Code in Response to Events. Saya belum pernah menggunakan layanan ini.
Auto Scaling: Automatic Elasticity. Layanan ini berfungsi membuat EC2 yang baru jika layanan EC2 anda pada suatu saat melebihi pemakaian, misalnya tingkat penggunaan CPU dan RAM yang tinggi. Anda bisa mengatur berapa persen ambang batas rendah/tingginya dan secara otomatis AWS akan menghapus/membuatkan instan yang baru buat anda. Sayangnya, instan yang baru ini kosong, seperti membuat EC2 yang baru.
Bagi yang awam, seperti saya, auto-scaling disini saya kira dari CPU yang dialokasikan 1 kemudian bertambah menjadi 2, 3, dst. atau dari RAM yang 1 GigaByte (GB) kemudian bertambah menjadi 2, 3, 4 GB, dst. Ternyata bukan begitu. AWS akan membuat instan berdasarkan image yang anda pilih sebelumnya. Tetap saja, jika anda ingin melakukan deployment anda harus menyalin aplikasi anda ke instan yang baru, kecuali aplikasi tersebut sudah tersimpan di-image yang dibuat. Tapikan aplikasi bisa berubah? Tidak mungkin membuat image baru terus menerus setiap ada deployment.
Elastic Load Balancing: High Scale Load Balancing. Disingkat ELB, adalah layanan yang mengatur lalu lintas trafik masuk dari internet ke server anda. Jika anda punya lebih dari satu servis (misalnya, web server) anda bisa menggunakan ELB untuk memastikan bahwa trafik terbagi dengan "rata" antara server anda, sehingga membagi beban antara server.
ELB menurut beberapa artikel menggunakan algoritma round-robin, baca dibagi dengan berputaran. Tidak ada pilihan untuk menggantinya dengan algoritma lain, jika misalnya diperlukan. ELB sudah mendukung penggunaan sertifikat (misalnya port 443 untuk web SSL).
ELB dihitung pemakaiannya per jam.
Storage and Content Delivery
Amazon S3: Scalable Storage in the Cloud. S3 ini adalah layanan untuk menyimpan berkas anda di cloud. Bagi yang tahu NFS atau FTP, prinsip S3 kasarnya hampir mirip seperti itu. S3 ada istilah bucket, bayangkan saja seperti direktori. Setiap akun memiliki batas jumlah bucket yang dimiliki (seingat saya ~20 bucket), tapi di dalam satu bucket ini anda bisa menyimpan berkas yang tidak terbatas.
Harga dihitung per-GB pemakaian.
Amazon EBS: EC2 Block Storage Volumes. EBS adalah harddisk (atau istilah Amazon, volumes). Satu EBS hanya bisa dipakai pada satu server.
Harga dihitung per-GB pemakaian.
Amazon Elastic File System: Fully Managed File System for EC2. Disingkat EFS. Layanan ini baru, saya belum pernah menggunakannya. Tapi dari beberapa bacaan, EFS ini mengatasi kelemahan dari EBS yaitu berbagi harddisk antara server. Hal ini bisa sangat membantu untuk pengembangan beberapa server produksi (yang saat ini belum bisa dilakukan di AWS), yang mana anda memiliki dua atau lebih server dan cukup satu EFS saja. Jadi pada saat deployment, anda hanya tinggal simpan aplikasi yang baru di satu tempat, tidak perlu mem-push ke beberapa server lagi karena sudah di-attach di setiap server.
Amazon Glacier: Low-cost Archive Storage in the cloud. Kalau ini layanan untuk menyimpan data yang sudah jarang sekali dipakai, harganya tentu lebih murah dari S3 atau EBS, tapi dengan waktu pengambilan yang lebih lambat. Misalnya, jika data sudah disimpan di sini, perlu waktu berpuluh menit untuk meminta dan mengambilnya lagi.
AWS Storage Gateway: Hybrid Storage Integration. Saya belum pernah menggunakannya, tapi secara sekilas seperti layanan backup untuk harddisk anda.
Amazon CloudFront: Global Content Delivery Network. Saya belum pernah menggunakannya, tapi dari sekilas layanan ini seperti web server, bisa statis bisa dinamis.
Database
Amazon RDS. RDS adalah singkatan dari Relational Database System. Anda tinggal pilih database yang mau anda jalankan, ada MySQL, Postgresql, dll. Layanan ini seperti EC2 tapi anda tidak perlu menginstal dari awal termasuk aplikasi database, semua sudah disiapkan.
Harganya untuk paket t2.micro lebih mahal 0.005 sen dari EC2 dan dihitung per jam.
Amazon DynamoDB. Layanan ini mencoba menjawab kebutuhan NoSQL anda tapi menggunakan produk Amazon.
Amazon ElastiCache. Bagi yang mengenal Redis atau Memcached, layanan ini menggunakan salah satu dari kedua aplikasi tersebut untuk menjawab kebutuhan penggunaan memory sebagai cache. Bagi yang tidak tahu, secara sederhananya prinsipnya seperti ini, pada saat anda melakukan query ke web server dan dari aplikasi web ke database, hasil tersebut disimpan ke dalam memory untuk digunakan lagi nantinya sampai batas waktu atau kapasitas tertentu, sehingga jika ada query yang sama maka akan lebih cepat dikembalikan karena tidak perlu lagi mengakses ke harddisk.
Amazon Redshift. Menurut dokumentasinya, ini adalah layanan untuk menjawab kebutuhan aplikasi yang membutuhkan operasi pada data yang besar.
Networking
Amazon VPC: Isolated Cloud Resources. Inilah inti dari AWS yaitu pengaturan jaringan. Banyak pengguna awal yang tidak sadar, seperti saya, bahwa semua layanan di atas pasti menggunakan layanan ini untuk menghubungkan satu layanan dengan yang lainnya, baik secara langsung maupun tidak langsung (dengan kata lain sudah diatur oleh Amazon di belakangnya). Jika anda salah pengaturan di sini, bisa mengakibatkan layanan anda harus diatur ulang, membuat VPC baru, atau layanan anda tidak bekerja sama sekali. Selain pengaturan jaringan antar produk AWS, layanan ini menyediakan VPN untuk menghubungkan jaringan luar langsung ke AWS dengan aman.
Harga hanya dihitung bila menggunakan VPN.
AWS Direct Connect: Dedicated Network Connection to AWS. Saya belum pernah menggunakannya, dari dokumennya dijelaskan bahwa jika anda punya bandwidth yang besar anda bisa menggunakan layanan ini untuk mengganti pemakaian bandwidth AWS. Jadi trafik server anda bukan langsung ke AWS tapi dari Internet ke jaringan anda baru ke AWS, sehingga AWS tidak perlu menagih trafik pemakaian lagi.
Amazon Route 53. DNS Server-nya AWS. Kalau mau membeli domain atau mengatur domain anda supaya merujuk pada layanan database di RDS, EC2 atau ELB, anda bisa menggunakan layanan ini.
Elastic Load Balancing: High Scale Load Balancing. Sudah dijelaskan di bagian "Compute".
Security and Identity
AWS Directory Service: Host and Manage Active Directory. Seperti keterangannya, Active Directory yang disimpan di AWS.
AWS Identity and Access Management: Manage User and Encryption Keys. Layanan ini berfungsi untuk mengatur hak akses kelompok, role, dan pengguna terhadap layanan AWS anda. Pada saat registrasi, akun yang anda miliki itu adalah akun utama atau disebutnya "root" oleh AWS. Sangat disarankan untuk membuat akun baru untuk memakai layanan AWS, karena ada informasi rahasia seperti kartu kredit anda, yang seharusnya tidak boleh dilihat oleh orang lain.
Yang membingungkan di layanan ini adalah pada saat butuh menambah policy, karena tidak semua policy ditampilkan. Misalnya, pada saat menggunakan ECS, anda harus membaca dokumentasinya secara teliti, karena disana ada pembuatan policy baru yang harus dibuat secara manual sebelum layanan ECS dapat berjalan.
AWS CloudHSM: Hardware-based Key Storage for Regulatory Compliance. Saya belum pernah menggunakannya.
AWS Key Management Service: Managed Creation and Control of Encryption Keys. Saya belum pernah menggunakannya.
Trusted Advisor: Optimize Performance and Security. Saya belum pernah menggunakannya.
Dibagian bawahnya, ada banyak lagi layanan yang diberikan oleh AWS yang belum pernah saya gunakan terutama di bagian "Accelerate your Cloud Success with Rich Platform Services", sehingga saya tidak bisa menjelaskan juga.
Intinya jika anda ingin menggunakan layanan AWS, pelajari satu per satu terlebih dahulu, baca dokumentasinya, jangan hanya klak-klik saja, karena semua itu berbayar. Memang untuk pengguna baru mendapat layanan gratis selama 12 bulan, sehingga bisa puas menggunakan dan mengeksplorasinya sampai anda ketergantungan dan pada bulan ke 13 anda baru mendapat tagihan yang lumayan buat membeli gorengan satu gerobak. Untuk membantu anda menghitung penggunaan layanan, AWS menyediakan aplikasi kalkulator sendiri.
Jika sempat saya akan mencoba membahas dasar penggunaan jaringan di AWS, seperti VPC, subnet, security group, dll. di artikel berikutnya.