Senin, 28 April 2014

Cloud Computing







Cloud computing is the new definition for grid computing technologies which is used in the mid to late 1990s.  cloud computing began to emerge at the end of 2007, is used to move the services to the daily use of the Internet, not stored on the local computer again. Cloud computing is a new trend in the field of distributed computing in which the various parties can develop applications and services based on SOA (Service Oriented Architecture) on the Internet. With Cloud Computing you'd only have to load one application. That application would allow users to log into a Web-based service which hosts all the programs the user would need for his or her job. Remote machines is owned by another company that would run everything, from e-mail to word processing to complex data analysis programs.

            With Cloud computing you can get some advantage, first you can Reduce spending on technology infrastructure by Maintain easy access to your information with minimal upfront spending. Pay as you go (weekly, quarterly or yearly), based on demand., then the Streamline processes for Get more work done in less time with less people. Then you can Reduce capital costs because There’s no need to spend big money on hardware, software or licensing fee. And the most important thing you can get with cloud computing is You have access anytime, anywhere, that making your life so much easier!

            Cloud Based Services is the general term given to a variety of services that are accessed via the Internet or a proprietary network.   Broadly divided into three categories: Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS), Cloud Based Services allow users to store data, access software and access services and platforms from almost any device that can access the cloud via a broadband connection. The use of cloud services has greatly increased over the past decade.
            The following are the characteristics of cloud computing
  • ‘On-Demand, Self-Service’ implies a customer can order service via the web or some other method at any point in time, 24×7, which becomes immediately available for his or her use.
  • ‘Broad network access’ implies widespread, heterogeneous network accessibility for thin, thick, mobile and other commonly used compute mediums.
  • ‘Shared resource pooling’ connotes the aggregation of physical compute resources into a logical ‘pool’ that is dynamically allocated in a multi-tenancy capacity across broad application service requirements.
  • ‘Rapid, bi-directional elasticity’ simply means additional capacity remains available and accessible on an ‘as needed’ basis, and is recovered back to the pool when no longer needed for alternative allocation.
  • ‘Metered service’ as noted above means that all variables of resource consumption are tracked in capacity that users can be automatically billed for their consumption.
Perhaps the biggest concerns about cloud computing are security and privacy. The idea of handing over important data to another company worries some people. Corporate executives might hesitate to take advantage of a cloud computing system because they can't keep their company's information under lock and key. The counterargument to this position is that the companies offering cloud computing services live and die by their reputations. It benefits these companies to have reliable security measures in place. Otherwise, the service would lose all its clients. It's in their interest to employ the most advanced techniques to protect their clients' data. Privacy is another matter. If a client can log in from any location to access data and applications, it's possible the client's privacy could be compromised. Cloud computing companies will need to find ways to protect client privacy. One way is to use authentication techniques such as user names and passwords. Another is to employ an authorization format -- each user can access only the data and applications relevant to his or her job.

When talking about a cloud computing system, it's helpful to divide it into two sections: the front end and the back end. They connect to each other through a network, usually the Internet. The front end is the side the computer user, or client, sees. The back end is the "cloud" section of the system. The front end includes the client's computer (or computer network) and the application required to access the cloud computing system. Not all cloud computing systems have the same user interface. Services like Web-based e-mail programs leverage existing Web browsers like Internet Explorer or Firefox. Other systems have unique applications that provide network access to clients. On the back end of the system are the various computers, servers and data storage systems that create the "cloud" of computing services. In theory, a cloud computing system could include practically any computer program you can imagine, from data processing to video games. Usually, each application will have its own dedicated server.

Selasa, 22 April 2014

Objek Terdistribusi dan CORBA

Middleware adalah objek terdistribusi yang dirancang untuk menyediakan model pemrograman berdasarkan prinsip-prinsip berorientasi objek.

Emmerich [ 2000 ] melihat objek terdistribusi seperti evolusi alami dari tiga kegiatan :

  • Pada sistem terdistribusi , middleware sebelumnya didasarkan pada model client-server dan ada keinginan untuk abstraksi pemrograman yang lebih canggih .
  • Dalam bahasa pemrograman , karya sebelumnya dalam bahasa berorientasi objek seperti Simula - 67 dan Smalltalk menyebabkan munculnya lebih utama dan sangat digunakan bahasa pemrograman seperti Java dan C + + ( bahasa yang digunakan secara ekstensif dalam sistem terdistribusi ) .
  • Dalam rekayasa perangkat lunak , kemajuan yang signifikan dibuat dalam pengembangan metode desain berorientasi obyek , yang menyebabkan munculnya Unified Modelling Language ( UML ) sebagai notasi industri - standar untuk menentukan ( potensi terdistribusi ) pada sistem perangkat lunak berorientasi objek .


Dengan kata lain, melalui pendekatan berorientasi objek dalam sistem terdistribusi, pengembang tidak hanya disediakan dengan abstraksi pemrograman ( seperti pada bahasa seperti C + + dan Java  ) , tetapi juga dapat menggunakan object - oriented prinsip-prinsip desain , alat dan teknik ( termasuk UML ) dalam pengembangan software sistem terdistribusi . Ini merupakan langkah maju yang besar di daerah di mana , sebelumnya , teknik desain seperti itu tidak tersedia . 


Middleware pada objek terdistribusi menawarkan abstraksi pemrograman berbasis object oriented Contoh middleware objek terdistribusi adalah Java, RMI dan CORBA .
Java RMI dan CORBA berbagi banyak kesamaan ,namun ada satu perbedaan yang terpenting : yaitu penggunaan Java RMI dibatasi untuk pengembangan berbasis Java , sedangkan CORBA adalah solusi yang memungkinkan multi-bahasa berbasis objek untuk dapat ditulis dalam berbagai bahasa  .
CORBA
       Pada tahun 1989 object Management group (0MG) dibentuk melakukan standarisasi terhadap arsitektur aplikasi menggunakan obyek terdistribusi sehingga aplikasi yang dibuat oleh sebuah vendor dapat birenteraksi dengan vendor Iainnya dengan berbagai perarigkat jaringan dan sistem operasi. Standar yang dikePuarkan oleh 0MG disebut Common Object RequestBroker Architektur (CQRBA). Spesifikasi CORBA ini berisi sebuah spesifikasi infrastruktur yang disebut Object request Broker (ORB) yang memungkinkan aplikasi klien untuk dapat berkomunikasi dengan obyek secara remote, yang meliputi antarmuka program, protokol komunikasi don model obyek atau layanan yang memungkinkan untuk saling berkomunikasi dalam berbagai platform.
.
CORBA menggunakan interface definition language (IDL) untuk menunjukkan interface atau antarmuka yang dapat digunakan oleh program atau obyek lain.
  Komponen CORBA yang terletak di sisi Server

1. Server Side ORB Interface
2. Static IDL Skeleton
3. Dynamic Skeleton Interface
4. Object Adapter
5. Server Side Implementation

Komponen CORBA pada sisi Client:
1.     Client Application
2.     Client IDL Stubs
3.     Dynamic Invocation Interface
4.     Interface Repository
5      Client Side ORB Interface

Komponen Object Request Broker (ORB)

          Inti dari CORBA adalah ORB, dimana ORB  bertanggungjawab untuk menjalankan semua mekanisme yang dibutuhkan, antara lain yaitu:

1.  menemukan implementasi obyek untuk memenuhi suatu request,
2.  menyiapkan implementasi obyek untuk menerima suatu request,
3.  melakukan komunkasi data untuk memenuhi suatu request.

          Sebuah permintaan (request) yang dikirimkan suatu client ke suatu object implementation akan melewati ORB. Dengan ORB, yang terdiri dari interface, suatu entitas dapat berkomunikasi dengan object implementation tanpa adanya batasan platform, topologi jaringan, bahasa pemrograman, dan letak obyek
Client
Secara umum, client adalah suatu program/proses yang melakukan request pada suatu objek. Terdapat pula client relative, yaitu suatu objek yang menjadi client dari objek lainnya.Client suatu objek harus mengakses OR (Object Reference) suatau objek tertentu untuk melakukan operasi pada suatu objek. Client hanya mengetahui struktur logika suatu objek melalui interface yang dimiliki objek tersebut dan behaviour yang dimiliki objek tersebut saat dipanggil.Secara umum, client mengakses objek dan ORB melalui language mapping.Client dapat bersifat portable dan seharusnya dapat berjalan tanpa harus mengubah kode pada ORB yang mendukung language mapping berbeda dengan objek instance yangmengimplementasikan interface berbeda.
Untuk membuat suatu request, client dapat menggunakan :
1. DII (Dynamic Invocation Interface) yaitu suatu interface yang tidak tergantung pada
inteface objek yang dituju
2. IDL Stub, yang tergantung pada interface objek yang dituju.
(cth: Untuk fungsi-fungsi tertentu, client dapat berinteraksi secara langsung dengan ORB)
Object Implementation (OI)
Suatu Object Implementation (OI) menyediakan semantik dari objek, yangumumnya dilakukan dengan mendefiniskan data untuk object instance dan kode untuk method-method objek tersebut. Seringkali kita menggunakan objek lain atau menggunakan software tambahan untuk mengimplementasikan sifat suatu objek.

Object Implementation (OI) menerima suatu request melalui
1. IDL Skeleton
2. Dynamic Skeleton Interface(DSI)
Object Implementation (OI) dapat memanggil Object Adapter (OA) dan ORB pada saat memproses sebuah request.
Interface
Inteface suatu objek dapat didefinisikan dengan cara statis, yaitu menggunakan IDL (Interface Definition Languange). IDL mendefiniskan tipe suatu objek berdasarkan operasi-operasi (yang mungkin dijalankan pada objek tersebut) dan parameter operasi tersebut.
Interface dapat pula ditambahkan ke dalam suatu IRS (Interface Repository Service) yang menggambarkan komponen-komponen dari interface suatu objek. Client dapat mengakses komponen-komponen ini saat runtime.Client meminta suatu request dengan melakukan akses ke OR (Object Reference)suatu objek yang dituju dan mengetahui tipe dari objek dan operasi-operasi yang dapat dilakukan pada objek tersebut. Client menginisialisasi request dengan memanggil rutinrutin suatu stub yang sesuai dengan objek atau membangun request secara dinamik.
Interface dinamik dan interface stub harus memeiliki semantic request yabng msa dalam pemanggilan suatu request.ORB mencari implementation code yang dituju, mengirimkan parameterparameter dan mentransfer kontrol pada Object Implementation memalui IDL Sekeleton atau Dynamic Skeleton. Secara spesifik, skeleton berupa interface dan OA (ObjectAdapter). Dalam mengolah suatu request, Object Implementation memberikan service pada ORB melalui OA (Object Adapter). Saat suatu request selesai dijalankan, kontrol dan nilai keluaran dikembalikan ke client. OI dapat memilih OA yang akan digunakan.Keputusan pemilihan OA ditentukan oleh jenis service yang dibutuhkan oleh OI tersebut.Infomasi tentang OI diberikan pada saat instalasi dan disimpan dalam IR(Implementation Repository) yang digunakan selama pengiriman hasil request.Dalam arsitekturnya, ORB tidak perlu dimplementasikan dalam sebuah komponen tunggal namun, ORB didefinisikan menggunakan interface-interface yang dimilikinya. Interface-interface tersebut dikelompokan menjadi:
1. operasi yang sama untuk semua implementasi ORB
2. operasi khusus untuk tipe objek tertentu
3. operasi khusus untuk style OI tertentu
Object Reference (OR)
Object Reference (OR) merupakan informasi yang dibutuhkan untuk menentukan sebuah objek dalam ORB. Client dan Object Implementation (OI) memiliki bagaian yang tertutup dari OR dengan language mapping, yang kemudian disekat dari representasi aktualnya. Dua implementasi ORB dapat memiliki representasi OR yang berbeda.Representasi OR pada sisi client hanya valid selama masa hidup client tersebut.Semua ORB harus menyediakan language mapping yang sama untuk sebuah OR(umumnya disebut objek) untuk sebuah bahasa pemrograman tertentu. Hal ini memungkinkan sebuah program ditulis dalam bahasa apapun untuk mengakses OR secara independen terhadap ORB terntentu.
Interface Definition Language (IDL)
Objek-objek CORBA dispesifikasikan menggunakan interface, yang merupakan penghubung anatara client dan server. Interface Definition Language (IDL) digunakan untuk mendefinisikan interface tersebut.IDL menentukan tipe-tipe suatu objek dengan mendefinisikan interface-interface objek tersebut. Sebuah interface terdiri dari kumpulan operasi dan parameter operasi tersbut. IDL hanya mendeskripsikan interface, tidak mengimplementasikannya. Meskipun sintaks yang dimiliki oleh IDL menyerupai sintaks bahasa pemrograman C++ dan Java., perlu diingat, IDL bukan bahasa pemrograman.Melalui IDL, Object Implementation (OI) akan memberitahu client yang akan mengakses operasi apa saja dan method apa saja yang harus dipanggil client tersebut.Dari definisi IDL, objek-objek CORBA dipetakan ke bahasa pemrograman –C,C++, Java, dan lain-lain—yang memiliki IDL mapping.
Bahasa Pemrograman yang berbeda dapat mengakses objek-objek CORBA dalam bebagai cara yang berbeda. Pemetaan dari IDL ke bahasa pemrograman tertentu harus sama untuk semua implementasi ORB. Language Mapping ini menyertakan definisi tipe data untuk bahasa  pemrograman terntentu dan procedure interface untuk mengakses objek melalui ORB. Ini meliputi:
1. Struktur dari client stub interface (tidak dibutuhkan untuk bahasa OOP)
2. Dynamic Invocation Interface
3. Implementation Skeleton
4. Object Adapters
5. Direct ORB Interface
Language Mapping juga mendefinisikan interaksi antara pemanggilan objek dan langkah kontrol pada client dan implementasi. Pemetaan yang paling umum menyediakan syncrhonous call, dimana rutin mengembalikan nilai pada saat operasi suatu objek selesai dilakukan. Pemetaan tambahan memungkinkan sebuah call diisisiasi dan kontrol dikembalikan kepada program.
 Dynamic Invocation/Skeleton Interface
IDL interface yang digunakan oleh sebuah client ditentukan pada saat client dikompilasi. Hal tesebut mengakibatkan seorang programmer hanya dapat menggunakan server-server yang terdiri dari objek-objek yang mengimplementasikan interfaceinterface tersebut.
Bila suatu aplikasi membutuhkan interface-interface yang tak didefiniskan saat kompilasi, maka diperlukan DII (Dynamic Invocation Interface) atau pun DSI (Dynamic Skeleton Interface).DII memungkinkan suatu aplikasi/client memanggil operasi-operasi dari sembarang interface. DSI menyediakan suatu cara untuk mengirim request dari sebuah ORB ke sebuah Object Implementation (OI) tanpa harus mengetahui tipe dari objek pada saat kompilasi.
Dynamic Invocation Interface (DII)
CORBA mendukung DII dan SII. Operasi invocation dapat dilakukan menggunakan static interface ataupun dynamic interface. Static Invocation Interface (SII) ditentukan pad saat kompilasi dan dihubungkan dengan client mengunakan stub.Sedangkan Dynamic Invocation Interface (DII) memungkinkan apliaksi di sisi client untuk menggunakan server object tanpa perlu mengetahui tipe obek-objek tersebut saat kompilasi.
DII memungkinkan client untuk mendapatkan sebuah instance dari objek CORBA dan membuat invocation pada objek tersebut dengan menciptakan request yang sifatnya dinamis. DII  menggunakan Interface Repository (IR) untuk memvalidasi dan mengambil identifier operasi pada suatu request yang dibuat.Client menggunakan Interface Repository (IR) untuk mempelajari tentang interface-objek yang tidak diketahui dan client menggunakan DII untuk memanggil methods suatu objek.
Empat tahap yang diperlukan saat penggunaan Dynamic Invocation Interface (DII):
1. Mengidentifikasikan target objek yang akan dipanggil
2. Mendapatkan target interface dari objek tersebut
3. Membangun invocation
4. Mengirim request untuk mendapatkan respon
Aplikasi-aplikasi client yang menggunakan Dynamic Invocation Interface (DII) tidak lebih efisien dari yang menggunakan SII, tapi ada dua keuntungan menggunakan DII,yaitu:
-Aplikasi client dapat melakukan permintaan kepada setiap operasi meskipun tersebut tidak diketahui pada saat aplikasi dikompilasi.
-Apliaksi client tidak harus dikompilasi ulang untuk mengakses OI yang diaktivasi ulang.
 Dynamic Skeleton Interface (DSI)
Dynamic Skeleton Interface (DSI) menyerupai DII, namun tereletak di sisi server. DSI memungkinkan server ditulis tanpa harus mempunyai skeleton-skeleton atau informasi tentang waktu kompilasi, dan untuk objek mana server ini diimlementasikan. Fungsi utama Dynamic Skeleton Interface (DSI) adalah mendukung implementasi gateway antara ORB yang memiliki protocol komunikasi berbeda.
Object Adapter (OA)
Object Adapter (OA) merupakan cara utama bagi sebuah Object Implemetation (OI) untuk mengakses service yang disediakan oleh ORB. Tugas utamanya adalah melakukan masking (menutupi) perbedaan dalam implementasi objek untuk memperoleh portability yang lebih tinggi.
ORB Interface
ORB Interface Merupakan interface yang berhubungan langsung dengan ORB yang sama untuk semua ORB dan tidak tergantung pada interface suatu objek atau Objek Adapter (OA). Karena banyak fungsionalitas ORB yang disediakan melalui OA, stub,skeleton, maupun dynamic invocation; maka ada sedikit operasi yang umum bagi semua objek.
 Inteface Repository (IR)
Interface Repository (IR) merupakan online database yang berisi tentang meta informasi tentang tipe dari objek ORB. Meta ionformasi yang disimpan meliputi informasi tentang modul, interface, operasi, atribut, dan eksepsi dari objek.Interface Repository (IR) menyediakan cara lain untuk menentukan interface ke suatu objek. Interface ini dapat ditambahakan ke layanan IR. Dengan menggunakan IR,sebuah client akan mencari objek yang tidak diketahui pada saat kompilasi, menemukan informasi tentang interface objek tersebut dan implementasi suatu aktivasi dan deaktivasi.
ORB biasa menggunakan IR untuk:
1. menyediakan interoperability antar implementasi ORB yang berbeda
2. menyediakan type checking dari signature sebuah request yang melalui SII dan DII
3. Mengecek kebenaran grafik inheritance
4. Mengelola instalasi dan distribusi interface definition alam sebuah jaringan
5. Mengeizinkan designer apliaksi untuk memodifikasi interface definition
6. Mengizinkan language compiler untuk mengcompile stub dan skeleton dari IR
bahkan langsung dari file IDL.
Implementation Repository
Implementation Repository terdiri dari informasi yang memperbolehkan ORB untuk mencari dan mengaktivasi implementasi suatu objek. Meskipun untuk suatu ORB atau lingkungan operasi, Implementation Repository merupakan tempat yang konvensional untuk menyimpan suatu informasi.
 Internet Inter-ORB Protocol (IIOP)
CORBA mendefinisikan IIOP (Internet Inter-ORB Protocol) untuk mengatur bagaimana objek berkomunikasi melalui jaringan. IIOP merupakan open protocol yang berjalan diatas TCP/IP.