Halo semua, kali ini Majelis IT mengadakan event challenge yang terbuka untuk umum dan khususnya dibuat untuk para member Majelis IT. Sebelumnya Majelis IT telah banyak mengadakan event yang sebagian besar merupakan webinar sekarang Majelis IT ingin men challenge kalian untuk melakukan software engineering dengan mereplika teknologi yang sudah ada, untuk pada challenge pertama ini kalian di tantang untuk membuat redis dari nol.
- Chalege yang tersistemasi dan mudah dalam pengerjaan, pengujian dan penilaianya. selengkapnya tentang teknis akan dijelakan pada point lain di dokumen ini.
- Sarana mempelajari dan memahami teknologi baru dan me reccal dasar dasar computer science.
- Sarana belajar bahasa baru bagi yang ingin menjadikan challenge ini sebagai project dari bahasa yang sedang dipelajari.
- Mengisi waktu luang memacu untuk explorasi lebih dalam bukan hanya mengunakan "redos" tapi paham bagaimana cara kerjanya under the hood
- Tempat Q&A memadai pada group telegram Majelis IT, free dan sangat welcome untuk diskusi dan bertanya satu dengan yang lain di group telegram Majelis IT untuk berbagi dan sharing pengerjaan challenge.
- Prize Saldo Gopay: IDR Rp. 100.000 bagi yang memiliki waktu eksekusi tercepat.
- Memahami TCP communication
- Memahami tipe data primitif
- Memahami Data struktur Hash Map
- Memahami Optimasi Koneksi TCP
- Memahami menggunakan client redis
-
Dapat menerima dan memberi response dari redis protocol: selengkapnya dapat dibaca di https://redis.io/docs/reference/protocol-spec/ sebagai referensi
-
Operasi PING dari redis client/library : selengkapnya dapat dibaca di https://redis.io/commands/ping/ sebagai referensi
- Expected: dikirimkan PING menggunakan redis protocol aplikasi anda harus meresponse dengan PONG [POINT 1]
(client) -> PING -> (app anda) -> PONG
- Expected: dikirimkan PING menggunakan redis protocol aplikasi anda harus meresponse dengan PONG [POINT 1]
-
Operasi SET data key value : selengkapnya dapat dibaca di https://redis.io/commands/set/ sebagai referensi
- Expected: client akan mengirimkan request SET data ke app anda dengan key random uuid dan value angka satu sampai empat dalam string, lalu akan di lakukan operasi GET dari data yang telah di set/kirim [POINT 1]
(client) -> SET 8313-23-322 satu -> (app anda) -> OK (client) -> SET 8313-23-323 dua -> (app anda) -> OK (client) -> SET 8313-23-324 tiga -> (app anda) -> OK (client) -> SET 8313-23-325 empat -> (app anda) -> OK (client) -> SET 8313-23-326 lima -> (app anda) -> OK (client) -> GET 8313-23-322 -> (app anda) -> satu (client) -> GET 8313-23-323 -> (app anda) -> dua (client) -> GET 8313-23-324 -> (app anda) -> tiga (client) -> GET 8313-23-325 -> (app anda) -> empat (client) -> GET 8313-23-326 -> (app anda) -> lima
- Expected: client akan mengirimkan request SET data ke app anda dengan key random uuid dan value angka satu sampai empat dalam string, lalu akan di lakukan operasi GET dari data yang telah di set/kirim [POINT 1]
-
Operasi GET by key : selengkapnya dapat dibaca di https://redis.io/commands/get/ sebagai referensi
- Expected: client akan mengirimkan request SET data ke app anda dengan key random uuid, lalu diuji jika dilakukan operasi get dengan key yang benar maka akan succes jika salah maka akan None/Null [POINT 1]
(client) -> SET 8313-23-322 1 -> (app anda) -> OK (client) -> GET 8313-23-322 -> (app anda) -> 1 (client) -> GET 8313-23-323_# -> (app anda) -> None or negative response redis protocol
- Expected: client akan mengirimkan request SET data ke app anda dengan key random uuid, lalu diuji jika dilakukan operasi get dengan key yang benar maka akan succes jika salah maka akan None/Null [POINT 1]
-
Operasi DEL untuk menghapus data: selengkapnya dapat dibaca di https://redis.io/commands/del/ sebagai referensi
- Expected: client akan mengirimkan request SET data ke app anda dengan key random uuid, lalu diuji jika dilakukan operasi delete dengan key yang benar maka jika dilakukan operasi GET maka akan return None/Null [POINT 1]
(client) -> SET 8313-23-322 1 -> (app anda) -> OK (client) -> DEL 8313-23-322 -> (app anda) -> OK (client) -> GET 8313-23-323 -> (app anda) -> None or negative response redis protocol
- Expected: client akan mengirimkan request SET data ke app anda dengan key random uuid, lalu diuji jika dilakukan operasi delete dengan key yang benar maka jika dilakukan operasi GET maka akan return None/Null [POINT 1]
-
Operasi SET dengan TTL (Time To Live)/kadaluwarsa: selengkapnya dapat dibaca di https://redis.io/commands/set/ sebagai referensi
- Expected: client akan mengirimkan request SET data ke app anda dengan key random uuid, value dan TTL selama 2 detik, setelah 5 detik akan dilakukan operasi GET maka akan return None/Null [POINT 1]
(client) -> SET 8313-23-322 1 20 -> (app anda) -> OK -- runtime sleep 5 detik -- (client) -> GET 8313-23-323 -> (app anda) -> None or negative response redis protocol
- Expected: client akan mengirimkan request SET data ke app anda dengan key random uuid, value dan TTL selama 2 detik, setelah 5 detik akan dilakukan operasi GET maka akan return None/Null [POINT 1]
- https://app.codecrafters.io/courses/redis/overview | !!diharapkan untuk dijadikan referensi bukan copy paste code
- https://www.interviewcake.com/concept/java/hash-map | referensi hashmap
- https://www.pankajtanwar.in/blog/how-redis-expires-keys-a-deep-dive-into-how-ttl-works-internally-in-redis | TTL redis under the hood
- Peserta harus mendaftarkan github repo url yang digunakan untuk mengerjakan challenge di https://majelisit-challenge-board.vercel.app/challenge/1
- Peserta dilarang mencurangi sistem penilaian seperti melakukan request untuk menambahkan nilai melalui open endpoint yang kami sediakan, sistem ini bersifat terbuka dan gratis dan untuk bersama kami harapkan tidak melakukan hal yang merusak sistem penilaian
- Tidak ada batas waktu pengerjaan untuk challenge ini bagi yang mau menggunakan sebagai sarana pembelajaran.
- Untuk kateegori eksekusi tercepat batas penilaian adalah pada 1 Agustus 2023.
- Docker pada laptop masing masing. Hasil pengerjaan pada challenge ini harus berjalan di dalam container untuk dapat di uji oleh sistem. Fell free untuk bertanya pada group Majelis IT jika memiliki kendala atau belum pernah menggunakan docker, kami jamin tidak akan sulit.
- Git dan akun Github
- Silahkan kunjungi link berikut https://github.com/majelis-it/redis-challenge-template lalu klik
Create a new repository
.
- Clone repository baru anda yang telah dibuat dari template yang kami sediakan. lalu kunjungin https://majelisit-challenge-board.vercel.app/challenge/1 untuk mendaftarkan repo anda.
- Pada template repo diatas terdapat contoh pengejaan dalam bahasa python namun belum lengkap, anda dapat menggunakan bahasa bebas, tidak ada pembatasan bahasa atau bahkan jika konfigurasi docker container anda melalui pada Dockerfile
- Kerjakan challenge anda pada folder workspace, pastikan tidak mengubah kode pada folder alatuji.
- Ubahlah file docker-compose.yml pada bagian
GITHUB_REPO_URL=https://github.com/alfiankan/majelis-it-challenge-board
menjadi link url github repo anda yang di gunakan untuk mengerjakan challenge ini (pastikan sudah terdaftar di https://majelisit-challenge-board.vercel.app/challenge/1) - Untuk menguji di local anda dapa menjalankan perintah
docker-compose up --build
pastikan docker sudah menyala dan memiliki koneksi internet - Jika sudah yakin dengan hasil pengerjaan silahkan push ke github repo anda
- Anda dapat melihat hasil pengujian yang anda lakukan di https://majelisit-challenge-board.vercel.app/challenge/1 pada board yang di sediakan klik expand untuk melihat history pengerjaan anda.
- Good Luck
- Dipersilahkan berdiskusi bebas.
- Join dengan klik link berikut: https://linktr.ee/majelis_it