Golang Hosting
PaaS adalah platform cloud multibahasa sejati, yang saat ini menyediakan Java, PHP, Python, Ruby, Node.js, .NET, dan sekarang ada environment Go untuk menjalankan proyek dari semua ukuran dan berbagai jenis.
Dalam panduan ini, Anda akan diperkenalkan dengan fitur unik dari hosting Go dan diperkenalkan dengan kemungkinan terkait Go di dalam platform. Gunakan tabel konten di bawah ini untuk menemukan informasi yang diperlukan di dalam panduan dengan lebih cepat:
- Go Environment Hosting
- Golang Versioning
- Go Application Deployment
- Domains Management
- Automatic Vertical Scaling
- Manual Horizontal Scaling
- Automatic Horizontal Scaling
Go Environment Hosting
Untuk meng-host aplikasi Go Anda, Anda perlu membuat environment yang sesuai dengan menggunakan Topology Wizard.
Beralih ke tab mesin Go, tambahkan Golang sebagai server aplikasi Anda dan perangkat lunak lainnya yang diperlukan untuk proyek Anda (misalnya load balancers, databases atau shared storage). Jika diperlukan, sesuaikan jumlah node dalam environment Anda, batas cloudlet untuk RAM dan CPU, lampirkan IP publik, dll.
Template ini menggunakan daemon inisialisasi modern systemd.
Semua instance di platform adalah container yang sepenuhnya terisolasi, yang didistribusikan secara merata di seluruh host yang tersedia (server fisik atau VM) menggunakan aturan anti-ketergantungan otomatis. Ini menghilangkan risiko downtime aplikasi Anda, misalnya memastikan ketersediaan tinggi.
Untuk informasi lebih lanjut tentang penyiapan environment, lihat dokumen Create Environment.
Golang Versioning
Saat ini (pada saat penulisan ini), template stack Golang yang didukung oleh platform adalah versi berikut:
- 1.17.12
- 1.18.10
- 1.19.12
- 1.20.14
- 1.21.13
- 1.22.7
- 1.23.1
Daftar terbaru dari rilis yang tersedia di platform disediakan melalui dokumen Software Stack Versions yang diperbarui secara berkala (mingguan).
Anda dapat memilih versi yang diinginkan selama pembuatan environment dan mengubahnya nanti melalui container redeploy. Di sini, semua data kustom di dalam node(s) akan disimpan, yang memungkinkan, misalnya, untuk dengan mudah meningkatkan versi perangkat lunak Anda setelah rilis template stack yang baru.
Go Application Deployment
Setelah pembuatan environment, Anda dapat mendeploy proyek Go Anda dari repositori Git (pendistribusian dari arsip aplikasi akan diimplementasikan dalam rilis platform mendatang).
Ada kemungkinan untuk menyesuaikan proses pendistribusian dengan menyediakan atau menyesuaikan variabel container berikut:
- GO_RUN - mengatur nama file biner yang dapat dieksekusi (jika tidak ditentukan, skrip pendistribusian akan mencoba menemukan satu berdasarkan nama proyek Git)
- GOPATH - mendefinisikan folder distribusi (/home/jelastic/webapp , secara default)
- GO_BUILD_OPTIONS - menyediakan opsi tambahan untuk operasi build (-a, secara default, untuk memaksa membuat ulang paket yang sudah terbaru)
- GO_RUN_OPTIONS - menyediakan opsi tambahan untuk operasi run
Selama pendistribusian, platform secara otomatis melaksanakan langkah-langkah berikut:
- menganalisis URL Git yang diberikan untuk mendapatkan tautan ke proyek Go
- mengunduh paket dengan semua dependensi menggunakan perintah go get
- jika terjadi kesalahan, mengunduh sebagai proyek Git umum dan mencoba kembali mendapatkan dependensi Go
- membuat proyek dengan perintah go build (menggunakan opsi tambahan yang ditentukan dalam variabel GO_BUILD_OPTIONS)
- menjalankan biner yang ditentukan oleh variabel GO_RUN dengan perintah go run (menggunakan opsi tambahan yang ditentukan dalam GO_RUN_OPTIONS)
Setelah pendistribusian berhasil, proyek Go terletak di direktori yang ditetapkan dengan variabel GOPATH. Di sini, hierarki workspace di dalamnya didasarkan pada persyaratan dalam dokumentasi resmi.
Anda dapat mempelajari lebih lanjut tentang deploy aplikasi Go melalui dokumen yang sesuai:
Domains Management
Dengan platform, Anda dapat dengan mudah menghubungkan domain eksternal (custom) ke aplikasi Go Anda untuk digunakan sebagai pengganti domain environment default. Tergantung pada entry point yang digunakan, ada dua opsi:
- CNAME redirect jika menggunakan Shared Load Balancer; direkomendasikan untuk lingkungan dev dan test
- DNS A Record jika menggunakan public IP; dapat menangani beban lalu lintas tinggi dan cocok untuk lingkungan production
Anda juga dapat dengan mudah menukar domain untuk mengarahkan lalu lintas dari satu environment ke environment lainnya (misalnya, untuk beralih ke versi aplikasi yang lebih baru tanpa downtime).
Untuk akses via public IP, lalu lintas dapat dialihkan ke environment lain dengan metode SwapExtIpsAPI (juga tersedia melalui CLI).
Automatic Vertical Scaling
Skalabilitas vertikal otomatis dipastikan oleh kemampuan platform untuk secara dinamis menyediakan sumber daya (RAM dan CPU) untuk server dalam batas yang telah ditentukan sesuai dengan permintaan saat ini, tanpa memerlukan intervensi manual. Fitur ini menjamin Anda tidak membayar lebih untuk sumber daya yang tidak digunakan dan menghemat waktu Anda dengan menghilangkan kebutuhan untuk menangani penyesuaian terkait beban atau perubahan arsitektural.
Proses skala secara otomatis ditangani oleh platform, Anda hanya perlu menentukan batas cloudlets bawah dan atas (masing-masing setara dengan 128 MiB RAM dan 400 MHz CPU) untuk server Go Anda melalui topology wizard:
Aplikasi Anda akan bekerja dalam batas-batas ini mengurangi konsumsi sumber daya ketika beban rendah atau meningkatkannya ketika beban tinggi. Jadi, Anda hanya membayar untuk sumber daya yang benar-benar terpakai. Untuk informasi lebih lanjut, silakan merujuk ke dokumentasi automatic vertical scaling.
Manual Horizontal Scaling
Server Golang tambahan dapat dengan mudah ditambahkan melalui topology wizard selama pembuatan atau penyesuaian environment. Cukup klik tombol “+ ” pada bagian Horizontal Scaling dan tambahkan jumlah instance yang diperlukan.
Jumlah maksimum server jenis yang sama dalam satu lapisan environment tergantung pada pengaturan hosting provider tertentu (biasanya batas ini untuk 16 node dan dapat diperbesar dengan mengirimkan permintaan yang sesuai ke support).
Juga, Anda dapat melihat bahwa setelah melakukan scaling server Golang, node load balancing secara otomatis ditambahkan ke topologi environment (diperlukan untuk distribusi permintaan yang tepat). Cari detail lebih lanjut tentang manual horizontal scaling dalam dokumentasi.
Automatic Horizontal Scaling
Skalabilitas horizontal otomatis diimplementasikan melalui pemicu yang dapat disesuaikan, yang memungkinkan untuk menambah atau mengurangi jumlah node karena beban aplikasi. Untuk mengonfigurasi penyesuaian otomatis, buka bagian Settings > Monitoring > Auto Horizontal Scaling pada environment dan klik tombol Add.
Di sini, Anda dapat mengatur pemicu untuk stack dan sumber daya tertentu (CPU, RAM, Network, Disk) dengan menyesuaikan kondisi penyesuaian skala.
Pelajari lebih lanjut tentang automatic horizontal scaling dalam dokumen terkait.
Selain itu, ada banyak fitur dan fungsionalitas lain yang disediakan oleh platform hosting Go, di antaranya:
- Custom atau Built-In SSL
- Public IPv4 dan IPv6
- Pilihan yang luas dari managed databases
- Firewall container, endpoint, dan isolasi environment
- Antarmuka pengguna yang ramah dan akses SSH langsung untuk manajemen
- Open API dan Cloud Scripting untuk otomasi
- Model harga pay-as-you-use
- Fungsionalitas kolaborasi untuk kerja tim
- Distribusi multi-cloud
Hosting cloud Go siap untuk menjalankan dev, test, dan production environments Anda.