Jika Anda pernah meluncurkan kampanye yang “melakukan segalanya dengan benar”, dan situs tiba-tiba mulai melambat pada puncaknya, Anda sudah memahami dari mana asal mula pembicaraan tentang bahasa pengembangan. Pada saat seperti itu, hal yang tidak menyenangkan menjadi jelas...
Infrastruktur bukanlah sebuah abstraksi. Ini adalah bagian dari produk. Dan hal ini dapat menahan beban atau mengubah traffic terbaik menjadi pengurasan anggaran termahal.
Golang (Go) muncul di Google sebagai upaya untuk membuat sistem server lebih sederhana dan lebih mudah diprediksi: sehingga lebih cepat dibuat, lebih stabil, dan lebih mudah dipelihara. Pada saat yang sama, Go cukup fleksibel - hanya saja fleksibilitasnya bukan tentang "konstruksi ajaib", tetapi tentang hal-hal praktis: pengumpulan layanan dengan cepat, penskalaan yang mudah, integrasi yang mudah ke dalam arsitektur apa pun. Oleh karena itu, di Go Anda dapat memperkuat sistem dengan satu komponen, dan merakit seluruh backend - tanpa merasa bahwa Anda telah terlibat dalam perjuangan abadi melawan kompleksitas.
Bahasa yang dikompilasi vs penerjemah - perubahan apa yang terjadi dalam produksi
Dalam bahasa yang dikompilasi, hasil karya adalah produk rakitan. Satu artefak yang Anda kirimkan ke server dan diluncurkan. Dalam bahasa yang ditafsirkan, di samping kode, lingkungan runtime, manajer paket, dependensi, dan versinya menuju produksi. Ini bukanlah sesuatu yang “buruk” atau “baik”. Itu hanya bagian yang lebih bergerak. Dan bagian yang bergerak menyukai kejutan.
Kecepatan di sini bukan tentang “milidetik untuk olahraga”. Hal ini berkaitan dengan permulaan yang cepat, peningkatan ke tingkat puncak, dan biaya sumber daya. Layanan yang dikompilasi biasanya memerlukan lebih sedikit kabel dan lebih nyaman dengan pertumbuhan beban - lebih sedikit titik kegagalan, lebih sedikit perilaku yang tidak terduga.
Penerapan juga menjadi lebih mudah: satu artefak lebih mudah untuk digulung, lebih mudah untuk direproduksi, lebih mudah untuk digulung kembali. Dan ketika rilis sering terjadi dan lalu lintas tidak meminta izin, hal ini menjadi keuntungan nyata.
Dan ya, keamanan produksi juga bergantung pada jumlah lapisan. Semakin banyak komponen yang terlibat dalam sebuah peluncuran, semakin luas permukaan risikonya. Kerentanan sering kali muncul bukan dalam kode Anda, namun dalam sebuah rantai. Pendekatan yang dikompilasi tidak menghapuskan proses keamanan, namun membuat kontrol lebih praktis: lebih sedikit pembaruan yang tidak perlu dan tidak dapat diprediksi “di dalam”.
Maju - kecepatan dan kontrol, tanpa drama
Go disukai bukan karena slogannya, namun karena perilakunya yang tenang saat sedang memuat. Rasanya menyenangkan dalam layanan "selalu online" - API, gateway, webhook, pemrosesan antrean, integrasi. Dimana terdapat banyak permintaan pada saat yang bersamaan, banyak ketergantungan eksternal dan banyak alasan mengapa semuanya tidak berjalan sesuai rencana..
Dalam praktiknya, komponen Go sering kali menghasilkan efek yang sederhana dan terukur:
- menyimpan lebih banyak permintaan pada perangkat keras yang sama
- puncak mengalami stabilitas lebih
- berskala tanpa pengikat yang tidak perlu
- lebih mudah dikontrol dalam produksi - berdasarkan metrik, log, dan perilaku
Go tidak membuat sistem “aman secara otomatis”. Namun hal ini membantu menjaga risiko: kontrak yang kuat, perilaku yang tidak terlalu tersembunyi, dan biasanya lebih sedikit ketergantungan yang tidak disengaja. Dan jika Anda pernah menangani insiden yang datang “dari perpustakaan”, Anda memahami mengapa hal ini penting.
Kripto adalah lingkungan yang membuat Go terasa seperti di rumah sendiri
Layanan kripto hidup di lingkungan di mana “kasus ekstrem” terjadi setiap hari. Uang bergerak cepat, integrasi berlimpah, sumber eksternal berubah-ubah, dan puncaknya terjadi secara tiba-tiba. Oleh karena itu, Go di ruang bawah tanah sering kali mengambil peran sebagai lapisan yang menjaga aliran peristiwa dan meringankan beban sistem lainnya.
Titik referensi yang bagus adalah Ethereum. Ekosistem di sekitarnya dengan cepat mengajarkan fakta sederhana: “pergi ke node melalui RPC” bukanlah satu tombol, tetapi aliran permintaan, langganan, percobaan ulang, batas waktu, dan koneksi ulang. Dan jika Anda sedang membangun dompet, gateway pembayaran, atau layanan pemantauan transaksi, maka dengan cepat menjadi jelas bahwa Anda tidak memerlukan “kode yang indah”, tetapi saluran yang andal.
Dalam sistem seperti itu, Go sering digunakan sebagai lapisan infrastruktur: layanan yang membaca peristiwa jaringan, mengumpulkan data, memantau transaksi dan konfirmasi, dan kemudian memberikan hasil yang dinormalisasi ke produk. Bukan “karena modis”, namun karena lebih mudah mempertahankan SLA dan tidak bangkrut dalam hal infrastruktur.
Integrasi Go dengan PHP, Node.js, Python - seperti apa
Dalam proyek nyata, Go jarang muncul sebagai “tulis ulang semuanya”. Tampaknya berdekatan - sebagai layanan terpisah yang melakukan satu atau dua hal, tetapi melakukannya dengan lancar, cepat, dan stabil. Sisa tumpukannya bisa tetap sama. Dan tidak apa-apa.
Beberapa gambar khas dari produksi:
- PHP adalah tumpukan yang populer dan familier di web. Seringkali dibiarkan sebagai “showcase” (kantor, panel admin, logika produk), sedangkan di Go mereka menyertakan pipa beban - antrian, webhook, agregator, API cepat.
- Node.js - tumpukan populer dengan ekosistem besar dan integrasi yang mudah.. Ini sering digunakan ketika kecepatan perubahan dan banyaknya modul siap pakai adalah hal yang penting, sedangkan Go digunakan untuk layanan frekuensi tinggi, gateway, dan prosesor latar belakang.
- Python adalah pilihan alami untuk tugas data dan analisis. Akan lebih mudah untuk menyimpannya di dekat Anda untuk pemrosesan dan penelitian data, dan Go digunakan ketika latensi, stabilitas, dan biaya pemuatan penting.
Koneksi antar komponen biasanya dibangun melalui API biasa. Saat Anda memerlukan “bahasa umum” sederhana di atas JSON, JSON-RPC muncul: metode + parameter -> hasil atau kesalahan. Hal ini sering terjadi di kripto - di sekitar node dan penyedia, karena akan lebih mudah jika memiliki satu protokol untuk berbagai bahasa dan layanan.
Go dipilih ketika produk telah berkembang dan mulai menjadi kenyataan - lalu lintas puncak, integrasi, biaya waktu henti, dan pengendalian produksi. Sangat cocok untuk penguatan sistem yang ditargetkan (memindahkan sirkuit panas ke layanan terpisah) dan untuk merakit backend yang stabil secara keseluruhan. Dalam kripto, Go sangat cocok sebagai lapisan pendukung seputar alur peristiwa dan integrasi - mulai dari bursa dan sistem pembayaran hingga infrastruktur Ethereum.
Ide praktisnya sederhana: tumpukan populer digunakan untuk rilis cepat MVP, dan Go diberikan ke bagian-bagian yang mengutamakan kecepatan, stabilitas, dan perilaku yang dapat diprediksi saat dimuat.
Baca juga
Kami menerima pembayaran dalam bitcoin: Bagian Tiga, testnet kami. Dengan selikuran
Pada artikel terakhir saya telah memberi tahu Anda cara menginstal bitcoind (setidaknya di Ubuntu Linux) dan cara terhubung ke testnet. Namun testnet adalah solusi yang baik ketika Anda melakukan pengujian pada situs web siap pakai yang telah diterapkan pada server di Internet. Namun untuk pembangunan lokal, hal ini bukanlah solusi yang paling tepat.
Kami menerima pembayaran dalam bitcoin: Bagian enam. Nuansa, sekali lagi nuansa
Di bagian terakhir, kami menunjukkan bahwa bukanlah ide yang buruk untuk mencari tahu fakta pembayaran dari bitcoind, daripada melalui semua alamat yang dikeluarkan.
