Belum lama ini iseng ngoprek golang, ternyata performancenya keren banget, ditambah bisa dicompile ke binary (cocok banget ini untuk jualan software web).
Request Per Second (more is better)
sumber:
https://www.toptal.com/back-end/server-side-io-performance-node-php-java-go
Nah pada sesi kali ini saya akan berbagi tips bagaimana membuat crud-mysql dan mvc structrure menggunakan golang dengan mudah, tanpa harus coding modelnya guys. Saya tulis karena sepertinya belum banyak yang mendokumentasikan atau menulis dengan lengkap step by stepnya.
About Yii Framework
Topik kali ini saya beri judul migrasi php-yii ke golang, karena memang case kali ini dilakukan untuk melakukan conversi dari aplikasi yang sebelumnya menggunakan php framework yii. Apa itu yii ? akan saya bahas di tulisan lainnya. Intinya yii ini adalah framework php yang membuat programmer dimanjakan dengan fitur crud code generatornya yang cocok banget untuk programmer lazy coding seperti saya yang ingin membuat aplikasi dengan cepat. Selain yii ada juga puluhan framework lain seperti laravel , slim, silex, CI, symfony, zend, phalcon dan masih banyak framework lainnya dengan pro dan cons masing-masing. ini juga akan dibahas dalam tulisan lainnya. Phalcon tampaknya cukup menjanjikan performancenya karena frameworknya di embed dalam code c didalam engine php interpreternya (belum sempet oprek gaes)
1. Instalasi golang devkit
Langkah pertama yang perlu dilakukan yaitu install dependencynya. Karena saya menggunakan macos , maka dapat digunakan perintah brew untuk menginstall golang, penggunaan brew otomatis akan install dependenciesnya dengan mudah, sintaknya sebagai berikut:
brew install go
.
Pastikan golang sudah terinstall dengan mengetik perintah go, atau which go. selanjutnya adalah melakukan setting path agar perintah go dikenali di semua path
export GOPATH="${HOME}/.go"
export GOROOT="$(brew --prefix golang)/libexec"
export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"
2. Membuat Project Golang (kali ini saya menggunakan go mod)
mkdir -p /Users/feri/Documents/goproject
cd /Users/feri/Documents/goproject
go mod init github.com/ferianto
3. Membuat database mysql (jangan lupa pilih engine innodb dan lengkapi dengan constraint)
contohnya sebagai berikut: (dibuat dengan microolap)
4. Download golang struct (model) generator
go get github.com/smallnest/gen
setelah perintah diatas generator akan di download dan biasanya di taruh di go path/pkg.
menurut petunjuknya perintah yang digunakan adalah sebagai berikut
gen --connstr "root:passsword@tcp(127.0.0.1:3306)/dbname?&parseTime=True" --database dbname --json --gorm --guregu --rest
Tetapi pada laptop saya , karena go path ada ditempat lain (/opt/gopath) , jadi saya jalankan sebagai berikut:
go run /opt/gopath/pkg/mod/github.com/smallnest/[email protected]/main.go --connstr "root:password@tcp(127.0.0.1:3306)/dbname?&parseTime=True" --database dbname --json --gorm --guregu --rest
jika perintah diatas berhasil dijalankan, maka akan muncul folder model dengan banyak namafile.go sesuai nama table yang ada di database dbname , contoh isinya sebagai berikut:
Dapat kita lihat hasilnya, fungsi dari (gen) akan melakukan mapping column pada mysql menjadi go struct (model) dengan tipe data yang bersesuaian dengan gorm.model, file diatas sebenarnya sama dengan *gorm.model , tinggal kita tambahkan text berikut:
…..
Masih bersambung ya gaes, ada kommentar? silahkan taruh di comment. ditinggal ngoding dulu ya…..
Referensi bacaan:
- https://github.com/smallnest/gen
- https://blog.golang.org/using-go-modules
- http://gorm.io/docs/models.html
- https://ahmadawais.com/install-go-lang-on-macos-with-homebrew/
- https://go-tour-id2.appspot.com/basics/13
- https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/index.html?ref=hackr.io
- https://gobyexample.com/slices