Hubungi Kami

Kerangka Materi

1. Pengenalan Go

  • Apa itu Go (Golang)?
  • Sejarah dan filosofi desain Go
  • Go sebagai bahasa pemrograman web dan sistem
  • Karakteristik utama:
    • Pemetaan statis (Static typing)
    • Kesederhanaan dan keterbacaan
    • Kompilasi cepat
    • Konkurensi bawaan (Built-in concurrency)
    • Pengumpulan sampah (Garbage collection)
    • Kompilasi lintas platform
  • Kasus penggunaan umum untuk Go
  • Kelebihan dan keterbatasan Go
  • Perbandingan Go dengan C/C++, JavaScript, Ruby, Python, dan Java
  • Memahami ekosistem Go
  • Tinjauan pustaka standar Go
  • Modul Go dan manajemen dependensi
  • Anatomi aplikasi Go
  • Praktik langsung: Memeriksa dan menjalankan program Go sederhana

2. Menyiapkan Lingkungan Pengembangan Go

  • Memasang Go
  • Memahami rantai alat (toolchain) Go
  • Menkonfigurasi variabel lingkungan
  • Memilih IDE atau editor kode
  • Mempergunakan baris perintah dengan Go
  • Membuat ruang kerja Go
  • Memahami struktur proyek Go
  • Inisialisasi proyek dengan Go Modules
  • Mempergunakan go mod init
  • Menyusun dependensi dengan go get
  • Memperbarui dan memeriksa dependensi
  • Memformat kode sumber dengan gofmt
  • Menjalankan program dengan go run
  • Membangun aplikasi dengan go build
  • Memasang aplikasi Go
  • Mengkompilasi aplikasi lintas platform
  • Praktik langsung: Membuat dan mengonfigurasi proyek Go di dalam kontainer

3. Variabel, Konstanta, dan Tipe Data di Go

  • Menyatakan variabel
  • Tipe eksplisit vs tipe inferensi
  • Penyusunan variabel singkat
  • Konstanta
  • Nilai nol (Zero values)
  • Cakupan (scope) dan masa hidup variabel
  • Tipe data primitif:
    • Bilangan bulat (Integers)
    • Bilangan desimal (Floating-point numbers)
    • Bilangan kompleks
    • Bolean
    • String
  • Konversi tipe data
  • Bekerja dengan Unicode dan UTF-8
  • Runes dan bytes
  • Penugasan variabel multi (Multiple variable assignment)
  • Memahami keamanan tipe (type safety)
  • Latihan: Membangun program pemrosesan data baris perintah kecil

4. Operator dan Ekspresi

  • Operator aritmatika
  • Operator perbandingan
  • Operator logika
  • Operator penugasan
  • Inkremen dan dekremen
  • Precedensi operator
  • Bekerja dengan perhitungan bilangan bulat dan desimal
  • Menghindari kesalahan konversi tipe umum
  • Latihan: Menerapkan logika perhitungan dan validasi

5. Tanggal, Waktu, dan Format

  • Mempergunakan pustaka time
  • Membuat dan memanipulasi tanggal
  • Mendapatkan waktu saat ini
  • Zona waktu dan lokasi
  • Parsing tanggal dan waktu
  • Memformat tanggal dan waktu
  • Perhitungan durasi
  • Bekerja dengan Unix timestamp
  • Menangani batas waktu (timeouts)
  • Latihan: Menambahkan timestamp dan perhitungan durasi ke aplikasi

6. Array, Slice, Map, dan Struct

Array

  • Menyatakan array
  • Inisialisasi array
  • Iterasi pada array
  • Array multidimensi

Slice

  • Memahami slice vs array
  • Membuat slice
  • Menambahkan elemen (Appending elements)
  • Menyalin slice
  • Panjang dan kapasitas slice
  • Melakukan slicing pada slice
  • Jebakan umum pada slice

Map

  • Membuat map
  • Menambahkan dan menghapus entri
  • Memeriksa keberadaan kunci
  • Iterasi pada map
  • Map yang berisi data kompleks

Struct

  • Menyusun struktur

  • Field struct

  • Inisialisasi struct

  • Struct bersarang (Nested structs)

  • Struct anonim

  • Metode struct

  • Tag struct JSON

  • Praktik langsung: Memodelkan pengguna, produk, dan data aplikasi menggunakan struct, slice, dan map

7. Logika Kondisional dan Loop

  • Pernyataan if
  • else dan else if
  • Penyusunan variabel di dalam kondisi
  • Loop for
  • Loop tak terbatas (Infinite loops)
  • Kondisi loop
  • break dan continue
  • Iterasi dengan range
  • Loop bersarang (Nested loops)
  • Pernyataan switch
  • Switch berbasis ekspresi
  • Beberapa kasus (Multiple cases)
  • Kasus default
  • Type switches
  • Latihan: Menerapkan logika validasi dan pemrosesan aplikasi

8. Fungsi

  • Menyusun fungsi
  • Parameter fungsi
  • Nilai pengembalian
  • Nilai pengembalian multi (Multiple return values)
  • Nilai pengembalian bernama (Named return values)
  • Fungsi variadic
  • Fungsi anonim
  • Nilai fungsi
  • Closures
  • Rekursi
  • Melewatkan fungsi sebagai argumen
  • Fungsi yang mengembalikan error
  • Menyusun fungsi kecil yang dapat digunakan ulang
  • Latihan: Merancang ulang kode yang ada menjadi fungsi yang dapat digunakan ulang

9. Pointer dan Konsep Memori

  • Apa itu pointer?
  • Operator alamat dan dereference
  • Pointer dan parameter fungsi
  • Pointer receivers
  • Pointer ke struct
  • Nil pointers
  • Kapan harus menggunakan pointer
  • Semantik nilai vs referensi (Value versus reference semantics)
  • Memahami manajemen memori Go dan pengumpulan sampah
  • Kesalahan umum pada pointer
  • Praktik langsung: Mengubah data aplikasi menggunakan pointer

10. Membuat Aplikasi Web dengan Go

  • Tinjauan kemampuan web Go
  • Pengenalan pustaka net/http
  • Membuat server HTTP
  • Permintaan dan respons HTTP
  • Metode HTTP
  • URL permintaan dan parameter query
  • Header HTTP
  • Kode status HTTP
  • Dasar-dasar routing
  • Membuat handler
  • Menangani data formulir
  • Menyediakan file statis
  • Bekerja dengan template HTML
  • Variabel template dan struktur kontrol
  • Menyusun arsitektur aplikasi web
  • Praktik langsung: Membangun server web Go dasar

11. Membangun Layanan Web RESTful

  • Dasar-dasar arsitektur REST
  • Merancang endpoint API
  • GET, POST, PUT, PATCH, dan DELETE
  • Bekerja dengan JSON
  • Encoding dan decoding JSON
  • Validasi permintaan
  • Kode status HTTP
  • Respons error
  • Parameter query dan parameter path
  • Struktur respons API
  • Memisahkan handler dari logika bisnis
  • Praktik langsung: Membangun API REST CRUD

12. Runtime Go, Kompilasi, dan Build Proyek

  • Memahami compiler Go
  • Proses build Go
  • go run
  • go build
  • go install
  • go test
  • Build flags
  • Konfigurasi yang spesifik lingkungan
  • Membangun untuk sistem operasi dan arsitektur yang berbeda
  • Memproduksi biner mandiri (standalone binaries)
  • Menyusun konfigurasi aplikasi
  • Latihan: Mengkompilasi aplikasi untuk beberapa platform

13. Bekerja dengan File dan Web

  • Membuka dan menutup file
  • Membaca file
  • Menulis file
  • Membuat direktori
  • Metadata file
  • I/O terbantu (Buffered I/O)
  • Bekerja dengan stream
  • Membaca dan menulis file JSON
  • Klien HTTP
  • Menjalankan permintaan HTTP keluar (outbound)
  • Menangani error klien HTTP
  • Batas waktu dan pembatalan
  • Memproses respons API
  • Praktik langsung: Mengambil data dari API eksternal dan menyimpannya secara lokal

14. Penanganan Error dan Debugging

  • Pendekatan Go terhadap error
  • Mengembalikan error dari fungsi
  • Memeriksa error
  • Membuat error khusus
  • Membungkus error (Wrapping errors)
  • Menambahkan konteks ke error
  • errors.Is dan errors.As
  • Panic dan recovery
  • Kapan menggunakan panic
  • Mengdebug masalah umum Go
  • Mencatat aktivitas aplikasi (Logging)
  • Mempergunakan alat debug Go
  • Latihan: Mendiagnosis dan memperbaiki error aplikasi yang sengaja dibuat

15. Interface dan Abstraksi

  • Apa itu interface?
  • Implementasi interface implisit
  • Menyusun interface
  • Nilai interface
  • Interface kosong / any
  • Type assertions
  • Type switches
  • Implementasi pointer vs nilai
  • Merancang interface kecil
  • Dependency inversion
  • Mempergunakan interface untuk pengujian
  • Menurunkan kebergantungan (coupling) aplikasi
  • Praktik langsung: Memperkenalkan interface ke aplikasi web contoh

16. Pustaka (Packages) dan Organisasi Proyek

  • Membuat package
  • Konvensi penamaan package
  • Identitas yang diekspor dan tidak diekspor (Exported and unexported identifiers)
  • Mengimpor package
  • Inisialisasi package
  • Menyusun lapisan aplikasi
  • Package internal
  • Menyusun dependensi dengan Go Modules
  • Semantic versioning
  • Mempergunakan package pihak ketiga
  • Menghindari dependensi melingkar (circular dependencies)
  • Merancang proyek Go yang dapat dipelihara
  • Latihan: Merancang ulang aplikasi menjadi package terpisah

17. Konkurensi dengan Goroutines

  • Apa itu konkurensi?
  • Goroutines
  • Memulai goroutines
  • Memahami eksekusi konkuren ringan
  • Tantangan sinkronisasi
  • State bersama (Shared state)
  • Condition race
  • Mempergunakan sync.WaitGroup
  • Mutexes dan read/write mutexes
  • Operasi atomik (Atomic operations)
  • Praktik langsung: Mengubah tugas sekuensial menjadi pemrosesan konkuren

18. Channels

  • Memahami channels
  • Mengirim dan menerima nilai
  • Channel berbantu (buffered) vs tidak berbantu (unbuffered)
  • Perilaku blocking
  • Menutup channels
  • Ranging pada channels
  • Channel berarah (Directional channels)
  • Komunikasi berbasis channel
  • Pernyataan Select
  • Batas waktu dan pembatalan
  • Pola worker-pool
  • Pola producer/consumer
  • Praktik langsung: Membangun sistem worker konkuren

19. Context dan Manajemen Permintaan

  • Mengapa context penting dalam aplikasi web
  • context.Context
  • Context berskala permintaan (Request-scoped context)
  • Pembatalan
  • Deadlines
  • Batas waktu (Timeouts)
  • Mempropagasi context melalui lapisan aplikasi
  • Membatalkan operasi database atau HTTP
  • Menghindari penyalahgunaan context
  • Latihan: Menambahkan pembatalan permintaan dan batas waktu ke aplikasi web

20. Pengujian Aplikasi Go

  • Mengapa pengujian otomatis penting
  • Menulis unit test
  • Pustaka testing
  • Fungsi uji (Test functions)
  • Konvensi penamaan uji
  • Uji berbasis tabel (Table-driven tests)
  • Uji error
  • Uji handler HTTP
  • Server uji HTTP
  • Test fixtures
  • Cakupan uji (Test coverage)
  • Benchmarks
  • Uji contoh (Example tests)
  • Uji interface dengan mocks atau fakes
  • Praktik langsung: Membuat suite uji untuk aplikasi contoh

21. Optimasi Kinerja

  • Memahami kinerja aplikasi Go
  • Identifikasi titik kemacetan (bottlenecks)
  • Kinerja CPU vs memori
  • Struktur data efisien
  • Menurunkan alokasi yang tidak perlu
  • String, bytes, dan buffer
  • Manajemen goroutines
  • Menghindari konkurensi berlebihan
  • Strategi caching
  • Pertimbangan database dan jaringan
  • Profiling aplikasi
  • Benchmark dan pengujian kinerja
  • Mempergunakan alat profiling Go
  • Latihan: Memprofilkan dan mengoptimalkan aplikasi yang sengaja dibuat tidak efisien

22. Keamanan dan Praktik Aplikasi Web yang Tangguh

  • Validasi masukan pengguna
  • Penanganan permintaan HTTP yang aman
  • Pencegahan kerentanan web umum
  • Penanganan error yang aman
  • Konsep autentikasi dan otorisasi
  • Manajemen rahasia (secrets) dan konfigurasi
  • Komunikasi HTTP yang aman
  • Menghindari informasi sensitif di log
  • Manajemen dependensi dan pembaruan
  • Batas sumber daya dan batas waktu permintaan
  • Latihan: Meninjau dan memperkuat (harden) API contoh

23. Logging dan Observabilitas Aplikasi

  • Dasar-dasar logging
  • Logging terstruktur (Structured logging)
  • Level log
  • Logging permintaan
  • Logging error
  • Korelasi dan ID permintaan
  • Memantau perilaku aplikasi
  • Metriks dasar
  • Endpoint pemeriksaan kesehatan (Health-check endpoints)
  • Diagnosis masalah produksi
  • Praktik langsung: Menambahkan logging terstruktur dan pemeriksaan kesehatan

24. Kontainerisasi Aplikasi Go

  • Mengapa menggunakan kontainer?
  • Aplikasi Go dan kontainerisasi
  • Menulis Dockerfile
  • Build multi-tahap (Multi-stage builds)
  • Membangun image runtime minimal
  • Manajemen konfigurasi melalui variabel lingkungan
  • Jaringan kontainer
  • Mengekspos port aplikasi
  • Menjalankan aplikasi di dalam kontainer
  • Uji aplikasi terkontainer
  • Praktik langsung: Mengemas aplikasi Go contoh sebagai kontainer siap produksi

25. Peluncuran (Deployment)

  • Menyiapkan aplikasi untuk produksi
  • Membangun biner produksi
  • Konfigurasi lingkungan
  • Peluncuran berbasis kontainer
  • Arsitektur peluncuran
  • Reverse proxies
  • Pertimbangan HTTPS/TLS
  • Pemeriksaan kesehatan aplikasi
  • Penutupan yang anggun (Graceful shutdown)
  • Penanganan sinyal sistem operasi
  • Skala aplikasi web Go
  • Pemilahan horizontal vs vertikal
  • Pemecahan masalah dasar peluncuran
  • Praktik langsung: Meluncurkan aplikasi web contoh

26. Capstone: Aplikasi Web Go Lengkap

Peserta menyatukan konsep-konsep tersebut dengan mengembangkan aplikasi lengkap.

Proyek ini dapat mencakup:

  • Inisialisasi proyek dengan Go Modules
  • Organisasi package
  • Routing HTTP
  • Endpoint API REST
  • Penanganan permintaan dan respons JSON
  • Validasi masukan
  • Penanganan error
  • Interface
  • Pemrosesan konkuren
  • Komunikasi API eksternal
  • Persistensi file atau database
  • Pengujian otomatis
  • Logging
  • Pertimbangan kinerja
  • Kontainerisasi
  • Konfigurasi produksi
  • Peluncuran

27. Ulasan dan Praktik Terbaik

  • Ulasan sintaksis inti Go
  • Konvensi penulisan kode Go
  • Menulis Go yang idiomatik (idiomatic Go)
  • Menjaga kode tetap sederhana
  • Desain package yang efektif
  • Praktik terbaik penanganan error
  • Prinsip desain interface
  • Praktik terbaik konkurensi
  • Strategi pengujian
  • Pertimbangan kinerja
  • Kepemeliharaan dan keterbacaan
  • Kesalahan umum yang dilakukan pengembang Go pemula
  • Pendekatan yang direkomendasikan untuk melanjutkan pengembangan Go

28. Kesimpulan

  • Ulasan konsep-konsep utama
  • Ulasan aplikasi web yang selesai
  • Pertanyaan dan diskusi
  • Pemecahan masalah skenario dunia nyata umum
  • Langkah selanjutnya yang direkomendasikan untuk pengembangan Go
  • Pustaka Go tambahan dan sumber daya ekosistem
  • Lainnya peluang untuk membangun layanan Go yang siap produksi

Persyaratan

  • Memahami prinsip pemrograman secara umum

Audience

  • Pengembang (Developer)
 28 Jam

Jumlah Peserta


Harga per Peserta

Testimoni (5)

Kursus Mendatang

Kategori Terkait