Go bahasa: pemilihan ORM

Go memperoleh ketenaran sebagai salah satu bahasa pemrograman paling sederhana, termasuk kelebihannya - kemudahan menulis dan membaca kode, dalam banyak kasus, dukungan yang lebih sederhana untuk basis kode. Kami berbicara tentang beberapa keunggulan Go, terima kasih kepada kami di SimbirSoft yang menggunakannya dalam sejumlah proyek yang sarat muatan dengan berbagai arsitektur, baik layanan web dan layanan mikro (SOA).

Aplikasi


Bahasa sistem ini baik untuk sebagian besar tugas jaringan, semua layanan microser dan makro, layanan web, serta untuk alat sistem - bukan tanpa alasan banyak pakar DevOps menyukainya. Go menemukan penggunaannya di Machine Learning, dan beberapa pengembang bahkan menulis situs web dengannya. Dalam praktik kami, kami beralih ke Go ketika kami mengembangkan CRM dan produk perangkat lunak yang terpisah untuk penggunaan internal, misalnya, untuk perusahaan asuransi. Repositori Go standar bahasa juga memiliki paket untuk pengembangan seluler, paket ini masih didukung, meskipun ada alat yang lebih cocok untuk ini.

Go: pengembangan dan pengakuan


Di Google, pengembangan bahasa Go dimulai pada 2007. Sebelum itu, perusahaan menggunakan Java, Python, dan C ++, namun, mereka memiliki kelemahan tertentu (khususnya, konsumsi memori tinggi) atau penggunaan terbatas. Kemudian Google mulai mengembangkan bahasa baru untuk kebutuhan mereka.

Apa persyaratan untuk bahasa ini:

  • Satu file yang dapat dieksekusi (tidak ada dependensi)
  • Kompilasi cepat
  • Fast runtime (setidaknya setara dengan Java dan C ++)
  • Pengumpul sampah meminimalkan kebocoran sumber daya
  • Optimalisasi untuk sistem multiprosesor
  • Pengetikan statis
  • Minimalisme
  • Ringan sintaksis
  • Multiparadigmness (imperatif, fungsional, berorientasi objek)

Bagi mereka yang tidak bekerja dengan Go, ingat kembali secara singkat sejarah penciptaannya. Google mulai memikirkan spesifikasi bahasa pada tahun 2007. Rilis 1.0 terjadi pada 2012, dan pada 2015 rilis 1.5 dirilis, sudah tanpa satu baris kode C ++. Sejak saat itu, bahasa mengkompilasi sendiri, yang memungkinkan kami untuk mempercepat pengembangan tugas individu di Go.

Usia rata-rata pengenalan bahasa baru di komunitas adalah sekitar 10 tahun, tetapi Go sudah menjadi salah satu bahasa yang paling populer. Pada Juni 2019, Go naik ke peringkat 15 dalam hal popularitas di dunia, menurut indeks TIOBE , menambahkan tiga posisi dalam setahun. Di antara alasan keberhasilannya adalah sebagai berikut:

  • Perpustakaan standar yang kuat
  • Penyeteman standar yang keren
  • Fungsi yang paling penting disajikan dalam "kotak", dan perpustakaan diberikan ke sumber terbuka
  • Komunitas yang sangat ramah

Misalnya, paket-paket berikut termasuk dalam perpustakaan standar (daftar tidak lengkap):



Ilustrasi - github.com/ashleymcnamara/gophers

Jika Anda tidak nyaman dengan kecepatan aplikasi atau parameter lainnya, Anda dapat bekerja dengan profiler di luar kotak. Untuk melakukan ini, Anda perlu:
  • Registrasi impor profiler: import _ "net / http / pprof"
  • Tambahkan server http untuk menerima hasil dari profiler: buka http.ListenAndServe ("0.0.0.0:8080", nil)

Go tools


Salah satu manfaat dari Go adalah seperangkat alat standar yang luas. Kami telah memilih beberapa utilitas yang paling menarik, menurut pendapat kami (sebenarnya, ada banyak lagi):

  • benchcmp - perbandingan benchmark, kinerja sebelum dan sesudah perubahan
  • tutup alat go - analisis cakupan kode dengan tes
  • godoc - pembuatan dokumentasi berbasis komentar
  • goimport - impor analisis (menghapus yang tidak digunakan, menambahkan hilang)
  • gorename - refactoring
  • penyetelan presentasi - presentasi
  • pergi dokter hewan - sering menemui kesalahan linter
  • uji coba dan tolok ukur
  • perbaiki - perbaiki perubahan saat mengubah API (sebelum rilis 1.0)
  • buka tool pprof - profiling
  • Go fmt - pemformatan kode berdasarkan gaya kode
  • Detektor ras - menemukan perlombaan data dalam runtime

Daya saing


Kekuatan lain dari Go adalah bahwa mudah untuk menulis kode kompetitif dalam bahasa ini. Untuk melakukan ini, Anda cukup menggunakan kata kunci sebelum memanggil fungsi.



Pergi Pelatihan


Jika Anda ingin memprogram di mana saja, memulai akan memakan waktu relatif sedikit. Pengembang - Tim Inti - mendukung kursus A Tour of Go dalam beberapa bahasa, termasuk Rusia. Kursus ini dapat diselesaikan hanya dalam 1-3 hari. Dalam hal belajar, Go adalah salah satu bahasa yang paling sederhana.

Jadi apa yang harus dibaca:


ORM dalam Go


Dipercaya bahwa salah satu kelemahan Go adalah ORM. Mungkin ini sebagian disebabkan oleh fakta bahwa bahasanya masih muda - di dalamnya, banyak alat yang diperlukan baru mulai dikembangkan. Secara khusus, Anda dapat menggunakan paket database / sql untuk bekerja dengan database. Apa persyaratan untuk paket:

  • Paket umum untuk semua database sql
  • Portable: tidak mengandung fitur apa pun di bidang kerja dengan database. Idealnya, semuanya harus berfungsi dengan benar jika Anda mengganti driver.
  • Mengkonversi tipe Go ke tipe basis data standar (harus memungkinkan untuk memproses tipe tertentu)
  • Berisi kumpulan koneksi
  • Thread-safety untuk goroutine

Contoh kueri SELECT menggunakan database / sql


defer rows.Close() for rows.Next() { var message string err := rows.Scan(&message) if err != nil { log.Panic(err) } fmt.Println(message) } if err := rows.Err(); err != nil { log.Panic(err) } 

Seperti yang Anda lihat dari contoh, banyak tindakan templat harus dilakukan setiap waktu. Sebagai contoh:

  • tutup baris objek: menunda rows.Close ()
  • periksa kesalahan err: = rows.Err (); err! = nihil sejak tidak jelas mengapa rows.Next () mengembalikan kami salah

Dari semua ini, saya ingin menggunakan sesuatu yang lebih universal dan sederhana, misalnya, ORM.

Jenis-jenis Implementasi ORM


Ketika pengembang dihadapkan pada pilihan ORM untuk bekerja dengan Go, mereka sering dipandu oleh peringkat pada github. Ketika kami memilih ORM untuk diri kami sendiri, Beego memiliki peringkat terbaik (18 ribu "bintang"). Namun, dalam praktiknya, ORM adalah bagian dari kerangka kerja, sehingga penilaiannya tidak cukup objektif (jika Anda hanya memilih ORM). Juga di antara para pemimpin, Gorm, yang telah berkembang sejak 2013, mendukung transaksi dan memiliki banyak keuntungan lainnya.



Namun, seperti yang ditunjukkan oleh pengalaman kami dengan Gorm, masalah tertentu mungkin terjadi saat menggunakannya, terutama saat pengujian: misalnya, ras data atau menghapus kunci asing. Kami dapat mengasumsikan penyebab galat seperti ini di Gorm:

  • Berkomitmen segera di master
  • Tag tidak ada
  • Pembuat sql yang tidak dapat diprediksi

Saat ini, dalam pekerjaan kami, kami lebih suka beberapa ORM yang tidak menggunakan antarmuka {} - ini adalah Kallax, Reformasi dan Sqlboiler. Kami biasanya menggunakan paket Golang untuk migrasi dan repositori orm-bench dengan tolok ukur ORM on Go. Pada saat yang sama, Anda tidak hanya mengejar tolok ukur. Lebih sering, kecepatan tidak sepenting kualitas kode dan fungsinya.

Untuk meringkas


Keuntungan dari bahasa Go untuk pengembang dan untuk bisnis termasuk peningkatan produktivitas pengembangan, kemampuan untuk menggunakan lebih sedikit server, kemudahan sintaksis dan waktu pelatihan yang lebih cepat untuk pengembang baru, seperangkat alat besar dan komunitas yang ramah. Terlepas dari kenyataan bahwa itu adalah bahasa yang muda, itu terus tumbuh dan berkembang. Fitur Go menjadikannya bahasa yang optimal untuk berbagai proyek, dari tugas jaringan hingga layanan mikro dan blockchain.

Artikel itu disiapkan berdasarkan laporan kami pada pertemuan Hot Backend di Samara.

Source: https://habr.com/ru/post/id458074/


All Articles