BAB 2-3 IMPLEMENTASI Jurnal CLOUD COMPUTING MENGGUNAKAN AMAZON WEB SERVICES (AWS) DAN TEKNOLOGI GOOGLE APP ENGINE (GAE)

2 IMPLEMENTASI KOMPUTASI AWANMENGGUNAKAN TEKNOLOGI GOOGLE APP ENGINE (GAE)
Komputasi awan (cloud computing) menurut definisi Google adalah pusat data yang ada di luar komputer aplikasi klien. Tujuan utama dari Google berkontribusi dalam komputasi awan adalah untuk memanfaatkan sumberdaya komputer yang dimilikinya dalam jumlah yang sangat besar yang berjumlah jutaan komputer dan tersebar di seluruh dunia serta untuk mempercepat operasi-operasi yang dilakukan oleh aplikasi-aplikasi Web saat ini. Dalam hal ini, komputasi awan yang dikembangkan oleh Google pada dasarnya berada di seputar jaringan komputer raksasa yang bekerja untuk aplikasi-aplikasi utamanya seperti Google Search dan Google Mail (GMail).

Figure 1: Biaya Pemanfaatan Google App Engine

Saat ini pihak Google melakukan pemantauan terhadap seluruh jaringan komputer yang dimilikinya serta juga melakukan pemantauan terhadap aplikasi- aplikasi yang berjalan di atasnya. Dengan demikian, saat seorang pengguna memanfaatkan layanan komputasi awannya, Google dapat memantau lama waktu kerja CPU (Central Processing Unit) yang dilakukan untuk melakukan pemrosesan layanan itu, berapa kapasitas memori yang digunakannya, serta dapat menghitung kapasitas ruang penyimpanan (hardisk) yang digunakannya, sehingga kelak dapat menarik biaya sejumlah US$ tertentu pada penggunanya (perhatikan Gambar 1). Meski demikian, tidak sebarang aplikasi dapat berjalan di komputer-komputer milik Google yang membentuk jaringan komputasi awan itu. Agar dapat berjalan dengan baik, aplikasi-aplikasi harus dikembangkan menggunakan aturan-aturan yang ditetapkan oleh Google. Aplikasi-aplikasi seperti itu dinamakan sebagai Google App Engine (GAE), dimana saat ini aplikasi-aplikasi jenis ini bisa ditulis dengan cara yang relatif mudah oleh para pemrogram komputer yang memahami bahasa pemrograman Java dan Phyton. 

Figure 2: Arsitektur Aplikasi Google App Engine Secara Umum

Arsitektur sistem untuk Google App Engine (GAE) ini secara umum diperlihatkan dalam Gambar 1 di atas. Dalam hal ini, Apps Engine Request yang dimilikinya menentukan jumlah permintaan (request) yang bisa ditangani oleh aplikasi. Jika kita menggunakan fasilitas berbayar, aplikasi kita diijinkan untuk menerima 500 permintaan perdetik (!) (suatu jumlah yang pada umumnya sudah sangat memadai). Demikian juga dengan DataStore yang disediakan. Kita bisa menggunakan fasilitas tidak berbayar (yang dapat digunakan untuk melakukan penyimpanan data terbatas sebanyak 1 GB/hari) atau berbayar (data yang disimpan tidak dibatasi) (Dalam hal ini, meskipun pengguna sesungguhnya tidak perlu secara rinci mendalaminya, kita perlu tau bahwa Google App Engine menggunakan sistem basis data non-relasional BigTable untuk data yang diletakkan di dalam sistemnya). Selanjutnya, Apps Engine Request juga, dengan komponen URL Fetch Service-nya, dapat berkomunikasi dengan aplikasi-aplikasi lainnya atau mengakses sumberdaya lainnya yang ada di Web dengan menggunakan URL (Uniform Resource Locator) yang dimiliki aplikasi/sumberdaya itu. Suatu aplikasi dapat menggunakan layanan ini untuk mengirim/menerima permintaan HTTP (Hypertext Transport Protocol) dan HTTPS (Hypertext Transport Protocol Secure) (tentu saja jumlahnya sesuai dengan jumlah dana dalam US$ yang kita tanamkan).
Untuk mengembangkan aplikasi Google App Engine, pengembang yang memiliki preferensi yang tinggi terhadap bahasa pemrograman Java bisa menggunakan XMPP (Extensible Messaging and Presence Protocol) yang merupakan versi 1.2.5 dari Java SDK for App Engine. Layanan ini memungkinkan aplikasi Apps Engine berinteraksi dengan layanan-layanan XMPP lainnya seperti (menyebutkan suatu contoh) Google Talk. Mengembangkan aplikasi menggunakan Google App Engine for Java (GAE/J) mirip dengan pengembangan aplikasi Enterprise menggunakan Java, kecuali pengembang tidak perlu terlalu memikirkan tentang jaringan komputer yang digunakan, perangkat keras, sistem operasi, basis data, atau server aplikasinya. Menggunakan GAE/J, pemrogram aplikasi bisa langsung berinovasi dan mengembangkan aplikasi, tanpa harus melakukan hal-hal yang terlalu teknis seperti melakukan pengaturan- pengaturan sistem operasi dan melakukan konfigurasi-konfigurasi basis data. GAE/J menyediakan antarmuka-antarmuka (interface) yang serupa dengan JVM (Java Virtual Machine) versi 6 dan Java Servlet, dan juga mendukung teknologiteknologi Java yang umum seperti (hanya menyebutkan beberapa di antaranya) JDO (Java Database Object), JPA (Java Persistence API), JavaMail, dan sebagainya. Aplikasi-aplikasi GAE/J dapat dikembangkan menggunakan IDE Eclipse dan Google Plugin for Eclipse yang menyediakan bagi kita server pengembangan yang bersifat lokal, sehingga pengembang bisa mengembangkan aplikasi dari awal hingga akhir, sebelum mengunggahnya (upload) menjadi Java Google App Engine.

3 IMPLEMENTASI KOMPUTASI AWANMENGGUNAKAN TEKNOLOGI AMAZON WEB SERVICES (AWS) 
Amazon.com sebelumnya lebih terkenal dengan toko buku on-line-nya. Meski demikian, beberapa tahun yang lalu (sekitar tahun 2005), Amazon mengembangkan dirinya menjadi AWS (Amazon Web Service) yang menyediakan layanan komputasi awan, dimana setiap fungsi yang ada di dalamnya bisa diakses dengan panggilan Web Service. Protokol-protokol Web Service yang digunakan adalah SOAP dan REST. Layananlayanan di AWS dapat dimanfaatkan berdasarkan 1) Waktunya (waktu penggunaan CPU), 2) Volume (jumlah data yang ditransfer), 3) Perhitungan (jumlah antrian pesan [message]), serta 4) Waktu dan ruang (penggunaan ruang hardisk dalam periode waktu tertentu). Secara infrastruktur internal, AWS memiliki komponenkomponen sebagai berikut. 
• Amazon S3 (Simple Storage Service). Digunakan untuk menyimpan data untuk penggunaan pribadi maupun umum. Dalam hal ini, ada 3 lokasi yang memungkinkan pemanfaatannya, yaitu di Amerika Serikat (termasuk California Utara), Eropa, serta Asia.
• Amazon Cloud Front. Digunakan untuk mendukung Amazon S3 agar bisa bekerja dengan lebih baik dan lebih cepat. 
• Amazon SQS (Simple Queue Service). Digunakan untuk mendukung tercapainya pemrosesan AWS yang cepat dan tidak pernah mengalami kegagalan. 
• Amazon SimpleDB. Digunakan untuk menyimpan data yang bersifat semi- terstruktur. Basis data yang digunakan (SimpleDB) tidak bersifat relasional, melainkan menyimpan data dalam bentuk pasangan nama/nilai (name/value) yang mirip dengan struktur denormalisasi pada sistem basis data relasional, demi meningkatkan kinerja query. 
• Amazon RDS (Relational Database Service). Digunakan untuk mengelola data yang disimpan dalam sistem basis data MySQL.
• Amazon EC2 (Elastic Compute Cloud). Digunakan sebagai infrastruktur (kapasitas pemrosesan, memori, dan ruang hardisk) yang menyediakan layanan (service) yang dibutuhkan oleh para pengguna.

Figure 3: Jenis-jenis Instance Amazon EC2 Umum 

Konsep yang sangat penting dalam Amazon Web Service (AWS) adalah instance (Gambar 3). Menggunakan suatu teknik yang dinamakan sebagai virtualisasi, para pengguna bisa melakukan pengembangan aplikasinya di atas berbagai perangkat keras dengan cara yang serupa dengan saat pengembangan aplikasi dilakukan pada sebuah mesin tunggal. Perangkat lunak virtualisasi memastikan bahwa masing-masing instance secara logika dapat saling berbagi waktu kerja CPU (Central Processing Unit) dan berbagi ruang memori dengan cara yang benar tanpa saling berinterferensi satu dengan lainnya. Dapat kita lihat melalui Gambar 3, setiap instance dengan waktu kerja tertentu serta alokasi RAM (Random Access Memory) tertentu mensyaratkan investasi sejumlah US$ tertentu. Sebagai catatan tambahan, Tabel 1 di atas memperlihatkan investasi yang diperlukan untuk mengembangkan aplikasi komputasi awan di Amerika Serikat dengan platform sistem operasi Linux. Untuk sistem-sistem operasi lain serta untuk kawasan-kawasan lain, Amazon menyediakan perhitungan-perhitungan lain.
Pengembangan sistem dalam Amazon Web Service (AWS) tepatnya Amazon EC2 (Elastic Compute Cloud)- pada umumnya dilakukan berdasarkan metoda CBD (Component Based Development) dimana  komponen-komponen yang ada dapat saling berkomunikasi dan bertukar data menggunakan suatu komponen perangkat lunak AWS yang bernama Amazon Simple Queue Service (SQS). Selanjutnya, sistem yang besar, yang menggunakan ruang penyimpanan berukuran besar, dapat melandaskan dirinya pada fasilitas yang ada di dalam Amazon Simple Storage Service (S3). Dalam hal ini, berlainan dengan pendekatan yang dilakukan oleh Google dengan sistem basis data non-relasionalnya (BigTable), Amazon menggunakan berbagai sistem basis data yang bertindak sebagai layanan (service) bagi komponen-komponen yang membutuhkan data. Sistem basis data yang digunakan Amazon Web Service (AWS) berupa baik sistem data relasional (RDSRelational Database Server) maupun non-relasional (SimpleDB) yang dimotori oleh sistem basis data nonrelasional Dynamo. Dalam semua hal ini, untuk mengoptimalkan layanannya, Amazon Web Service (AWS) menggunakan perhitungan utilitas perangkat keras dan menyeimbangkannya menggunakan suatu fasilitas yang dinamakan sebagai ELB (Elastic Load Balancing). Untuk melakukan pengaturan komponen-komponen agar mengelompok berdasarkan apa yang dilakukannya serta berdasarkan utilitasnya, Amazon menggunakan apa yang dinamakan sebagai Amazon Autoscaling. Sementara untuk melakukan pemantauan terhadap CPUCPU, lalulintas jaringan, serta penggunaan hardisk yang melintas jaringan komputer server dalam sistem komputer awan (cloud computing) yang dimiliki Amazon digunakan suatu komponen perangkat lunak dalam sistem Amazon Web Services (AWS) yang dinamakan sebagai Amazon Cloud Watch. 

 Figure 4: Arsitektur Aplikasi Amazon EC2

Pengembangan sistem dalam Amazon Web Service (AWS) dilakukan pertama kali dengan membuat AWS Account yang meski untuk penggunaan awal gratis, tetapi menuntut penggunanya memiliki dukungan pembiayaan melalui kartu kredit tertentu (paling tidak memiliki akun kartu kredit tertentu). Kemudian, kita bisa melakukan pengelolaan dan pengaturan aplikasi yang dikembangkan menggunakan AWS Management Console. Selanjutnya, berkaitan dengan aplikasi yang kita kembangkan, kita perlu memilih arsitektur sistem yang akan digunakan, seperti yang terlihat dalam Gambar 4. Jika organisasi/perusahaan memilih Rail Server, Amazon akan menyediakan bagi organisasi/perusahaan framework Rail, server Web Apache, serta fasilitas Passenger yang bermanfaat untuk melakukan deployment aplikasi. Alternatif lainnya (perhatikan juga Gambar 4), kita bisa memilih arsitektur S3/CloudFront, dimana pengembang bisa mengembangkan aplikasi yang bersifat 3 tier (data tier, logic tier, dan presentation tier) secara lebih konsisten. Menggunakan alternatif yang terakhir ini, organisasi/perusahaan memiliki kebebasan yang lebih penuh untuk menentukan lokasi-lokasi dimana berkas-berkas (file) akan diletakkan, memiliki kebebasan penuh untuk melakukan konfigurasi-konfigurasi server aplikasi, dan sebagainya, yang pada gilirannya akan memberikan fleksibilitas penuh pada aplikasi yang dikembangkan (dengan konsekuensi tingkat kesulitan pengembangan sistem akan lebih tinggi). 


Komentar

Postingan populer dari blog ini

KARAPAN SAPI (MADURA)

SUKU JAWA

TEKNIK KOMPILASI 1 VCLASS 2