Minggu, 22 Februari 2015

Service Oriented Architecture (SOA)

Gambar 1. Komponen-komponen utama dari implementasi SOA

Apakah SOA itu?

          SOA atau Service Oriented Architecture adalah istilah di dunia TI yang banyak dibicarakan. Sesuai dengan namanya SOA adalah sebuah pendekatan dalam merancang (arsitek) suatu aplikasi dengan menggunakan kembali (reuse) komponen-komponen yang sudah ada sebelumnya. Dalam hal ini, komponen-komponen tersebut memberikan suatu jenis layanan bisnis (service) tertentu seperti antara lain: mengecek credit rating, mencari data customer, mengecek status inventori, melakukan transfer dana, dan lain sebagainya.
          Dengan kata lain, SOA adalah sebuah arsitektur kerangka kerja berbasis standar terbuka yang memungkinkan perusahaan-perusahaan untuk saling mengintegrasikan data yang sebelumnya hanya tersimpan rapat di markas para pelanggan, mitra, atau pemasok. Dengan kata lain, SOA merupakan arsitektur yang mendukung integrasi bisnis sebagai layanan yang terhubung dan menjadi jalan menuju inovasi. (SOA juga menjadi strategi bisnis berbasis teknologi dan hasil evolusi untuk mengintegrasi berbagai sumber informasi dari sumber kode atau platform yang berbeda-beda) Sebagai contohnya, Anda seorang eksekutif yang sedang bepergian ke luar negeri. Saat membongkar barang bawaan di kamar hotel, Anda baru sadar ternyata charger untuk laptop dan PDA Anda ketinggalan. Parahnya, wireless USB yang berfungsi untuk saling bertukar data antara handphone, PDA dan laptop Anda juga ikut tertinggal. Anda tidak perlu khawatir, karena melalui sebuah alat khusus yang disediakan hotel, semua gadget anda masih tetap bisa saling bertukar data. Anda juga bisa mengisi semua baterai gadget Anda tanpa dipusingkan oleh charger yang ketinggalan.Alat khusus tersebut bisa dibilang bekerja dengan menggunakan pendekatan Service Oriented Architecture (SOA). Pada kasus Anda, SOA bekerja untuk menghilangkan hambatan-hambatan interaksi antar gadget (HP, PDA, dan laptop) serta perbedaan konektor ke sumber daya utama. 
          Melihat deinisi SOA di atas,nampak sekali bahwa istilah SOA sangat kental terkait dengan sektor pengembangan aplikasi dari TI. Tidak bisa dipungkiri, perangkat lunak aplikasi adalah aset TI yang terpenting yang memungkinkan TI memberikan dukung-annya terhadap bisnis yang dijalankan perusahaan. 

Gambar 2. Layanan SOA

Karakteristik dari SOA

      Seperti yang didefinisikan diatas, SOA adalah suatu cara perancangan aplikasi dengan menggunakan komponen-komponen atau pelayanan yang sudah ada. Dengan kata lain, suatu aplikasi dibangun secara modular. Sebenarnya pendekatan modular ini bukanlah sesuatu yang baru. Teknik - teknik pemrograman masa kini seperti object oriented programming, telah mengedepankan pendekatan modular dalam pembangunan aplikasi. Namun yang membuat SOA berbeda adalah komponen atau service tersebut dibangun dan berinteraksi satu sama lain secara bebas dan lepas (loose coupled).
          Dengan bersifat loose coupled, sebuah service dapat di-panggil oleh program/service lainnya tanpa program pemanggil tersebut perlu memperhatikan di mana lokasi service yang dipanggil berada dan platform/teknologi apa yang digunakan oleh service tersebut. Loose coupling sangat penting bagi SOA karena dengan demikian pemanggilan sebuah service oleh service lainnya dapat dilakukan pada saat run-time.

Gambar 3. Contoh penggunaan SOA pada pelayanan bank.

       Misalnya sebuah aplikasi core banking menyediakan sebuah service Fund Transfer, maka aplikasi-aplikasi banking lainnya seperti treasury, payment gateway, ATM switching dan sebagainya dapat memanggil service Fund Transfer tersebut tanpa perlu memusingkan di mana Fund Transfer tersebut berada di dalam jaringan dan teknik pemanggilan yang harus digunakan.Hal ini kontras dengan pendekatan tight coupling di mana dalam hal ini setiap aplikasi perbankan di atas masing-masing harus mempunyai fungsi Fund Transfer di dalamnya sehingga akan menyulitkan dan membutuhkan biaya/resource besar jika perlu merubah logic dari Fund Transfer ke requirement bisnis yang baru di dalam setiap aplikasinya.
        Karakteristik lainnya adalah service dalam SOA disusun atas 2 hal: Service Interface dan Service Implementation. 

Gambar 4. SOA Web Services Inteface

        Service Interface menyatakan bagaimana service tersebut dapat dipanggil seperti parameter input/output dan lokasi ia berada. Misalkan, service interface untuk Customer Lookup menyatakan berbagai cara untuk mendapatkan informasi tentang seorang ustomer (dari id customer atau nama dan sebagainya) dan struktur data customer yang dikembalikan. Service Implementation adalah bagaimana logic dari service Customer Lookup tersebut dijalankan. 

Gambar 5. Service dan Implementation Interface
        Service implementation sangat terkait dengan teknologi pemrograman yang digunakan. SOA tidak perlu memperdulikan bagaimana sebuah service diimplementasikan, yang penting adalah bagaimana service tersebut dapat dipanggil dan memberikan informasi sesuai dengan Service Interface-nya.
        Karakteristik SOA yang terakhir adalah service tersebut harus business oriented. Dalam arti, setiap service yang didiinisikan harus melakukan suatu aktiitas bisnis tertentu, misalkan Customer Lookup, Fund Transfer, Check Inventory, dan sebagainya. Tidak dapat dipungkiri pula bahwa keberhasilan SOA belakangan ini ikut dimotori oleh tingginya penerimaan teknologi web services di kalangan pengembang aplikasi. Walaupun ide tentang SOA telah ada sebelum web services dilahirkan, web services dan SOA saat ini telah menjadi suatu si-nergi dan bahkan beberapa kalangan menganggap dengan menggunakan web services maka ia telah menerapkan SOA.

KETERANGAN DAN GAMBAR SOA

         Service Oriented Architecture (SOA) adalah sebuah permodelan perangkat lunak yang dibangun dengan pendekatan service oriented. Service oriented sendiri merupakan sebuah pendekatan yang memiliki visi ideal di mana setiap resource dari perangkat lunak terpartisi secara bersih satu sama lain [1]. Setiap resource ini disebut dengan service. Service ini merepresentasikan sebuah business logic atau automation logic dalam sebuah sistem besar. Setiap service memiliki otonomi sendiri yang membuatnya tidak tergantung satu sama lain. Setiap service dapat berkomunikasi satu sama lain melalui sebuah protokol yang sudah terstandardisasi sehingga memudahkan untuk melakukan integrasi service baru dan penyusunan ulang kumpulan service disebabkan proses bisnis yang berubah.
Gambar 6. Enkapsulasi Logic

Saat ini, SOA merupakan sebuah solusi yang baik untuk permodelan sistem di perusahaan atau organisasi besar. Sebab, permodelan ini memiliki banyak kelebihan, diantaranya:
  1. Dapat menyatukan berbagai sistem yang memiliki platform berbeda, seperti J2EE dan .NET. sebab dengan pendekatan ini, yang pengembang akan memilih untuk membangun sebuah layer di atas sistem dan sistem tersebut yang dapat saling berkomunikasi dengan pesan yang sudah distandardisasi, misalnya menggunakan teknologi XML. Dalam sudut pandang SOA, kedua sistem itu masing-masingnya akan dianggap sebagai service.
  2. Tahan terhadap perubahan. Perusahaan atau organisasi besar seringkali berubah struktur untuk meningkatkan efisiensi dan kinerja. Akibatnya, perangkat lunak juga terkena imbas untuk menyesuaikan diri terhadap proses bisnis yang baru. Permodelan perangkat lunak dengan SOA akan mengurangi effort untuk modifikasi perangkat lunak tersebut. Sebab, karena seluruh logic dari sistem sudah terpartisi secara bersih menjadi sekumpulan services, kita hanya perlu menyusun ulang seluruh service tersebut dan jika perlu menambahkan yang baru. Hal ini jelas mengurangi biaya.
          Web Services seringkali dikaitkan atau bahkan disamakan dengan SOA. Namun sebenarnya keduanya adalah hal yang sangat berbeda. SOA adalah sebuah konsep untuk pengembangan perangkat lunak, sementara Web Services adalah sebuah aplikasi web yang berinteraksi dengan aplikasi web lainnya untuk pertukaran data. Pembangunan SOA tidak harus menggunakan Web Services, sebab ada bermacam-macam teknologi lain yang memungkinkan, tapi menggunakan Web Services untuk membangun sebuah sistem SOA adalah langkah yang baik.
        Web Services adalah sebuah teknik pemrograman di mana sebuah service menggunakan standar-standar berbasis XML dalam menjelaskan interface dan protocol yang harus digunakan untuk memanggil service tersebut. Standar-standar tersebut adalah:
  • SOAP (Simple Object Access Protocol): Menjelaskan protokol tentang bagaimana sebuah web service dapat dipanggil.
  • WSDL (Web Services Deinition Language): Sebuah format XML yang menjelaskan interface dari sebuah web service (parameter input dan output).
  • UDDI (Universal Description, Discovery and Integration): Sebuah direktori yang berisi daftar web service yang dapat ditemukan dan dipanggil oleh aplikasi lainnya.Dengan standar di atas, web services sangat mendukung implementasi SOA dimana karakteristik SOA seperti loose coupling dan service interface disediakan oleh teknologi web services. Pertanyaannya adalah, apakah dengan menggunakan teknik web services, SOA sudah akan terwujud?

BAGAIMANA CARA KERJA SOA?

Gambar 7. Cara Kerja SOA
          Inovasi membutuhkan perubahan dan SOA memudahkannya. SOA bekerja seperti charger untuk semua fungsi, atau dengan kata lain SOA membangun interface yang bisa diakses oleh berbagai macam software. Selama ini, sebuah software dibangun dengan cara mengikat data dan alat pemrosesnya dalam satu rangkaian. Tentu saja, semakin banyak software yang dibutuhkan akan membuat perusahaan mengeluarkan uang dan tenaga lebih banyak lagi. Demikian pula dengan semakin banyaknya lalulintas data antar software tersebut yang secara otomatis akan meningkatkan ongkos perusahaan. Teknologi SOA bertugas untuk meringankan masalah tersebut dengan cara mengurangi hambatan integralisasi. 
         Melihat karakternya, SOA saat ini banyak diminati perusahaan-perusahaan keuangan dan perbankan. Namun, industri asuransi dan telekomunikasi juga banyak yang mengadopsi teknologi SOA. Hal ini disebabkan fleksibilitas dan arsitektur yang ditawarkan SOA cukup handal untuk mengurangi berbagai hambatan interaksi antar software dan memotong rangkaian proses dalam sebuah jaringan yang kadang cukup berbelit.
              Untuk menggambarkan bagaimana SOA bekerja dalam sebuah perusahaan atau institusi bisnis, dapat mengambil contoh transaksi pembelian barang melalui internet yang dilakukan seorang netter atau pelanggan. Dalam sistem TI pengecer yang menggunakan sebuah SOA, pembelian barang secara online itu memicu serangkaian transaksi lainnya. Misalnya, kartu kredit pelanggan diverifikasi, bagian pengiriman barang diberi tahu, gudang diminta untuk menyesuaikan persediaan barang, dan catatan-catatan pembukuan diperbaharui. Transaksi-transaksi tersebut berupa input informasi yang dikirim melalui sistem atau software-software yang berlainan, yang kadang tidak sesuai dan tidak bisa berhubungan satu sama lain. Namun, teknologi SOA telah memungkinkan infrastruktur yang mendukung transaksi tersebut untuk dibaurkan dan dikombinasikan secara integral.
               Di atas kertas, semuanya memang terlihat semudah membalik telapak tangan. Faktanya, membangun sebuah SOA memiliki berbagai tantangan yang tidak mudah. Salah satu tantangan terbesar yang dihadapi pelanggan adalah menentukan dari mana harus memulai SOA. Banyak departemen TI yang menerapkan layanan Web dalam sebuah SOA, mereka memulai dari yang paling mudah lalu meningkat ke bagian yang lebih sulit dan kompleks. Yang perlu diingat, membangun sebuah SOA yang baik haruslah menyelaraskan tujuan utama bisnis perusahaan dengan teknologi yang tepat sasaran. Jaringan yang baik dan terpadu merupakan salah satu kunci keberhasilan penerapan SOA. Tentu saja dengan biaya yang sesuai dengan kebutuhan.
            Service-oriented Architecture (SOA) membantu perusahaan mengakomodasi perubahan secara lebih baik dengan menyediakan fleksibelitas untuk pemanfaatan sumber TI yang lebih baik pula. Lebih khusus, perencanaan ini menawarkan pendekatan arsitektural dalam lingkungan komputasi terencana dan teratur yang dibangun pada layanan yang secara bebas berangkaian, dapat digunakan kembali, dan berbasis standar serta dapat berubah sesuai dengan bergesernya kebutuhan bisnis. Inilah kebutuhan dan proses bisnis yang fokusnya membantu enterprise untuk bisa sukses dan bersaing dengan makin meningkatnya standar TI, berarti: fleksibelitas bisnis tergantung fleksibelitas TI.

SOA dan Integrasi

             Peranan SOA dalam integrasi proses bisnis,bisa dalam internal perusahaan maupun antar perusahaan. Dalam internal perusahaan,penerapan SOA memungkinan unit-unit bisnis bekerja secara sinergi, dari pabrikasi hingga distribusi dapat lebih sinkron. Kerjasama antar perusahaan bukan hal yang mustahil lagi pada masa ini. Sebuah perusahaan yang membuka layanan pembelian online harus dapat mengirimkan produknya kepada customer. 
             Untuk itu, ia harus bekerja sama dengan agen pengiriman, yang akhirnya akan bekerja sama lagi dengan jasa penerbangan kargo. Bayangkan, jika masing-masing perusahaan itu menggunakan aplikasi yang tidak bisa saling berkomunikasi sehingga cara yang mungkin dilakukan hanyalah cara manual yang sudah pasti akan memakan waktu lama. Jika semua aplikasi yang dipakai sudah menerapkan SOA, masing-masing dapat saling berkomunikasi sehingga diperoleh hasil/respon realtime.
               Bayangkan juga sebuah agen perjalanan yang menyediakan jasa wisata liburan. Perusahaan ini harus bekerjasama dengan hotel dan jasa angkutan yang ada di lokasi wisata. Solusi yang umum dilakukan adalah membuat sistem integrasi untuk aplikasi yang ada. Itu berarti untuk setiap pembukaan lokasi wisata baru atau penambahan hotel baru, sistemnya harus di-setup agar dapat menyesuaikan. Proses setup ini jelas memakan waktu dan biaya yang tidak sedikit jika tidak menggunakan prinsip SOA. 

Gambar 8. SOA dan Akses Multi-channel

Aplikasi SOA

          Sedangkan dalam dunia digital, SOA menjadi sangat menarik, apalagi dengan tekanan regional untuk membuat sebuah sistem yang transparan, cepat dan anti birokrasi, yang di Indonesia sering disebut sebagai Single Window.
         Dalam SOA dunia digital yang akan disebut SOA saja setelah ini, yang lebih khususnya dalam dunia perinternetan yang sangat berhubungan dengan Web, populer setelah berkembangkan sebuah mekanisme request-response yang memungkinkan pesan (message) terkirim dari satu titik ke titik lainnya.
          Interaksi sebuah sistem dengan sistem lain, atau mewrap sebuah aplikasi dari aplikasi tradisional menjadi aplikasi berbasis SOAP, secara tidak langsung telah merubah sebuah sistem tersebut menjadi sebuah aplikasi yang SOA Ready. SOAP adalah sebuah mekanisme implementasi XML yang terstandarisasi.
          Teknologi ini sering disebut sebagai Web Services, sebuah mekanisme melayani permintaan (messaging) yang mengacu pada protokol Web yang sering disebut HTTP. Tetapi tentu saja SOA itu bukan hanya Web Services saja. Ingat SOA itu lebih luas, dan lebih luas dari yang dapat kita bayangkan.
          Perkembangan Web Services sebagai media terbuka untuk interaksi, yang berbasis pada HTTP yang juga merupakan standar terbuka, membuat Web Services dengan SOAP sebagai icon teknologinya, telah membuat Web Services menjadi teknologi primadona dalam dunia SOA ini. Apalagi perbedaan namanya sangat jelas, SOA dan SOAP. 
           SOAP Sebenarnya merupakan sebuah perwakilan dari sebuah envelope yang gunanya mirip dengan mekanisme melakukan surat menyurat. SOAP umumnya diciptakan lebih khusus, untuk surat menyurat resmi, seperti mengirim form purchase order, form pengajuan kredit, form meminjam buku. Sedangkan yang kurang formal dapat menggunakan XML saja. 
            Dalam implementasinya SOAP yang flat ternyata memiliki kekurangan yang sangat banyak, apalagi SOAP ini seperti kakeknya HTML, berbentuk flat file, sehingga diasumsikan tidak aman, untuk itulah maka hadir beberapa implementasi SOAP yang tentu saja membuat SOA menjadi lebih secure dan siap digunakan. 
             Standar berbasis Web Services yang lebih sering disebut dengan WS-Security adalah sebuah standar yang dikembangkan oleh OASIS yang juga mengembangkan teknologi ODF (Open Document Format). WS-Security ini memungkinkan melakukan implementasi Web Services yang terembed didalamnya security.
              Sebenarnya ada standar lainnya yang dapat digunakan untuk membuat sebuah implementasi SOA menjadi lebih aman, diantaranya SAML untuk identity management (di Indonesia populer disebut Single Identity Number), XACML, XKMS, XML-Sig, WS-Federation, WS-I Basic Profile. Sebenarnya kita juga dapat membuat implementasi sendiri, tetapi umumnya entitas pengeluar standar di dunia Web Services adalah bersifat internasional.

Gambar 9. SOA meta-model

“A paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains. It provides a uniform means to offer, discover, interact with and use capabilities to produce desired effects consistent with measurable preconditions and expectations.”
     Arsitektur yang digunakan tidak tertumpu pada suatu teknologi tertentu. SOA dapat diimplementasikan menggunakan teknologi yang ada. Termasuk REST, RCP, DCOM, CORBA atau Web Services. SOA dapat diimplementasikan menggunakan protokol - protokol tersebut. Sebagai contoh dapat digunakan mekanisme sistem file untuk penyesuaian cara berkomunikasi antar data untuk menentukan spesifikasi interface antara penyesuaian proses terhadap konsep SOA. Kunci pokok dari SOA adalah service yang mandiri dengan interface yang terdefinisi dengan baik yang dapat dipanggil untuk melakukan tugas dan fungsinya berdasarkan standar-standar tertentu, service tersebut tidak memerlukan pengetahuan masa lalu dari aplikasi yang dipanggil, dan aplikasi tidak memerlukan pengetahuan bagaimana service melakukan tugas-tugasnya.
            SOA dapat dipandang sebagai sebuah gaya arsitektur sistem informasi yang memungkinkan pembuatan aplikasi yang dibuat dengan mengkombinasikan service yang bebas dan penggabungan service. Operasi antar layanan yang ada berbasis pada definisi yang jelas (seperti kontrak atau WSDL) yang mandiri dari platform dan bahasa pemprograman yang mendasarinya.
       Definisi interface akan menyembunyikan implementasi dari suatu bahasa pemprograman layanan. Sistem berbasis SOA dapat dikembangkan dari berbagai platform dan teknologi (seperti java dan dot net). Sebagai contoh, Service yang ditulis dengan bahasa C# berjalan di platform Dot Net dan layanan yang ditukis dengan java berjalan di platform java EE. Keduanya dapat digunakan dengan sebuah aplikasi gabungan umum. Aplikasi-aplikasi tersebut berjalan pada masing-masing platform dan tetap dapat menggunakan layanan yang berjalan pada aplikasi lainnya sebagai web service, hal ini memudahkan penggunaan kembali layanan tersebut.
            SOA dapat mendukung aktivitas integrasi dan konsolidasi dalam sistem yang kompleks, tetapi SOA tidak diperuntukkan atau menyediakan sebuah metodologi atau kerangka kerja bagi proses pendokumentasian kemampuan atau layanan.

Gambar 10. Service-Oriented Modeling Framework (SOMF) Version 2.0

         SOM Framework (SOMF) adalah pengembangan metodologi siklus hidup berorientasi layanan, proses pemodelan disiplin khusus . Ini menawarkan sejumlah praktek pemodelan dan disiplin yang berkontribusi terhadap berorientasi layanan siklus hidup pengembangan sukses dan modeling selama proyek.
      Service Oriented Modelling Framework (SOMF) memperkenalkan lima kegiatan pemodelan siklus hidup utama yang mendorong evolusi layanan selama desain - time dan run - time. Pada tahap desain - waktu layanan berasal sebagai entitas konseptual (layanan konseptual), kemudian berubah menjadi unit analisis (layanan analisis ), berikutnya transisi menjadi sebuah entitas kontrak dan logis (layanan desain) , dan akhirnya didirikan sebagai layanan solusi).
  • Model Penemuan : Model ini harus digunakan ketika memastikan entitas perangkat lunak baru untuk memberikan solusi 
  • Model Analisis : Model analisis dirancang untuk memeriksa kelayakan komponen software untuk menawarkan solusi, membantu menganalisis bisnis dan persyaratan teknis , dan membantu mengukur keberhasilan pelaksanaan 
  • Model Desain : Memfasilitasi desain logis entitas perangkat lunak, dan memberikan kontribusi untuk hubungan komponen , komposisi penyebaran, dan pembentukan transaksi
  • Model arsitektur Teknis : Model ini melibatkan tiga perspektif utama arsitektur : arsitektur konseptual , arsitektur logis , dan arsitektur fisik
  • Model Konstruksi : Membantu dengan praktek modeling selama kode sumber tahap implementasi
  • Model Jaminan Kualitas : menyatakan komponen perangkat lunak untuk produksi dan menjamin stabilitas dan kontinuitas usaha teknis
  • Operasi Model : Memungkinkan lingkungan produksi yang stabil dan menjamin penyebaran yang tepat dan konfigurasi entitas software
  • Model arsitektur Bisnis : Model ini mendorong integrasi yang tepat dari kontekstual dan struktural formasi bisnis dengan entitas software 
  • Model Governance : Penawaran praktik terbaik , standar, dan kebijakan untuk semua model implementasi SOMF
Sumber: 
http://download.portalgaruda.org/article.php?article=15698&val=1028
http://en.wikipedia.org/wiki/Service-oriented_architecture
https://www.academia.edu/7478618/Service_Oriented_Modeling_and_Architecture_Bagus_Banget_

Minggu, 08 Februari 2015

Transfer Control Protocol (TCP) Socket Programming

        TCP menyediakan layanan transfer yang dapat diandalkan dengan mengirimkan paket datagrams per kelompok antar server dan client dengan pemeriksaan. 

Keuntungan TCP:

- Mampu menangani paket yang hilang
- Mampu menangani kedatangan paket ganda.
- Dapat mengatasi penerimaan paket secara beriringan.
- Menyediakan alur penerimaan paket.
- Data yang diterima dapat diepercaya dan diandalkan.

Kelemahan TCP :

- Waktu lebih lama.
- Paket yang dikirim besar.

Fungsi socket protocol TCP


  1. socket(AF_INET, SOCK_STREAM, 0), berfungsi untuk membuat socket dan parameter family yang digunakan adalah AF_INET yaitu internet protocol dan socket yang digunakan adalah SOCK_STREAM yang berfungsi untuk membuka socket pada TCP.
  2. htonl(), meng-convert unsigned integer ke network byte order.
  3. inet_ntoa(), ntoa singkatan 'network to ascii', nilai return-nya berupa string dari alamat yang dilewatkan.
  4. inet_addr(), meng-convert string menjadi network byte order.
  5. bind(), digunakan pada pihak server, untuk membuka 'port' komunikasi.
  6. write(), send(), bertugas mengirimkan data.
  7. read(), recv(), bertugas menerima data.
  8. connect(), digunakan pada pihak client, untuk mengadakan koneksi ke server.
  9. listen(), menunggu koneksi socket.
  10. accept(), menerima koneksi socket.
  11. close() dan shutdown(), digunakan untuk menutup atau mengakhiri koneksi.

Diagram Alur Socket Programming dengan UDP


Diagram alur socket programming

Program TCP Socket dengan Bahasa C

Server.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

void error(const char *msg)
{
perror(msg);
exit(1);
}

int main(int argc, char *argv[])
{
int sockfd, newsockfd, portno;
socklen_t clilen;
char buffer[256];
struct sockaddr_in serv_addr, cli_addr;
int n;
if (argc < 2) {
fprintf(stderr,"ERROR, no port provided\n");
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]); /* ambil syntax ke 2 dari perintah */
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);
if (bind(sockfd, (struct sockaddr *) &serv_addr,
sizeof(serv_addr)) < 0)
error("ERROR on binding");
listen(sockfd,5);
clilen = sizeof(cli_addr);
newsockfd = accept(sockfd,
(struct sockaddr *) &cli_addr,
&clilen);
if (newsockfd < 0)
error("ERROR on accept");
bzero(buffer,256);
n = read(newsockfd,buffer,255);
if (n < 0) error("ERROR reading from socket");
printf("Here is the message: %s\n",buffer);
n = write(newsockfd,"I got your message",18);
if (n < 0) error("ERROR writing to socket");
close(newsockfd);
close(sockfd);
return 0;
}

Client.c 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
void error(const char *msg)
{
    perror(msg);
    exit(0);
}
int main(int argc, char *argv[])
{
    int sockfd, portno, n;
    struct sockaddr_in serv_addr;
    struct hostent *server;
    char buffer[256];
    if (argc < 3) {
       fprintf(stderr,"usage %s hostname port\n", argv[0]);
       exit(0);
    }
    portno = atoi(argv[2]);
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
        error("ERROR opening socket");
    server = gethostbyname(argv[1]);
    if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit(0);
    }
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr,
         (char *)&serv_addr.sin_addr.s_addr,
         server->h_length);
    serv_addr.sin_port = htons(portno);
    if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
        error("ERROR connecting");
    printf("Please enter the message: ");
    bzero(buffer,256);
    fgets(buffer,255,stdin);
    n = write(sockfd,buffer,strlen(buffer));
    if (n < 0)
         error("ERROR writing to socket");
    bzero(buffer,256);
    n = read(sockfd,buffer,255);
    if (n < 0)
         error("ERROR reading from socket");
    printf("%s\n",buffer);
    close(sockfd);
    return 0;
}


nb: Copy source code di atas untuk melakukan demo

Sumber: 
I Putu Agus Eka Pratama, S.T.,M.T. 2014. Handbook Jaringan Komputer. Bandung: Penerbit Informatika.
http://sumarna.staff.gunadarma.ac.id/Downloads/files/31673/2.+Pemrograman+TCP+socket.pdf

Parallel Computing

Parallel Processing

       Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan.
          
          Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika (fisika komputasi), kimia (kimia komputasi) dll.
          
           Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.

          Pemrograman Paralel sendiri adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam satu jaringan komputer, biasanya disebut sistem terdistribusi. Bahasa pemrograman yang populer digunakan dalam pemrograman paralel adalah MPI (Message Passing Interface) dan PVM (Parallel Virtual Machine).

       Yang perlu diingat adalah komputasi paralel berbeda dengan multitasking. Pengertian multitasking adalah komputer dengan processor tunggal mengeksekusi beberapa tugas secara bersamaan. Walaupun beberapa orang yang bergelut di bidang sistem operasi beranggapan bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan sekaligus, melainkan proses penjadwalan yang berlakukan pada sistem operasi membuat komputer seperti mengerjakan tugas secara bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa komputasi paralel menggunakan beberapa processor atau komputer. Selain itu komputasi paralel tidak menggunakan arsitektur Von Neumann.

             Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi tunggal (menggunakan 1 processor) dengan komputasi paralel (menggunakan beberapa processor), maka kita harus mengetahui terlebih dahulu pengertian mengenai model dari komputasi. Ada 4 model komputasi yang digunakan, yaitu:

  • SISD

Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
  • SIMD

Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
  • MISD

Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
  • MIMD

Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

Singkatnya untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa digambarkan pada gambar di bawah ini:

Gambar 1. Penyelesaian sebuah masalah pada komputasi tunggal


Gambar 2. Penyelesaian Sebuah Masalah pada Komputasi Paralel

          Dari perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang banyak daripada komputasi tunggal.

            Dari penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan kapan kita perlu menggunakan komputasi paralel. Jawabannya adalah karena komputasi paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika kita hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah kecil atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.

        Tujuan utama dari pemrosesan paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan. 

Contoh Penerapan dari Parallel Computing ada 3:

  1. Cluster;
  2. Grid; dan
  3. Cloud

Cluster

          Cluster, dalam ilmu komputer dan jaringan komputer adalah sekumpulan komputer (umumnya server jaringan) independen yang beroperasi serta bekerja secara erat dan terlihat oleh klien jaringan seolah-olah komputer-komputer tersebut adalah satu buah unit komputer. Proses menghubungkan beberapa komputer agar dapat bekerja seperti itu dinamakan dengan Clustering. Komponen cluster biasanya saling terhubung dengan cepat melalui sebuah interkoneksi yang sangat cepat, atau bisa juga melalui jaringan lokal (LAN). Karena menggunakan lebih dari satu buah server, maka manajemen dan perawatan sebuah cluster jauh lebih rumit dibandingkan dengan manajemen server mainframe tunggal yang memiliki skalabilitas tinggi (semacam IBM AS/400), meski lebih murah. 

Cluster komputer terbagi ke dalam beberapa kategori, sebagai berikut: 

  • Kluster untuk ketersediaan yang tinggi (High-availability clusters)

           High-availability cluster, yang juga sering disebut sebagai Failover Cluster pada umumnya diimplementasikan untuk tujuan meningkatkan ketersediaan layanan yang disediakan oleh kluster tersebut. Elemen kluster akan bekerja dengan memiliki node-node redundan, yang kemudian digunakan untuk menyediakan layanan saat salah satu elemen kluster mengalami kegagalan. Ukuran yang paling umum dari kategori ini adalah dua node, yang merupakan syarat minimum untuk melakukan redundansi. Implementasi kluster jenis ini akan mencoba untuk menggunakan redundansi komponen kluster untuk menghilangkan kegagalan di satu titik (Single Point of Failure). 

           Ada beberapa implementasi komersial dari sistem kluster kategori ini, dalam beberapa sistem operasi. Meski demikian,proyek linux-HA adalah salah satu paket yang paling umum digunakan untuk sistem operasi GNU/linux. 

          Dalam keluarga sistem operasi Microsoft Windows NT,sebuah layanan yang disebut dengan Microsoft Cluster Service (MSCS) dapat digunakan untuk menyediakan kluster kategori ini. MSCS ini diperbarui lagi dan telah diintegrasikan dalam Windows 2000 advanced server dan Windows 2000 Datacenter server , dengan nama Microsoft Clustering Service. Dalam Windows Server 2003, Microsoft Clustering Service ini ditingkatkan lagi kinerjanya. 

  • Kluster untuk pemerataan beban komputasi (Load-balancing clusters)

          Kluster kategori ini beroperasi dengan mendistribusikan beban pekerjaan secara merata melalui beberapa node yang bekerja di belakang (back-end node). Umumnya kluster ini akan dikonfigurasikan sedemikian rupa dengan beberapa front-end load-balancing redundan. Karena setiap elemen dalam sebuah kluster load-balancing menawarkan layanan penuh, maka dapat dikatakan bahwa komponen kluster tersebut merupakan sebuah kluster aktif/kluster HA aktif, yang bisa menerima semua permintaan yang diajukan oleh klien.  

  • Kluster hanya untuk komputasi (Compute clusters)

     Seringnya, penggunaan utama kluster komputer adalah untuk tujuan komputasi, ketimbang penanganan operasi yang berorientasi I/Oseperti layanan Web atau basis data. Contoh, sebuah kluster mungkin mendukung simulasi komputasional untuk perubahan cuaca atau tabrakan kendaraan. 

    Perbedaan utama untuk kategori ini dengan kategori lainnya adalah seberapa eratkah penggabungan antar node-nya. Sebagai contoh, sebuah tugas komputasi mungkin membutuhkan komunikasi yang sering antar node--ini berarti bahwa kluster tersebut menggunakan sebuah jaringan terdedikasi yang sama, yang terletak di lokasi yang sangat berdekatan, dan mungkin juga merupakan node-node yang bersifat homogen. 

         Desain kluster seperti ini, umumnya disebut juga sebagai Beowulf Cluster. Ada juga desain yang lain, yakni saat sebuah tugas komputasi hanya menggunakan satu atau beberapa node saja, dan membutuhkan komunikasi antar-node yang sangat sedikit atau tidak ada sama sekali. Desain kluster ini, sering disebut sebagai "Grid". Beberapa compute cluster yang dihubungkan secara erat yang didesain sedemikian rupa, umumnya disebut dengan "Supercomputing". Beberapa perangkat lunak Middleware seperti MPI atau Paraller Virtual Machine (PVM) mengizinkan program compute clustering agar dapat dijalankan di dalam kluster-kluster tersebut.  

Grid

             Komputasi grid memungkinkan organisasi virtual (virtual organization) untuk menggunakan secara bersama sumber daya yang tersebar secara geografis dengan berasumsi ketidakhadiran dari lokasi terpusat, kontrol terpusat, pengetahuan menyeluruh terhadap sumber daya dan hubungan kepercayaan. Organisasi virtual dapat meliputi suatu departemen dari suatu perusahaan yang berada pada satu lokasi yang sama sampai dengan kumpulan besar orang-orang dari berbagai organisasi yang tersebar diberbagai belahan bumi. Komputasi grid memiliki tiga karakteristik penting yaitu:
  1. Pemakaian bersama sumber daya yang terkoordinasi (setara) yang tidak berada di bawah suatu kendali terpusat.
  2. Menggunakan protokol-protokol dan interface yang standar, terbuka dan serbaguna.
  3. Dapat memberikan kualitas layanan (QoS) yang tinggi.
           Sebagai sistem terdistribusi dengan non-interaktif beban kerja yang melibatkan sejumlah besar file. Apa yang membedakan grid computing dari konvensional sistem komputasi kinerja tinggi seperti komputasi cluster adalah grid lebih cenderung longgar digabungkan, heterogen, dan geografis. Grid computing merupakan salah satu jenis dari komputasi modern. Grid computing adalah arsitektur TI baru yang menghasilkan sistem informasi perusahaan yang berbiaya rendah dan lebih adaptif terhadap dinamika bisnis. Dengan grid computing, sejumlah komponen hardware dan software yang modular dan independen akan dapat dikoneksikan dan disatukan untuk memenuhi tuntutan kebutuhan bisnis. Lebih jauh, dari sisi ekonomi, implementasi grid computing berarti membangun pusat komputasi data yang tangguh dengan struktur biaya variatif yang bias disesuaikan dengan kebutuhan.

            Grid computing adalah model generasi selanjutnya untuk komputasi perusahaan berbasis virtualisasi dan provisioning bagi setiap sumberdaya TI. Grid computing menjanjikan peningkatan utilitas dan fleksibilitas yang lebih besar untuk sumberdaya infrastruktur, aplikasi dan informasi. Oracle 10g telah berbasis grid computing, sehingga perusahaan yang menginginkan kemajuan dan perbaikan kinerja bisnis berbiaya rendah bagi aplikasi transaksional, business intelligence dan knowledge management dapat menggunakan solusi grid computingdari Oracle. Khusus bagi pelanggan Oracle sekarang ini, adopsi gridcomputing hanya berupa adopsi generasi selanjutnya dari software yang telah sukses dijalankan sebelumnya. IDC juga meyakini bahwa Oracle 10g cukup diperhitungkan oleh banyak perusahaan yang berkeinginan yang sama. Pelaku bisnis cukup mengadopsi teknologi grid dengan investasi minimal, kegagalan nol, dan ROI cepat.


Konsep Grid Computing

  • Sumberdaya Infrastruktur
Mencakup hardware seperti penyimpan, prosesor, memori, dan jaringan; juga software yang didesain untuk mengelola hardware ini, seperti database, manajemen penyimpan, manajemen sistem, server aplikasi dan system operasi.

  • Sumberdaya Aplikasi

Adalah perwujudan logika bisnis dan arus proses dalam software aplikasi. Sumberdaya yang dimaksud bisa berupa aplikasi paket atau aplikasi buatan, ditulis dalam bahasa pemrograman, dan merefleksikan tingkat kompleksitas. Sebagai contoh, software yang mengambil pesanan dari seorang pelanggan dan mengirimkan balasan, proses yang mencetak slip gaji, dan logika yang menghubungkan telepon dari pelanggan tertentu kepada pihak tertentu pula.

  • Sumberdaya Informasi

Saat ini, informasi cenderung terfragmentasi dalam perusahaan, sehingga sulit untuk memandang bisnis sebagai satu kesatuan. Sebaliknya, grid computing menganggap informasi adalah sumberdaya, mencakup keseluruhan data pada perusahaan dan metadata yang menjadikan data bisa bermakna. Data bias berbentuk terstruktur, semi-terstruktur, atau tidak terstruktur, tersimpan di lokasi manapun, seperti dalam database, sistem file lokal.

Prinsip Kerja Grid Computing

Dua prinsip kerja utama grid computing yang membedakannya dari arsitektur komputasi yang lain, semisal mainframe, klien-server, atau multi-tier: virtualisasi dan provisioning.

  • Virtualisasi

Setiap sumberdaya (semisal komputer, disk, komponen aplikasi dan sumber informasi) dikumpulkan bersama-sama menurut jenisnya, lalu disediakan bagi konsumen (semisal orang atau program software). Virtualisasi berarti meniadakan koneksi secara fisik antara penyedia dan konsumen sumberdaya, dan menyiapkan sumberdaya untuk memenuhi kebutuhan tanpa konsumen mengetahui bagaimana permintaannya bisa terlayani. 

  • Provisioning

Ketika konsumen meminta sumberdaya melalui layer virtualisasi, sumberdaya tertentu di belakang layer didefinisikan untuk memenuhi permintaan tersebut, dan kemudian dialokasikan ke konsumen. Provisioning sebagai bagian dari grid computing berarti bahwa system menentukan bagaimana cara memenuhi kebutuhan konsumen seiring dengan mengoptimasi jalannya sistem secara keseluruhan.
Cara Kerja Grid Computing

Menurut tulisan singkat oleh Ian Foster ada check-list yang dapat digunakan untuk mengidentifikasi bahwa suatu sistem melakukan komputasi grid yaitu :

  1. Sistem tersebut melakukan koordinasi terhadap sumberdaya komputasi yang tidak berada dibawah suatu kendali terpusat. Seandainya sumber daya yang digunakan berada dalam satu cakupan domain administratif, maka komputasi tersebut belum dapat dikatakan komputasi grid.
  2. Sistem tersebut menggunakan standard dan protokol yang bersifat terbuka (tidak terpaut pada suatu implementasi atau produk tertentu). Komputasi grid disusun dari kesepakatan-kesepakatan terhadap masalah yang fundamental, dibutuhkan untuk mewujudkan komputasi bersama dalam skala besar. Kesepakatan dan standar yang dibutuhkan adalah dalam bidang autentikasi, otorisasi, pencarian sumberdaya, dan akses terhadap sumber daya.
  3. Sistem tersebut berusaha untuk mencapai kualitas layanan yang canggih, (nontrivial quality of service) yang jauh diatas kualitas layanan komponen individu dari komputasi grid tersebut.

Keuntungan Grid Computing

Secara generik, keuntungan dasar dari penerapan komputasi Grid, yaitu:

  1. Perkalian dari sumber daya: Resource pool dari CPU dan storage tersedia ketika idle.
  2. Lebih cepat dan lebih besar: Komputasi simulasi dan penyelesaian masalah apat berjalan lebih cepat dan mencakup domain yang lebih luas.
  3. Software dan aplikasi: Pool dari aplikasi dan pustaka standard, Akses terhadap model dan perangkat berbeda, Metodologi penelitian yang lebih baik.
  4. Data: Akses terhadap sumber data global, dan Hasil penelitian lebih baik.
           Indonesia sudah menggunakan sistem Grid dan diberi nama InGrid (Inherent Grid). Sistem komputasi grid mulai beroperasi pada bulam Maret 2007 dan terus dikembangkan sampai saat ini. InGrid ini menghubungkan beberapa perguruan tinggi negeri dan swasta yang tersebar di seluruh Indonesia dan beberapa instansi pemerintahan seperti Badan Meteorologi dan Geofisika.


Cloud Computing

           Cloud Computing adalah gabungan dari pemanfaatan teknologi (komputasi) dan pengembangan berbasis internet (awan). Cloud Computing merupakan sebuah metode penggabungan dari berbagai pemanfaatan beberapa teknologi dimana kemampuan TI disediakan sebagai layanan berbasis internet.

          Contoh Cloud Computing seperti Ymail atau Gmail. Anda tidak perlu software atau hardware (server) untuk menggunakannya. Semua Konsumen hanya perlu koneksi Internet dan mereka dapat mulai mengirimkan email. Software manajemen email dan server semuanya ada di cloud (internet) dan secara total di kelola oleh provider seperti Yahoo, Google, etc. Konsumen hanya perlu menggunakan software itu sendiri dan menikmati manfaatnya.



      Perhatikan titik-titik komputer/server sebagai gabungan dari sumber daya yang akan dimanfaatkan. Lingkaran-lingkaran sebagai media aplikasi yang menjembatani sumber daya dan cloud-nya adalah internet. Semuanya tergabung menjadi satu kesatuan dan inilah yag dinamakan cloud computing.Analoginya adalah, “Jika anda membutuhkan Susu, anda tidak perlu membeli sapi. Karena yang anda butuhkan adalah Susunya (manfaatnya) bukan Sapinya (Software/hardware). Itu sama saja dengan anda menggunakan software atau hardware seperti mengirim email, dan lain-lain tanpa harus memiliki Aplikasi Penyedia layanannya.


Contoh Cloud Computing


Cloud computing saat ini sedang populer, namun apa contoh dari Cloud Computing itu, berikut adalah lima contoh dari sekian banyak Cloud Computing saat ini:
  • Email
Email adalah salah satu alat komunikasi yang sudah cukup lama ada. Dalam email tersimpan data-data pada saat kita mengirimkan atau menerima data. Yang berupa tulisan atau file. Data-data tersebut dapat kita akses sewaktu-waktu kita perlukan , tanpa kita harus menyimpan data tersebut pada komputer pribadi sendiri. Orang lain juga dapat mengakses data tersebut tapi tentunya yang hanya menerima email itu saja.
  • Data storage online
Penyimpanan data pada komputer personal tentu akan santa terbatas. Jika harus membeli server sendiri amat sangat mahal sekali. Oleh sebab itu saat ini kita dapat menyewa atau bahkan ada yang menyediakan server gratis yang dapat kita akses secara online. Contohnya adalah Humyo, ZumoDrive, Microsoft’s SkyDrive, S3 from Amazon, dan masih banyak yang lain.
  • Colaboration Tools
Penkolaborasian data sering kali diperlukan. Karena data yang ingin kita simpan bermacam-macam jenisnya dan fungsinya. ada banayk tools yang dapat digunakan. Contohnya adalah Spicebird, Mikogo, Stixy and Vyew t.
  • Virtual Office
Sering kita memerlukan office untuk memproses data-data. Saat ini kita dapat menggunakan office tidak hanya yang sudah terinstall namun kita juga dapat menggunakan office yang disediakan secara online. Contohnya antara lain Ajax13, ThinkFree and Microsoft’s Office Live.
  • Kekuatan ekstra processing 
Bila membutuhkan kekuatan untuk memproses secara cepat tanpa perlu membeli perangkat tambahan maka salah satu solusinya adalah Amazon’s EC2 virtual computing ini juga dapat diatur sesuai dengan kebutuhan individu masing -masing orang. Contoh yang lain adalah AbiCloud, Elastichosts and NASA’s Nebula platform.

Ciri – Ciri Cloud Computing

Cloud computing saat ini sedang terkenal, namun apa ciri – ciri dari Cloud Computing itu, berikut adalah 7 ciri Cloud Computing yaitu:

1. Komputasi Otonom

Sistem komputer yang mampu mengatur atau me-manajemen sendiri secara otomatis.

2. Client-server model

Komputasi client-server mengacu secara luas untuk setiap aplikasi terdistribusi yang membedakan antara penyedia layanan (server) dan pengguna layanan (klien).

3. Grid computing

Suatu bentuk komputasi terdistribusi dan komputasi paralel, dimana sebuah ‘super komputer dan virtual’ terdiri dari sekelompok jaringan, komputer lebar ditambahkan serta bertindak untuk melakukan tugas yang demikian besar.

4. Mainframe komputer

Komputer luar biasa yang banyak digunakan oleh organisasi-organisasi besar untuk aplikasi kritis, biasanya proses transaksi pemrosesan data massal seperti sensus, statistik industri dan konsumen, perencanaan sumber daya perusahaan, dan keuangan.

5. Utility komputasi

Dengan kemasan sumber daya komputasi, seperti perhitungan dan penyimpanan.

6. Peer-to-peer

Arsitektur yang didistribusikan tanpa perlu koordinasi pusat, dengan peserta yang pada saat yang sama pihak pemasok dan konsumen sumber daya (berbeda dengan model client-server tradisional).

7. Berorientasi layanan komputasi

Cloud computing menyediakan layanan yang berkaitan dengan komputasi sementara, dengan cara timbal balik, komputasi berorientasi layanan terdiri dari teknik komputasi yang beroperasi pada perangkat lunak layanan.


Tingkat Layanan

Cloud computing mempunyai 3 tingkatan layanan yang diberikan kepada pengguna, yaitu:

1. Infrastructure as a service (IAAS)

Hal ini meliputi Grid untuk virtualized server, storage & network. Contohnya seperti Amazon Elastic Compute Cloud dan Simple Storage Service.

2. Platform as a service (PAAS)

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 (SAAS)


Hal ini memfokuskan pada aplikasi dengan Web-based interface yang diakses melalui Web Service dan Web 2.0. Contohnya adalah Google Apps, SalesForce.comdan aplikasi jejaring sosial seperti FaceBook.

Para investor sedang mencoba untuk mengeksplorasi adopsi teknologi cloud computing untuk dijadikan bisnis seperti Google dan Amazon yang sudah punya penawaran khusus pada teknologi cloud. Dan juga Microsoft dan IBM tidak mau kalah dalam hal ini, mereka juga sudah menginvestasikan jutaan dolar untuk hal ini.

Bisa dipastikan ke depannya cloud computing ini akan menjadi sebuah trend, standar teknologi akan menjadi lebih sederhana karena ketersediaan dari layanan cloud.


Sumber:
http://digilib.batan.go.id/e-prosiding/lkstn_2008/artikel/U2-SaidMirza.pdf
https://www.academia.edu/7424831/Parallel_PROCESSING_Pemrosesan_paralel
http://blog.uin-malang.ac.id/sleeping/files/2010/10/Cluster.pdf