Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Enkripsi Data dalam Aplikasi

Tahun lalu, kita sudah membahas cara enkripsi data di aplikasi menggunakan Vault. Enkripsi data menggunakan Vault lebih aman, dan saat ini bahkan sudah diterima untuk mengajukan sertifikasi PCI-DSS. Walaupun demikian, untuk aplikasi kecil, yang dijalankan oleh perusahaan yang tidak memiliki personel IT operation yang memadai, agak sulit untuk mengelola instalasi Vault server.

Oleh karena itu, pada artikel ini, kita akan membahas metode enkripsi data yang lebih mudah dikelola di production. Akan tetapi, perlu saya tekankan sebelumnya bahwa keamanan enkripsi terutama terletak pada kerahasiaan kunci enkripsi. Dengan Vault, kunci enkripsi disimpan dengan aman. Dengan metode ini, kunci enkripsi disimpan tertulis secara plaintext di server aplikasi. Walaupun kita set permission agar cuma bisa diakses oleh user root, tetap ini adalah resiko security yang besar. Anyway, setidaknya data sensitif user aplikasi tidak tersimpan dalam format plain text.

Kita akan menggunakan algoritma AES untuk mengenkripsi data dan file milik user. Konsep dasar dan contoh kode programnya sudah pernah kita bahas di artikel terdahulu. Di artikel ini, kita akan mengaplikasikan artikel tersebut ke dalam aplikasi Spring Boot.

Lanjut membaca ...


External Services dengan Docker Compose

Di jaman sekarang, aplikasi yang saya buat umumnya sudah mengadopsi arsitektur Cloud Native, yaitu aplikasi yang bisa berjalan dengan baik di environment cloud. Penjelasan detail tentang aplikasi Cloud Native ini sudah pernah saya jelaskan di Youtube.

Singkatnya, aplikasi cloud native biasanya menggunakan beberapa external services, misalnya:

  • Database relasional (MySQL, PostgreSQL, dsb)
  • Message Broker (Kafka, dsb)
  • Database non-relasional / NoSQL (Redis, Elasticsearch, dsb)

External service ini harus bisa diganti dengan implementasi lain, misalnya dari local ke cloud, dari cloud ke on-premise, dan berbagai skenario lainnya.

Agar kita bisa develop aplikasi dengan external service tersebut, maka development environment kita (misalnya PC atau laptop) harus menyediakan service yang dibutuhkan. Kebutuhan ini berbeda-beda antar project. Misal di project A saya menggunakan MySQL. Project B menggunakan PostgreSQL. Project C menggunakan PostgreSQL dan Kafka. Project D menggunakan MySQL dan Redis. Project E menggunakan ElasticSearch dan MongoDB. Dan seterusnya.

Apabila kita harus menginstal semua service tersebut, dan jalan pada waktu booting, waduh berapa RAM yang harus kita sediakan. Belum lagi nanti kita harus membuatkan database instance untuk masing-masing aplikasi. Bisa-bisa kita instal MySQL yang isinya belasan database sesuai dengan project yang pernah kita tangani.

Ini juga menjadi lebih sulit buat para team leader atau arsitek yang harus melakukan supervisi ke banyak project sekaligus. Oleh karena itu, kita perlu membuat sistem kerja yang baik agar tidak kusut.

Solusi yang biasa saya gunakan, terdiri dari 3 aspek:

  1. Project harus portable
  2. Project harus self-contained
  3. External service yang dibutuhkan, harus dideklarasikan dengan konsep Infrastructure as a Code

Mari kita elaborasi …

Lanjut membaca ...


Instalasi Netbeans di MacOS

Sebetulnya di tahun 2021 ini, saya sudah lama tidak menggunakan Netbeans. Terakhir pakai di versi 8, dan sekarang sudah versi 11. Tapi ya apa boleh buat, ada client yang pengen pakai ini dan tanya bagaimana caranya. Dengan semangat maju tak gentar membela yang bayar, baiklah mari kita install.

Biasanya, instalasi Netbeans tinggal next-next saja sampai finish. Tapi karena Java di laptop saya diinstal menggunakan SDKMAN, maka installernya Netbeans macet dengan pesan error berikut ini

Lanjut membaca ...


Internet Ngebut dengan WAN Bonding

Sebagai orang IT, kita selalu dipanggil apabila ada hal-hal yang berkaitan dengan komputer. Baik itu printer, proyektor, apalagi internet. Ditambah lagi di jaman ini, meeting online sudah menjadi kebutuhan dasar di semua institusi. Apabila terjadi gangguan internet, maka kita orang IT adalah yang paling pertama dipanggil.

Sejak sebelum jaman Zoom/GMeet/dsb, saya sebetulnya sudah sering juga menangani live streaming event. Salah satu artikel di blog ini membahas tentang cara melakukan live streaming berbarengan ke banyak platform sekaligus. Ada videonya juga, yang bisa ditonton di sini

Salah satu masalah yang kita alami pada waktu melakukan live streaming, apalagi di lokasi event, adalah ketersediaan internet. Kita belum tentu dapat akses internet gedung yang biasanya menggunakan fiber optik dan kabel, stabil dan kencang. Biasanya kita mengandalkan koneksi modem wifi (mifi) yang menggunakan koneksi seluler. Beberapa rekan bahkan membeli wajan mikrotik untuk memperkuat sinyal.

Walaupun demikian, kita tetap mengalami kepanikan apabila provider seluler yang kita gunakan ternyata sedang gangguan. Mau pakai wajan selebar apapun, kalau providernya sedang bermasalah, ya tentu tidak akan menolong.

Selain itu, kondisi sinyal di lokasi kita tidak bisa pastikan. Ada lokasi yang Telkomsel berjaya, XL tiarap. Tapi di lokasi lain, justru XL ngebut, Indosat ngesot. Jadi kita harus gonta-ganti simcard sesuai yang sinyal yang bagus.

Jadi, akhirnya saya mencari cara untuk menggabungkan beberapa provider seluler sehingga tidak terlalu manual gonta-ganti modem dan simcard.

Setelah menjelajah dunia maya bertahun-tahun – sebetulnya saya mulai kepikiran masalah ini sejak awal live streaming di tahun 2019 dulu – akhirnya saya menemukan solusi yang sesuai dengan keinginan saya.

Lanjut membaca ...


Upgrade Major Version Gitlab

Buat yang ingin menginstal repository Git di server sendiri, Gitlab adalah aplikasi yang populer dan banyak digunakan karena open source, gratis, dan lengkap fiturnya. Gitlab juga sampai sekarang sangat aktif dikembangkan oleh para maintainernya, sehingga fitur-fitur baru terus bermunculan.

Hal ini tentu menggembirakan bagi para penggunanya, tapi juga relatif merepotkan bagi yang bertugas mengurus servernya. Ya apa lagi kalau bukan urusan upgrade versi. Begitu kita lupa upgrade beberapa bulan saja, maka kita akan ketinggalan rilis major version, sehingga urusan upgrade tidak lagi sesederhana apt update && apt upgrade -y.

Nah pada artikel ini saya akan mencatat langkah-langkah yang perlu dilakukan untuk mengupgrade Gitlab agar bisa kembali menyusul versi terbaru.

Lanjut membaca ...