54 puan yazan xguru 2022-09-26 | 8 yorum | WhatsApp'ta paylaş
  • OVH Cloud’daki büyük bir sunucu üzerinde birden fazla SaaS uygulaması çalıştırıyorum
    • Günde yaklaşık 6 milyon önbelleğe alınmamış isteği işliyor
    • Backend: Django/Python + MySQL + Redis + WebSocket(Pub/sub)
    • Gizli silahım OpenResty (NGINX ve LuaJIT tabanlı dinamik web platformu)
      • Lua script’leriyle karmaşık sayfa önbelleklemesini yönetiyor, DDoS’u engelliyor, WebSocket’i işliyor ve uzun süren istekleri başka yere aktarıyorum
      • 1500 satırlık Lua kodundan oluşan “yoksulun Cloudflare’ı”
    • Bu uygulamalar Docker’dan önce yapıldığı için doğrudan process olarak çalışıyor(systemd)
    • Başta uwsgi kullanıyordum ama gunicorn çok daha verimli olduğu için artık tamamen ona geçtim
    • Benim SPOF noktam DNS. DNSMadeEasy ile aram iyiydi, bu yüzden otomatik ban konusunda endişem yoktu ama şimdi DigiCert onları satın aldığı için sorun çıktı
    • Ödemeleri Stripe ve Paypal ile alıyorum. Paypal’dan hoşlanmama rağmen eklememin sebebi, Stripe’ın ne zaman uyarı vermeden engelleyeceğini bilememem
    • Kullanıcı yüklemeleri aiohttp Python sunucusuyla dosyaları Wasabi ve Backblaze’e gönderiyor, nginx de önbellekliyor. Bu yüzden bulut transfer ücretim 0
    • WebSocket katmanı biraz kararsız. Başta her şeyi Python WebSocket asyncio kütüphanesiyle yapıyordum; bir yere kadar çalıştı ama sonra çoklu process’e geçmeye çalışınca aşırı kaynak tüketmeye başladı
    • Bu yüzden OpenResty’nin WebSocket özelliğini kullanmaya karar verdim ama karmaşık mantığı Lua ile yazmak istemedim
      • Mesajları Python process’lerine iletmek için Redis Pub/Sub kullanacak şekilde değiştirdim
    • Ama servisimin adını söylemeyeceğim (daha fazla rakip istemiyorum!)
  • Pek bilinmeyen seçenekleri tercih etme eğilimindeyim; bunun tek başına çalışan geliştiriciler için daha üretken olduğunu düşünüyorum
    • PostgreSQL + SQLite
    • Ana dil Rust
    • Frontend htmx + tailwindcss
    • CloudFlare + Vultr hosting
    • nginx + nixos + circle ci
  • Bazıları nefret edecek ama benim için en iyi seçim Wordpress oldu
    • Forum için bbPress
    • Üyelerin içerik paylaştığı topluluk için buddyPress
    • Bülten için çok pahalı bir SaaS yerine uygun fiyatlı mailster.co eklentisi(Critsend.com kullanıyor)
    • İstediğim özelliklerin çoğu eklenti olarak bulunabiliyor: aranabilir FAQ, Captcha, reklamlar, Discord’a gönderi paylaşma, kullanıcı raporlama sistemi vb.
    • https://rpgplayground.com/ işletiyorum
  • OpenAI ile rekabet eden bir servis olan https://text-generator.io ’yu işletiyorum
    • Eskiden GCP üzerinde Kubernetes kullanıyordum, şimdi ise Cloudflare tüneli üzerinden evdeki GPU’larımla çalıştırıyorum. Böylece GPU maliyeti 10 kat daha ucuz
    • Girilen bağlantı ya da görselleri Tesseract / Unified IO / OFA / Beautiful Soup vb. ile analiz edip görsel/makbuzlarla ilgili cevaplar veriyor
    • Sitenin kendisi AppEngine üzerinde Python + Stripe + Firebase UI ile çalışıyor, bu yüzden haftalık düşük bir maliyetle işletiyorum
  • Render üzerinde host ediyorum
  • https://allaboutberlin.com işletiyorum
    • DigitalOcean’daki Docker üzerinde Craft CMS ile çalışıyor
    • Craft, WordPress’te oluşturması zor olan, özel alanlara sahip özel içerik türlerini kolayca oluşturabiliyor
    • Ama WordPress olmadığı için ihtiyaç duyduğum çok fazla eklenti yok
    • Önbellekleme ve daha birçok iş için nginx kullanıyorum
  • Daha üretken olmak istiyorsan PETAL’ı dene
    • Phoenix + Elixir + Tailwind + Alpine.js + LiveView
  • Rails + Postgres + Redis + SideKiq
    • Herokus’ta host ediliyor, hata takibi için Sentry, performans izleme için New Relic, e-posta için Send Grid
    • Yakın zamanda Google Analytics’i Plausible ile değiştirdim ve içeride daha derin analiz için Ahoy(Rails Middleware) kullanıyorum
    • Müşteri desteği/sohbet için Intercom kullanıyorum ama Chatwoot ile değiştirmeyi planlıyorum
    • Heroku’dan çıkmayı planlıyorum ama en öne çıkan alternatif olan Render’da hâlâ otomatik failover’lu HA Postgres seçeneği yok
    • GitHub master branch’ine push yapılınca production’a otomatik deploy oluyor
      • master branch’e merge sadece PR ile mümkün ve yalnızca Linter(Rubocop) + Tests(Rspec on CircleCI) + %100 coverage(codecov.io) yeşilse yapılabiliyor
    • UI Bootstrap, JavaScript ile server-side rendering yapıyorum
      • Daha fazla etkileşim gereken UI’lar için Hotwire/Turbo vs. Alpine vs. Stimulus vs. React arasında düşünüyorum
  • Bir Agtech platformu geliştiriyorum
    • Backend: Rust, Rocket, sqlx, Postgres, biraz Ansible
    • Frontend: Rescript + React. Oldukça fazla Rust/WASM kullanıyorum ama bu bir hataymış. Geri almaya çalışıyorum

8 yorum

 
qkreoaksn 2022-09-29

Vay be, bütün bunları tek başınıza nasıl yönetiyorsunuz? vay canına

 
galadbran 2022-09-27

Uzun süren web isteklerini offload etmekten tam olarak ne kastedildiğini gerçekten merak ediyorum; bu konuda pek bir açıklama yok ^^;

 
bohblue23 2022-09-26

Vay be

 
yshrust 2022-09-26

Vay be, gerçekten çok çeşitli kullanıyorsunuz,, PETAL gibi bir kombinasyonu ilk kez görüyorum, güzel

 
kandk 2022-09-26

👍

 
jujumilk3 2022-09-26

Gerçekten çok faydalı bir makale, teşekkürler teşekkürler!