10 proyek sumber terbuka yang membuktikan kekuatan Google Go

Sekarang 10 tahun di alam liar, bahasa pemrograman Go Google telah membuat nama untuk dirinya sendiri. Ringan dan cepat untuk dikompilasi, Go telah membangkitkan minat yang signifikan karena perpustakaan dan abstraksi yang murah hati yang memudahkan pengembangan aplikasi serentak dan terdistribusi (baca: cloud).

Tetapi ukuran sebenarnya dari kesuksesan bahasa pemrograman apa pun adalah proyek yang dibuat oleh pengembang dengannya. Go telah membuktikan dirinya sebagai pilihan pertama untuk pengembangan cepat layanan jaringan, proyek infrastruktur perangkat lunak, dan segala jenis alat yang ringkas dan kuat.

Berikut adalah 10 proyek penting yang ditulis dalam Go, banyak di antaranya telah menjadi lebih terkenal daripada bahasa aslinya. Semuanya telah membuat tanda yang signifikan di domain masing-masing. Semua proyek yang ditampilkan di sini dihosting di GitHub, jadi mudah bagi para Go yang penasaran untuk mengintip kode Go yang membuat mereka tergerak.

Buruh pelabuhan

Anda akan kesulitan menemukan kisah sukses yang lebih baik untuk Go daripada Docker. Dalam waktu kurang dari setahun, teknologi wadahisasi perangkat lunak ini menjadi contoh kesesuaian Go dengan proyek perangkat lunak terdistribusi berskala besar. Tim Docker menyukai Go karena menawarkan banyak keuntungan: kompilasi statis tanpa ketergantungan, pustaka standar yang kuat, lingkungan pengembangan penuh, dan kemampuan untuk membangun beberapa arsitektur dengan sedikit kerumitan.

Kubernetes

Jika Docker ditulis dalam Go, masuk akal bahwa proyek container berorientasi cloud penting lainnya juga akan ditulis di Go. Kubernetes, proyek orkestrasi container Google, adalah proyek Go, seperti juga sebagian besar subkomponen dan ekosistem Kubernetes. Contoh kasus: Kubernetes spin-off super-ringan, k3s, untuk orang-orang yang hanya membutuhkan dasar-dasar Kubernetes dan tidak lebih.

Google mempertimbangkan untuk menulis Kubernetes dalam bahasa lain termasuk C / C ++, Java, dan Python. Namun menurut Joe Beda, salah satu pendiri dan mantan pimpinan teknis untuk Kubernetes dan saat ini insinyur utama di VMware, tidak satu pun dari bahasa ini yang mencapai “titik terbaik” seperti Go. Seperti yang dikatakan Beda, “Go bukanlah level yang terlalu tinggi atau level yang terlalu rendah.” 

Fedora CoreOS

CoreOS (sekarang menjadi proyek Red Hat) menggunakan Docker untuk mengubah Linux menjadi sekumpulan kontainer yang digabungkan secara longgar, jalur yang mungkin jauh dari untaian dependensi yang kusut yang telah menjadi sine qua non dari manajemen paket Linux. Maka, tidak mengherankan bahwa CoreOS memanfaatkan Docker untuk mencapai keajaiban ini — dan dua layanan dasar CoreOS, Etcd dan Fleet, keduanya ditulis dalam Go. Fleet memungkinkan Anda "memperlakukan cluster CoreOS Anda seolah-olah cluster itu menggunakan satu sistem init". Etcd, penyimpanan nilai kunci terdistribusi, menangani sinkronisasi pengaturan antara aplikasi Docker dan instans CoreOS. Keduanya ditulis dalam Go karena "dukungan lintas platform yang luar biasa, biner kecil, dan komunitas hebat di belakangnya".

InfluxDB

InfluxDB adalah "database deret waktu terdistribusi tanpa dependensi eksternal". Istilah "deret waktu" berarti InfluxDB terutama berkaitan dengan pengukuran metrik atau peristiwa, dan memungkinkannya untuk dianalisis secara waktu nyata. “Tidak ada ketergantungan eksternal” berarti Anda tidak memerlukan perangkat lunak lain untuk menggunakan InfluxDB; itu sepenuhnya mandiri (seperti yang cenderung dimiliki aplikasi Go). Data dapat ditulis atau dibaca dari database dengan panggilan REST yang mengirimkan JSON, dan kueri dapat dibuat melalui bahasa SQL sederhana yang bahkan memungkinkan regex. InfluxDB sangat elastis dan dapat diskalakan secara horizontal, dan sepertinya Go dipilih sebagai bahasa untuk membuat fitur tersebut menjadi mungkin dan mudah.

Istio

Proyek Istio, bagian dari semesta Kubernetes, menangani masalah yang dipahami dan ditangani dengan buruk di banyak lingkungan aplikasi perusahaan: Bagaimana Anda menangani struktur jaringan yang menghubungkan layanan Anda satu sama lain dan ke dunia luar? Istio menyediakan "service mesh" yang dapat diprogram, atau lapisan proxy jaringan, antara setiap container dalam cluster Kubernetes dan antara container tersebut dan dunia luar, sehingga setiap perubahan pada jaringan tersebut dapat dilakukan secara terprogram melalui bidang kontrol bersama. Go sangat cocok untuk ini karena Kubernetes juga ditulis dalam Go, tetapi juga karena kesesuaian Go untuk proyek jaringan terdesentralisasi dan terdistribusi.

Traefik

Proyek terkait jaringan lain yang ditulis di Go adalah Traefik, proxy balik dan penyeimbang beban untuk layanan jaringan. Traefik dirancang untuk bekerja dengan berbagai macam opsi orkestrasi, dari Kubernetes dan Docker Swarm hingga Amazon ECS dan Azure Service Fabric. Traefik secara otomatis membuat rute yang dibutuhkan oleh layanan mikro yang berjalan di bawah orkestra tersebut untuk berbicara dengan dunia luar. Ini juga menghasilkan data pelacakan dan statistik yang sesuai untuk orkestra Anda.

Hugo

Generator situs statis sedang populer saat ini. Bagaimanapun, mereka menawarkan cara yang cepat dan nyaman untuk membuat situs web yang cepat dan aman hanya dengan HTML, CSS, dan JavaScript statis. Hugo adalah generator situs statis yang memanfaatkan banyak fitur Go untuk bekerja dengan cepat dan lancar — yaitu, alat Go untuk merender HTML, perpustakaan jaringannya, fungsi internasionalisasinya, dan kemampuannya untuk diterapkan sebagai satu biner asli platform yang dapat didistribusikan ulang. Semua fitur Go ini membuat Hugo mudah dibuka, dijalankan, dan digunakan untuk membangun situs dengan cepat.

Terraform

HashiCorp — didirikan oleh pencipta Vagrant, alat berbasis Ruby untuk mengelola lingkungan pengembangan — memanfaatkan kecepatan dan kekuatan Go untuk membangun proyek yang lebih besar dan lebih ambisius: Terraform, sistem untuk membangun infrastruktur TI di lokasi atau di awan melalui file definisi diubah menjadi kode. Setiap perubahan yang Anda buat dapat digulung maju atau mundur, dan Anda mendapatkan ikhtisar lengkap tentang apa yang sebenarnya akan terjadi — yaitu, rencana eksekusi — sebelum Anda memanggil kode Anda.

CockroachDB

Go digunakan untuk membangun berbagai jenis aplikasi cloud-native terdistribusi. CockroachDB, dinamai demikian karena ketahanannya, adalah database terdistribusi yang dirancang untuk bertahan dari segala macam bencana (bahkan kegagalan pusat data) namun terus menanggapi kueri SQL Anda. CockroachDB seluruhnya ditulis dalam Go, kecuali sedikit C ++ untuk fungsi inti intensif kinerja yang diambil dari proyek pendahulu RocksDB.

Teleportasi Gravitasi

Go telah menjadi bahasa default untuk banyak proyek jaringan, dan untuk proyek hilir yang membangunnya. Contoh kasus: Implementasi SSH Go, dengan sendirinya bermanfaat, berfungsi sebagai fondasi proyek seperti Gravitational Teleport. Gravitational Teleport memungkinkan pengguna untuk mengakses server dengan aman melalui shell. Ini memberlakukan keamanan melalui sistem masuk tunggal, tetapi tanpa memerlukan jenis overhead administratif (misalnya, manajemen kunci dan rotasi) yang biasanya dibutuhkan hal-hal seperti itu.