Virtual
Machine
Virtual
machine (VM) adalah suatu environment, biasanya sebuah program atau system
operasi, yang tidak ada secara fisik tetapi dijalankan dalam environment lain.
Dalam konteks ini, VM disebut “guest” sementara environment yang menjalankannya
disebut “host”. Ide dasar dari virtual machine adalah mengabtraksi perangkat
keras dari satu komputer (CPU, memori, disk, dst) ke beberapa environment
eksekusi, sehingga menciptakan illusi bahwa masing-masing environment
menjalankan komputernya [terpisah] sendiri.VM muncul karena adanya keinginan
untuk menjalankan banyak sistem operasi pada satu komputer.
Teknologi
virtual machine memiliki banyak kegunaan seperti memungkinkan konsolidasi
perangkat keras, memudahkan recovery sistem, dan menjalankan perangkat lunak
terdahulu. Salah satu penerapan penting dari teknologi VM adalah integrasi
lintas platform. Beberapa penerapan lainnya yang penting adalah:
•
Konsolidasi server.
Jika beberapa server
menjalankan aplikasi yang hanya memakan sedikit sumber daya, VM dapat digunakan
untuk menggabungkan aplikasi-aplikasi tersebut sehingga berjalan pada satu
server saja, walaupun aplikasi tersebut memerlukan sistem operasi yang
berbeda-beda.
•
Otomasi dan konsolidasi lingkungan pengembangan dan testing.
Setiap VM dapat
berperan sebagai lingkungan yang berbeda, ini memudahkan pengembang sehingga
tidak perlu menyediakan lingkungan tersebut secara fisik.
•
Menjalankan perangkat lunak terdahulu.
Sistem operasi dan
perangkat lunak terdahulu dapat dijalankan pada sistem yang lebih baru.
•
Memudahkan recovery sistem.
Solusi virtualisasi
dapat dipakai untuk rencana recovery sistem yang memerlukan portabilitas dan
fleksibilitas antar platform.
•
Demonstrasi perangkat lunak.
Dengan teknologi VM,
sistem operasi yang bersih dan konfigurasinya dapat disediakan secara cepat.
Kelebihan
Virtual Machine (VM)
Teknologi VM memiliki
beberapa keunggulan, antara lain:
• Hal keamanan.
VM
memiliki perlindungan yang lengkap pada berbagai sistem sumber daya, yaitu
dengan meniadakan pembagian sumber daya secara langsung, sehingga tidak ada
masalah proteksi dalam VM. Sistem VM adalah kendaraan yang sempurna untuk
penelitian dan pengembangan sistem operasi. Dengan VM, jika terdapat suatu
perubahan pada satu bagian dari mesin, maka dijamin tidak akan mengubah
komponen lainnya.
• Memungkinkan untuk
mendefinisikan suatu jaringan dari Virtual Machine (VM).
Tiap-tiap
bagian mengirim informasi melalui jaringan komunikasi virtual. Sekali lagi,
jaringan dimodelkan setelah komunikasi fisik jaringan diimplementasikan pada
perangkat lunak.
Kekurangan
Virtual Machine (VM)
Beberapa kesulitan
utama dari konsep VM, diantaranya adalah:
• Sistem penyimpanan.
Sebagai
contoh kesulitan dalam sistem penyimpanan adalah sebagai berikut: Andaikan kita
mempunyai suatu mesin yang memiliki 3 disk drive namun ingin mendukung 7 VM.
Keadaan ini jelas tidak memungkinkan bagi kita untuk dapat mengalokasikan
setiap disk drive untuk tiap VM, karena perangkat lunak untuk mesin virtual
sendiri akan membutuhkan ruang disk secara substansial untuk menyediakan memori
virtual dan spooling. Solusinya adalah dengan menyediakan disk virtual atau
yang dikenal pula dengan minidisk, dimana ukuran daya penyimpanannya identik
dengan ukuran sebenarnya. Dengan demikian, pendekatan VM juga menyediakan
sebuah antarmuka yang identik dengan perangkat keras yang mendasari.
• Pengimplementasian
sulit.
Meski konsep VM cukup
baik, namun VM sulit diimplementasikan.
APIs
Sebuah
application programming interface (API) adalah antarmuka bahwa sebuah program
perangkat lunak alat untuk memungkinkan perangkat lunak lain untuk berinteraksi
dengan itu, banyak cara yang sama seperti perangkat lunak mungkin akan mengimplementasikan
antarmuka pengguna untuk memungkinkan manusia untuk menggunakannya. API
dilaksanakan oleh aplikasi, perpustakaan dan sistem operasi untuk menentukan
bagaimana perangkat lunak lain dapat membuat panggilan ke atau layanan
permintaan dari mereka. Sebuah API menentukan kosa kata dan konvensi memanggil
para pemrogram harus mempekerjakan untuk menggunakan layanan . Ini mungkin
termasuk spesifikasi untuk rutinitas, struktur data, kelas objek, dan protokol
yang digunakan untuk berkomunikasi antara konsumen dan pelaksana API.
Fitur
API adalah sebuah
abstraksi. Perangkat lunak yang menyediakan fungsionalitas yang dijelaskan oleh
API dikatakan sebuah implementasi dari API.
Kegunaan
APIs :
·
Tergantung pada bahasa, yaitu hanya
tersedia dalam bahasa pemrograman tertentu, dengan menggunakan sintaks dan
unsur-unsur bahasa itu untuk membuat API nyaman untuk digunakan dalam konteks
ini.
·
Bahasa-independen, yaitu ditulis dengan
cara yang berarti dapat dipanggil dari beberapa bahasa pemrograman. Ini adalah fitur
yang diinginkan untuk layanan-gaya API yang tidak terikat pada suatu proses
atau sistem dan dapat diberikan sebagai remote procedure calls atau layanan
web.
·
Sebagai contoh, sebuah website yang
memungkinkan pengguna untuk memeriksa restoran lokal mampu lapisan tinjauan di
atas peta mereka diambil dari Google Maps, karena Google Maps API yang memiliki
memungkinkan hal ituGoogle Maps 'API mengontrol informasi apa pihak ketiga
situs bisa ambil, dan apa yang bisa dilakukan dengan itu.
·
"API" dapat digunakan untuk
mengacu ke antarmuka lengkap, satu fungsi, atau bahkan satu set berbagai API
yang disediakan oleh sebuah organisasi. Dengan demikian, cakupan makna biasanya
ditentukan oleh orang atau dokumen yang mengkomunikasikan informasi.
Web
API
Ketika
digunakan dalam konteks pengembangan web, biasanya sebuah API yang
didefinisikan set Hypertext Transfer Protocol (HTTP) pesan permintaan bersama
dengan definisi respon struktur pesan, biasanya dinyatakan dalam sebuah
Sementara "Web API" secara virtual sinonim untuk layanan web, tren
baru-baru ini (yang disebut Web 2.0) telah bergerak jauh dari Simple Object
Access Protocol (SOAP) layanan berbasis lebih langsung terhadap Negara
Representasi Transfer (REST) gaya komunikasi. Web API memungkinkan kombinasi
dari berbagai layanan ke aplikasi baru yang dikenal sebagai mashup.
Implementasi
POSIX
standard mendefinisikan sebuah API yang memungkinkan berbagai fungsi komputasi
umum harus ditulis sedemikian rupa sehingga mereka dapat beroperasi pada banyak
sistem yang berbeda (Mac OS X dan berbagai Berkeley Software Distribusi (BSD)
mengimplementasikan interface ini), namun, dengan menggunakan ini memerlukan
kompilasi ulang untuk setiap platform. API yang kompatibel, di sisi lain,
memungkinkan dikompilasi kode obyek untuk berfungsi tanpa perubahan apapun,
pada pelaksanaan sistem apapun yang API. Hal ini menguntungkan kedua penyedia
perangkat lunak (di mana mereka dapat mendistribusikan perangkat lunak yang ada
pada sistem baru tanpa memproduksi / mendistribusikan upgrade) dan pengguna (di
mana mereka mungkin lebih tua menginstal perangkat lunak pada sistem baru
mereka tanpa membeli upgrade), meskipun hal ini memerlukan berbagai perangkat
lunak secara umum pelaksanaan perpustakaan API diperlukan juga