oleh
Asraf
2001092024
2022
Lembar Pengesahan
oleh
Asraf
2001092024
i
Lembar Pengesahan
oleh
Asraf
2001092024
Mentor
ii
Abstraksi
Program Magang dan Studi Independen Bersertifikat (MSIB) adalah bagian dari
kebijakan Merdeka Belajar oleh Kementerian Pendidikan, Kebudayaan, Riset, dan Teknologi
(Kemendikbudristek) yang memberikan seluruh mahasiswa kesempatan untuk mengasah
kemampuan sesuai bakat dan minat dengan terjun langsung ke dunia kerja sebagai langkah
persiapan karier. Program ini menawarkan pengalaman belajar diluar kampus yang dapat
diambil oleh para mahasiswa pada tingkat tertentu dengan maksud untuk memperkecil jarak
antara kebutuhan industri dengan hasil lulusan Universitas yang akan ada.
iii
KATA PENGANTAR
Dengan menyebut nama Tuhan Yang Maha Esa. Mari kita panjatkan puja dan puji
syukur atas kehadirat-Nya, yang telah melimpahkan rahmat dan berkat-Nya kepada saya,
sehingga dapat menyelesaikan laporan akhir studi independen bersertifikat dengan program
“Backend Engineering Ruangguru CAMP” yang diselenggarakan PT. Ruang Raya Indonesia.
Laporan akhir ini telah disusun dengan maksimal dan mendapatkan bantuan dari
berbagai pihak sehingga dapat memperlancar pembuatan laporan ini. Penulis mengucapkan
terima kasih dan penghargaan setinggi-tingginya atas segala dukungan, bimbingan,
penghargaan dan bantuan kepada penulis. Ucapan terimakasih penulis sampaikan kepada
berbagai pihak, terutama kepada :
Asraf
iv
DAFTAR ISI
v
Dokumen Teknik ..................................................................................................................... 30
vi
DAFTAR GAMBAR
vii
1
BAB I
PENDAHULUAN
Pada program Studi Independen Ruangguru bersama Kampus Merdeka, materi ajar
yang akan diberikan kepada mahasiswa akan disusun oleh tim ahli pengembangan konten dari
Ruangguru bersama para instruktur berpengalaman dan didukung oleh teknologi canggih untuk
mempermudah proses pembelajaran.
I.2 Lingkup
Backend memiliki peranan penting dalam mendorong inovasi yang disruptif. Tanpa
dukungan back-end yang baik, website yang sudah disusun cantik tentu saja akan tidak dapat
diakses. Oleh karena itu, peranan back-end sangatlah penting dalam membangun website yang
bisa diakses dengan lancar.
I.3 Tujuan
2
19. Golang
20. Mampu melakukan debug menggunakan VSCode dan membuat error handling pada
Golang
21. Mampu menerapkan basic Data Structure dan Algorithm
22. Mampu membuat dan menjalankan Test Cases pada Golang
23. Mampu menggunakan I/O file pada Golang
24. Mampu membuat Aplikasi sederhana berbasis Terminal
25. Mampu memahami dan menerapkan basic Concurrency pada Golang
26. Mampu memahami dan mengenal Database System
27. Mampu memahami Basic Prinsip database
28. Mampu menggunakan PostgreSQL sesuai best practices (konsep SQL)
29. Mampu memahami konsep ORM (GORM)
30. Mampu menggunakan ORM untuk relational database (Postgres)
31. Mampu menggunakan NoSQL (MongoDB)
32. Mampu melakukan Transaction Management dan Concurrency Control
33. Mampu membuat aplikasi CRUD dengan golang yang terintegrasi dengan Postgers atau
MongoDB
34. Mampu membuat HTTP client-server (CRUD) dengan REST API pada Golang.
35. Mampu menggunakan 3rd Party API pada Golang.
36. Mampu membuat dokumentasi API.
37. Mampu membuat Authentication dan Authorization.
38. Mampu memahami dan menerapkan basic Design Patterns.
39. Mampu mamahami menerapkan Clean Architecture.
40. Mampu memahami basic mengenai IaaS, PaaS, SaaS
41. Mampu melakukan build dan deploy ke PaaS (e.g Heroku).
42. Mampu melakukan presentasi dengan efektif
43. Mampu berkomunikasi dengan baik dan efektif.
44. Memahami dasar pemahaman berpikir sebagai salah satu insting dasar manusia.
45. Mampu memahami dasar keterampilan berpikir sebagai salah satu pengembangan diri.
3
4
BAB II
Peserta akan melakukan pembelajaran syncronus dan asyncronus dimana materi yang
diajarkan sesuai dengan lingkup dari divisi Business Operations antara lain:
Adapun deskripsi dari pembelajaran yang telah dilaksanakan oleh peserta berdasarkan
tipe modul adalah sebagai berikut:
1. General Competencies
a. Mempelajari cara melakukan presentasi dengan efektif
b. Mempelajari berkomunikasi dengan baik dan efektif
c. Mempelajari dasar-dasar pengelolaan proyek
d. Mempelajari kemampuan memimpin suatu proyek
e. Mempelajari dasar pemahaman berpikir sebagai salah satu insting dasar manusia
f. Mempelajari dasar keterampilan berpikir sebagai salah satu pengembangan diri
2. Software Engineering
a. Mempelajari pengembangan software dengan mindset seorang software engineer
b. Mempelajari pengembangan software dengan code editor Visual Studio Code
c. Mempelajari navigasi di terminal
d. Mempelajari basic terminal command
e. Mempelajari inisiasi dan mengiterasi sebuah projek dengan version control Git
f. Mempelajari command-command dasar pada Git seperti commit, push, pull, merge,
dsb
g. Mempelajari management project yang dikembangkan di repository Github
h. Mempelajari merge request di Github
i. Mempelajari sebuah server dan mengexpose server tersebut agar bisa dilihat oleh
public
j. Mempelajari port dan IP address
5
3. Basic Frontend Web Development with HTML & CSS
a. Mempelajari cara menstruktur sebuah dokumen HTML
b. Mempelajari meta tag dan penerapannya
c. Mempelajari perbedaan antara beragam elemen HTML yang berbeda
d. Mempelajari CSS dan peranannya dalam memberikan styling ke dokumen HTML
e. Mempelajari seleksi elemen HTML mana yang akan diberikan styling
f. Mempelajari release website ke Internet
6. Web Application
a. Mempelajari HTTP client-server (CRUD) dengan REST API pada Golang.
6
b. Mempelajari 3rd Party API pada Golang.
c. Mempelajari dokumentasi API.
d. Mempelajari Authentication dan Authorization.
e. Mempelajari dan menerapkan basic Design Patterns.
f. Mempelajari Clean Architecture.
g. Mempelajari basic mengenai IaaS, PaaS, SaaS
h. Mempelajari build dan deploy ke PaaS (e.g Heroku).
1. Sesi Mentoring
Yaitu Pendampingan mentor secara 1 on 5 dengan siswa melalui kelompok belajar
kecil. Pada saat mentoring mentor akan menjelaskan kepada para peserta tentang
courses yang sedang berlangsung. Para peserta akan ditanya satu per satu untuk
memastikan jika ada peserta yang tidak mengerti dengan courses yang telah
disampaikan oleh mentor. Pada sesi mentoring ini juga akan di adakan kuis tentang
courses yang dibahas.
2. Ruang Konsultasi
Peserta dapat konsultasi atau bertanya mengenai materi yang ada di dalam Ruangguru
CAMP kepada para mentor melalui discord. Pertanyaan ini dapat dilihat oleh peserta
lain dan jawaban dari pertanyaan itu juga bisa dilihat oleh peserta lainya.
3. Live QnA
Sesi tanya jawab melalui google meet yang di ikuti oleh seluruh peserta.
4. Inspirational Class
7
Webinar bagi seluruh peserta program dengan kesempatan untuk berbincang langsung
dengan leadership team Ruangguru, pelaku usaha, guest experts dari dalam dan luar
negeri dari berbagai bidang.
5. Townhall
Ruangguru mengadakan sesi pertemuan bersama peserta untuk mengupdate informasi
terbaru selama kegiatan.
Pada program Back End Engineering Ruangguru CAMP terdapat 6 courses yang
berlangsung dari tanggal 24 Agustus – 20 Desember 2022. Setiap courses terdapat beberapa
tugas yaitu pre-test, exercise, assignment, final project dan post-test. Setiap courses telah
ditentukan jadwal dimulai dan berakhirnya. Setiap perserta diharuskan menyelesaikan tugas-
tugas yang telah diberikan sebelum jadwal yang ditentukan berakhir, jika tidak nilai akan
dikurangi, yaitu point maksimal hanya 40.
8
9
BAB III
Ketika program pertama kali dijalankan, tampilan pada Gambar 3.1 akan muncul yang
meminta pengguna untuk melakukan aksi registrasi atau masuk jika telah memiliki akun.
Tampilan ini pertama kali keluar karena di atur ketika route dari URL menuju / (root), maka
akan menampilkan template (view) dari file HTML yang bernama index.html.
III.2.1 Proses Registrasi Pengguna
Setelah pengguna memasukkan username dan password untuk registrasi, maka tombol
Submit pada Gambar 3.2 akan ditekan. Tombol ini akan membawa pengguna ke rute /user/reg
ster yang hanya menerima HTTP Request jenis POST. Terdapat method pada API yang
bernama Reg ster yang akan di hit ketika tombol Submit tersebut ditekan.
Pada API tersebut, dilakukan parsing dari form HTML pada register.html untuk
mendapatkan username dan password yang dimasukkan oleh pengguna baru. Kemudian
method Reg ster ini akan memanggil method AddUser yang akan memeriksa apakah username
sudah ada di dalam basis data dalam kasus ini adalah basis data NoSQL jenis JSON.
Setelah pengguna berhasil melakukan registrasi, maka pada basis data NoSQLyang bertipe
JSON akan ditambahkan seperti gambar berikut:
10
Gambar 3. 3 Tampilan Repositori Pengguna
Dapat dilihat pada gambar tersebut terdapat sebuah array dari JSON yang memiliki
keys password dan username. Ketika pengguna melakukan registrasi, maka pada array JSON
tersebut akan ditambahkan data baru (append) dengan username dan password yang
dimasukkan oleh pengguna tersebut.
11
III.2.2 Proses Masuk Pengguna
Jika middleware mengizinkan maka akan lanjut ke method Log n. Pada method ini
kembali dilakukan parsing form untuk mendapatkan masukkan dari pengguna. Berbeda dengan
proses registrasi, proses masuk akan memeriksa dalam basis data jika pengguna dengan
username tertentu sudah ada. Kemudian dilakukan pencocokan dengan password berdasarkan
username tersebut.
Jika username dan password tersebut cocok, maka akan dibuat cookie pada browser
untuk session-based authentication yang akan kadaluwarsa setelah 5 jam. Cookie ini
menyatakan bahwa pengguna telah masuk dan sesi pengguna ini hanya dapat digunakan
sebelum 5 jam setelah masuk (atau sebelum keluar secara langsung oleh pengguna) dan akan
muncul view dari dashboard.
Adapun tampilan dari repositori session setelah pengguna berhasil melakukan login adalah
sebagai berikut:
12
Gambar 3. 5 Tampilan Repositori Session
Dapat dilihat pada gambar tersebut terdapat sebuah array dari JSON yang memiliki
keys token, username, dan exp ry. Ketika pengguna melakukan login, maka sesi dari login
tersebut akan disimpan dalam repositori dengan token unik yang dihasilkan secara otomatis.
Key username menyimpan nama pengguna yang melakukan login sementara key exp
ry mengatur lama waktunya sesi berakhir. Pada contoh ini sesi akan berakhir 5 jam setelah
login. Sebenarnya browser juga menyimpan data tersebut dalam bentuk cookie, jika dalam
waktu 5 jam setelah login pengguna ingin menggunakan aplikasi kembali, maka akan
dilakukan cek waktu berakhir pada repositori berdasarkan token sehingga pengguna tidak perlu
memasukkan username dan password kembali.
Ketika pengguna sudah berhasil masuk dan username serta cookie berhasil disimpan
dalam browser, maka pengguna selanjutnya akan dibawa ke tampilan dashboard. Pada tampilan
dashboard, akan dikeluarkan produk-produk yang tersedia berdasarkan data yang ada pada
basis data.
13
Gambar 3. 6 Daftar Produk Yang Tersedia
Produk-produk tersebut dapat ditampilkan dengan memanggil repository produk. Pada
repository tersebut, terdapat method Readflroducts yang akan mengeluarkan semua detail
produk dari basis data. Bersamaan dengan tampilan dashboard.html, data dari produk-produk
ini diteruskan (execute) dengan menggunakan template sehingga detail produk tersebut akan
muncul di tampilan dashboard.
14
Pengguna dapat menambahkan produk ke kerajangnya dengan menekan checkbox dan
memilih jumlah produk yang ingin di tambahkan ke dalam kerajangnya. Tiap checkbox,
berdasarkan eksekusi template dari dashboard.html memiliki nilai ID dari produk itu sendiri.
Jumlah item merupakan banyaknya produk dalam ID yang sama yang akan ditambahkan ke
dalam keranjang.
Proses penambahan produk ke keranjang sampai penekanan tombol Add to Cart pada
dasarnya merupakan proses form dengan metode POST yang hasilnya perlu dilakukan parsing.
Ketika tombol tersebut ditekan, maka akan memanggil API AddCart yang melakukan parsing
form produk dan menambahkannya ke keranjang serta menghitung jumlah harganya.
Pada gambar tersebut dapat dilihat setelah menambahkan produk ke keranjang belanja,
maka produk-produk tersebut akan muncul dalam keranjang belanja pengguna beserta total
harga tiap produk dalam satu ID dan total keseluruhan harga produk dalam keranjang.
Tampilan daftar keranjang belanja tersebut didapatkan dari penggunaan repository carts.
Ketika pengguna pertama kali masuk, maka akan diperiksa keranjang belanjanya
berdasarkan username pada basis data keranjang belanja. Ketika tidak ada keranjang belanja
dengan username pengguna, maka keranjang belanja tidak akan dikeluarkan. Ketika terdapat
15
kerajang belanja dengan username pengguna tersebut, maka nama- nama produk yang ada
dalam keranjang belanja pengguna akan dikeluarkan.
Pada repositori keranjang belanja juga disimpan data kerajang belanja dari pengguna sekarang
seperti pada gambar berikut:
Pada gambar tersebut dapat dilihat terdapat array dari JSON yang memiliki key name
bertipe data string, cart bertipe data array berisi produk-produk yang ditambahkan ke
keranjang. Key ini memiliki key di dalamnya, yaitu d, name, pr ce, quant ty, dan total. Key
terakhir di repositori keranjang belanja adalah total_pr ce. Pada repositori tersebut ditunjukkan
implementasi dari array JSON dua dimensi.
16
17
BAB IV
Penutup
IV.1 Kesimpulan
1. Pembuatan aplikasi berbasis web dengan menggunakan bahasa Go dan basis data
NoSQL menggunakan beberapa macam packages yang tersedia dalam bahasa Go.
2. Pada pembuatan aplikasi, digunakan packages HTTP. Packages ini menyediakan
implementasi untuk klien dan server HTTP.
3. Pada pembuatan aplikasi, digunakan packages Template dan framework CSS yaitu
TailwindCSS. Packages ini menyediakan implementasi untuk eksekusi file HTML
menjadi viewport pada web browser dan menerapkan logika pemrograman pada model.
4. Pada pembuatan aplikasi, terdapat implementasi dari sebuah middleware. Middleware
dapat menyaring jenis HTTP Request hingga melakukan authentication pengguna
untuk menyimpan session data dalam cookie.
5. Pada pembuatan aplikasi, digunakan basis data tanpa tabel atau NoSQL dengan
pemanfaatan file jenis JSON.
6. Pada pembuatan aplikasi, proses I/O data menggunakan implementasi packages OS dan
JSON untuk membaca file JSON yang tersimpan dalam server dan melakukan encoding
serta decoding JSON menjadi objek dalam Go.
IV.2 Saran
Adapun saran penulis untuk Program Magang & Studi Independen Bersertifikat,
diantaranya:
18
19
REFERENSI
[1] Kemendikbud. 2020. Buku Panduan Merdeka Belajar – Kampus Merdeka. Jakarta:
Direktorat Jendral Pendidikan Tinggi Kemdikbud RI.
Lampiran A
Terms of Reference
21
22
23
24
25
26
27
Lampiran B
Log Activity
Pada Bagian ini berisi log activity dengan format sebagai berikut:
12. 4
28
Membuat Final Project materi Dasar Dapat menyelesaikan Final
14. Pemograman Backend dan mengerjakan project dan mengerjakan post
post test test materi Dasar Pemograman
Backend
Memasuki materi baru Database Dapat memahami materi baru
management & technology, mempelajari Database management &
materi database system, data model, basic technology, mempelajari
principle, dan SQL serta mengerjakan materi database system, data
15.
Exercise & assignment sesi 1 model, basic principle, dan
SQL serta menyelesaikan
Exercise & assignment sesi 1
Mempelajari ORM_GORM dan NoSQL, Dapat memahami materi
serta mengerjakan exercise & assignment ORM_GORM dan NoSQL,
16. sesi 2 , final project dan post test serta menyelesaikan exercise
& assignment sesi 2 , final
project dan post test
Memasuki materi web application, Menyelesaikan pre-test, dan
mengerjakan pre-test, dan mempelajari Rest mempelajari Rest API dan
29
30
Lampiran C
Dokumen Teknik
Berikut merupakan dokumen hasil dari proses pembelajaran yang dilaksanakan sampai
pada akhir program Studi Independen serta sertifikat dari kelas yang telah diselesaikan.
2. Halaman Registrasi
3. Tampilan Repositori Pengguna
4. Halaman Login
31
5. Tampilan Repositori Session
32
7. Proses Penambahan Produk oleh Pengguna
33
9. Tampilan Repositori Keranjang Belanja
C.2 Certificate
1. General Competence
34
2. Software Engineering
35
4. Dasar Pemograman Backend
36
6. Web Application
37