PRAKTIKUM RSI

Pertemuan 1 · Overview

Apa yang terjadi di balik tombol?

Bayangkan Anda sedang menekan tombol "Beli" di sebuah aplikasi e-commerce, atau menekan "Login" di media sosial. Bagi kita sebagai pengguna, itu hanyalah satu klik sederhana yang terasa instan.


Namun faktanya, satu klik tersebut sebenarnya memicu sebuah reaksi berantai yang kompleks antar mesin, program, dan jaringan internet.


Apa yang sebenarnya terjadi dalam sepersekian detik tersebut?

Pertemuan 1 · Arsitektur

Client & Server

Laptop atau smartphone yang kalian gunakan bertindak sebagai Client, yaitu pihak yang mengirimkan permintaan (Request).

Sementara di tempat lain, ada komputer Server yang bertugas memproses permintaan tersebut dan mengirimkan balasan (Response) berupa data yang Anda butuhkan.

Pertemuan 1 · Arsitektur

3-Tier Architecture

Sebuah Server tidak bekerja sendirian. Untuk mengelola sistem yang kompleks, aplikasi modern dibagikan ke dalam 3 lapisan (3-Tier Architecture):

1
Presentation Tier (Client)

Apa yang Anda lihat dan interaksikan di layar.

2
Logic Tier (Server)

Otak dari aplikasi yang memproses aturan bisnis, komputasi perhitungan, dan mengambil keputusan.

3
Data Tier (Database)

Tempat penyimpanan data secara permanen, seperti daftar produk, harga, hingga akun pengguna.

Dalam arsitektur web yang kita bangun di praktikum ini, ketiga bagian tersebut diwujudkan secara nyata melalui Frontend (Presentation Tier), Backend (Logic Tier), dan Database (Data Tier).

Pertemuan 1 · HTTP

HTTP Request & Response

Saat Client berkomunikasi dengan Server, protokol jaringan yang digunakan adalah HTTP. Berikut pemetaan aksi CRUD ke metode-metode HTTP:

  • Create (POST): Membuat data baru (misal: mendaftar akun).
  • Read (GET): Mengambil/menampilkan data (misal: melihat daftar produk).
  • Update (PUT): Memperbarui data yang ada (misal: mengubah alamat pengiriman).
  • Delete (DELETE): Menghapus data (misal: menghapus barang dari keranjang).

*Sebenarnya metode HTTP ada banyak yang lain, namun hanya beberapa yang umum digunakan seperti 4 di atas.

Pertemuan 1 · Project Management

Kode yang rapi

Bayangkan sebuah aplikasi tidak hanya dibuat oleh satu orang, melainkan oleh tim berisi puluhan developer yang bekerja secara bersamaan.

Bagaimana caranya agar kodingan yang ditulis oleh Developer A tidak saling menimpa atau merusak kodingan milik Developer B?

Di sinilah kita membutuhkan sistem pelacak perubahan.

Git & Version Control
Pertemuan 1 · Version Control

Git & GitHub

Untuk mengatasi masalah kolaborasi tersebut, kita menggunakan Git dan GitHub.

Git

Sistem Version Control lokal yang mencatat setiap riwayat perubahan pada folder project kalian di komputer. Sangat berguna untuk tracking perubahan di code base kalian, apalagi saat skala project mulai membesar dan serius.

GitHub

Platform berbasis cloud tempat menyimpan dan membagikan repository Git tersebut, sehingga seluruh tim dapat berkolaborasi dari mana saja.

Silahkan download dan install Git di git-scm.com/install,
dan buat akun GitHub di github.com jika belum punya.

Pertemuan 1 · Local Workflow

3 Tahap Penyimpanan

Ada tiga tahap penyimpanan dalam workflow Git:

WorkingDirectory
StagingArea
LocalRepository
  1. Working Directory: Tempat Anda mengedit dan menulis kode.
  2. Staging Area: Tempat Anda memilih berkas mana saja yang siap untuk disimpan.
  3. Local Repository: Tempat perubahan berhasil disimpan secara resmi ke dalam riwayat Git di komputer Anda.
git add

Menambahkan perubahan dari Working Directory ke Staging Area.

git commit

Menyimpan perubahan dari Staging Area ke Local Repository secara resmi.

git restore

Membatalkan perubahan, bisa dari Staging ke Working Directory, atau membatalkan perubahan kembali ke commit sebelumnya.

Pertemuan 1 · Local Workflow

Perintah Dasar Git

Selain workflow di atas, berikut beberapa perintah dasar lain yang perlu diketahui:

git init

Menginisialisasi repository Git baru di folder saat ini.

git log --oneline

Melihat riwayat commit dalam format ringkas — satu baris per commit.

git help

Menampilkan daftar perintah Git atau dokumentasi untuk perintah tertentu.

Pertemuan 1 · Local Workflow

Memeriksa Status Repository

git status

Menampilkan kondisi repository saat ini, file mana yang sudah di-staging, belum di-staging, atau belum terlacak.

Berikut contoh output yang biasanya muncul:

git status
git status On branch main Changes to be committed: new file: src/index.js modified: README.md Changes not staged for commit: modified: src/utils.js Untracked files: temp.log
Changes to be committed: file sudah di-staging, siap di-commit.
Changes not staged for commit: file sudah diubah tapi belum di-staging.
Untracked files: file baru yang belum pernah di-track oleh Git.
Pertemuan 1 · Reset

Membatalkan Commit Terakhir

Bagaimana jika kita ingin membatalkan commit yang sudah terlanjur dibuat di Local Repository? Git menyediakan perintahgit resetdengan tiga tingkat keamanan:

--soft

Membatalkan commit, tetapi perubahan berkas tetap aman di Staging Area.

--mixed(default)

Membatalkan commit dan staging, perubahan balik ke Working Directory.

--hard

Membuang seluruh perubahan secara permanen dan mengembalikan proyek ke kondisi commit sebelumnya.

Pertemuan 1 · Remote

Remote Repository

Ketika seluruh perubahan di komputer lokal sudah rapi dan teruji, saatnya menghubungkannya dengan tim melalui Remote Repository (GitHub):

git push

Mengirimkan commit dari Local Repository ke Remote Repository agar bisa dilihat oleh tim.

git pull

Mengambil dan menggabungkan pembaruan terbaru dari Remote Repository ke Local Repository.

git fetch

Hanya mengambil informasi dari remote tanpa menggabungkan. Berguna untuk melihat perubahan sebelum memutuskan untuk merge.

git clone <url>

Mengcopy repository dari remote ke komputer lokal beserta seluruh riwayatnya.

Pertemuan 1 · Branching

Branch: Ruang aman untuk eksperimen

Dalam proyek nyata, kita tidak boleh langsung mengubah kode utama (main) yang sedang dipakai pengguna. Disinilah kita perlu melakukan branching.

Branch seperti membuat cabang salinan dari kode proyek Anda. Developer bisa membuat percabangan baru untuk memperbaiki bug atau menambah fitur baru secara terpisah. Ketika pekerjaan selesai dan teruji, perubahan di branch tersebut akan digabungkan kembali ke branch utama tanpa mengganggu alur pengembangan lainnya.

Pertemuan 1 · Branch Commands

Command-command dasar manipulasi branch

Untuk mengetahui posisi branch dan commit yang sedang Anda kerjakan saat ini, Git menggunakan penanda bernama HEAD.

Perintah dasar branching:

git switch -c <nama-branch>

Membuat branch baru sekaligus pindah ke sana.

git switch <nama-branch>

Pindah ke branch yang sudah ada.

git branch -d <nama-branch>

Hapus branch yang sudah tidak dipakai.

Pertemuan 1 · Merge

Merge Strategies

Ketika fitur di branch lokal sudah selesai, ada tiga metode umum untuk menggabungkannya kembali ke main:

1. Merge

Menggabungkan dua branch dengan membuat satu commit penanda baru (Merge Commit). Riwayat percabangan tetap terlihat jelas.

2. Rebase

Memindahkan pangkal branch fitur ke ujung main, sehingga riwayat commit terlihat lurus dan rapi.

3. Squash Merge

Menumpuk dan memadatkan banyak commit kecil menjadi satu commit tunggal di main, menjaga riwayat main tetap bersih.

Kapan pakai mana?

  • Merge: default paling aman. Gunakan untuk fitur besar yang perlu riwayat percabangan terlihat.
  • Rebase: saat ingin riwayat commit di branch fitur tetap rapi sebelum merge.
  • Squash: saat branch punya banyak commit kecil ("wip", "fix typo", dll) yang tidak perlu terlihat di riwayat utama.
Pertemuan 1 · Merge

Contoh Merge

Misalkan kita punya branch feature/login yang sudah selesai dikerjakan. Berikut cara menggabungkannya ke main menggunakan ketiga metode:

Merge: feature/login → main
$ git switch main $ git merge feature/login Merge made by the 'ort' strategy. feature/login | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Rebase: feature/login → main
$ git switch feature/login $ git rebase main Successfully rebased and updated refs/heads/feature/login.
Squash: feature/login → main
$ git switch main $ git merge --squash feature/login Squash commit -- not updating HEAD $ git commit -m "feat: tambah fitur login" [main abc1234] feat: tambah fitur login 1 file changed, 50 insertions(+)
Pertemuan 1 · Pull Request

Pull Request

Di dalam tim profesional, seorang developer tidak langsung menggabungkan kodenya sendiri ke repository utama. Ada alur kerja standar yang disebut Pull Request (PR).

Pull Request adalah permintaan yang dikirimkan oleh developer kepada tim untuk menggabungkan perubahan dari branch kerja mereka ke branch utama. PR menjadi tempat diskusi, code review, dan persetujuan sebelum kode benar-benar masuk ke main atau branch penting lainnya.

Workflownya kira-kira seperti ini:

1
Developer

Membuat feature branch -> Menulis kode -> Push commit-commitnya ke GitHub -> Membuat Pull Request.

2
Reviewer

Memeriksa kode yang diajukan. Jika ada catatan, developer memperbaiki kodenya terlebih dahulu. Jika kode sudah aman, PR disetujui (Approve) lalu digabungkan (Merge).

Pertemuan 1 · Merge Conflict

Ketika kode bertabrakan

Apa yang terjadi jika dua orang developer mengubah baris kode yang sama di file yang sama? Terjadilah Merge Conflict.

Git bingung memilih perubahan mana yang benar sehingga proses merge terhenti. Di sinilah developer harus turun tangan secara manual untuk menentukan kode mana yang akan dipertahankan.

// app.js
export default function App() {
return (
<h1>Hello,</h1>
<<<<<<< HEAD
<h2>Kelas A</h2>
=======
<h2>Kelas B</h2>
>>>>>>> feature/kelas
);
}
Pertemuan 1 · Merge Conflict

Memahami marker conflict

<<<<<<< HEAD

Kode di bawah tanda ini berasal dari branch kalian sekarang (branch aktif).

=======

Pemisah antara versi branch kalian dan versi branch yang masuk.

>>>>>>> feature/branch

Kode di atas tanda ini berasal dari branch yang sedang digabungkan.

Untuk resolve conflict, buka file yang bermasalah, pilih kode yang benar, hapus baris marker (<<<,===,>>>), lalu commit hasil perbaikan.

Diagram
Diagram (perbesar)
100%

Daftar Isi

Overview

Git & Version Control