Perbandingan Implementasi Teknologi Big Data On Premise dan Managed Service

Andi Nugroho Dirgantara
Pujangga Teknologi
Published in
8 min readNov 14, 2018

--

Pada tulisan kali ini penulis akan menjabarkan perbandingan beberapa teknologi big data dari sudut pandang pengelolaan infrastruktur yakni on premise (manajemen infrastruktur dilakukan pada mesin yang dikelola sendiri) dibanding dengan managed service (manajemen infrastruktur diserahkan kepada pihak ketiga) beserta pemanfaatannya. Semua teknologi big data on premise yang akan dibahas merupakan open source (sumber terbuka). Tidak semua teknologi big data dapat dibahas pada tulisan ini mengingat terlalu banyaknya opsi sehingga hanya beberapa teknologi saja yang akan disorot. Mengingat perkembangan teknologi big data tergolong sangat cepat, tulisan ini mungkin sudah tidak relevan lain dikemudian hari sehingga pembaca diharapkan jeli dan selalu melakukan cross check dengan teknologi terkait untuk memastikan validitas tulisan ini.

Persiapan dan Instalasi

Proses persiapan dan instalasi on premise untuk teknologi big data termasuk fase yang paling melelahkan dan merepotkan, terlebih jika tanpa bantuan teknologi manajemen big data. Beberapa teknologi yang dapat mempermudah kita dalam melakukan persiapan dan instalasi teknologi big data adalah Cloudera Manager, Hortonworks Data Platform, MAPR Converged Data Platform, dan Ambari. Mungkin terdapat teknologi lain yang belum disebutkan atau yang akan muncul dikemudian hari mengingat teknologi big data ini merupakan suatu hal yang masih berkembang dan relatif baru di ranah teknologi informasi. Cloudera merupakan platform yang sangat bagus untuk provisi, manajemen, serta pemantauan big data cluster serta terdapat layanan untuk enterprise jika kita ingin mendapatkan layanan lebih. Cloudera memiliki CDH, distribusi ekosistem Hadoop yang telah mereka modifikasi secara spesifik sehingga lebih kompatibel dengan cluster yang dikelola oleh Cloudera Manager. Sedangkan Ambari merupakan satu-satunya teknologi manajemen big data yang sepenuhnya didukung oleh komunitas, walaupun jelas secara fitur belum dapat bersaing dibanding teknologi manajemen big data yang memiliki dukungan dari perusahaan yang fokus akan solusi big data.

Contoh Ambari Dashboard, sumber Hortonworks Community

Disisi yang lain, hampir semua penyedia layanan cloud computing besar saat ini menyediakan layanan big data secara managed service. Seperti Google Cloud Platform (GCP) dengan beberapa produknya, Amazon Web Service dengan EMR (Elastic Map Reduce), Azure dengan HDInsight, dan Alibaba Cloud dengan beberapa produk big data-nya. AWS EMR merupakan salah satu penyedia layanan big data yang pertama muncul di pasaran, namun secara versi yang mereka keluarkan sering jauh tertinggal dibanding versi teknologi yang bersangkutan, misalkan versi Hadoop di EMR cenderung tertinggal dibanding versi Hadoop stabil yang terakhir dirilis. Selain itu mekanisme pemantauan dan pengelolaan cluster yang diberikan AWS EMR juga kurang komprehensif jika dibanding dengan pesaingnya sehingga AWS EMR hanya cocok dipergunakan untuk pengolahan data yang sifatnya short run (mesin dinyalakan jika proses pengolahan akan dilakukan saja). Lain halnya dengan GCP yang menyediakan UI yang komprehensif untuk pengelolaan dan pemantauan cluster dan dengan variasi produk yang sangat beragam sehingga bisa kita sesuaikan dengan kebutuhan. Beberapa produk pada GCP memiliki padanan (kompatibel) dengan versi open source, misalkan BigTable dengan HBase, Dataflow dengan Beam, Dataproc dengan Spark, Cloud Composer dengan Airflow. Sehingga mempermudah proses migrasi apabila kita telah memiliki sistem on premise sebelumnya.

Pemantauan

Proses pemantauan (monitoring) cluster big data merupakan proses yang krusial untuk dilakukan karena kita wajib mengetahui kesehatan, performa, dan kondisi baik fisik dari mesin yang kita kelola maupun sistem yang terpasang di mesin-mesin tersebut. Hal ini tidaklah mudah karena kita perlu memantau lebih dari satu mesin, tanpa adanya sistem pemantauan yang terpusat hal ini menjadi hampir mustahil untuk dilakukan. Jangan pernah mengimplementasi teknologi big data sekecil apapun jika kita tidak dapat melakukan pemantauan secara komprehensif terhadap cluster yang kita miliki.

Sama halnya dengan fase instalasi, pemantauan cluster on premise sangat sulit dilakukan tanpa bantuan teknologi manajemen cluster big data yang mumpuni. Pilihan teknologinya pun juga sama, karena sewajarnya teknologi manajemen big data yang bersifat on premise memang satu paket yang terdiri dari provisi (provisioning), manajemen (management), dan pemantauan (monitoring). Cloudera tetap menjadi favorit dalam hal ini karena fiturnya yang relatif paling lengkap dibanding yang lain. Termasuk kemudahan konfigurasi baik konfigurasi cluster maupun konfigurasi sistem pemantauan yang hampir semuanya bisa kita ubah dan sesuaikan sesuai kebutuhan.

Contoh Cloudera Dashboard, sumber dokumentasi Cloudera

Sedangkan solusi pemantauan untuk managed service cenderung berbeda-beda bergantung dari penyedia layanan. Misalkan AWS EMR yang menggunakan CloudWatch sebagai pemantauan metrics-nya. GCP memiliki sistem pemantauan di masing-masing produk secara terpisah. Namun tidak menutup kemungkinan sistem pemantauan secara managed service ini juga bisa terlepas dari penyedia layanan big data yang dipakai, misalkan kita bisa menggunakan Datadog, sehingga seluruh metric yang kita miliki dilemparkan ke layanan pemantauan pihak ketiga untuk diagregasi lebih lanjut dan memungkinkan untuk dibuat sistem alerting maupun pemantauan yang lebih komprehensif serta terkoneksi dengan aplikasi/ sistem yang kita kembangkan.

Pemanfaatan

Pemanfaatan yang dimaksud pada bagian ini adalah perbandingan penggunaan API yang di-expose oleh teknologi big data on premise yang bersifat open source dibanding dengan managed service. Pembahasan managed service pada bagian ini akan fokus kepada produk-produk GCP karena beberapa dari produk mereka memiliki padanan open source-nya sehingga bisa kita bandingan secara lebih seimbang. Pada bagian ini penulis akan membagi pembahasan menjadi beberapa sub topik berdasarkan jenis teknologi yang dibahas.

Penjadwalan (Scheduler)

Airflow merupakan teknologi untuk manajemen workflows seperti melakukan penjadwalan terkait tugas tertentu, melakukan proses berkelanjutan dari beberapa tugas yang saling memiliki ketergantungan, secara teknis sering disebut dengan directed acyclic graph (DAG).

Contoh DAG, sumber https://airflow.apache.org/concepts.html

GCP memiliki managed service untuk Airflow yang bernama Cloud Composer. Perlu diingat, Airflow tidak terdapat pada parcel Cloudera (distribusi teknologi yang dapat diinstal menggunakan Cloudera Manager), sehingga instalasi Airflow on premise harus kita lakukan secara terpisah. Airflow merupakan proyek kode terbuka besutan AirBnB yang saat ini berada di fase inkubasi Apache, selain Airflow sebenarnya banyak opsi lain untuk scheduler ini seperti Azkaban dari LinkedIn, Luigi dari Spotify, atau Oozie yang merupakan keluarga Hadoop. Masing-masing teknologi tersebut memiliki kelebihan dan kekurangan masing masing. Semisal Azkaban unggul karena kemudahannya (simplicity) dalam penggunaan karena semua berbasis bash dengan fitur sangat minim sehingga sangat mudah dipelajari. Sedangkan Airflow dan Luigi berbasis Python, sehingga lebih mudah diprogram (programmable). Oozie sendiri merupakan proyek Apache yang cukup tua dengan bahasa Java dan konfigurasi workflow menggunakan xml yang cukup kompleks sehingga jarang pengembang yang menggunakannya lagi saat ini.

Alasan Google memilih Airflow sebagai salah satu layanan mereka dapat dilihat pada tautan berikut, antara lain yakni karena tingkat aktivitas komunitasnya yang tinggi dan dapat dengan mudah dikembangkan karena menggunakan bahasa Python. Beberapa fitur tambahan Cloud Composer ketimbang Airflow on premise antara lain lebih mudah diintegrasikan dengan layanan GCP lain misal BigQuery karena terdapat BigQueryOperator yang telah tersedia (ekstensi Airflow untuk mempermudah pengembang mengintegrasikan DAG yang dimiliki dengan layanan BigQuery pada GCP). Cloud Composer juga terintegrasi dengan Stackdriver, layanan GCP untuk logging, sehingga kita dapat dengan mudah memantau dan mengaudit apabila terjadi kesalahan pada Airflow cluster yang kita miliki. Salah satu pain point Airflow on premise adalah proses update DAG yang kurang nyaman, karena pengguna diharuskan melakukan update secara langsung pada file dan direktori yang dipindai oleh Airflow, hal ini cukup merepotkan apabila kita menggunakan teknologi kontainer karena kontainer yang kita miliki menjadi bersifat stateful. Cloud Composer memiliki solusi untuk hal ini karena file DAG yang dipindai diletakkan pada layanan Google Cloud Storage (GCS). Namun Cloud Composer juga memiliki keterbatasan misalkan tidak dapat melakukan pengiriman email melalui protokol SMTP seperti layaknya Airflow on premise, melainkan kita harus menggunakan layanan pihak ketiga yakni SendGrid.

Pemrosesan Data (Data Processing)

Spark merupakan teknolgi pemrosesan data secara terdistribusi yang umum dipergunakan karena fiturnya yang cukup komplit dibanding teknologi lain di kelasnya seperti memiliki MLlib untuk machine learning, dukungan query SQL dengan Spark SQL, streaming processing dengan Spark Streaming, dan komputasi graph secara parallel dengan GraphX. Selain Spark terdapat Beam yang dapat mempermudah kita melakukan pemrosesan data untuk batch dan stream dengan pendekatan unifikasi model pemrograman (unified programming model). Beam sendiri dapat memanfaatkan Spark sebagai salah satu runner-nya disamping Apex, Flink, Gearpump, Samza. Spark on premise terdapat pada Cloudera parcel, sedangkan Beam tidak memerlukan proses instalasi cluster sehingga kita dapat menggunakan cluster Spark yang ada untuk menjalankan Beam.

Pada GCP, Spark terdapat pada layanan Dataproc tentunya dengan kemudahan proses instalasi, manajemen, dan pemantauan cluster, karena kita tidak direpotkan lagi dengan proses manajemen infrastruktur. Sedangkan apabila kita ingin menggunakan Beam, GCP memiliki produk yang bernama Dataflow. Dataflow juga merupakan Beam runner, jadi kita tidak perlu menjalankan aplikasi Beam kita di Dataproc atau runner lain. Kemudahan yang ditawarkan oleh managed service utamanya adalah pada manajemen infrastruktur karena hal tersebut merupakan proses operasional yang sangat melelahkan. Selain kemudahan pada manajemen infrastruktur, managed service juga memiliki keunggulan pada skema pembiayaan (pricing) yang cenderung lebih fleksibel karena cluster dapat dengan mudah dihidupkan (spin up) dan dimatikan (shut down) sesuai dengan kebutuhan tanpa perlu me-maintain cluster yang hidup selama 24 jam. Berikut artikel yang lebih komprehensif membahas keunggulan Dataproc ketimbang Spark on premise, tautan. Selain GCP terdapat beberapa managed services lain yang menyediakan Spark seperti Databricks yang didirikan oleh pencipta Spark itu sendiri, Qubole, termasuk AWS EMR.

Penyimpanan Data Waktu Nyata (Realtime Data Storage)

Terdapat beberapa distributed realtime data storage yang sering dipakai oleh pengembang seperti Cassandra, HBase, MongoDB (sharded), dan masih banyak lagi. Pada bagian ini teknologi yang akan disorot adalah HBase karena GCP memiliki padanannya yakni Bigtable. HBase juga terdapat pada parcel Cloudera yang dapat kita deploy ke cluster. HBase merupakan teknologi open source yang dikembangkan berdasarkan paper dari Bigtable. HBase memiliki karakteristik unik karena HBase merupakan penyimpanan data yang tersebar (sparse), terdistribusi (distributed), persisten (persistent), terpetakan secara multidimensi dan berurutan (multidimensional sorted map). Rowkey pada HBase merupakan satu-satunya atribut untuk menentukan keunikan suatu baris data yang bersifat immutable, mirip dengan unique primary key pada basis data relasional (RDBMS). Rowkey juga merupakan parameter yang menentukan partition key serta ordering key, yakni tempat dimana data diletakkan secara fisik dan menentukan mekanisme pengurutan.

Bigtable pada GCP memiliki Java API yang merupakan modifikasi dari Java API HBase sehingga apabila kita pernah menggunakan HBase atau memiliki sistem yang menggunakan HBase akan sangat mudah jika melakukan migrasi ke Bigtable. Namun demikian terdapat beberapa perbedaan API antara HBase dan Bigtable, yang cukup signifikan antara lain tidak didukungnya reverse scan pada Bigtable, tidak adanya dukungan coprocessor, dan tidak adanya dukungan query terhadap rentang timestamp tertentu pada suatu column family. Untuk detail perbedaan silakan buka tautan berikut.

Kesimpulan

Dewasa ini produk yang disediakan oleh penyedia layanan komputasi awan memiliki variasi yang beragam dengan skema pembiayaan yang mempermudah kita menentukan layanan yang sesuai dengan kebutuhan (pay as you go). Selain itu managed service juga menyediakan kemudahan proses persiapan dan instalasi yang cukup signifikan. Beberapa hal tersebut menjadikan managed service lebih diminati dan lebih dianjurkan ketimbang on premise. Namun demikian sebagai pengembang kita tetap perlu memperhitungkan secara matang skema pembiayaan antara layanan satu dengan yang lain karena tidak semua managed service pasti lebih murah serta ada suatu titik skema pembiayaan pay as you go akan menjadi lebih mahal apabila penggunaan sudah terlampau tinggi.

P.S. Jika teman-teman menyukai artikel semacam ini, silakan subscribe ke newsletter kita dan dapatkan notifikasi artikel terbaru langsung di inbox kamu!

--

--

Andi Nugroho Dirgantara
Pujangga Teknologi

Lead Data Engineer at Traveloka. Passionate at geospatial and data engineering. Also love to have fun with JavaScript stuff.