Pendahuluan
Backend Web Development adalah bagian penting dalam membangun aplikasi web yang scalable, cepat, dan aman. Dalam ebook ini, Anda akan mempelajari tiga teknologi utama yang sangat populer dan powerful: Golang sebagai bahasa pemrograman backend, Postgres sebagai database relasional, dan Kubernetes sebagai platform orkestrasi container.
Ebook ini disusun secara step-by-step agar Anda dapat mengikuti pembelajaran dengan mudah, mulai dari dasar hingga penerapan nyata. Setiap bab dilengkapi dengan contoh source code dan referensi channel pembelajaran untuk memperdalam materi.
Belajar Golang (Go)
1. Pengenalan Golang
Golang adalah bahasa pemrograman open-source yang dikembangkan oleh Google. Golang terkenal dengan performa tinggi, sintaks yang sederhana, dan dukungan concurrency yang kuat.
Langkah awal:
Instalasi Go di komputer Anda dari
https://golang.org/dl/
.
2. Membuat Program Pertama
Berikut contoh program sederhana "Hello, World!" menggunakan Golang:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Simpan kode di atas dengan nama
main.go
, lalu jalankan perintah
go run main.go
di terminal.
3. Struktur Data dan Fungsi
Golang memiliki tipe data dasar seperti int, string, bool, dan juga mendukung struct untuk membuat tipe data kompleks.
package main
import "fmt"
type User struct {
ID int
Name string
Email string
}
func greet(user User) string {
return "Hello, " + user.Name
}
func main() {
u := User{ID: 1, Name: "Budi", Email: "budi@example.com"}
fmt.Println(greet(u))
}
4. Concurrency dengan Goroutines
Salah satu keunggulan Golang adalah kemudahan membuat program concurrent menggunakan goroutines.
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
Jalankan program di atas dan perhatikan output yang berjalan secara bersamaan.
5. Membuat REST API Sederhana
Kita akan membuat REST API sederhana menggunakan package
net/http
.
package main
import (
"encoding/json"
"net/http"
)
type Message struct {
Text string `json:"text"`
}
func helloHandler(w http.ResponseWriter, r *http.Request) {
msg := Message{Text: "Hello from Golang API"}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(msg)
}
func main() {
http.HandleFunc("/hello", helloHandler)
http.ListenAndServe(":8080", nil)
}
Jalankan program dan akses
http://localhost:8080/hello
di browser atau Postman.
Database dengan Postgres
1. Pengenalan PostgreSQL
PostgreSQL adalah database relasional open-source yang powerful dan banyak digunakan di industri. Mendukung fitur-fitur canggih seperti JSONB, indexing, dan transaksi.
Instalasi PostgreSQL dapat dilakukan melalui
https://www.postgresql.org/download/
.
2. Membuat Database dan Tabel
Setelah instalasi, buat database dan tabel menggunakan psql CLI:
CREATE DATABASE backenddb;
\c backenddb
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3. Koneksi Golang ke Postgres
Gunakan package
github.com/lib/pq
untuk koneksi Golang ke Postgres.
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
func main() {
connStr := "user=postgres password=yourpassword dbname=backenddb sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Berhasil terkoneksi ke Postgres!")
}
Ganti
yourpassword
dengan password Postgres Anda.
4. CRUD Data User
Contoh fungsi untuk menambah dan mengambil data user:
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
type User struct {
ID int
Name string
Email string
}
func insertUser(db *sql.DB, name, email string) error {
query := `INSERT INTO users (name, email) VALUES ($1, $2)`
_, err := db.Exec(query, name, email)
return err
}
func getUsers(db *sql.DB) ([]User, error) {
rows, err := db.Query("SELECT id, name, email FROM users")
if err != nil {
return nil, err
}
defer rows.Close()
var users []User
for rows.Next() {
var u User
err := rows.Scan(&u.ID, &u.Name, &u.Email)
if err != nil {
return nil, err
}
users = append(users, u)
}
return users, nil
}
func main() {
connStr := "user=postgres password=yourpassword dbname=backenddb sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
panic(err)
}
defer db.Close()
err = insertUser(db, "Andi", "andi@example.com")
if err != nil {
panic(err)
}
users, err := getUsers(db)
if err != nil {
panic(err)
}
for _, u := range users {
fmt.Printf("ID: %d, Name: %s, Email: %s\n", u.ID, u.Name, u.Email)
}
}
Mengenal Kubernetes
1. Apa itu Kubernetes?
Kubernetes adalah platform open-source untuk mengelola container aplikasi secara otomatis, termasuk deployment, scaling, dan manajemen lifecycle container.
2. Instalasi Minikube untuk Local Cluster
Untuk belajar Kubernetes, Anda bisa menggunakan Minikube yang menjalankan cluster Kubernetes lokal.
Instalasi Minikube:
https://minikube.sigs.k8s.io/docs/start/
minikube start
kubectl get nodes
3. Membuat Deployment dan Service
Contoh file deployment YAML untuk aplikasi Golang:
apiVersion: apps/v1
kind: Deployment
metadata:
name: golang-backend
spec:
replicas: 2
selector:
matchLabels:
app: golang-backend
template:
metadata:
labels:
app: golang-backend
spec:
containers:
- name: golang-backend
image: yourdockerhubusername/golang-backend:latest
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: golang-backend-service
spec:
type: NodePort
selector:
app: golang-backend
ports:
- protocol: TCP
port: 80
targetPort: 8080
Terapkan dengan perintah:
kubectl apply -f deployment.yaml
kubectl get pods
kubectl get svc
4. Scaling dan Update Aplikasi
Scaling deployment:
kubectl scale deployment golang-backend --replicas=4
kubectl get pods
Update image aplikasi:
kubectl set image deployment/golang-backend golang-backend=yourdockerhubusername/golang-backend:v2
kubectl rollout status deployment/golang-backend