Membuat layanan web

Halaman ini menjelaskan cara membuat layanan web di VM menggunakan framework web Gin yang ditulis dalam Golang. Anda dapat memilih untuk membuat layanan web di framework lain yang ingin Anda gunakan.

  1. Untuk mendownload paket Go di VM, jalankan perintah berikut di VM:
    wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
      
  2. Instal Go di VM. Untuk informasi, lihat Menginstal Go.
  3. Untuk membuat direktori baru bagi layanan web, jalankan perintah berikut:
    mkdir SERVICE_REPO
      cd SERVICE_REPO
      

Pertimbangan lainnya

Saat membuat layanan web, Anda harus mengetahui pertimbangan berikut:

  • Input yang Anda perlukan selama pembuatan VM tersedia sebagai variabel lingkungan dan memiliki awalan berikut: CONNECTOR_ENV_.
  • Saat menyiapkan layanan web, gunakan variabel lingkungan untuk membaca nilai tersebut.
  • Hanya nilai yang diperlukan untuk menyiapkan layanan web yang harus diambil sebagai input selama pembuatan VM.
  • Port layanan harus diambil sebagai input dari variabel CONNECTOR_ENV_PORT.
  • Gunakan variabel lingkungan lain untuk input opsional.
  • Anda juga bisa mendapatkan input selama pembuatan koneksi. Anda dapat menentukan kolom ini saat membuat konektor kustom dan meneruskannya sebagai jalur, kueri, atau header di setiap panggilan API.
  • Pastikan server berjalan di localhost.

Logging

Catat informasi yang diperlukan dan kirim log ke Cloud Logging. Hal ini membantu konsumen konektor melacak dan men-debug kegagalan. Untuk memublikasikan log ke Cloud Logging, Anda dapat menggunakan klien Cloud Logging berikut yang tersedia di Go: https://pkg.go.dev/cloud.google.com/go/logging#NewClient

Anda harus menginisialisasi logger di bagian utama dan menambahkan middleware di Gin untuk melacak semua permintaan yang masuk. Anda harus melacak metode, jalur, status, dan latensi untuk permintaan. Untuk memfilter log, gunakan tingkat keparahan yang sesuai saat melakukan logging. Di layanan web, baca level log dari variabel lingkungan. Tingkat log diambil sebagai input opsional selama pembuatan VM. Secara default, Log info dapat digunakan. Berikut adalah level log:

  • DEBUG: mencatat setiap bagian permintaan, termasuk rekaman aktivitas permintaan/respons HTTP.
  • INFO: mencatat startup layanan, penonaktifan layanan, permintaan, dan informasi lainnya.
  • ERROR: mencatat kegagalan permintaan, pengecualian pemformatan, dan error lainnya.

Penghentian tuntas

Siapkan server untuk dimatikan dengan baik dan menangani permintaan yang sedang berlangsung. Untuk informasi tentang cara memulai ulang atau menghentikan server dengan baik, lihat Memulai ulang atau menghentikan server dengan baik.

Serentak

Server Gin secara inheren mendukung permintaan serentak menggunakan rutinitas Go. Secara default, jumlah permintaan yang tidak ditentukan diizinkan untuk diproses oleh rutinitas Go. Namun, dalam beberapa kasus, jika permintaan diperkirakan akan membutuhkan banyak resource, gunakan kumpulan pekerja untuk membatasi dan buffering permintaan di server. Untuk mengetahui informasi selengkapnya, lihat Contoh kumpulan pekerja.

Menguji dan mem-build biner

  1. Tetapkan port dan jalankan server menggunakan perintah berikut:
  2. EXPORT CONNECTOR_ENV_PORT = 8081
    go get .
    go run .

    Perintah ini memaketkan library yang diperlukan dan menjalankan server.

  3. Untuk memverifikasi server, jalankan perintah curl berikut di VM:
    curl -X POST -H "Content-Type: application/json" -H "X-Custom-Header: MyValue" -d '{"name": "Alice", "address": "123 Main St", "gender": "F"}' http://localhost:8081/postData/456
    curl -v http://localhost:8081/getData -H "TestKey: MyValue"
  4. Buat biner dan gunakan sebagai image VM menggunakan perintah berikut:
    go build -o SERVICE_NAME
  5. Pindahkan biner ke folder root menggunakan perintah berikut:
    sudo cp SERVICE_NAME /opt
  6. Jalankan kembali layanan untuk memverifikasi bahwa biner berfungsi seperti yang diharapkan menggunakan perintah berikut:
    sudo chmod +x SERVICE_NAME
    ./SERVICE_NAME

Mem-build aplikasi dalam container

  1. Instal Docker. Untuk mengetahui informasinya, lihat Menginstal Docker.
  2. Buat file Docker untuk menjalankan biner.
    FROM alpine:latest
    WORKDIR /opt
    COPY . .
    CMD ["./SERVICE_NAME"]
  3. Build penampung konektor menggunakan perintah berikut:
    sudo docker build -t connector-container .
  4. Jalankan penampung docker. Tetapkan --restart=unless-stopped untuk memulai ulang layanan jika terjadi kegagalan yang tidak terduga.

Tugas tingkat penampung

Semua log di stdout dapat dirutekan ke Cloud Logging menggunakan driver Log gcplogs saat menjalankan penampung docker. Hal ini membantu melacak startup atau kegagalan atau penghentian layanan yang tidak terduga.

Untuk merutekan log ke Cloud Logging, jalankan perintah berikut:
  sudo docker run --name connector-service -e
  CONNECTOR_ENV_PORT=$CONNECTOR_ENV_PORT -p
  $CONNECTOR_ENV_PORT:$CONNECTOR_ENV_PORT --restart=unless-stopped ----log-driver=gcplogs connector-container

Langkah selanjutnya