Berita Kami

12 June 2024 - Kategori: Knowledge - Oleh: SUHU

Best Practices Microservices dengan Golang untuk Pemula

Best Practices Microservices dengan Golang untuk Pemula

Microservices merupakan arsitektur sistem yang membagi aplikasi menjadi unit-unit kecil dan terfokus, di mana setiap unit (service) memiliki tanggung jawab spesifik dan terhubung satu sama lain untuk mencapai tujuan bisnis. Unit-unit itulah yang disebut microservices dan berkomunikasi satu sama lain melalui API (Application Programming Interface) untuk menyelesaikan proses secara keseluruhan. API tersebut dapat dibangun dengan berbagai macam bahasa pemrograman, salah satunya adalah Golang.

Mengapa harus Golang untuk Microservices?

Golang, atau Go, adalah bahasa pemrograman yang dikembangkan oleh Google yang terkenal karena kinerjanya yang cepat, efisiensi penggunaan memori, dan kesederhanaan sintaks. Fitur-fitur ini membuat Golang menjadi pilihan populer untuk membangun layanan microservices:

Concurrency 

Golang dikenal karena kemampuan concurrency-nya yang kuat. Concurrency di Golang dicapai dengan menggunakan goroutine dan channel. Goroutine dan channel yang ringan dalam Go memudahkan penulisan kode konkurensi tingkat tinggi yang sangat berguna untuk menangani sejumlah besar microservices.

Standard Library 

Standard Library atau pustaka standar Go mencakup paket-paket untuk HTTP, JSON, dan tugas umum lainnya, sehingga proses pengembangan microservices menjadi lebih sederhana. Standard library adalah kumpulan kode yang sudah ditulis sebelumnya dan dapat digunakan kembali dalam program Go.

Integrasi Docker dan Kubernetes

Go memiliki dukungan yang kuat untuk Docker dan Kubernetes sehingga setiap layanan microservices dapat dikemas dalam sebuah kontainer yang dapat dijalankan di mana saja.

Study Case Penggunaan Microservices

Beberapa contoh perusahaan besar yang menggunakan arsitektur microservices termasuk Netflix, Amazon, dan Gojek. Mereka memanfaatkan microservices untuk meningkatkan skalabilitas, fleksibilitas, dan kecepatan rilis fitur baru.

Framework Golang dalam Microservices

Bahasa pemrograman Go yang terus berkembang memunculkan berbagai add-on, library, framework, dan toolkit yang bermanfaat serta dapat digunakan untuk membuat aplikasi berbasis microservice. Berikut adalah beberapa framework pengembangan microservice penting yang harus diketahui oleh pengembang yang ingin menggunakan Go dalam microservices:

Gin-gonic 

Merupakan framework microservice berbasis HTTP yang ditulis menggunakan bahasa pemrograman Golang. Fitur-fitur pada gin-gonic ini mirip seperti framework Martini, namun memiliki performa yang jauh lebih cepat, mendukung penggunaan go-gorilla/context, serta mampu membangun REST API yang kuat dan scalable dengan konfigurasi minimal.

Go micro

Merupakan salah satu framework RPC (remote procedure call) yang populer saat ini dan yang bersifat pluggable  (dapat ditambah modul) untuk menulis microservices di Golang. Go Micro juga menyediakan fitur bernama Sidecar, yang memungkinkan integrasi mudah antar layanan yang ditulis dalam bahasa pemrograman lain dalam satu microservices. Sidecar juga menyediakan registrasi service, encoding/decoding gRPC, dan handler HTTP, serta tersedia dalam banyak bahasa pemrograman.

Go kit 

Go kit adalah toolkit pemrograman yang dirancang khusus untuk membangun microservices menggunakan bahasa pemrograman Go. Berbeda dengan Go Micro, Go Kit berbentuk library yang perlu diimpor ke dalam paket biner. Paket-paket tersebut berguna untuk berbagai kebutuhan pengembangan microservices, seperti:

- Service discovery: Memungkinkan microservice untuk menemukan dan terhubung satu sama lain.
- Authentication: Memastikan keamanan akses ke microservice.
- Tracing: Memonitor aliran permintaan antar microservice untuk debugging dan troubleshooting.
- Transport: Menentukan protokol komunikasi antar microservice, misalnya HTTP, gRPC.
- Metrics: Mengumpulkan data performa untuk monitoring dan analisis aplikasi.

Gizmo

Gizmo adalah toolkit pengembangan microservice berbasis Go yang menyediakan beberapa fitur kepada pengguna, seperti:

- Metric endpoints dengan strategi yang dapat dikonfigurasi: Memungkinkan pengukuran dan pelaporan performa microservice secara detail dan fleksibel.
- Interface dasar untuk mendefinisikan ekspektasi dan kosakata layanan: Membantu standarisasi dan dokumentasi fungsionalitas microservice.
- Konfigurasi dan logging standar: Menyederhanakan proses pengaturan dan pemantauan microservice.

Gorilla

Merupakan toolkit web yang bersifat open-source di Go yang dikembangkan khusus untuk membangun user interface yang ringan dan dinamis. Gorilla memiliki manfaat, antara lain menyediakan jaringan open-source berskala besar untuk berbagi kode Go dan hosting project Go.

Echo 

Echo adalah framework minimalis berperforma tinggi untuk membangun aplikasi web menggunakan bahasa pemrograman Go. Framework ini menawarkan berbagai fitur menarik dengan fokus pada kecepatan loading halaman web.

Tutorial Sederhana Membuat Microservices dengan Golang

Berikut adalah panduan singkat untuk membuat microservice sederhana dengan Golang:

1. Pastikan Anda telah menginstal:

Go (Golang)
Docker (opsional, untuk containerization)
Editor kode (VS Code, GoLand, dll.)

2. Buat Project Go

Buat direktori untuk project microservice Anda.
Buat file main.go di dalam direktori project.

3. Buat Struktur Project

Buat package untuk microservice Anda, misal users.
Di dalam package users, buat file handler.go dan models.go.

4. Definikan Model Data

Di file models.go, definisikan struktur data yang mewakili model microservice Anda. Misal, untuk microservice user, Anda dapat mendefinisikan struktur User dengan field ID, Name, dan Email.

package users

 

type User struct {

  ID     int    `json:"id"`

  Name   string `json:"name"`

  Email  string `json:"email"`

}

5. Implementasikan Handler

Di file handler.go, buat fungsi handler untuk endpoint microservice Anda. Misal, buat fungsi untuk mendapatkan semua user, mendapatkan user berdasarkan ID, dan membuat user baru. Gunakan library net/http Go untuk membuat server HTTP dan menangani request dan response. Gunakan library encoding/json Go untuk marshal dan unmarshal data JSON.

users/handler.go

package users

 

import (

    "encoding/json"

    "net/http"

    "strconv"

)

 

var users = []User{

    {ID: 1, Name: "John Doe", Email: "john@example.com"},

    {ID: 2, Name: "Jane Doe", Email: "jane@example.com"},

}

 

func GetAllUsers(w http.ResponseWriter, r *http.Request) {

    jsonData, err := json.Marshal(users)

    if err != nil {

        http.Error(w, "Error marshaling JSON", http.StatusInternalServerError)

        return

    }

 

    w.Header().Set("Content-Type", "application/json")

    w.WriteHeader(http.StatusOK)

    w.Write(jsonData)

}

 

func GetUser(w http.ResponseWriter, r *http.Request) {

    id, err := strconv.Atoi(r.URL.Query().Get("id"))

    if err != nil {

        http.Error(w, "ID tidak valid", http.StatusBadRequest)

        return

    }

 

    for _, user := range users {

        if user.ID == id {

            json.NewEncoder(w).Encode(user)

            return

        }

    }

 

    http.Error(w, "Pengguna tidak ditemukan", http.StatusNotFound)

}

 

6. Menyiapkan Aplikasi Utama

main.go

package main

 

import (

    "fmt"

    "net/http"

    "microservices/users"

)

 

func main() {

    router := http.NewServeMux()

 

    router.HandleFunc("/users", users.GetAllUsers)

    router.HandleFunc("/user", users.GetUser)

 

    fmt.Println("Starting server on port 8080")

    http.ListenAndServe(":8080", router)

}

7. Jalankan Microservice

Buka terminal di direktori project Anda.
Jalankan perintah go run main.go. 

8. Test Microservice

Anda dapat menggunakan Postman atau alat HTTP lainnya untuk menguji microservice Anda. Misalnya, untuk mendapatkan semua user, Anda dapat mengirim request GET ke http://localhost:8080/users.

Langkah Selanjutnya:

- Anda dapat mengembangkan microservice ini dengan menambahkan lebih banyak endpoint, handler, dan logika bisnis.
- Anda juga dapat menggunakan tools seperti Docker untuk containerize microservice Anda dan membuatnya mudah dideploy.
- Pelajari tentang cara untuk men-deploy microservice ke platform cloud seperti Kubernetes.

Kesimpulan

Membangun microservices dengan Golang merupakan kombinasi ideal untuk membangun aplikasi modern yang scalable, fleksibel, dan mudah dipelihara. Dengan memahami prinsip-prinsip microservices dan memanfaatkan berbagai kelebihan Golang, developer atau pengembang dapat menciptakan solusi inovatif yang memenuhi kebutuhan bisnis di era digital yang dinamis.

Apabila Anda berminat untuk belajar dan meningkatkan kemampuan serta pemahaman dalam membangun microservices dengan bahasa pemrograman Golang, silakan mengikuti pelatihannya bersama SUHU disini :

- Webinar Microservices with Golang: From Concept to Implementation
- Pelatihan RESTful API & Microservices
- Pelatihan Master Golang Programing 

Silakan konsultasikan kebutuhan Anda bersama kami dengan klik link berikut: https://bit.ly/kontaksuhu

BAGIKAN ARTIKEL INI

Berita Terkait

Hubungi kami