zJOS/Puspa© – Penjadwal Otomatik yang Cukup Canggih

07 Sep zJOS/Puspa© – Penjadwal Otomatik yang Cukup Canggih

Ketika seseorang menyebut penjadwal kerja komputer atau computer workload scheduler, kebanyakan orang awam langsung mengkaitkan dengan cron di Linux atau task scheduler di Windows. Memang benar, mereka juga termasuk salah satu computer workload scheduler, namun sangat sederhana. Kedua penjadwal tersebut hanya mampu menjadwal workload berdasarkan waktu, bisa jam, hari/tanggal, bulan dan tahun. Penjadwal yang dibahas disini adalah penjadwal yang lengkap.

Workload

Dalam konteks penjadwal otomatik, obyek yang dijadwalkan lazimnya disebut workload. Di dalamnya termasuk job atau task dan command. Job atau task lazim pula disebut background process, adalah adalah satu atau beberapa modul program yang dirangkai di luar wilayah OS oleh pengguna (dalam hal ini programmer) membentuk sebuah prosedur untuk diexekusi secara batch (sekali picu). Perangkaian biasanya menggunakan script seperti Rexx maupun JCL.

Sedangkan command atau lazim disebut foreground process adalah satu atau beberapa modul program terangkai secara internal (melalui transfer exekusi) yang diexekusi langsung melalui console atau OS shell. Command bisa user program maupun sarana dari OS, baik built-in maupun ditambahkan dari produk vendor.

Penjadwalan Workload

Penjadwalan workload yang paling sederhana adalah penjadwalan yang hanya berdasarkan waktu. Misalnya penjadwalan backup atau tindakan-tindakan administratif sederhana lainnya semisal virus scanning (khusus untuk sistem yang tak tahan virus). Namun pada umumnya workload tidak hanya tergantung waktu.

Penjadwalan workload umumnya tidak sesederhana itu. Biasanya workload memiliki ketergantungan dengan workload lain. Sebagai contoh, untuk melakukan proses rekapitulasi, harus terlebih dulu koleksi file transaksi dan sort. Jika proses ini dipisah dalam 2 workload, maka workload rekapitulasi hanya bisa dijalankan setelah workload koleksi file transaksi sudah dijalankan dan sukses.

Workload juga kadang ada ketergantungan dengan mekanisme proses lain yang ditandai dengan munculnya message tertentu atau diaksesnya atau dibebaskannya file tertentu. Misalnya workload yang melakukan koleksi file transaksi, tentu baru bisa diexekusi setelah semua file yang ditargetkan selesai diproses. Jika proses semua file tersebut terkumpul dalam satu batch, maka kaitannya dengan proses koleksi menjadi lebih sederhana, hanya ketergantungan antar workload. Tetapi jika proses-prosee tersebar dalam rentang waktu yang cukup panjang apalagi ada yang dari sistem lain yang dikirim lewat network, maka akan lebih mudah jika yang dikaitkan sebagai trigger bukan prosesnya, melainkan file yang dihasilkannya atau message yang mengiringi kesiapan file tersebut. Dalam prakteknya, kadang sebagian dideteksi dari prosesnya (berarti antar workload), sebagian dari pembebasan file (close dan/atau release) dan sebagian lagi melalui munculnya message tertentu. Misalnya, job C diexekusi manakala job B dab job C sudah selesai dan file X dan file Y sudah closed dan message ‘FILE Z WAS RECEIVED’ sudah muncul. Dengan demikian, job C diexekusi segera setelah kondisi tersebut terpenuhi.

Baik trigger dari satu workload ke workload berikutnya maupun dari status file atau kemunculan message men-trigger workload, sebenarnya mekanisme internalnya mirip dengan event management, yaitu kemunculan event memicu penjadwal melakukan action mengexekusi workload yang telah dijadwalkan. Apabila sebuah workload dijadwalkan untuk dipicu oleh message tertentu, maka penjadwal akan segera mengexekusi workload tersebut persis ketika message yang dimaksud hendak dilepas ke console atau logger. Bukan setelah message benar-benar muncul. Karena munculnya message event adalah pada saat sebuah message text dikirim dari sumbernya ke console atau logger. Maka dari itu penjadwal maupun otomasi lain juga bisa saja men-suppress agar message text tersebut tidak muncul.

Apabila sebuah workload dijadwalkan untuk dipicu oleh bebaskannya file tertentu, maka penjadwal akan segera mengexekusi workload tersebut persis ketika file yang dimaksud di-closed atau di-released oleh proses yang sedang mengaksesnya. Event untuk file sebenarnya dibangkitkan oleh penjadwal sendiri yang simulasi enqueue atau dequeue, mirip dengan apa yang dilakukan oleh produk security. Maka dari itu, yang tertangkap oleh penjadwal adalah access atau open yang berasal dari enqueue, dan release atau close yang berasal dari dequeue.

Triggering antar workload tidak jauh berbeda. Ketika workload men-trigger workload berikutnya, yang terjadi sebenarnya event yang muncul dari workload pertama menjadi pemicu bagi penjadwal untuk mengexekusi workload berikutnya. Kapan sebuah event muncul dari sebuah workload? Event apakah gerangan? Nah khusus yang ini, sangat tergantung jenis workload-nya.

Jika workload itu sebuah job (background process), event akan muncul persis manakala program dalam job tersebut berakhir atau manakala job itu sendiri berakhir. Dalam konteks job, event yang muncul pada saat program dalam job tersebut berakhir lazim disebut end of job-step (EOS) event, mengingat job memang merupakan sangkaian satu atau beberapa program dimana setiap program disebut job-step. Sedangkan event yang muncul ketika job itu sendiri berakhir disebut end of job (EOJ) event. EOS atau EOJ inilah yang ditangkap oleh penjadwal persis pada saat kemunculannya dan digunakan sebagai pemicu untuk exekusi jadwal selanjutnya. Kebanyakan penjadwal hanya menggunakan EOJ, sehingga job hanya mampu men-trigger manakala berakhir. Padahal dalam banyak hal EOS sangat bermanfaat untuk menyingkat panjangnya urut-urutan antar job. Karena kenyataannya tidak semua ketergantungan antar job benar-benar mengharuskan semua job-step tuntas. Ada beberapa kasus ketergantungan antar job yang sebenarnya cukup sampai job-step tertentu semua input untuk job berikutnya sudah terpenuhi. Dengan demikian tidak harus menunggu job pertama tuntas. Hanya ada 3 produk penjadwal di pasaran software yang mampu menangkap dan memanfaatkan EOS, salah satunya zJOS/Puspa©, penjadwal buatan Nusantara.

Jika workload adalah sebuah command (foreground process), event akan muncul persis manakala command dipasok. Event ini diantar oleh I/O interrupt dari console atau terminal dimana command dipasok. Namun perkembangan OS selanjutnya memberi sarana agar command bisa dipasok oleh workload lain, baik program, script maupun command lain melalui supervisor call (SVC) interrupt. Dari 2 jenis interrupt yang berbeda tersebut, OS membangkitkan event yang sama, yaitu command invocation (CMD) event. CMD inilah yang ditangkap oleh penjadwal untuk memicu exekusi workload tertentu.

Pengaruh Waktu dan Kalendar

Dalam praktek, aplikasi penjadwalan merupakan himpunan jadwal operasi. Setiap jadwal berupa rentetan jadwal workload yang sambung menyambung. Rentetan jadwal (schedule flow) tidak selalu lempeng satu garis. Antar rentetan kadang bergabung di titik tertentu menjadi satu, yaitu manakala ada workload yang harus di-trigger oleh beberapa workload lain dari rentetan yang berbeda. Satu rentetan bisa juga pecah menjadi beberapa anak rentetan manakala ada workload yang men-triger beberapa workload lain sekaligus.

Waktu dan kalendar umumnya berperan di awal sebuah rentetan jadwal. Exekusi workload pertama dalam sebuah rentetan jadwal ditentukan oleh jam, hari, tanggal, bulan dan tahun. Ada yang jam tertentu setiap hari. Ada pula yang hanya hari-hari tertentu sesuai aturan mainnya. Exekusi workload selanjutnya dipicu oleh workload sebelumnya dan mungkin ada yang dibantu oleh event lain.

Namun demikian, bukan berarti fungsi waktu dan kalendar hanya sebagai lokomotif dalam sebuah rentetan jadwal. Bukan pula sebagai satu-satunya lokomotif. Message atau file open atau file close bisa menjadi lokomotif. Misalnya dalam rentetan jadwal workload A –> B –> C –> D –> E, workload A dipicu oleh message ‘BALANCING COMPLETED’.

Sebaliknya boleh juga waktu atau kalendar digunakan untuk mengendalikan gerbong tertentu. Misalnya dalam rentetan jadwal workload A –> B –> C –> D –> E, workload D hsnya diexekusi pada hari Rabu. Maka rentetan tersebut sebenarnya hanya A –> B –> C kecuali di hari Rabu berlanjut dengan D –> E. Bisa juga ditambahkan kondisi agar workload E tidak diexekusi pada hari libur. Maka meskipun hari Rabu jika libur, rentetan jadwal hanya sampai workload D.

Ragam Kalendar Penjadwalan

Pengaruh waktu dan kalendar seperti yang dicontohkan di atas termasuk yang sederhana dan hampir semua produk penjadwal mampu melakukannya. Namun kadang ada kebutuhan operasi yang lebih dari itu, misalnya:

  • Hari kerja pertama setelah libut
  • Hari kerja pertama dalam seminggu
  • Hari kerja pertama dalam sebulan
  • Hari kerja terakhir dalam seminggu
  • Hari kerja terakhir dalam sebulan
  • dan mungkin masih banyak kemungkinan lain

zJOS/Puspa© dirancang memiliki kemampuan menangani kondisi kalendar seperti di atas, baik untuk menjadwal maupun untuk pengecualian jadwal. Hal ini untuk memudahkan pengguna dalam menangani jadwal yang terkait dengan kondisi kalendar yang cukup rumit. Memang ini kelebihan dari zJOS/Puspa© dibanding penjadwal-penjadwal lain. Namun bukan berarti semua kerumitan kondisi kalendar terselesaikan dengan sarana yang tersedia oleh zJOS/Puspa©. Barangkali masih ada kerumitan lain yang harus ditangani dengan scripting. Jika yang dipilih Rexx, maka zJOS/Puspa© sudah menyediakan sejumlah fungsi canggih untuk pengkondisian kalendar. Setiap fungsi bisa menggantikan puluhan hingga ratusan barus perintah Rexx. Sehingga mungkin anda hanya dituntut untuk menyusun kurang dari sepuluh baris Rexx untuk sebuah pengkondisian yang sangat rumit.

Sementara bagi pengguna produk-produk penjadwal lain yang tidak memiliki kemampuan seperti zJOS/Puspa© juga tidak perlu frustrasi. Anda bisa menambahkan script sebagai job-step awal dari setiap job yang harus melalui pengkondisian kelandar seperti di atas. Pengkondisian dilakukan ileh script yang anda buat sendiri dengan logik anda sendiri. Memang terpaksa anda harus memiliki ketrampilan menyusun script. Harusnya nggak masalah, karena programming memang diasumsikan sebagai bekal utama orang IT.

Ketergantungan antar Workload

Ketergantungan antar workload umumnya juga conditional. Namun umumnya produk penjadwal hanya mengenal 2 kondisi, yaitu SUKSES yang ditandai dengan condition code (CC) < 4 atau TIDAK SUKSES yang ditandai dengan CC > 4. Misalnya job A men-trigger job B hanya manakala job A sukses, berakhir dengan CC < 4. Berarti jika job B tidak akan diexekusi meskipun job A sudah berakhir jika CC yang dihasilkan 12.

Penjadwal juga pada umumnya dilengkapi kemampuan melakukan multiple triggering, baik beberapa workload men-trigger satu workload maupun sebaliknya, satu workload men-trigger beberapa workload. Umumnya menggunakan kondisi yang sama, yaitu sukses. Misalnya job C diexekusi bilamana job A dan job B berakhir sukses. Konsekuensinya, jika job A berakhir sukses tetapi job B gagal, maka job C tidak diexekusi.

zJOS/Puspa© dalam menangani Ketergantungan antar Workload

Dalam menangani ketergantungan antar workload, zJOS/Puspa© dirancang memiliki sejumlah kelebihan dibanding produk-produk penjadwal pada umumnya, antara lain:

  1. Tidak ada kategori sukses dan tidak sukses. CC dinilai apa adanya dan semua nilai bisa dijadikan kondisi sukses. Misalnya, job A men-trigger job B bila berakhir dengan CC < 8, men-trigger job C bila berakhir dengan CC > 8, dan men-trigger job D bila berakhir abend.
  2. Dalam kasus multiple triggers, kondisi bisa ditentukan dengan berbagai kombinasi AND dan OR, bukan hanya barisan AND seperti penjadwal pada umumnya. Sarana ini memberi keleluasaan pengguna untuk menyusun recovery flow-nya sendiri yang tentunya lebih applicable ketimbang recovery yang sediakan oleh penjadwal
  3. Kemampuan menangkap EOS seperti yang dijelaskan di atas juga merupakan kelebihan yang tidak dimiliki oleh penjadwal pada umumnya. Sarana ini bermanfaat untuk memperpendek rentetan jadwal (schedule flow) dengan menerapkan step-level triggering. Penjadwalan dibuat mengikuti metoda pipelining.

Gambar ini memaparkan kombinasi dari kelebihan-kelebihan yang dimiliki zJOS/Puspa© dibandingkan dengan kebanyakan penjadwal otomatik lainnya. Kelebihan inilah yang memberi kesempatan NSI memperoleh nasabah. Tanpa memenangkan technical benchmark, semurah apapun sulit bagi NSI untuk mendapatkan kesempatan tersebut. Perlu diketahui bahwa pengguna mainframe pada umumnya sangat fanatik pada nama-nama vendor terkenal. Terlebih di Indonesia yang sangat fanatik “serba asing” khususnya untuk produk-produk teknologi.

Menjadwal workload dengan zJOS/Puspa©

Di samping 3 kelebihan yang telah di bahas di atas, zJOS/Puspa© juga memiliki kekurangan, antara lain di wilayah user-interface. Hingga versi terkini, 2.1.9, zJOS/Puspa© belum menyediakan GUI. Hal ini bisa dimaklumi mengingat keterbatasan sarana dan prasarana maupun SDM memaksa NSI untuk sementara hanya mengutamakan fungsi-fungsi utama saja. User-interface untuk sementara masih mengandalkan TSO/ISPF yang tentunya kurang ergonomik untuk hari gini.

Berikut ini contoh menjadwalkan job JIXEXREJ. Misalnya, jalankan job JIXEXREJ kapan pun dari tahun 2007 hingga 2018 manakala telah muncul 4 event sebagai berikut:

  1. EOS: job JCKBAKUP step CKBKUP1B berakhir dengan condition code = 0
  2. EOJ: job JDLBUP1B berakhir dengan condition code = 0
  3. EOS: job JCKBAKUP step CKBKUP2B berakhir dengan condition code = 0
  4. EOJ: job JDLBUP2B berakhir dengan condition code = 0

Dengan kondisi dimana (1 OR 2) AND (3 OR 4). Artinya, EOS/1 dan EOJ/2 boleh salah satu saja yang memenuhi. EOS/3 dan EOJ/4 juga demikian.

Dalam zJOS/Puspa, penjadwalan job JIXEXREJ disusun dalam 2 tahap. Tahap pertama menyusun rincian perihal job JIXEXREJ dan jadwal kalendar serta kondisi perkecualiannya seperti pada gambar panel layar berikut ini.

Ada bagian kalendar yang dievaluasi sebelum job JIXEXREJ mulai dijadwalkan. Antara lain batasan kalendar seperti tahun, bulan, hari, hari libur dan hari-hari khusus. Penjadwalan hanya dilakukan manakala semua batasan kalendar terpenuhi. Misalnya dijadwalkan untuk setiap hari Senin dan Rabu. Maka proses penjadwalan tidak akan dilakukan di hari selain Senin dan Rabu.

Tahap kedua adalah menyusun trigger di luar kalender seperti pada gambar panel layar berikut ini. Perlu dicermati bahwa tabel trigger mengandung logika. Sehingga penyusunan trigger harus harus hati-hati agar benar-benar sesuai dengan kondisi yang diharapkan.

Karena keterbatasan TSO/ISPF, kebebasan memadukan AND dan OR dalam menyusun sebuah kondisi sedikit dibatasi. Susunan satu tingkat hanya untuk paduan OR dan banyaknya tak terbatas, misalnya event-status.1 OR event-status.2 OR event-status.3 OR … OR event-status.n. Untuk susunan dua tingkat, tingkat pertama paduan OR seperti pada susunan satu tingkat, dan tingkat kedua paduan AND dari susunan tingkat pertama, misalnya (event-status.1.1 OR … OR event-status.1.n) AND (event-status.2.1 OR … OR event-status.2.n) AND… AND (event-status.m.1 OR … OR event-status.m.n). Untuk membedakan paduan OR tingkat pertama, setiap paduan OR disebut group dan diberi identitas 2 angka mulai 00 hingga 99. Oleh karena itu paduan AND maximum hanya mencakup 100 paduan OR (group).

Layar di gambar atas menampilkan bagaimana menyusun kondisi (EOS/1 OR EOJ2) AND (EOS/3 OR EOJ/4) dengan benar. EOS/1 dan EOJ/2 adalah paduan tingkat pertama (OR) group 00. EOS/3 dan EOJ/4 adalah paduan tingkat pertama (OR) group 01. Identitas group inilah yang mewujudkan paduan jenjang.

Baik workload maupun trigger yang telah didaftarkan melalui panel-panel seperti contoh di atas akan disimpan dalam database yang dinamakan schedule-table. Setelah schedule-table terbentuk, kita bisa melihat successors setiap workload seperti yang tampak pada gambar di bawah ini. Informasi successors sekaligus merupakan alat untuk mengevaluasi apakah susunan workloads dan triggers kita daftarkan dengan benar.

zJOS/Puspa© dalam Menangani Kalendar

Informasi kalendar terdiri dari batas tanggal awal dan akhir penjadwalan yang mencakup tahun/bulan/hari dan batas jam awal dan jam akhir yang mencakup jam/menit/detik. Tanggal awal dan akhir jika dikosongkan berarti tidak ada batasan tanggal. Pada contoh di atas hanya tahun saja yang diisi, berarti batasannya hanya tahun. Jam diisi 00:00:00 sampai dengan 24:00:00, yang berarti tidak ada batasan jam. Untuk membuat batasan tanggal, silakan simak contoh pada gambar di bawah.

Contoh pada gambar di bawah ini, tanggal awal diisi dengan kosong/05/01 dan tanggal akhir kosong/11/kosong. Artinya jadwal berlaku setiap tanggal 1 dari bulan 5 sampai dengan bulan 11 setiap tahun. Pada contoh ini tidak ada batasan jam.

Batasan jam boleh diisi apa saja dari 00:00:01 hingga 23:59:59. Jika jam awal lebih besar dari jam akhir, maka akan dianggap menyeberangi jam 0 di hari berikutnya.

Selain batasan tanggal dan jam, zJOS/Puspa© juga menyediakan batasan hari mingguan, hari libur dan hari khusus. Semuanya dipasok dengan checkbox. Hari mingguan dan hari libur berlaku bersama. Misalnya hari Minggu sampai dengan Sabtu dicentang, tapi hari libur tidak, maka yang terjadi, semua hari berlaku kecuali hari libur. Jika yang dicetang hari Senin dan Kamis dan libur, maka berarti jadwal hanya berlaku Senin dan Kamis meskipun libur.

Sedangkan hari khusus tidak berlaku bersama dengan hari mingguan dan hari libur. Misalnya yang dicentang IDAO (initial day after off), maka berarti jadwal hanya berlaku untuk hari kerja pertama setelah libur. Apapun yang dicentang di hari mingguan dan hari libur tidak berlaku. Gambar berikut ini menampilkan penjadwalan hari khusus dengan mencentang IWWD (initial week working day). Maka jadwal hanya berlaku di hari kerja pertama pertama mingguan. Artinya, jika hari Senin libur, maka IWWD adalah hari Selasa.

wpuser
dewi.sekarsari@yahoo.com
No Comments

Post A Comment