Usulan Sistem PPDB Alternatif

Bulan Juni adalah bulannya pendaftaran siswa baru atau yang kini dikenal dengan nama Penerimaan Peserta Didik Baru (PPDB). Dahulu kala, PPDB diserahkan ke sekolah masing-masing. Namun seiring dengan perkembangan Teknologi Informasi yang makin pesat di tanah air dan berlimpahnya programmer-programmer baru lulusan dari kampus komputer yang menjamur, maka beberapa kota mencoba membuat sistem PPDB sendiri yang menghubungkan semua sekolah di kota tersebut. Idenya pun bagus, yaitu agar Calon Peserta Didik Baru (CPDB) dimudahkan dengan urusan pendaftaran. Namanya juga komputer, seharusnya urusan rumit bisa dibuat menjadi mudah. Dengan sistem ini, CPDB tidak bisa mendaftar ganda di sekolah lain karena langsung terdeteksi oleh system. Proses penghitungan passing grade menjadi lebih cepat. CPDB bisa berganti pilihan ke sekolah lain bila dirinya berada di bawah passing grade, semudah menggerakkan jempol di handphonenya. Pada akhirnya, diharapkan praktek-praktek kecurangan bisa dikurangi atau bahkan dihilangan.

Itu rencananya. Tapi kenyataannya? Ada yang sukses, ada pula yang diprotes. Di beberapa kota atau provinsi, server pusat sulit diakses. Penyebab yang paling sering adalah server database yang kerepotan akibat terlalu banyak transaksi. Penyebab lain adalah prosesor dan bandwidth yang kurang besar.

Masalah ini bisa terjadi karena proses terpusat. Apalagi kondisi sistem IT di tanah air banyak yang masih hanya mengandalkan satu atau dua server. Kadangkala, setup sistem pun kurang optimal sehingga server database hanya menggunakan satu core padahal prosesor sudah 16 core. Rancangan database yang kurang optimal. Juga penulisan kode program yang kurang baik, misalnya seluruh records diselect padahal hanya dibutuhkan satu record pertama saja.

Sistem yang kurang berjalan baik, bisa berakibat sengsaranya operator di sekolah yang rata-rata hanya guru biasa. Mereka harus menerima keluhan bahkan umpatan dari masyarakat yang merasa sulit mendaftarkan anaknya di sekolah negeri. Tak jarang akhirnya operator di sekolah bertambah jam kerjanya sampai pulang malam akibat pekerjaan yang tersedat-sendat.

Lalu bagaimana solusinya?

Saya pun sebenarnya bukan pakar IT. Hanya seorang praktisi IT yang sudah mulai bergelut dengan database sejak tahun 1990-an di kala Cobol dan dBase masih berjaya. Ide saya ini belum tentu terbaik. Tapi siapa tahu bisa dikaji dan bila bagus, bisa menjadi sumbangan pemikiran dari seorang guru komputer untuk pendidikan di Indonesia yang lebih baik.

Ide Pertama: Server Tersebar

Ide ini berangkat dari kenyataan bahwa hampir semua SMP dan SMA/SMK telah mengikuti Ujian Nasional Berbasis Komputer (UNBK). Artinya bahwa di sekolah itu paling tidak ada satu server, satu guru yang mengerti komputer, dan satu akses internet. Dengan demikian, beban kerja sistem bisa didistribusikan ke sekolah-sekolah. Server pusat hanya menyimpan database nomor Ujian Nasional, nilai UN siswa satu kota atau satu provinsi, dan mencatat siswa tertentu sudah mendaftar di sekolah mana. Proses lainnya (misalnya input data, passing grade, dsb) dilakukan di server sekolah.

Komunikasi antara server sekolah dengan server pusat dilakukan menggunakan web service. Contoh sederhana program komunikasinya adalah seperti di bawah ini. Sebenarnya format komunikasi antar server bisa menggunakan XML. Tapi pada contoh ini saya menggunakan JSON karena lebih singkat dan lebih mudah diolah.

<?php
$param = array(
    'kode_sekolah' => '001',
    'password' => 'rahasia',
    'nomor_un' => '30-01-001-123-4'
);

$http = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($param)
    )
);
$url = 'https://server-pusat.tld/terima.php';
$kiriman = stream_context_create($http);
$balasan = file_get_contents($url, FALSE, $kiriman);

if ($balasan == FALSE) {
    echo "Gagal menghubungi serer.";
}
else {
    $hasil = (array) json_decode($balasan);
    if (isset($hasil['status'])) {
        switch ($hasil['status']) {
        case "Belum mendaftar":
            echo "Sukses. Siswa tersebut belum mendaftar di ";
            echo "sekolah mana pun. Nilainya Bahasa Indonesia adalah ";
            echo $hasil['bhs_ind'];
            break;
        case "Sudah mendaftar":
            echo "Maaf, siswa tersebut sudah mendaftar di ";
            echo $hasil['nama_sekolah'];
            break;
        default:
            echo "Nomor UN tidak dikenal. Silakan teliti kembali.";
        };
    }
    else {
        echo "Balasan dari server tidak dikenal.";
    };
};
?>

Script PHP di atas di-copy-kan ke web server sekolah. Data yang dikirim dari server sekolah ke server pusat ukurannya kecil. Hanya beberapa byte saja, yaitu kode sekolah, password sekolah, dan nomor UN CPDB yang hendak dicek di server pusat.

Kemudian di server pusat hanya terpasang satu server database dan satu server web. Tampilan tidak perlu bagus. Bahkan bila perlu alamatnya dirahasiakan agar hanya server sekolah saja yang bisa mengakses. CPDB mengakses ke website sekolah yang dituju secara online, atau mendatangi sekolah untuk dilayani oleh operator sekolah. Script PHP di server pusat untuk berkomunikasi dengan server sekolah kira-kira seperti ini.

<?php
$kode = isset($_POST['kode_sekolah']) ? $_POST['kode_sekolah'] : '';
$pass = isset($_POST['password']) ? $_POST['password'] : '';

if (($kode == '001') && ($pass == 'rahasia')) {
    // Lakukan query ke database.
    // Agar mudah dipahami, di sini kita anggap saja:
    // 30-01-001-123-4 = Belum mendaftar di sekolah mana pun.
    // 30-01-001-567-8 = Sudah mendaftar di "SMKN Antah Berantah". 
    switch ($_POST['nomor_un']) {
    case'30-01-001-123-4':
        $param['status'] = 'Belum mendaftar';
        $param['bhs_ind'] = '60.11';
        $param['bhs_ing'] = '70.22';
        $param['mtk'] = '80.33';
        $param['ipa'] = '90.44';
        // Lalu catat bahwa siswa tersebut telah mendaftar di
        // sekolah lain.
        $id_sekolah = $_POST['kode_sekolah'];
        // Tulis query database di sini.
        break;
    case '30-01-001-567-8':
        $param['status'] = 'Sudah mendaftar';
        $param['nama_sekolah'] = 'SMKN Antah Berantah';
        break;
    default:
        $param['status'] = "Nomor UN tidak dikenal";
    };
    echo json_encode((object) $param);
};
?>

Sesaat setelah server sekolah mengirimkan data (dalam bentuk POST), server pusat mengembalikan kode berikut ini sebagai jawaban. Kode itulah yang kemudian diolah oleh server sekolah.

{“status”:”Belum mendaftar”,”bhs_ind”:”60.11″,”bhs_ing”:”70.22″,”mtk”:”80.33″,”ipa”:”90.44″}

Prinsip kerjanya: Server sekolah bertanya ke server pusat, nomor UN sekian apakah sudah terdaftar di sekolah lain? Bila belum, server pusat mengirim nomor UN siswa dimaksud kemudian menandai di databasenya bahwa siswa tersebut sudah mendaftar di sekolah pemanggil.

Tim IT di Infokom bertugas membuat aplikasi berbasis web (open source), untuk kemudian script-nya didistribusikan ke sekolah-sekolah. Selanjutnya terserah sekolah tersebut apakah servernya boleh diakses oleh masyarakat luas ataukah hanya dioperasikan oleh petugas PPDB sekolah. Bila pilihan terakhir yang dipilih, sekolah bisa memanfaatkan peralatan internet yang digunakan ketika UNBK. Tapi bila ingin online dan bisa diakses oleh masyarakat luas, berarti harus menyediakan akses internet dengan IP public, atau menyewa VPS dengan tarif sekitar $5 / bulan.

Sistem ini cocok untuk daerah-daerah dengan infra struktur kurang memadai. Untuk kota besar seperti DKI Jakarta yang infrastrukturnya kelas atas, tentu sever terpusat masih menjadi pilihan terbaik.

Ide ke Dua: Serahkan ke Google atau Facebook

Ini ide konyol. Hanya lucu-lucuan.

Google dan Facebook mempunyai puluhan ribu server. Sudah terbukti tidak pernah down walau pun diakses ratusan juta orang di seluruh pelosok Dunia dari mulai Hutan Amazon sampai Kutub Utara. Nah, bagaimana bila Kemendikbud meminta Google dan Facebook merancang sistem PPDB untuk digunakan di seluruh tanah air. Hanya pak Menteri yang mempunyai akses ke programmer di Amerika Serikat.

Dengan demikian, akan makin sulit adanya permainan di tingkat pusat agar anak pejabat tertentu bisa diterima di sekolah favorit. Lho, memangnya ada praktek seperti ini? Entah lah. Saya tidak tahu pasti. Mungkin juga tidak pernah terjadi. Ini hanya sekedar jaga-jaga.

Sekian sedikit sumbangan ide dari saya. Semoga PPDB di tahun-tahun berikutnya makin baik. Aamiin.

Tangerang, 8 Juli 2018.
Mawan A. Nugroho

Web Hosting