Keunggulan Docker Sebagai Containerized Platform

Docker merupakan platform yang sedang populer dikalangan developer software dan sistem administrator. Salah satu keunggulan docker adalah memungkinkan perusahaan dapat membuat software lebih cepat, mengoptimalkan infastruktur teknologi informasi, dan akhirnya memberikan solusi efisiensi signifikan bagi para pemakainya.

keunggulan docker pada lingkungan virtual

Apa itu Docker ?

Docker adalah sebuah platform terbuka bagi para pengembang dan sistem administrator untuk membangun, menyebarkan, dan menjalankan aplikasi terdistribusi, baik pada laptop, virtual data center, atau cloud data center.

Sistme kontainer Docker membungkus bagian-bagian perangkat lunak dalam filesystem lengkap yang berisi semua hal yang diperlukan untuk menjalankan: kode, runtime, sistem tools, sistem perpustakaan – apa pun yang dapat diinstal pada server. Hal ini menjamin bahwa perangkat lunak akan selalu berjalan sama, terlepas dari lingkungannya. Ini merupakan salah satu keunggulan docker yang utama.

Kontainer berjalan pada sebuah mesin tunggal yang berbagi pakai sistem operasi kernel yang sama, dan dapat dimulai secara langsung serta menggunakan lebih sedikit RAM. Image (sekumpulan file dan folder) dibangun dari filesystem berlapis dan berbagi file umum, membuat penggunaan disk dan image download jauh lebih efisien.

Dengan keunggulan Docker yang ada, Docker sudah banyak di adopsi oleh perusahaan besar dan beberapa platform lainnya seperti Nginx, MySQL, Postgres, CAdvisor, Ubuntu, MongoDB, dan sebagainya.

Beberapa Kenggulan Docker Sebagai Platform Kontainer

Sistem Kontainer merupakan solusi terhadap masalah bagaimana untuk menjalankan perangkat lunak secara andal ketika pindah dari satu lingkungan komputasi ke lingkungan yang lain. Ini dapat berarti berpindah dari laptop pengembang untuk lingkungan tes, dari lingkungan pementasan ke dalam produksi dan mungkin dari perangkat fisik di data center untuk mesin virtual dalam private cloud atau public cloud.

Docker merupakan salah satu proyek open source yang semakin populer, dimana anda dimungkinkan untuk menyebarkan aplikasi ke dalam sebuah kontainer, serta menambahkan lapisan abstraksi. Dalam keadaan konstan pematangan, manfaat menggunakan Docker dapat ditingkatkan secara teratur.

Berikut beberapa keunggulan docker:

  • Dapat melakukan Pengujian dan Distribusi Aplikasi secara Terus-menerus

    Docker telah banyak menarik perhatian para developer di seluruh dunia karena kemampuan dalam menghadirkan konsistensi di seluruh lingkungan sistem operasi. Selalu ada perbedaan kecil antara lingkungan pengembangan dan aplikasi yang sudah rilis, kecuali jika anda memiliki lingkungan repositori sendiri secara pribadi dengan pemeriksaan ketat di tempat.

    Perbedaan-perbedaan ini mungkin karena versi paket yang berbeda atau dependensi. Namun demikian, Docker dapat mengatasi kesenjangan tersebut dengan memastikan lingkungan yang konsisten dari pembangunan untuk produksi. Kontainer Docker dikonfigurasi untuk memelihara semua konfigurasi dan dependensi internal. Tujuannya, agar anda dapat menggunakan kontainer yang sama pada taham pengembangan hingga produksi software dan memastikan tidak ada perbedaan atau intervensi manual.

    Dengan wadah atau kontainer Docker, anda juga dapat memastikan bahwa pengembang tidak perlu lingkungan produksi yang mengatur secara identik. Sebaliknya, mereka dapat menggunakan sistem mereka sendiri untuk menjalankan kontainer Docker pada VirtualBox.

    Keunggulan Docker lainnya adalah bahwa dapat menjalankan kontainer yang sama di Amazon EC2. Jika memang perlu melakukan upgrade selama siklus rilis produk ini, anda dapat dengan mudah membuat perubahan yang diperlukan untuk kontainer Docker, menguji mereka, dan menerapkan perubahan yang sama untuk kontainer yang ada.

Ini semacam fleksibilitas yang merupakan keuntungan utama menggunakan Docker.

Sama seperti standar proses penyebaran dan integrasi, keunggulan Docker ini memungkinkan siapa saja untuk membangun, menguji dan melepaskan image yang dapat digunakan di beberapa server. Bahkan jika sebuah patch keamanan baru tersedia, proses tetap sama. Anda dapat menerapkan patch, menguji dan melepaskannya ke produksi.

  • Platform Multi-Cloud

    Salah satu manfaat terbesar Docker adalah portabilitas. Selama beberapa tahun terakhir, semua penyedia komputasi awan terbesar, termasuk Amazon Web Services (AWS) dan Google Compute Platform (GCP), telah merangkul Docker dan menambahkan dukungan individu.

    Kontainer Docker dapat dijalankan dalam Amazon EC2 Instance dan Google Compute Engine, Server Rackspace atau VirtualBox, asalkan host OS mendukung Docker. Jika hal ini terjadi, sebuah kontainer yang berjalan pada Amazon EC2 Instance dapat degan mudah di porting antar lingkungan, seperti juga pada VirtualBox yang dapat mencapai konsistensi dan fungsi serupa. Hal ini memberikan tingkat abstraksi dari lapisan infrastruktur.

    Selain AWS dan GCP, Docker bekerja sangat baik dengan berbagai penyedia IaaS lain seperti Microsoft Azure, dan OpenStack, dan dapat digunakan dengan berbagai manajemen konfigurasi seperti Chef, Puppet, dan Ansible.

  • Standarisasi Lingkungan dan Kontrol Versi

    Seperti dibahas di atas, kontainer Docker memastikan konsistensi di beberapa siklus pengembangan dan rilis, standarisasi lingkungan. Di atas semua itu, wadah Docker bekerja seperti repositori GIT, yang memungkinkan untuk melakukan perubahan ke Image Docker dan mengendalikan versi.

    Misalkan, dalam melakukan upgrade komponen yang memecah seluruh lingkungan. Hal ini sangat mudah untuk dilakukan rollback ke versi sebelumnya melalui image Docker anda. Keseluruhan proses ini dapat diuji dalam beberapa menit. Bila dibandingkan dengan proses bakcup dan pembuatan image di VM, Docker bekerja jauh lebih cepat, dan memungkinkan untuk dengan cepat membuat pengulangan dan mencapai redundansi. Selain itu, peluncuran image Docker bisa secepat proses menjalankan mesin.

  • Isolasi

    Docker memastikan aplikasi dan sumber daya yang terisolasi serta terpisah. Beberapa bulan yang lalu, Gartner menerbitkan sebuah laporan yang menyatakan kontainer Docker sebaik hypervisors VM dalam hal sumber daya untuk mengisolasi, tapi masih ada pekerjaan yang harus dilakukan dalam hal manajemen dan administrasi.

    Pertimbangkan skenario di mana anda menjalankan beberapa aplikasi pada VM. Aplikasi ini dapat berupa perangkat lunak kolaborasi tim (misalnya, RedBooth), Software pelacakan maslaah perangkat lunak (misalnya, Jira), Sistem manajemen identitas terpusat (misalnya, Crowd) dan sebagainya. Melihat semua aplikasi terebut berjalan pada port yang berbeda, anda harus dapat memanfaatkan meningkatkan aplikasi tersebut pada Apache dan Nginx sebagai reverse proxy.

    Sejauh ini, semuanya dapat dalam kondisi yang baik, tetapi ketikat lingkungan tersebut bergerak maju, anda juga akan perlu mengkonfigurasi sistem manajemen konten (misalnya, Alfresco) ke lingkungan yang ada. Ingatlah bahwa hal ini memerlukan versi yang berbeda dari Apache Tomcat, yang akan menyebabkan masalah. Dalam rangka untuk memperbaiki ini, anda dapat memindahkan aplikasi yang ada untuk versi lain dari Tomcat atau menjalankan sistem manajemen konten Anda (Alfresco) pada versi yang ada saat ini.

    Untungnya, dengan Docker, anda tidak perlu melakukan hal ini. Docker memastikan setiap kontainer memiliki sumber daya sendiri yang terisolasi dari kontainer lainnya. Anda dapat memiliki berbagai kontainer untuk aplikasi terpisah yang berjalan sepenuhnya pada tumpukan (stack) yang sama sekali berbeda.

    Selain dari itu, untuk dapat secara efektif menghapus aplikasi dari server merupakan hal yang cukup sulit dan dapat menyebabkan konflik. Namun dengan keunggulan Docker, dapat membantu dalam memastikan penghapusan aplikasi yang bersih, karena setiap aplikasi berjalan pada kontainer tersendiri. Jika suatu aplikasi tidak diperlukan lagi, anda hanya harus menghapus kontainer. Cara seperti ini tidak akan meninggalkan file-file sementara atau konfigurasi pada OS host Anda.

    Di atas manfaat tersebut, Docker juga memastikan bahwa setiap aplikasi hanya menggunakan sumber daya (CPU, memori dan ruang disk) yang telah ditetapkan kepada mereka. Sebuah aplikasi tertentu tidak akan menguras semua sumber daya yang tersedia, yang biasanya akan menyebabkan penurunan kinerja atau downtime yang lama untuk aplikasi lainnya yang sama-sama dijalankan.

  • Keamanan

    Dari sudut pandang keamanan, Docker memastikan bahwa aplikasi yang berjalan pada wadah yang benar-benar terpisah dan terisolasi dari satu sama lain, memberikan kontrol penuh atas majemen dan arus lalu lintas. Kontainer Docker tidak dapat melihat ke dalam proses yang berjalan di dalam kontainer lain. Dari sudut pandang arsitektur, setiap kontainer dapat mengatur sumber daya sendiri mulai dari pengolahan hingga ke jaringan.

    Sebagai sarana pengetatan keamanan, Docker menggunakan OS host mount point sensitif (misalnya, ‘/ proc’ dan ‘/ sys’) sebagai read-only mount point dan menggunakan filesystem copy-on-write untuk memastikan kontainer tidak bisa membaca data satu sama lain.

    Pendekatan ini juga membatasi sistem panggilan untuk OS host anda dan bekerja dengan baik dengan SELinux serta AppArmor. Selain itu, Docker image yang tersedia pada Docker Hub memiliki tanda-tangan digital untuk memastikan keaslian. Karena kontainer Docker terisolasi dan sumber daya yang dapat dibatasi, bahkan jika salah satu aplikasi anda terkena hack, hal tersebut tidak akan mempengaruhi aplikasi yang berjalan pada kontainer Docker lainnya.

Kesimpulan:

Docker dapat meng-optimalisasi infrastruktur IT perusahaan anda dan juga meningkatkan kinerja pada programer serta sistem administrator. Dengan sistem kontainer, seluruh pekerjaan pebuatan aplikasi, modul, monitoring, serta manajemen infrastruktur dapat lebih cepat, efisien dan lebih aman.

Dalam hubungannya dengan komputasi awan, manfaat yang disebutkan di atas menunjukkan bagaimana Docker adalah sebuah platform open source yang efektif.

Perusahaan di Indonesia semakin banyak yang mengadopsi Docker, terutama para penyedia jasa teknologi informasi dan perusahaan besar yang memiliki data center sendiri. Demikian diharapkan untuk instansi pemerintahan, keunggulan docker merupakan solusi penghematan anggaran belanja negara.

Keterangan Istilah:
  • Mount point adalah sebuah direktori dalam sebuah sistem file dimana informasi tambahan mengenai secara logik terhubung ke lokasi penyimpanan diluar root sistem operasidan partisi.
  • Image adalah sekumpulan file dan folder yang merupakan hasil duplikasi dari file dan folder asli, termasuk struktur file dan folder pada sistem operasi. Image serting berisi file yang ditambahkan oleh sistem administrasi Configuration Manager.

Arti Object Storage dan Perbedaannya Dengan Block Storage

Object Storage dan Perbedaannya Dengan Block Storage

Object storage merupakan penyimpanan berbasis objek. Suatu istlah generik yang menggambarkan pendekatan untuk menangani dan memanipulasi unit diskrit penyimpanan yang disebut dengan “objek”.

Seperti file, objek juga berisi data dan bedanya dengan file – objek tidak tersusun dalam hirarki. Setiap objek ada pada tingkatan yang sama dalam ruang alamat (flat adress) yang disebut seagai kolam penyimpanan (storage pool) dan satu objek tidak dapat ditempatkan bersamaan di dalam objek yang lain.

Identifikasi Unik Pada Object Storage

Baik file dan objek memiliki metadata yang terkait dengan data yang dikandungnya, tetapi objek memiliki karakteristik melalui metadata lanjutan. Setiap objek diberi identifikasi unik yang memungkinkan server atau pengguna akhir untuk mengambil objek tanpa perlu mengetahui lokasi fisik dari data. Pendekatan ini berguna untuk mengotomatisasi dan merampingkan penyimpanan data dalam lingkungan komputasi awan (cloud computing).

Teknik penyimpanan objek (object storage) sering dianalogikan dengan layanan parkir di sebuah restoran kelas atas. Ketika seorang pelanggan menggunakan parkir valet, terjadi pertukaran kunci mobilnya dengan tanda terima kartu valet. pelanggan tidak tahu di mana mobilnya akan diparkir atau berapa kali mobilnya dipindahkan petugas parkir valet sementara pelanggan sedang makan. Dalam analogi ini, pengidentifikasi unik merepresentasikan kartu parkir valet.

Perbedaan Object Storage dengan Block Storage

Block storage mungkin memberikan kinerja yang lebih baik, tapi metadata granular atau yang lebih detail dan mendekati skalabilitas tak terbatas membuat object storage berada pada tingkat manfaat yang sama. Penggunaan file storage dan block storage telah didefinisikan dengan baik dan digunakan selama beberapa dekade. Sebuah jenis baru dari penyimpanan yang tersedia di pasar sekarang adalah penyimpanan objek (object storage).

Kemudian timbul pertanyaan yang paling sering ditanyakan “Apa bedanya object storage? Kapan saya harus menggunakannya? Apa kasus kegunaan yang menjamin hal tersebut? Tahapan apa yang saya harus ambil ke infrastruktur TI yang spesifik ?

Meskipun topik ini banyak telah ditulis, pertanyaan-pertanyaan tersebut terus muncul. Berikut adalah cara memahami perbedaan object storage dengan block storage.

Memahami File Storage dan Block Storage

Pertama-tama, mari kita kembali ke file storage dan penyimpanan blok untuk lebih memahami tentang penyimpanan objek.

File Storage

Seperti yang telah diketahui, file storage biasanya memiliki sistem file terstruktur seperti pada hardisk di PC atau Notebook baik NTFS maupun FAT, atau lebih hirarkis mengatur file sehingga file individu dapat ditemukan dengan cara mengarahkan jalan menuju ke file target.

Bahwa atribut tertentu – informasi yang mungkin menjelaskan file dan isinya, seperti pemiliknya, siapa yng dapat mengakses file, dan ukurannya – yang mudah disimpan sebagai metadata dalam sistem file. Dan seperti kita ketahui mengenai Network Attached Storage (NAS) yang merupakan cara terbaik untuk berbagi file dengan aman di kalangan pengguna dalam sebuah jaringan komputer.

NAS bekerja secara lokal pada LAN tetapi tidak dapat diandalkan dalam WAN (Wide Area Network). Dan mengelola satu (atau sejumlah kecil) block NAS adalah perkara mudah, tetapi untuk mengelola ratusan NAS dapat menjadi mimpi buruk.

Sistem file bertanggung jawab untuk penempatan data pada block NAS, serta menerapkan file sharing dengan mengunci dan membuka file yang diperlukan. Dan terakhir, sistem file bekerja dengan baik dengan jumlah ratusan ribu, dan mungkin jutaan, tetapi sistem file storage tidak dirancang untuk menangani miliaran file. Keterbatasan ini mungkin banyak terlewatkan oleh para konsumen produk teknologi informasi karena tidak diuji pada tingkat pemakaian tinggi.

Singkatnya, sistem penyimpanan file (file storage) masih layak untuk kebutuhan berbagi file secara lokal dan jika file serta metadata terkait memiliki jumlah terbatas. Tapi dalam situasi yang tepat, NAS memberikan kinerja yang sangat baik untuk berbagi file.

Block Storage

Blok penyimpanan juga dapat dipahami dengan baik melalui artikel sebelumnya mengenai teknik penyimpanan block storage. Kita tahu blok adalah sepotong data, dan ketika blok yang sesuai digabungkan, hal tersebut membuat sebuah file. Sebuah blok memiliki alamat, dan aplikasi mengambil blok dengan membuat panggilan SCSI ke alamat tersebut. Ini adalah cara yang sangat mikroskopis dalam mengendalikan penyimpanan.

Tidak seperti pada kasus NAS, aplikasi memutuskan dimana data ditempatkan dan bagaimana mengatur penyimpanan. Bagaimana blok digabungkan atau diakses ditentukan dengan aplikasi. Tidak ada metadata penyimpanan yang diasosiasikan dengan blok, kecuali untuk alamat. Dengan kata lain, blok hanya sepotong data yang tidak memiliki deskripsi, tidak ada identifikasi dan tidak ada pemilik.

Blok dapat mulai berarti ketika blok di gabungkan degan blok lainnya melalui suatu aplikasi. Dalam situasi yang tepat, pemberian tingkat kontrol granular atau terpercinci ke aplikasi memungkinkan untuk mengekstrak kinerja terbaik dari deret penyimpanan yang diberikan. Ini adalah alasan mengapa penyimpanan blok sangat populer untuk aplikasi kinerja-terpusat, sebagian besar transaksional dan berorientasi database.

Namun, jika jarak antara aplikasi dan penyimpanan terlalu jauh maka hal tersebut dapat mengurangi kinerja storage karena latency, sehingga sebagian besar penyimpanan blok digunakan secara lokal.

Karakteristik Object Storage

Berbekal definisi tersebut, mari kita sekarang melihat teknik penyimpanan objek. Pertama-tama, sebuah objek didefinisikan sebagai data (biasanya file) bersama dengan semua metadata nya, semua terbungkus sebagai objek. Objek ini diberi ID yang biasanya dihitung dari isi benda (baik berkas dan metadata) itu sendiri.

Sebuah objek selalu diambil oleh aplikasi dengan menghadirkan ID objek ke objek penyimpanan. Tidak seperti file dan sistem file, objek disimpan dalam struktur datar. Anda memiliki kolam objek, dan anda hanya meminta untuk objek tertentu dengan menghadirkan ID objeknya.

Objek dapat bersifat lokal atau terpisah secara geografis, dan karena mereka berada dalam ruang alamat datar, mereka diambil dengan cara yang sama. Object storage tidak terbatas untuk semua jenis atau jumlah metadata.

Jika anda mau memilih, anda dapat menetapkan metadata seperti pada : jenis aplikasi dimana objek dikaitkan, prioritas aplikasi, tingkat perlindungan data yang ingin ditetapkan untuk objek, replikasi ke situs atau lokasi penyimpanan lain, kapan objek harud dipindahkan ke tingkat yang penyimpanan yang berbeda atau untuk geografi yang berbeda dan kapan objek harus dihapus.

Jenis metadata tersebut berjalan di luar daftar kontrol akses yang digunakan dalam sistem berkas. Fakta bahwa penyimpanan objek memungkinkan fleksibilitas bagi pengguna untuk menentukan metadata yang mereka inginkan secara unik untuk obyek penyimpanan. Anda dapat mulai melihat bagaimana hal tersebut membuka sebuah peluang yang luas untuk analisis yang sebelumnya tidak pernah di impikan untuk dapat dilakukan.

Berdasar karakterisok Penyimpanan Objek tersebut di atas, bahwa kinerja bukan menjadi ciri utama dari penyimpanan objek. Tetapi jika anda ingin cara sederhana untuk mengelola penyimpanan dan layanan yang mencakup lintas geografi (WAN) dan keleluasan dalam memberikan metadata, penyimpanan objek adalah cara tebaik untuk diterapkan.

Ada karakteristik lain dari penyimpanan objek yang penting untuk dipahami sifatnya. Tidak seperti file atau blok, anda mengakses objek menggunakan antarmuka pemrograman atau aplikasi HTTP-based REST. Ini adalah proses sederhana seperti Ambil, Letakkan, Hapus dan beberapa proses lainnya.

Kesimpulan:

Karena banyaknya pengembangan konsep penyimpanan objek yang terjadi di dalam Web 2.0, banyak perusahaan berusaha untuk membangun infrastruktur penyimpanan yang lebih besar pada biaya terendah. Sebagian besar penyimpanan objek didasarkan pada cluster server komoditas dengan penyimpanan langsung yang terpasang di internal.

Memang ada pengecualian untuk ini, terutama seperti pada DataDirect Networks, dan anda dapat menggunakan array RAID yang mahal untuk membangun sebuah penyimpanan objek, tetapi aturan praktis adalah dengan menggunakan hardware komoditas (umum dan ekonomis). Sehingga skalabilitas dapat lebih mudah melalui penambahan node tambahan.

Perlindungan data umumnya dilakukan dengan mereplikasi objek untuk satu atau lebih node di cluster, tetapi ada juga pengecualian untuk ini – misalnya, Cleversafe dan EMC Atmos keduanya menggunakan penghapusan secara coding untuk melindungi data.

Kesederhanaan proses Object Storage merupakan keunggulan, tetapi mungkin membutuhkan perubahan konfigurasi pada aplikasi untuk dapat menggunakan SCSI, CIFS atau NFS. Disinilah letak masalahnya.

Ada cara untuk melakukannya, tapi pendekatan terbersih adalah dengan mengubah kode aplikasi untuk melakukan panggilan langsung berbasis REST. Jadi, singkatnya, sebuah Object Storage mudah untuk dikelola, dapat di turun naikkan skalanya hingga tak terbatas, dapat mengatasi masalah keterbatasan jarak geografis dan dapat membawa satu banyak metadata, tetapi umumnya-kinerja lebih rendah dan mungkin memerlukan perubahan pada kode aplikasi.

Object storage banyak digunakan oleh para provider cloud yang menawarkan layanan on demand.