Pages

Minggu, 29 Maret 2015

Cloud Computing



Cloud Computing adalah sebuah model komputasi / computing, dimana sumber daya seperti processor / computing power, storage, network, dan software menjadi abstrak dan diberikan sebagai layann di jaringan / internet menggunakan pola akses remote. Hal ini karena komputasi awan memlalui konsep virtualisasi, standarisasi dan fitur mendasar lainnya dapat mengurangi biaya Teknologi Informasi (TI), menyederhanakan pengelolaan layanan TI, dan mempercepat penghantaran layanan.
Model billing dari layanan in umumnya mirip dengan modem layanan publik. Ketersediaan on-demand sesuai kebutuhkan, mudah untuk di kontrol, dinamik dan skalabilitas yang hampir tanpa limit adalah beberapa atribut penting dari cloud computing.
Kehadiran komputasi awan awalnya memang hadir bagi kalangan industri. Beberapa alasan yang melatar belakangi penerapan teknologi ini, antara lain :
1.      Ini adalah sebuah mdel layanan berbasis internet untuk menampung sumberdaya sebuah perusahaan. Artinya sebuah perusahaan tak perlu lagi memiliki atau mendirikan infrastruktur lantaran sudah ada perusahaan lain yang menyediakan “penampung”di cloud alis internet.
2.      Sebuah perusahaan tak perlu lagi mengalokasikan anggaran untuk pembelian dan perawatan infrastruktur software.
3.      Perusahaan pun tak perlu memiliki pengetahuan serta merekrut tenaga pakar dan tenaga pengontrol infrastruktur di cloud yang mendukung mereka.
Karakteristik Komputasi Awan :
Berikut lima karakteristik, seperti yang didefinisikan oleh NIST, dianggap melekat dalam layanan komputasi awan :
1. On-Demand Self-Services
Sebuah layanan cloud computing harus dapat dimanfaatkan oleh pengguna melalui mekanisme swalayan dan langsung tersedia pada saat dibutuhkan.
2.      Broad Network Access
Sebuah layanan cloud computing harus dapat diakses dari mana saja, kapan saja, dengan alat apa pun, asalkan kita terhubung ke jaringan layanan. Contoh HP, Tablet.
3.      Resource Pooling
Sebuah layanan cloud computing harus tersedia secara terpusat dan dapat membagi sumber daya secara efisien.
4.      Rapid Elasticity
Sebuah layanan cloud computing harus dapat menaikkan (atau menurunkan) kapasitas sesuai kebutuhan.
5.       Measured Service
Sebuah layanan cloud computing harus disediakan secara terukur, karena akan digunakan dalam proses pembayaran.

Cloud computing mempunyai 3 tingkatan layanan yang diberikan kepada pengguna, yaitu:
1.      Infrastructure as service
Hal ini meliputi Grid untuk virtualized server, storage & network. Contohnya seperti Amazon Elastic Compute Cloud dan Simple Storage Service.
2.      Platform as a service
Hal ini memfokuskan pada aplikasi dimana dalam hal ini seorang developer tidak perlu memikirkan hardware dan tetap fokus pada pembuatan aplikasi tanpa harus mengkhawatirkan sistem operasi, infrastructure scaling, load balancing dan lain-lain. Contohnya yang sudah mengimplementasikan ini adalah Force.com dan Microsoft Azure investment.
3.      Software as a service
Hal ini memfokuskan pada aplikasi dengan Web-based interface yang diakses melalui Web Service dan Web 2.0. Contohnya adalah Google Apps dan SalesForce.com.

            Ada 3 komponen dasar komputasi awan dalam topologi yang sederhana menurut Velte(2010) yaitu :
1.      Client, yaitu terminal atau interface dimana para user duduk dan mengakses layanan yang disediakan provider. Terdiri atas tiga tipe, yaitu thin (client yang tidak memiliki hard drive internal), thick (komputer personal pada umumnya) dan mobile (seperti PDA, Smartphone dan lain sebagainya).
2.      Datacenter, yaitu server dimana aplikasi yang kita jalankan sebagai layanan berada.
3.      Distributed Server, yaitu server yang posisinya “berdekatan secara virtual” meskipun sebenarnya letaknya berjauhan. Biasanya digunakan karena kepraktisannya dan fleksibilitas. Berarti jika kita memerlukan server tambahan, kita tinggal memasukkannya ke sistem cloud kita saja (attach).

 
Mekanisme Akses Cloud Computing
Mekanisme akses ke cloud computing "mungkin" dapat dijalankan secara beraneka ragam,  mulai dari akses standar LAN maupun intranet dengan sedikit aplikasi agen atau klien,sampai kepada akses extranet dan internet melalui browser yang terhubung ke sebuah portal aplikasi dari penyedia layanan cloud computing. Protokol aplikasi yang digunakan pun dapat seragam, tetapi hal ini tidaklah terlalu signifikan bila dilihat dari sisi pengguna akhir, dimana pengguna akhir cukup mengetahui bagaimana cara mengakses dan mempergunakan jasa layanan yang terdapat pada Cloud computing.

Perangkat Lunak Cloud Computing
Belakangan ini dikembangkan sebuah bentuk nyata (atau setidaknya sebuah common platform/bentuk umum) dari konsep Cloud Computing agar dapat di-implementasikan secara umum dan lebih luas, seperti contoh berikut :
• Ubuntu Enterprise Cloud (UEC)
• Proxmox
• OpenStack
• OpenNebula
• Eucalyptus

Engine utama dalam cloud computing sebetulnya adalah aplikasi virtualisasi di sisi server, seperti,
• KVM
• QEMU
• Xen


Implementasi Komputasi Awan (Cloud Computing)
            Sudah banyak, komputasi awan yang sekarang sudah mulai banyak digunakan fasilitasnya oleh masyarakat. Disini akan dibahas tentang implementasi komputasi awan GAE dan AWS.
1.      Google App Engine (GAE)
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).
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.
Google memantau lama waktu kerja CPU (Central Processing Unit) yang dilakukan untuk melakukan pemrosesan layanan, berapa kapasitas memori yang digunakannya, serta dapat menghitung kapasitas ruang penyimpanan (hardisk) yang digunakannya, sehingga kelak dapat menarik biaya sejumlah US$ tertentu pada penggunanya. Berikut adalah Arsitektur Aplikasi Google App Engine Secara Umum .

Dalam hal ini, Apps Engine Request yang dimilikinya menentukan jumlah permintaan (request) yang bisa ditangani oleh aplikasi. Kita perlu tau bahwa Google App Engine menggunakan sistem basis data non-relasional BigTable untuk data yang diletakkan di dalam sistemnya yang disebut DataStore. 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.
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. Jika pengguna menginginkan ‘cara cepat’ untuk mengembangkan aplikasi-aplikasi Web untuk dijadikan aplikasi-aplikasi Google App Engine, pengguna juga bisa menggunakan kakas (tool) yang dinamakan sebagai GWT (Google Web Toolkit) atau menggunakan framework Spring. GWT memungkinkan pengguna untuk mengembangkan aplikasi-aplikasi Web yang responsif seperti layaknya aplikasi-aplikasi desktop namun sangat kaya fitur dimana hal ini dapat dicapai dengan cara mengadopsi konsep RIA (Rich Internet Applications).
Kelebihan :
1.      Aplikasi dapat dengan mudah dan cepat dikembangkan menggunakan bahasa pemrograman Java dan/atau Phyton dan tidak memerlukan usaha pemeliharaan yang ekstra sulit.
2.      Biaya penggunaan relatif murah (bahkan gratis untuk aplikasi-aplikasi kecil) dan, jika kuota lebih diinginkan, penambahan kuota dapat dilakukan dengan cara yang sangat masuk akal.

Kekurangan :
1.      Aplikasi-aplikasi tertentu, terutama yang memerlukan akses penuh ke sistem yang mendasari, relatif sukar untuk dikembangkan.
2.      Sistem yang terkendali penuh tidak memungkinkan pustaka-pustaka (library) dan framework-framework tertentu digunakan oleh aplikasi-aplikasi GAE.
3.      Tidak mendukung penggunaan sistem basis data relasional.



2.      Amazon Web Service (AWS)
Amazon.com sebelumnya lebih terkenal dengan toko buku on-line, 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.
Layanan-layanan di AWS dapat dimanfaatkan berdasarkan :
1.      Waktunya (waktu penggunaan CPU)
2.      Volume (jumlah data yang ditransfer)
3.      Perhitungan (jumlah antrian pesan [message])
4.      Waktu dan ruang (penggunaan ruang hardisk dalam periode waktu tertentu)

Komponen AWS :
-          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.
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.


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 (RDS-Relational Database Server) maupun non-relasional (SimpleDB) yang dimotori oleh sistem basis data non-relasional 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 CPU-CPU, 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.

Kelebihan :
1.      Aplikasi-aplikasi AWS yang ditulis menggunakan bahasa-bahasa pemrograman PHP, Ruby, serta Java, dapat dikembangkan dengan cara yang sangat fleksibel karena pengguna memiliki kendali penuh pada sistem yang mendasari.
2.       Struktur pembiayaan sederhana.
3.      Bisa menggunakan sistem basis data (relasional maupun non-relasional) apa saja yang dibutuhkan oleh pengguna.
4.      Jika pengguna mau, pengguna bisa saja menggunakan/menambahkan server-server yang berada di luar Amazon Web Service.

Kekurangan :
1.      Kurva belajar yang terjal (relatif sulit untuk mempelajari pengembangan aplikasi-aplikasi di atas Amazon Web Service dibandingkan di atas Google App Engine).
2.      Memerlukan waktu yang relatif lebih lama untuk mengembangkan aplikasi (bahkan untuk aplikasi-aplikasi yang relatif sederhana).