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.
- Untuk mendownload paket Go di VM, jalankan perintah berikut di VM:
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
- Instal Go di VM. Untuk mengetahui informasi selengkapnya, lihat Menginstal Go.
- Untuk membuat direktori baru untuk layanan web, jalankan perintah berikut:
mkdir SERVICE_REPO cd SERVICE_REPO
Pertimbangan tambahan
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 main 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 logging. Di layanan web, baca tingkat log dari variabel lingkungan. Tingkat log diambil sebagai input opsional dari selama pembuatan VM. Secara default, log Info dapat digunakan. Berikut adalah tingkat log:
- DEBUG: mencatat setiap bagian permintaan, termasuk rekaman aktivitas permintaan/respons HTTP.
- INFO: mencatat startup layanan, penghentian layanan, permintaan, dan informasi lainnya.
- ERROR: mencatat kegagalan permintaan, pengecualian pemformatan, dan error lainnya.
Penghentian tuntas
Siapkan server untuk menghentikan layanan secara tuntas dan menangani permintaan yang sedang berlangsung. Untuk mengetahui informasi tentang cara memulai ulang atau menghentikan server secara tuntas, lihat Memulai ulang atau menghentikan layanan secara tuntas.
Serentak
Server Gin secara inheren mendukung permintaan serentak menggunakan rutin Go. Secara default, jumlah permintaan yang tidak ditentukan diizinkan untuk diproses oleh rutin Go. Namun, dalam beberapa kasus, saat permintaan diperkirakan akan menggunakan banyak resource, gunakan kumpulan pekerja untuk membatasi dan membuffer permintaan di server. Untuk mengetahui informasi selengkapnya, lihat Contoh kumpulan pekerja.
Menguji dan membuat biner
- Tetapkan port dan jalankan server menggunakan perintah berikut:
- 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"
- Buat biner dan gunakan sebagai image VM menggunakan perintah berikut:
go build -o SERVICE_NAME
- Pindahkan biner ke folder root menggunakan perintah berikut:
sudo cp SERVICE_NAME /opt
- Jalankan layanan lagi untuk memverifikasi bahwa biner berfungsi seperti yang diharapkan menggunakan perintah berikut:
sudo chmod +x SERVICE_NAME ./SERVICE_NAME
EXPORT CONNECTOR_ENV_PORT = 8081 go get . go run .
Perintah ini menggabungkan library yang diperlukan dan menjalankan server.
Memasukkan aplikasi ke dalam container
- Instal Docker. Untuk mengetahui informasi selengkapnya, lihat Menginstal Docker.
- Buat file Docker untuk menjalankan biner.
FROM alpine:latest WORKDIR /opt COPY . . CMD ["./SERVICE_NAME"]
- Buat container konektor menggunakan perintah berikut:
sudo docker build -t connector-container .
- Jalankan container Docker. Tetapkan
--restart=unless-stoppeduntuk memulai ulang layanan jika terjadi kegagalan yang tidak terduga.
Tugas tingkat container
Semua log di stdout dapat dirutekan ke Cloud Logging menggunakan driver Log gcplogs saat menjalankan container 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 berikutnya
- Pelajari cara membuat konektor kustom.