Belajar Docker.

Apa itu Docker ?

Docker adalah suatu project open source yang memungkinkan kita untuk membuat sebuah wadah atau container, yang berisikan suatu aplikasi, yang sudah kita konfigurasi, kita kemas, dan kita dapat menjalankannya.

Dalam bahasa yang lebih sederhana adalah, coba teman teman membayangkan tumpukan kontainer peti kemas di pelabuhan laut. Ada kontainer warna biru untuk database Postgresql, ada kontainer warna hijau untuk web server Apache + Php, ada kontainer warna kuning untuk database MySQL, ada kontainer warna merah untuk Bisnis Intelegence Pentaho, ada kontainer warna oranye untuk Django + Python, dan banyak lagi kontainer kontainer yang lainnya.

Nah, masing masing kontainer itu memiliki konfigurasi yang berbeda beda, misalnya ada kontainer warna biru (Postgresql) memerlukan konfigurasi database replikasi Bucardo. Kontainer yang lain tidak perlu konfigurasi Bucardo ini, tetapi memerlukan konfigurasi yang lain, misalnya kontainer warna merah (BI Pentaho) memerlukan konfigurasi JAVA SDK, yang mana konfigurasi ini juga tidak diperlukan di kontainer yang lainnya.

Kontainer kontainer tersebut berada di suatu pelabuhan peti kemas, siap untuk dikirimkan menggunakan kapal laut. Managemen pelabuhan sudah mempersiapkan dokumen tata cara pengiriman kontainer kontainer berjenis DOCKER itu. Syahbandar yang akan melakukan bongkar muat kontainer sesuai permintaan dari kapal yang akan berlabuh.

Kemudian datang sebuah kapal pengangkut peti kemas milik seorang web programmer yang memiliki kemampuan mengangkut kontainer berjenis DOCKER. Syahbandar di pelabuhan kemudian membuat duplikasi kontainer warna hijau (Apache + PHP) dan warna kuning (MySQL) dan meletakkannya ke dalam kapal pengangkut ini.

Tak lama berselang, datanglah kapal pengangkut peti kemas milik seorang database administrator dan dia memerlukan kontainer warna biru (PostgreSQL) dan kontainer warna kuning (MySQL). Syahbandar pelabuhan segera melakukan duplikasi terhadap kontainer kontainer yang di perlukan tersebut.

Nah, kedua kapal ini kemudian melanjutkan perjalanan mengarungi samudra yang luas. Pada suatu saat mereka akan berhenti di pelabuhan tujuan, dan kemudian mereka menurunkan kontainer yang mereka bawa, atau menduplikasi kontainer sebelum meletakkannya di pelabuhan tujuan, atau membawa kontainer yang baru ke dalam kapal.

Dari penjelasan diatas, kita dapat menganalogikan sebagai berikut, bahwa pelabuhan atau kapal adalah suatu platform DOCKER, dimana kita bisa membawa bermacam macam kontainer didalamnya. Suatu Pelabuhan dapat diartikan sebagai suatu Server Komputer, dan suatu kapal dapat diartikan sebagai suatu adalah laptop dari seorang software engineer atau laptop dari seorang system engineer. SuatukKontainer dapat diartikan sebagai suatu applikasi dengan konfigurasi librarynya.

Semoga penjelasan sederhana diatas dapat membantu teman teman memahami mengenai apa itu Docker, dan apa itu kontainer, dan bagaimana penerapan penggunaannya.

Bagaimana pendapat teman teman ?

RedHat akan mengganti MySQL dengan MariaDB

  Collin Charles melaporkan dari blognya bahwa Red Hat Enterprise Linux 7 akan melepas database MySQL dan menggantinya dengan database MariaDB. Pengumuman ini dikeluarkan pada #rhsummit yang sedang berlangsung di xxx.

Sejak MySQL di akuisisi oleh ORACLE pada tahun 2010, para pengembang MySQL memisahkan diri dan membuat versi terbuka dan mandri yang di beri nama MariaDB. MariaDB masih kompatible dengan MySQL, sehingga jikalau applikasi kita beralih dari database MySQL ke MariaDB dapat langsung berjalan.

Kabar ini tentu saja akan menggembirakan para pengguna MariaDB dan membantu para pemakai MySQL yang risau setelah pengakuisisian MySQL oleh Oracle. Termasuk saya tentunya, bagaimana dengan anda ?

Defrag Database dengan metode CTAS

  Artikel sebelumnya menjelaskan perlu tidaknya kita melakukan defrag database dan untuk artikel berikut akan menjelaskan bagaimana melakukan defrag Database secara manual. Cara ini saya pelajari waktu masih menggunakan Oracle 7.4 dan cukup efektif untuk menjaga kesehatan database. Cara ini juga dapat di pergunakan di database yang lain seperti PostgreSQL, MySQL, MS-SQL atau RDBMS lainnya. CTAS adalah singkatan dari Create Table As Select.

Berikut adalah langkah langkah untuk melakukan defrag tabel dengan memakai perintah database Oracle / PostgreSQL :

  • Tentukan tabel yang menurut anda perlu di defrag.
    • Setiap database memiliki cara bagaimana menentukan tabel yang perlu di defrag.
    • PostgreSQL dan MySQL menggunakan script sementara MS-SQL dan Oracle memiliki dynamic view untuk mendeteksinya.
  • Cek primary key dari tabel tersebut, atau jika tidak memilikinya pakailah unique index. Cek urutan kolomnya.
  • Cek trigger dari tabel tersebut dan siapkan script untuk create ulang.
  • Buat tabel baru dengan perintah :

sql> create table new_table as select * from old_table order by col_1, col_2, col_3 ;

    • Disini kita membuat tabel yang baru dan data yang ada kita urutkan sesuai dengan urutan kolom di primary key yang dimiliki tabel tersebut
    • Dengan cara ini kita sudah membuat tabel dengan blok data di filesystem terurut mulai dari awal record hingga akhir record
  • Drop tabel yang lama beserta semua object yang mengikutinya dengan perintah :

sql> drop table old_table cascade;

  • create table baru dengan perintah :

sql> create table old_table as select * from new_table;

    • di MS-SQL dan My-SQL dapat menggunakan perintah select * into old_table from new_table;
    • di PostgreSQL dapat menggunakan perintah alter table new_table rename to old_table;
  • Recreate ulang semua constraint dan index nya, dengan perintah :

sql> alter table old_table add constraint old_table_pk primary key ….. ;

sql> alter table old_table add constraint old_table_ux unique …..;

sql> create index old_table_ix on old_table ( … );

  • Analyze table dan index nya untuk membuat data statistic terhadap table dan index yang baru buat ulang ini

sql> analyze table old_table;

sql> analyze index old_table_pk;

sql> analyze table old_table_ux;

  • Buat ulang trigger dari tabel yang lama.
  • Drop table yang baru

sql> drop table new_table;

  • Done.
Seperti yang kita lihat bersama, teknik yang dipergunakan adalah menggunakan create table as select. Teknik ini dapat dipergunakan untuk semua RDBMS.
Hal hal yang perlu diperhatikan pada saat menggunakan teknik ini adalah :
  • Applikasi atau user tidak diperkenankan mengakses tabel yang akan di defrag.
  • Jikalau perlu matikan dulu akses ke database server.
  • Jangan lupa untuk selalu mengakhiri prosedur ini dengan membuat statistik terhadap tabel yang baru dibuat. Hal ini akan membantu database dalam mengeksekusi perintah query.

Bagaimana pendapat anda ?

Perlukah Database di Defrag ?

  Untuk membuat Database agar selalu berjalan dengan lancar merupakan salah satu tugas dari Database Administrator (DBA), terutama di area perawatan database. Performance Database dapat melambat seiring berjalannya waktu, dan dapat disebabkan oleh berbagai hal mulai dari keterbatasan memory, media penyimpanan sampai pada penambahan jumlah user.

Salah satu hal yang perlu di perhatikan oleh DBA adalah data fragmentation. Data fragmentation adalah kondisi dimana data tersimpan di dalam blok data yang tidak berurutan tetapi tersebar di berbagai tempat. Bagaimana data tersebut disimpan bergantung pada filesystem dari sistem operasi yang dipergunakan.

Apakah anda pernah memakai software defragmentation ? Software ini sangat populer dikalangan para pengguna sistem operasi Windows. Saya sering menggunakan software ini dikala masih menggunakan sistem operasi Windows 95 dan XP. Software ini akan mengatur, mengkelompokkan, dan mengurutkan kembali file file yang ada di dalam media penyimpanan. Hasilnya performa sistem operasi menjadi lebih baik dan lebih cepat dibandingkan sebelum di lakukan defrag.

Hal yang sama berlaku juga untuk Database. Mengapa ? karena cara database menyimpan data bergantung pada filesystem yang dipergunakannya. Sehingga jika file dapat ter-fragmentasi tentu Database juga dapat ter-fragmentasi.

Apakah semua Database akan ter-fragmentasi ? tentu saja, seiring berjalannya waktu dan pemakaian database tersebut. Semakin banyak operasi insert, delete, update terhadap suatu tabel di dalam database, semakin besar kemungkinan tabel dan indexnya mengalami fragmentasi. Ini adalah hal yang normal, wajar saja, dan pasti akan dialami. Sehingga diperlukan proses untuk melakukan defragmentation terhadap database.

Secara umum, database yang telah didefrag memiliki kecepatan baca atau query atau operasi select akan lebih baik. Tools yang dipergunakan umumnya berupa script database. Ada juga software buatan pihak ketiga yang khusus melakukan defrag terhadap database.

Bagaimana dengan anda, sudahkah anda melakukan defrag terhadap database anda ?

PostgreSQL menjadi Default Database di Mac OS X Lion Server

Wow, judul diatas sudah langsung menceritakan apa yang dimaksud dalam posting kita kali ini. Sistem operasi yang terbaru dari Apple yaitu Mac OS/X Server Lion menggunakan Postgresql sebagai database defaultnya dan menggantikan MySQL. Artikelnya dapat dibaca disini.

  Wow, judul diatas sudah langsung menceritakan apa yang dimaksud dalam posting kita kali ini. Sistem operasi yang terbaru dari Apple yaitu Mac OS/X Server Lion menggunakan Postgresql sebagai database defaultnya dan menggantikan MySQL. Artikelnya dapat dibaca disini.

Untuk saat ini, Apple belum menyediakan GUI-Tool yang dipergunakan untuk memanage PostgreSQL, semuanya masih memakai console. Mungkin ini akan menyulitkan untuk rekan rekan yang tidak terbiasa bekerja dengan PostgreSQL melalui console. Tidak apa apa menurut saya, fase awal sudah cukup bagus, semoga di versi berikutnya GUI-Tools-nya sudah tersedia, mungkin PGAdmin III.

Saya belum pernah menggunakan Mac OS X, sehingga bagaimana MySQL dipergunakan dan bagaimana PostgreSQLmenggantikannya juga masih belum buat saya. Tetapi berita ini tentu mengagetkan beberapa pihak, termasuk saya. Semoga kedepannya makin banyak applikasi yang menggunakan MySQL beralih ke PostgreSQL.

Facebook, MySQL, dan 4000 Horisontal Partisi

4000 shard Instance of MySQL, wow cool

  Michael Stonebraker menulis dalam artikelnya yang berjudul Facebook trapped in MySQL ‘fate worse than death’ tentang bagaimana database MySQL dipergunakan oleh FaceBook. Saya sangat salut dengan para engineernya Facebook dalam menggunakan database MySQL. Bayangkan 4000 Shard Instance database MySQL dipergunakan bersama sama dan 9000 Instance MemCache.

Wow, 4000 shard instance ? apa itu shard ? shard itu dalam arti lain adalah “horisontal partition”, artinya data yang dimiliki dipisah kedalam 4000 Instance MySQL. Nah pemisahannya ini dilakukan secara logika,developer Facebook yang menentukan data A pergi ke Instance MySQL yang mana, data B pergi ke instance MySQL yang mana. Proses pemisahaan ini sangatlah rumit, parameter yang dipergunakan mungkin juga sangat banyak dan beragam. Pekerjaan besar untuk developernya.

Bayangkan pula, 4000 mesin itu bisa terletak di belahan dunia yang lain, mungkin saja ada yang di amerika, singapura, eropa, china dan sebagainya. Tentu saja mereka memiliki cara untuk menyatukan kembali data tersebut, detailnya saya juga kurang tahu.Tapi saya yakin prosesnya juga rumit.

Di artikel tersebut juga disebutkan, menurut informasi terakhir tahun 2008, Facebook memiliki 1800 server khusus hanya untuk MySQL dan 805 server untuk MemCache. Wow, menakjubkan. Tentu saja DBAnya akan bekerja keras untuk memaintain database server dengan jumlah sebanyak itu.

Kembali ke artikel yang di tulis pak michael, dia mengatakan, dengan jumlah database MySQL yang sangat banyak dan hanya bisa melakukan “horisontal partition” untuk scalabilitasnya, maka Facebook akan mengalami kesulitan jika arsitektur seperti ini di pertahankan. Mengapa ? karena untuk melakukan ini semua itu sangat kompleks, ribet, dan memusingkan.

Itulah sebabnya, pak michael menyarankan Facebook untuk memindahkan databaseny dari MySQL ke database yang lain yang dapat melakukan scalabilitas dengan benar. Beliau menyarankan untuk berpindah ke database dengan konsep NewSQL seperti database VoltDB, NimbusDB, dan GenieDB. Konsep ini berbeda dengan konsep NoSQL yang menurut beliau masih merupakan database MySQL dalam bentuk yang lain.

Sudah beberapa hari ini pendapat dari pak michael ini mengundang perdebatan diantara para developer database. Slashdot, salah satu website rujukan para developer, ikut pula menjadi ramai. Topik ini pun berkembang menjadi ajang membahas solusi apa yang tepat untuk Facebook. Menariknya para developer ini juga menyarankan untuk memakai PostgreSQL.

Apapun solusi yang ditawarkan, bagaimana bentuk pelaksanaannya, semua developer setuju dengan pendapat pak michael, Facebook harus segera “menulis ulang” applikasinya dan menggunakan database yang baru