SIMPEG
On this page
- Sekilas
- Peran saya sebagai solution architect
- Tantangannya
- Yang dikerjakannya
- A. Pegawai mengurus record-nya sendiri
- B. Admin memegang record yang lengkap
- C. Organisasi tersimpan sebagaimana adanya pada tanggal mana pun
- D. Aturan diambil dari peraturan
- E. Setiap akses punya lingkup
- F. Melapor, mengingatkan, dan mengundang
- G. Memverifikasi identitas dan menandatangani dokumen
- H. Membawa data lama
- Standar yang dipatuhi
- Bagaimana ia dibangun
- Bagaimana ia dirilis dan dioperasikan
- Keputusan kunci
- Riwayat
- Status
- Istilah
SIMPEG adalah sistem informasi kepegawaian Pemerintah Kota Tangerang Selatan: satu sistem untuk record, karier, dan layanan setiap aparatur sipil negara di seluruh perangkat daerah kota. Pegawai menjaga datanya sendiri tetap mutakhir dan mengikuti kenaikan gaji berkala, kenaikan pangkat, dan pensiunnya; admin di setiap perangkat daerah dan kantor kepegawaian kota bekerja tepat pada bagian organisasinya masing-masing; dan setiap aturan yang diterapkan sistem diambil dari peraturan yang menetapkannya. SIMPEG adalah aplikasi internal, dipakai aparatur kota, bukan masyarakat umum.
Saya memimpin pengembangannya sejak 2023, dan generasinya yang sekarang — core Laravel baru dan antarmuka Vue baru — sepenuhnya hasil kerja saya, dari model data sampai layar.
Sekilas
| Klien | Diskominfo Kota Tangerang Selatan, pengelola aplikasi di lingkup kota; dioperasikan oleh kantor kepegawaian kota, BKPSDM |
|---|---|
| Peran | Solution architect sejak 2023 yang memimpin tim — quality assurance, backend developer, UI developer, DevOps, dan DevSecOps — sekaligus backend developer utama yang menulis sendiri API utamanya |
| Periode | Sejak 2023 |
| Versi | 2 |
| Status | Dalam pengembangan — aplikasi internal tanpa alamat publik |
| Stack | Laravel dan PHP, Vue dan TypeScript, Rust, Python; PostgreSQL, Redis, storage kompatibel S3; OpenTelemetry, Elasticsearch, dan Kibana; Docker |
Peran saya sebagai solution architect
Di SIMPEG, peran pertama saya adalah solution architect. Domain master untuk kepegawaian adalah badan kepegawaian kota, BKPSDM, jadi dari sanalah pekerjaannya dimulai: saya mempelajari cara administrasi kepegawaian berjalan beserta regulasi di baliknya, mendengarkan kebutuhan badan itu serta keluhan pegawainya hari ini, lalu menerjemahkannya menjadi arsitektur.
- Memilih teknologi yang menjadi dasar sistem.
- Merancang arsitektur modular dan memecah fungsinya ke beberapa module terpisah.
- Merancang cara ia di-deploy dan dioperasikan.
- Membagi pekerjaan ke tim: quality assurance, backend developer, UI developer, DevOps, dan DevSecOps.
- Meninjau temuan quality assurance dan DevSecOps, lalu memasukkan perbaikannya ke arsitektur dan ke alur kerja tim.
Selain itu, saya juga bagian dari tim sebagai backend engineer, di module yang paling mahal bila salah: API utama yang menjadi tumpuan seluruh bagian lain sistem.
Tantangannya
Pemerintah kota mempekerjakan ribuan aparatur sipil negara di puluhan perangkat daerah, dan hampir semua hal tentang mereka diatur peraturan: gajinya, kenaikan gaji berkalanya, kenaikan pangkatnya, batas usia pensiunnya, dan susunan perangkat daerah tempat mereka bekerja. Kota ini sudah punya sistem kepegawaian buatan tim lain, tetapi datanya tak pernah dijaga dengan standar, dan banyak aturannya ditulis ke kode bertahun-tahun lalu lalu diam-diam menjadi usang.
Sistem baru harus membawa data itu tanpa kehilangan apa pun, menerapkan aturan sebagaimana berlaku pada tanggal mana pun dan bukan sebagaimana terakhir kali seseorang menyunting kode, dan melayani tiga kelompok yang sangat berbeda sekaligus — pegawai yang mengurus record-nya sendiri, admin di setiap perangkat daerah, dan kantor kepegawaian yang mengawasi semuanya — masing-masing hanya melihat bagian organisasinya sendiri.
Yang dikerjakannya
A. Pegawai mengurus record-nya sendiri
Setiap pegawai punya portal di ponsel dan desktop: profil, keluarga, riwayat karier dan kompetensi, serta pengingat yang perlu diperhatikannya. Ia mengubah datanya dengan mengusulkan perubahan beserta dokumen pendukungnya, mengikuti setiap usulan sampai disetujui atau dikembalikan, dan membuka layanan kenaikan gaji berkala, kenaikan pangkat, dan pensiun dengan dokumen yang diwajibkan masing-masing.
B. Admin memegang record yang lengkap
Admin mengelola data personal, penempatan, keluarga, dan lebih dari dua puluh jenis riwayat karier, memeriksa usulan pegawai, membawa kasus kenaikan gaji berkala, kenaikan pangkat, dan pensiun sampai keputusannya, dan menerima draf SK yang setiap angkanya berasal dari record.
C. Organisasi tersimpan sebagaimana adanya pada tanggal mana pun
Susunan dan peta jabatan setiap perangkat daerah milik peraturan yang menetapkannya dan berlaku pada tanggalnya sendiri. Seluruh pemerintah bisa digambar sebagaimana adanya pada hari apa pun, dan jumlah orang di setiap jabatan dihitung dari data pengangkatannya.
D. Aturan diambil dari peraturan
Tabel gaji disimpan per peraturan beserta tanggal berlakunya, batas usia pensiun diambil dari jabatan yang dipegang, dan kedudukan hukum seseorang berubah otomatis saat peristiwa yang ditetapkan peraturan dimulai dan berakhir.
E. Setiap akses punya lingkup
Akses diberikan sebagai peran pada satu lingkup — seluruh kota, satu perangkat daerah, atau satu unit seperti sekolah — diajukan dan disetujui orang yang berbeda, dibatasi waktunya, dan mengikuti surat edaran badan kepegawaian nasional tentang pengelolaan akses ke sistem kepegawaian.
F. Melapor, mengingatkan, dan mengundang
Laporan mencakup daftar pegawai, daftar urut kepangkatan, rekapitulasi, bezetting, dan lainnya, masing-masing disaring menurut lingkup pembacanya. Pengingat jatuh tempo dikirim lewat email, dan undangan untuk membuat akun dikirim dalam gelombang harian.
G. Memverifikasi identitas dan menandatangani dokumen
Identitas pemilik akun diverifikasi dengan KTP dan tantangan wajah langsung. Dokumen yang perlu ditandatangani diproses di Aurograf, platform tanda tangan digital kota, dengan SIMPEG sebagai salah satu client eksternalnya.
H. Membawa data lama
Record dari sistem sebelumnya diimpor tahap demi tahap dari salinan yang hanya dibaca, bisa diulang, dengan laporan setiap masalah yang ditemukan dan tanpa data pribadi di laporan itu.
Standar yang dipatuhi
| Standar | Yang dijaminnya di sini | Tempatnya |
|---|---|---|
| OAuth 2.0 dan OpenID Connect, dengan PKCE | login lewat single sign-on eksternal tanpa client secret di browser | Core API, Web App |
| JSON Web Token | satu format token yang bisa diverifikasi setiap service sendiri | Core API |
| TOTP (RFC 6238) | autentikasi dua faktor dengan aplikasi authenticator apa pun | Core API, Web App |
| Presigned URL, AWS Signature Version 4 | file berpindah antara browser dan storage tanpa melewati inti | OSW |
| W3C Trace Context dan OpenTelemetry | satu jejak dari request user melewati setiap service | setiap module |
| ISO 8583 dan ISO 4217 | setiap nominal adalah integer dalam satuan terkecil mata uangnya | Core API, Web App |
| Surat edaran nasional tentang pengelolaan akses kepegawaian | akses diajukan dan disetujui, verifikator bukan penyetuju, pemberian akses paling lama dua tahun | Core API |
| Peraturan kepegawaian tentang gaji, pangkat, pensiun, dan tunjangan | setiap aturan yang diterapkan adalah yang berlaku pada tanggal yang dimaksud | Core API |
| WAI-ARIA | navigasi yang mengumumkan halaman aktif dan target sentuh yang cukup besar untuk ponsel | Web App |
Bagaimana ia dibangun
SIMPEG adalah satu core API dan satu aplikasi web yang dikelilingi service khusus, masing-masing dengan versi dan siklus rilisnya sendiri. Inti memegang aturan dan data kepegawaian; storage, data wilayah, tantangan wajah, dan pratinjau dokumen adalah module yang bisa dipakai ulang dan juga saya pakai di project lain; dan tanda tangan diserahkan ke platform tanda tangan kota.
Core API: record dan riwayat pegawai, usulan, layanan dan keputusan, aturan dari peraturan, bagan organisasi, dan akses berlingkup.
Aplikasi web tempat pegawai dan admin bekerja.
Service storage yang dilewati setiap dokumen dan lampiran.
Service data wilayah di balik setiap alamat.
Tantangan wajah langsung yang dipakai saat verifikasi identitas.
Renderer yang memberi setiap dokumen unggahan pratinjaunya.
Platform tanda tangan kota, tempat dokumen SIMPEG ditandatangani.
Bagaimana ia dirilis dan dioperasikan
Setiap module berjalan sebagai stack container tersendiri dengan image ber-versi, sehingga inti, antarmuka, dan setiap service bisa dirilis menurut jadwalnya sendiri. Jejak setiap request dikumpulkan di satu tempat bersama log-nya, sehingga pertanyaan tentang record mana pun atau layar yang lambat bisa dijawab dari bukti. Perpindahan dari sistem lama pun bagian dari operasi: impor berjalan bertahap dan aman diulang selama sistem lama masih terus berubah sampai saat peralihan.
Tempat setiap jejak dan log platform ini berakhir.
Keputusan kunci
Pakai ulang yang sudah ada. Storage, data wilayah, tantangan wajah, dan pratinjau dokumen adalah module yang saya bangun untuk dipakai bersama lintas project, jadi SIMPEG memakainya apa adanya dan tidak menumbuhkan salinannya sendiri. Sistem kepegawaian hanya berisi apa yang memang tentang kepegawaian.
Tanda tangan milik platform tanda tangan. Kota sudah menjalankan platform tanda tangan digital dengan rantai kepercayaannya sendiri. SIMPEG tidak memegang sertifikat atau menandatangani apa pun sendiri: ia mendaftarkan setiap tahap penandatangan ke platform itu sebagai client eksternal, lalu menerima kembali dokumen yang sudah ditandatangani.
Data lama dipindah bertahap. Database sistem sebelumnya dibaca tanpa pernah ditulisi, setiap tahap aman dijalankan ulang, dan setiap masalah dilaporkan, tidak diam-diam diperbaiki dan tidak dibiarkan menghentikan impor.
Aturan berasal dari peraturannya sendiri. Saya membaca peraturannya, tidak meniru perilaku sistem lama; yang diubah peraturan disimpan sebagai data beserta tanggal berlakunya, dan kode yang menerapkannya menyebut peraturan yang diimplementasikannya.
Uang punya satu konvensi. Setiap nominal, dari tabel gaji sampai SK, adalah integer dalam seperseratus rupiah, konvensi yang sama dengan yang saya pakai di setiap sistem yang saya bangun.
Bagan organisasi tetap relasional dan berversi. Bagan adalah data master bagi pegawai, jabatan, dan akses, jadi ia tinggal di database relasional yang sama, dalam versi-versi yang diadopsi setiap perangkat daerah pada tanggalnya sendiri.
Akses mengikuti organisasi dan pedoman nasional. Setiap pemberian akses menyebut lingkupnya, diajukan dan disetujui orang yang berbeda, dan berakhir dengan sendirinya.
Pegawai mengubah datanya sendiri, dan pemeriksa yang menyetujui. Admin tidak mengetik setiap perubahan; pegawai mengusulkan koreksi beserta dokumennya, lewat validasi yang sama dengan suntingan admin, dan pemeriksa yang memutuskan. Orang yang paling tahu faktanya yang memasukkannya, dan tak ada yang masuk ke record tanpa diperiksa.
Riwayat
SIMPEG menggantikan sistem kepegawaian lama buatan tim lain, yang kini hanya berperan sebagai sumber data yang sedang dipindahkan. Pekerjaan saya pada sistem baru dimulai 2023, dan generasinya yang sekarang — core Laravel baru dan antarmuka Vue baru — dibangun ulang oleh tim berdasarkan rancangan saya, dengan API intinya saya tulis sendiri.
Status
SIMPEG sedang dalam pengembangan dan pekerjaannya terus berlangsung. Halaman ini akan bertumbuh bersamanya seiring bagian-bagian baru sistem dirilis.
Istilah
- Perangkat daerah
- Dinas atau badan pemerintah kota, seperti dinas pendidikan atau kesehatan, dengan susunan dan pegawainya sendiri.
- Kantor kepegawaian
- Kantor kota yang mengawasi aparatur sipil negara di seluruh perangkat daerah dan mengoperasikan sistem ini sehari-hari.
- Kenaikan gaji berkala
- Kenaikan gaji pokok aparatur sipil negara secara berkala yang mengikuti masa kerjanya dalam satu golongan.
- SK
- Surat keputusan, dokumen resmi yang mencatat keputusan tentang seorang pegawai, misalnya kenaikan gaji berkala.
- Single sign-on
- Satu akun yang membuat seseorang bisa login ke banyak aplikasi tanpa password terpisah untuk masing-masing.
Technologies covered
- PHP
- Python
- Rust
- TypeScript
- Laravel
- Vue
- Elasticsearch
- PostgreSQL
- Redis
- Docker
- Kibana
- OpenTelemetry
- ISO 8583