DOCKER - VIRTUALIzatION



Nicky Irawan
PT. Akhdani Reka Solusi
nicky@akhdani.co.id

SIAPA SAYA?


Nicky Irawan
Alumni Teknik Informatika 
Institut Teknologi Bandung
PT. Akhdani Reka Solusi
Software Engineer


This is just my humble knowledge and opinion 
for my desire to learn and share
for a better future

ISI DAN TUJUAN SLIDE


Mengenal apa itu Docker
Pengaruh terhadap proses pengembangan aplikasi





"Choose the right tools for the right problems"
Anonymous

DOCKER


Docker adalah sebuah platform bagi developer dan sysadmin untuk membuat, mendeliver, dan menjalankan aplikasi terdistribusi.


Pengenalan


Silahkan lihat website docker terlebih dahulu

Untuk memudahkan membayangkan apa itu Docker,
Docker mirip dengan VM (Virtual Machine), 

Ada beberapa hal penting yang harus diperhatikan
  • Container 
  • Sandbox

Container


Aplikasi berjalan di atas sebuah container, 
tidak lagi bergantung pada jenis OS dari host

VM                                                    Docker

Perbedaan VM dan docker


Perbedaan utama antara VM dan Docker, terletak pada 

Docker tidak menggunakan Hypervisor dan Guest OS,
artinya ukuran image file jadi jauh lebih kecil

Docker container, yang berisi aplikasi yang kita buat serta dependensi terhadap aplikasi lain (infrastruktur), dapat saling berkomunikasi

ada masih banyak perbedaan lain yang menarik

Sandbox


Sandbox pada istilah keamanan komputer adalah mekanisme pemisahan  aplikasi atau program tanpa mengganggu host  (isolasi)

Contoh sederhana sandbox dapat ditemui 
di web page dalam browser, yang tidak boleh mengakses 
file di sisi klien

Pentingnya Sandbox


Sandbox sangat penting pada pengembangan aplikasi,
bagi developer, maupun bagi sysadmin

Developer
Menjamin aplikasinya dapat berjalan tanpa ada gangguan atas perubahan lingkungan host

Sysadmin
Menjamin host server yang dikelola tidak terganggu dan dapat melakukan update tanpa takut mengganggu aplikasi

Lalu, pengaruhnya?


Oke, sedikit-sedikit mulai ada pencerahan, lalu?
Apa efeknya untuk saya,

developer?
tester/quality control?
sysadmin?
perusahaan IT?

Berikut beberapa ide yang sempat terpikirkan

IDE 1 : SDLC


Tiap Software House biasanya memiliki SOP atau panduan dalam membuat perangkat lunak, misalnya

STAGING
Development -> Testing -> Production, dan variasi lain
+ Continuous Integration

Lalu, dimana Docker bisa berperan?

SDLC


Versi terakhir lolos tes, siap untuk production, 
masuk ke Docker!

Diharapkan dapat langsung berjalan pada server production, meskipun ada perbedaan environment

Begitu pula dengan developer serta tester, dapat langsung berfokus mengerjakan tugasnya tanpa harus memikirkan proses instalasi program lain yang dibutuhkan

IDE 2 : Implementasi saas


Pada proses implementasi SaaS (Software as a Service),
menyewakan aplikasi pada server di cloud,
ketika ada lebih dari 1 produk yang dijual, dan masing-masing produk membutuhkan environment yang berbeda-beda,
apakah harus diletakkan pada server yang berbeda?

Belum lagi ditambah, bagaimana jika menyewakan aplikasi, dengan beberapa versi sesuai dengan metode marketing yang diterapkan, butuh berapa banyak server, meskipun resource yang dimiliki sebenarnya cukup?

IMPLEMENTASI SAAS (2)


Dengan adanya Docker, tiap produk dapat dikemas dengan lebih mudah, bahkan bisa dikustomisasi untuk tiap klien, atau jika tidak perlu kustomisasi, maka source aplikasi dapat diletakkan di host server, lalu dibuat link dengan cara mount ke container

Belum lagi kekhawatiran, untuk migrasi atau pindah host server, dengan dibuat dalam bentuk image, akan lebih mudah untuk pemindahan, hal ini juga yang menyebabkan Docker menjadi teknologi yang mengguncang dunia cloud

implementasi SAAS (3)


Contoh implementasi arsitektur

IMplementasi saas


Docker dapat berisi aplikasi + infrastrukturnya, 
bisa juga diisi database,  antar docker dapat berkomunikasi,

Selain itu, bila masuk ke dalam docker, apabila metode penjualan berubah, dapat dideploy di server klien tanpa takut perbedaan environment akan mengganggu kinerja aplikasi

IDE 3 : Offline distributed apps


Ada banyak sekali teknologi baru yang mendukung pembuatan aplikasi yang langsung dapat berjalan di banyak tempat, (desktop-mobile, atau multi OS)

Apache Cordova, NodeJS, Node-webkit

Docker container dapat berperan dalam pendistribusian aplikasi sehingga aplikasi dapat berjalan sebagaimana yang diharapkan meskipun bisa ada perbedaan lingkungan

Distributed apps


Salah satu keuntungan lain yang mungkin dapat diperhitungkan adalah, pengamanan kode aplikasi (?), misalnya aplikasi web, yang tidak dibutuhkan compiler

Hal lain adalah, proses instalasi aplikasi lain yang dibutuhkan sudah dibundel sehingga tidak merepotkan pengguna

Sekian


Demikian review, opini, dan ide tentang Docker dan pengaruhnya bagi dunia software engineering,




*lanjut ngoprek lagi*
Made with Slides.com