Pengenalan Stream di NodeJS

stream illustrator

Halo bro n sis, pada tutorial kali ini saya akan membahas tentang stream di NodeJS. Karena pembahasannya cukup panjang maka akan dibagi menjadi 2 tutorial. Yang pertama adalah pengenalan pemrograman stream dan yang kedua adalah pemrograman stream di NodeJS. Untuk yang sudah pernah menggunakan pemogramanan stream dan ingin belajar menggunakan stream di NodeJS silahkan langsung ke artikel ke 2.

Ada kalimat keren nih :

“Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features”

Terasa familiar? Kalimat diatas merupakan salah satu filosofi dari Unix. Lebih baik membuat program yang melakukan satu fitur dengan baik, daripada membuat program yang rumit karena menambahkan banyak fitur di dalamnya. Ok, tapi bagaimana jika aplikasi kita membutuhkan beberapa fitur? disitulah stream beraksi, pada dasarnya stream adalah antarmuka untuk komunikasi antar program. Kita bisa membuat aplikasi dengan banyak program yang berinteraksi melalui antarmuka stream.

Ok, ceritakan lagi tentang stream

Jika kalian pernah menggunakan karakter pipe ‘|’ di linux. Nah, karakter pipe digunakan utk operasi stream. Mengirim data dari satu program ke program yang lain. Stream di dalam NodeJS pun mempunyai konsep yang mirip dengan operasi stream di linux. Module stream di NodeJS membantu kita dalam merancang satu program yang hanya mempunyai satu fungsi dan dapat saling berkomunikasi dengan program yang mempunyai fungsi yang lain.

Contoh penggunaan pipe di linux :

ls -al | less

Contoh penggunaan pipe di NodeJS :

ls.pipe(less);

Jika stream masih membuat kalian garuk garuk kepala. Kalian bisa membayangkan operasi stream mirip dengan selang air yg dihubungkan dengan keran (Upstream | Hulu). Air mengalir dari keran ke ujung selang (Downstream | Hilir), begitu pula data mengalir dari program yang satu ke program yang lain.

Selain membuat aplikasi yang modular, operasi stream juga cukup efektif dalam menghemat memori karena data tidak dimasukkan ke buffer terlebih dahulu (kondisi ideal), saat data dan program di hilir sudah siap maka data akan dialirkan dari program bagian hulu ke program bagian hilir.

Backpressure

52-car-pile-up

Salah satu kondisi yang perlu diperhatikan disaat membuat program dengan stream adalah kondisi backpressure, misal ujung selang kita tutup, maka air yang mengalir dari keran akan mengalami tekanan dari arah sebaliknya sehingga tersendat. Begitu pula jika program di hilir dalam kondisi sibuk sehingga tidak dapat menerima data dari hulu, maka data akan di buffer di program bagian hulu jika ini berlangsung lama maka akan memenuhi memori.

Optimasi program dalam pemrosesan data dan juga penggunaan prosesor yang cepat dapat mengurangi resiko terkena backpressure ini. Tapi tentu saja module stream mempunyai mekanisme untuk menangani backpressure ini.

Stream di NodeJS

Banyak module di NodeJS mengimplementasikan stream tanpa kita sadari, beberapa standard stream seperti stdin, stdout dan stderr. Selain itu ada juga module http, net, zlib, dan lain lain.

Baiklah disini kalian sudah memahami beberapa istilah seperti stream, upstream, downstream dan backpressure dan kita akan pelajari tentang stream di NodeJS lebih lanjut di tutorial selanjutnya

One Reply to “Pengenalan Stream di NodeJS”

Leave a Reply

Your email address will not be published. Required fields are marked *