Web framework seçimi konusunda yardımcı olur musunuz?

230 views
Skip to first unread message

Zafer Çelenk

unread,
Sep 11, 2018, 9:05:55 AM9/11/18
to gola...@googlegroups.com
Merhaba,

Go ile web tarafında ilerlemek isteyen birisi olarak bir çok seçenek
arasında biraz kafam karıştı. Hem dile yabancıyım, hem de framework
konusundaki seçeneklerin hiç biri hakkında bir seçim veya kıyas yapacak
bilgiye sahip degilim.

Şöyle "https://github.com/mingrammer/go-web-framework-stars" bir liste
buldum. Görünüşe göre "gin" ve "beego" ön sıradalar. Sizlerin kullandığı
veya tavsiye ettiği hatta daha iyisi tecrübe ettiği web framework var
mı? Bu konudaki görüşleriniz nedir?

Zafer.

A.kadir olmez

unread,
Sep 11, 2018, 9:12:31 AM9/11/18
to gola...@googlegroups.com
Ben gin gonic kullanıyorum baya saglam şuana kadar yarı yolda bırakmadı tavsiye ederim 

11 Eyl 2018 Sal, saat 16:05 tarihinde Zafer Çelenk <zafer...@gmail.com> şunu yazdı:
--
Bu e-postayı Google Grupları'ndaki "Golang Türkiye" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için golang-tr+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/d/optout adresiniz ziyaret edin.
--
A.Kadir ÖLMEZ

Fatih Arslan

unread,
Sep 11, 2018, 9:15:20 AM9/11/18
to gola...@googlegroups.com
Son zamanlarda Buffalo hakkında güzel şeyler duydum: https://github.com/gobuffalo/buffalo

--
Bu e-postayı Google Grupları'ndaki "Golang Türkiye" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için golang-tr+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/d/optout adresiniz ziyaret edin.


--
Fatih Arslan

Hakan Ersu

unread,
Sep 11, 2018, 2:50:05 PM9/11/18
to gola...@googlegroups.com
Merhaba

Buffalo'yu test amaçlı olarak bir süre denedim. Rails veya Laravel'e yolunda ilerlediğini söyleyebilirim. Rails ve Laravel'i sevsemde go dünyasında web uygulaması geliştirmek istiyorsanız benim tercih edeceğim yol, go ile apisini geliştirmek ve üstüne javascript spa hazırlamak. Hernekadar go güzel bir template sistemine sahip olsada benim ihtiyaçlarımı yukarda bahsettiğim frameworklerin template sistemleri kadar karşılamıyor ve karşılamasınıda açıkcası beklemiyorum.

Beego ile yazılmış orta ölçekli bir uygulama üzerinde çalışıyoruz oldukça güzel olduğunu söyleyebilirim. Go'nun birçok standart kütüphanesini akıllıca bir araya getirmişler ancak dökümantasyon tarafı çok eksik bence.

Benim tavsiyem gorilla/mux gibi basit bir rooter ile ufak projeler geliştirmeniz, frameworkler dil üzerinde çok fazla soyutlamaya neden oluyor.

--
Bu iletiyi Google Grupları'ndaki "Golang Türkiye" grubuna abone olduğunuz için aldınız.

Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için golang-tr+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.

Zafer Çelenk

unread,
Sep 12, 2018, 11:16:24 AM9/12/18
to gola...@googlegroups.com
On 9/11/18 9:49 PM, Hakan Ersu wrote:
> Benim tavsiyem gorilla/mux gibi basit bir rooter ile ufak projeler
> geliştirmeniz, frameworkler dil üzerinde çok fazla soyutlamaya neden
> oluyor.

Kesinlikle haklısınız ve bu tür bakış açısına sahip kişilerin Go ile
ilgileniyor olmasına çok sevindim. Yeni başlayan birisi olarak dile daha
yakın kalmak çok daha iyi olurdu. Ancak bana özel bazı durumlardan
dolayı olabildiğince hızlı bir şekilde bilgilerimi toparlayıp elimdeki
bir projeyi Go diline aktarmalıyım.

Bu süreçte bana hız katacak araçlardan birisi frameworkler. Bu sürecin
çok sağlıklı olmadığını biliyorum ama bunu bir nevi teknik borç olarak
düşünüyorum. Elbet vakti geldiğinde geri ödeyeceğim :)

Framework olarak gin gonic ile devam etmeye karar verdim. Postgresql
için go-pg bana daha yakın duruyor. Özellikle ORM becerileri ile güzel
görünüyor. Ancak bu konuda tavsiyelere halen açığım. Öneriniz var mı?

Zafer.

A.kadir olmez

unread,
Sep 13, 2018, 2:26:21 AM9/13/18
to gola...@googlegroups.com
Ben gin gonic gorm viper birleşenlerini kullanıyorum kendim araya bir dto katmanı yazdım  log içini gin gonic sentry, auth için gene gin gonic jwt kütüphanesi var içerisinde değil swager için gene gin gonic eklentisi var genel olarak bunlar işini görür 

12 Eyl 2018 Çar, saat 18:16 tarihinde Zafer Çelenk <zafer...@gmail.com> şunu yazdı:
--
Bu e-postayı Google Grupları'ndaki "Golang Türkiye" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için golang-tr+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/d/optout adresiniz ziyaret edin.
--
A.Kadir ÖLMEZ

Halid

unread,
Sep 13, 2018, 2:27:59 AM9/13/18
to gola...@googlegroups.com
Buffalo +1
Ufak bir projede kullandık, dökümantasyonu güzel ve oldukça fonksiyonel.

11 Eylül 2018 16:14 tarihinde Fatih Arslan <ftha...@gmail.com> yazdı:
Son zamanlarda Buffalo hakkında güzel şeyler duydum: https://github.com/gobuffalo/buffalo
On Tue, Sep 11, 2018 at 4:05 PM Zafer Çelenk <zafer...@gmail.com> wrote:
Merhaba,

Go ile web tarafında ilerlemek isteyen birisi olarak bir çok seçenek
arasında biraz kafam karıştı. Hem dile yabancıyım, hem de framework
konusundaki seçeneklerin hiç biri hakkında bir seçim veya kıyas yapacak
bilgiye sahip degilim.

Şöyle "https://github.com/mingrammer/go-web-framework-stars" bir liste
buldum. Görünüşe göre "gin" ve "beego" ön sıradalar. Sizlerin kullandığı
veya tavsiye ettiği hatta daha iyisi tecrübe ettiği web framework var
mı? Bu konudaki görüşleriniz nedir?

Zafer.

--
Bu e-postayı Google Grupları'ndaki "Golang Türkiye" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için golang-tr+unsubscribe@googlegroups.com adresine e-posta gönderin.

Daha fazla seçenek için, https://groups.google.com/d/optout adresiniz ziyaret edin.


--
Fatih Arslan

--
Bu iletiyi Google Grupları'ndaki "Golang Türkiye" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için golang-tr+unsubscribe@googlegroups.com adresine e-posta gönderin.

Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.



--
Halid ALTUNER
Sr. Linux System Engineer & System Architect

osman...@ni.net.tr

unread,
Sep 13, 2018, 2:50:58 AM9/13/18
to Golang Türkiye
Yaklaşık 1 yıldır beego kullanıyoruz. Epey de memnunum. Beego ile yapılmış örnek projelerimizden www.ilkbyte.com 

11 Eylül 2018 Salı 16:05:55 UTC+3 tarihinde Zafer Çelenk yazdı:

Zafer Çelenk

unread,
Sep 13, 2018, 4:49:50 AM9/13/18
to gola...@googlegroups.com
On 9/13/18 9:50 AM, osman...@ni.net.tr wrote:
Yaklaşık 1 yıldır beego kullanıyoruz. Epey de memnunum. Beego ile yapılmış örnek projelerimizden www.ilkbyte.com

Beego aslıda ilk karşılaştığım framework ancak gin gonic hız ve bilinirlik  konusunda bir adım önde duruyor gibi. Tecrübenize istinaden bir kaç soru sormak isterim. Sorularım anlamsız veya pek alakalı gelmeyebilir. Kusur edersek şimdiden affola :)

  1. Böyle bir projeye Go ile başlamanızdaki motivasyon neydi?
  2. Eksikliğini hissetiğiniz durumlar oldu mu? Neler yaptınız? (Daha önce başka bir dil ile yazdığınızı varsayıyorum)
  3. Performas (kaynak tüketimi, hız, kararlılık) benim en çok ilgimi çeken konu, muhakkak sizde ölçümler yaptınız, nasıldı?
  4. Proje büyüdüğünde derleme süresinde belirgin bir fark oluyor mu?
  5. Go dilinin otomasyon araçları ile uyumu nasıl, projenize entegre etme konusunda bir sorun yaşadınız mı? (Travis, Jenkins vs.)
  6. Test sistemi sade ama güçlü görünüyor. Kullandınız mı? Görüşünüz nedir?

Ayrıca projeyi çok beğendim ve böyle bir servisin bizim geliştiriciler tarafından Go dili ile yazılmış olmasını ayrıca takdir ettim. Ben kişisel işlerim için Vultr üzerinde bir VPS kullanıyorum. Aylık ödemesi $2,5 ayrıca indirim kuponu ile daha ucuza geliyor. Sizin servisiniz gayet güzel görünüyor ama malesef fiyat farkı ortada, daha uygun paketlerinde olmasını çok isterdim.

Zafer.

osman...@ni.net.tr

unread,
Sep 13, 2018, 5:47:47 AM9/13/18
to Golang Türkiye
Selam tekrar,

Estağfurullah, aynı sıraya göre cevaplayacağım. 

1. Yaptığımız iş itibari ile rahat çalışabilmek için Pyhton veya Golang tercih etmemiz gerekiyordu. Golang benim kişisel olarak da 2013 den bugüne öğrenmek için çaba harcadığım bir dil. Ben bir veri merkezi işletiyorum ve asıl bilgi birikimimin olduğu taraf sistem ve network yönetimi, programlama dilleri konusunda da uzmanı olduğum Bash, Perl, AWK dışında dil yok diğer dillerin hep syntaxına ve mantığına hakimim. Bu yüzden en anlaşılır, basit ve geliştirilmeye açık bir dil olarak golang tercihim oldu.

2. Yukarıda dediğim gibi diğer diller konusunda uzman değilim ama tabiki yaptığım iller oldu MVC frameworklar arasında Rails ve Laravel, Senfony kullandım. Ucundan azcık da Codeigniter. Bir MVC framework a hakim olan kişi için kesinlikle beego öğrenmesi ve kodlaması daha basit bir MVC framework. Go ile bir web projesi yapıyorsanız eksik çok şey vardır :) Laravel yada Rails gibi herşeyi import edebileceğiniz bir yapı yok. Çoğu şeyi kendiniz oturup yazmanız gerekiyor. Örneğin breadcrumb, ratelimiting, custom csrf hashleri vs.

3. Diğer frameworkler ile hızı hemen hemen aynı, biz bu tür testlerde araç olarak https://locust.io/ kullanıyoruz. Pyhton ile bir bot yazıyorsun ve sitenin üzerine salıyorsun. :) Gerçek kullanıcı gibi web sitesinde dolaşan binlerce kullanıcıya karşın sunucu nasıl dönüşler yapıyor bunu izliyorsun.

4. Kesinlikle oluyor ama bu genellikle bizden kaynaklı. Olabilecek her basit şeyde bile hazıra kaçıp birşeyler import ettikçe proje büyüyor. Ancak deployment konusunda şanslıyız çünkü herşeyi Dokku ya push ediyoruz. Dokku deploy sırasında zero-downtime deployment yapıyor.  Hiç kesintisiz deploy yapabiliyoruz. Dokku da yatayda genişleme manual kas gücü ile yapıldığı için biraz sıkıntılı. Web loadbalancer içinde Caddy web server kullanıyoruz ve kesinlikle memnun değiliz Nginx e geri döneceğiz.

5. Yok, aslında hiç yaşamadık.. Error reporting konusunda sentry, e-posta konusunda basitce sendy, logları graylog, objectstorage olarak minio, standart eposta gönderimi konusunda da AWS Ses kullanıyoruz basitce hepsine entegrasyon yaptık. En fazla uğraştığımız birkaç saat.

6. Hayır, test sistemini biz kullanamadık. bizim işimize uygun çalışmadığından aslında bu.. Her modül için ayrı, ayrı test yazıyoruz ve init fonksiyonu ile çalıştırıyoruz. Biraz gıcık ve zahmetli bir iş bizim için :) 

Biz Vultr ve Digitalocean gibi servislerin bir clone versiyonunu yazdık aslında, burada herşey türk muhasebe sistemine göre çalışıyor ve taktir ederseniz tüm verileriniz Türkiye'de Netinternet veri merkezinde yani sunucular türkiye lokasyon. Bu nedenle bizim bu fiyatlara bile hizmet verebiliyor olmamız çok zor oldu. Projeye başlarken bir araya gelip biz nasıl 5 USD'ye sunucu satarız düşüncesi ile başlayıp, ismi bile sonradan bularak projeye devam ettik. 

Yerli olduğumuz için bizim yaptığımız bazı şeyleri diğer yurt dışındaki firmalar yapamıyor. Mesela Dolar kuru sabit olarak 3.99 TL  :)) 

Şimdi kurun 6.50 olduğunu düşünürsek 2.5 USD gelmesede yine 19.50 TL fiyatı ile vlur dan 3 lira 50 kuruş pahalı kalıyoruz :(

Ancak verdiğimiz sunucu da Türk Telekom MPLS ağına direkt bağlı Türkiye lokasyon bir sunucudur. 

Bir forumda üyelere aktif satın aldıkları sunucu için indirim kuponu dağıtıyorduk. Grub da isteyene paylaşabilirim aktif satın alınmış bir sunucu için 1000 saate eş değer süre uzatma kupon kodudur. 

Kolay gelsin.


13 Eylül 2018 Perşembe 11:49:50 UTC+3 tarihinde Zafer Çelenk yazdı:

Zafer Çelenk

unread,
Sep 13, 2018, 7:09:09 AM9/13/18
to gola...@googlegroups.com

Detaylı cevabınız için çok teşekkür ederim. Aklıma takılan bazı soruları cevaplarınızın altına ekliyorum.

On 9/13/18 12:47 PM, osman...@ni.net.tr wrote:
3. Diğer frameworkler ile hızı hemen hemen aynı, biz bu tür testlerde araç olarak https://locust.io/ kullanıyoruz. Pyhton ile bir bot yazıyorsun ve sitenin üzerine salıyorsun. :) Gerçek kullanıcı gibi web sitesinde dolaşan binlerce kullanıcıya karşın sunucu nasıl dönüşler yapıyor bunu izliyorsun.

Doğrusu bu konuda beklentim daha farklıydı. Afaki olmasa bile diğerlerine göre daha hızlı bir sonuc bekliyordum. Ancak sizin söylediğinize göre arada bariz bir fark yok. Peki bu durumun kullandığınız framework olan beego ile alakası olabilir mi? Nereye gitti yüksek performans?


Şimdi kurun 6.50 olduğunu düşünürsek 2.5 USD gelmesede yine 19.50 TL fiyatı ile vlur dan 3 lira 50 kuruş pahalı kalıyoruz :(

Ancak verdiğimiz sunucu da Türk Telekom MPLS ağına direkt bağlı Türkiye lokasyon bir sunucudur. 

Bir forumda üyelere aktif satın aldıkları sunucu için indirim kuponu dağıtıyorduk. Grub da isteyene paylaşabilirim aktif satın alınmış bir sunucu için 1000 saate eş değer süre uzatma kupon kodudur. 

Benim Vultr'de kullandığım paket 512MB Ram ve sadece ipv6 adresi veriyor. Bu şekilde fiyatları aşağı çekiyorlar ancak bu yapı benim işimi gördüğü için karşılıklı olarak kazan, kazan modeli ortaya çıkıyor.

Fiyatlar konusuna çok girmeyeceğim hassas bir konu ve mutlaka sizinde kendinize göre haklı sebepleriniz vardır. Söylemek istediğim içimizden çıkan bu tür girişimleri destekleyelim ve büyütelim ki, yarın bir gün bir Go seminerine onlarda sponsor olabilsin :)

Vultr'de bir miktar kredim var. Sonrasında mutlaka sizinle iletişime geçerim. Kolay gelsin.

Zafer.





13 Eylül 2018 Perşembe 11:49:50 UTC+3 tarihinde Zafer Çelenk yazdı:
On 9/13/18 9:50 AM, osman...@ni.net.tr wrote:
Yaklaşık 1 yıldır beego kullanıyoruz. Epey de memnunum. Beego ile yapılmış örnek projelerimizden www.ilkbyte.com

Beego aslıda ilk karşılaştığım framework ancak gin gonic hız ve bilinirlik  konusunda bir adım önde duruyor gibi. Tecrübenize istinaden bir kaç soru sormak isterim. Sorularım anlamsız veya pek alakalı gelmeyebilir. Kusur edersek şimdiden affola :)

  1. Böyle bir projeye Go ile başlamanızdaki motivasyon neydi?
  2. Eksikliğini hissetiğiniz durumlar oldu mu? Neler yaptınız? (Daha önce başka bir dil ile yazdığınızı varsayıyorum)
  3. Performas (kaynak tüketimi, hız, kararlılık) benim en çok ilgimi çeken konu, muhakkak sizde ölçümler yaptınız, nasıldı?
  4. Proje büyüdüğünde derleme süresinde belirgin bir fark oluyor mu?
  5. Go dilinin otomasyon araçları ile uyumu nasıl, projenize entegre etme konusunda bir sorun yaşadınız mı? (Travis, Jenkins vs.)
  6. Test sistemi sade ama güçlü görünüyor. Kullandınız mı? Görüşünüz nedir?

Ayrıca projeyi çok beğendim ve böyle bir servisin bizim geliştiriciler tarafından Go dili ile yazılmış olmasını ayrıca takdir ettim. Ben kişisel işlerim için Vultr üzerinde bir VPS kullanıyorum. Aylık ödemesi $2,5 ayrıca indirim kuponu ile daha ucuza geliyor. Sizin servisiniz gayet güzel görünüyor ama malesef fiyat farkı ortada, daha uygun paketlerinde olmasını çok isterdim.

Zafer.

--
Bu iletiyi Google Grupları'ndaki "Golang Türkiye" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için golang-tr+...@googlegroups.com adresine e-posta gönderin.

osman...@ni.net.tr

unread,
Sep 13, 2018, 7:13:39 AM9/13/18
to Golang Türkiye
Merhaba,

3. Madde de yanlış anlaşıldım sanırım, diğer golang frameworkler ile kıyasla demek istemiştim. Yoksa bariz ezici bir fark var :)) 

Rica ederim.

13 Eylül 2018 Perşembe 14:09:09 UTC+3 tarihinde Zafer Çelenk yazdı:

Zafer Çelenk

unread,
Sep 14, 2018, 4:12:47 AM9/14/18
to gola...@googlegroups.com
On 9/13/18 9:26 AM, A.kadir olmez wrote:
> Ben gin gonic gorm viper birleşenlerini kullanıyorum kendim araya bir
> dto katmanı yazdım  log içini gin gonic sentry, auth için gene gin
> gonic jwt kütüphanesi var içerisinde değil swager için gene gin gonic
> eklentisi var genel olarak bunlar işini görür

Kadir teşekkürler. Anladığım kadarıyla Gin daha çok farklı paketlerin
birleşiminden oluşuyor. Yani her şey içinde tek bir paket değil. Bunun
yerine farklı görevler için farklı paketleri bir araya getiriyor ve bir
çözüm sunuyor. Hatta anladığım kadarıyla aynı işi yapan birden çok paket
olabiliyor ve bunlar içinde seçim yapabiliyoruz. Bir hatam var mı?

Ayrıca Gin üzerinde oturumlar (sessions) ve yetkilendirme (auth) için
önerebileceğin paketler nelerdir?

Zafer.

A.kadir olmez

unread,
Sep 14, 2018, 4:31:55 AM9/14/18
to gola...@googlegroups.com
gin gonic bir web framework icersinde bundle bir orm yada session managment gibi kutuphaneler bulundurmuyor ama bir cok kisi veya gin gonic 'in kendi github hesabinda bunlarla ilgili pluginler var 

Ben auth icin bunlari kullaniyorum gin kendi open auth icin kutuphaneside var. ek olarak kendin bir yetkilendirme katmani yazicaksan custom handler yazabiliyorsun 
"github.com/RangelReale/osin"
"github.com/appleboy/gin-jwt"
Session icin alttaki kutuphaneyi kullanabilirisin  ben session tutmamaya calisiyorum eger bir sey cache gibi tutulacaksada redis uzerinde tutuyorum bana daha mantikli geliyor 
"github.com/gin-contrib/sessions"

https://github.com/gin-contrib bu adreste bir kac plugin var. 

Zafer Çelenk <zafer...@gmail.com>, 14 Eyl 2018 Cum, 11:12 tarihinde şunu yazdı:
--
Bu e-postayı Google Grupları'ndaki "Golang Türkiye" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için golang-tr+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/d/optout adresiniz ziyaret edin.


--
A.Kadir ÖLMEZ

İbrahim Çobani

unread,
Nov 9, 2018, 2:23:15 AM11/9/18
to Golang Türkiye
gin-gonic gayet güzel. orm için de gorm.

11 Eylül 2018 Salı 16:05:55 UTC+3 tarihinde Zafer Çelenk yazdı:

Zafer Çelenk

unread,
Nov 10, 2018, 2:24:50 PM11/10/18
to gola...@googlegroups.com
İbrahim teşekkürler. Beego ile devam ediyorum.
Reply all
Reply to author
Forward
0 new messages