Geçen yılın nisan ayına kadar WordPress üzerinden hizmet veren Webrazzi.com'u kendi içimizde geliştirdiğimiz altyapımıza geçirmiştik. Bu süreci aslında çok önceden başlatmak istesek de belirli alışkanlıklar yüzünden ancak geçen sene hayata geçirebildik. WordPress için yönetim destekli bir servis sağlayıcı ile çalışmayı denemiş olmamıza rağmen sık sık site hizmet veremez hale geliyordu.
Önce WordPress’i AWS üzerinde çalıştırarak ne kadar iyileştirme yapabileceğimizi görmek istedik. Fakat istenilen hızı yakalayamadığımız gibi maliyet olarak da iyi bir seçim olmamıştı. Bunun üzerine 2018 yılının sonlarına doğru Webrazzi’yi WordPress altyapısından çıkartacak ilk kodları yazdık. Yaklaşık 4 ay sonra da yeni sistemi canlıya alarak Wordpress ile bağımızı koparmış olduk.
Geçtiğimiz pazartesi ise altyapımızda gerçekleştirdiğimiz bazı düzenlemelerle birlikte yeni tasarımımızı yayına aldık. WordPress’ten kalan görünümü de geri bıraktığımız için yeni tasarımda istediğimiz esnekliklere kavuşmuş olduk.
WordPress’ten çıkış
Geçen yıl yapılan bu değişikliği anlatma fırsatımız olmamıştı. O yüzden kısaca bahsedelim. PHP konusunda daha yetkin olduğumuz için PHP üstünde geliştireceğimiz sistemin en önemli noktası bizim için hızdı. Daha önce Nativespot içinde kullandığımız Swoole’yi yeni sistem içinde de kullanmak önceliğimizdi.
Swoole, C ve C++ ile geliştirilmiş bir PHP eklentisidir. Swoole, olay tabanlı ve eşzamanlı bir yazılım iskeletidir. İçinde farklı işlemler için farklı bileşenleri vardır.
Laravel’in sürekli gelişen topluluğu ve yazılım geliştirmedeki kolaylıkları sebebiyle de uygulama iskeleti olarak Laravel’i tercih ettik. Bizim için yine daha çok hakim olduğumuz ve hızlıca kod yazabileceğimiz bir seçenekti. Akışımız şu şekilde olacaktı.
Nginx <-> Swoole <-> Laravel
Sanırım bu geçiş işleminin en zor kısmı veriler için yazılacak olan geçiş betikleriydi. Neredeyse 100’e yakın geçiş betiği hazırladık. WordPress’in veritabanından yeni yapının tablolarına aktarılacak binlerce, milyonlarca kayıt. Bunun yanında Türkçe, İngilizce verilerin ayrımı ve ilişkilendirilmesi de zorlu bir süreçti.
Yeni alt yapımızı belli yük testlerine soktuğumuzda WordPress kullanırken tıkandığımız noktalarda tıkanmadığımızı, yanıt sürelerinin azaldığını, anlık istek talebinin karşılanmasında neredeyse 10 kat daha iyi sonuçlar alabildiğimiz gördük. Üstelik sunucu maliyetlerimizde de ciddi düşüşler öngördük.
Bir geliştirme veya yeniden bir altyapı yazılıyorsa tüm bu girdi ve çıktıların iyice hesaplanması gerekiyor. Katlanılan zaman ve elde edilen tasarruf ve performansın tatmin edici olması gerekir.
Toparlayacak olursak alt yapımızda kullanılanlar ve arkasındaki sistemlerde şunlar: PHP, Swoole, Laravel, Redis, Memcache, MySQL (Aws RDS)
Görsellerimiz içinse S3 kullanmayı tercih ettik. S3 üzerinde medyalarımızı Aws Cloudfront üzerinden Cloudflare ile servis etmeyi tercih ettik. (Bunu maliyetleriniz için öneririm)
Ödeme sistemizi Payu’dan iyzico’ya geçirdik. Bilet satışlarımız, Webrazzi Insights ve Insights Rapor satışlarımızı tek bir noktada topladık. Canlıdaki hata durumlarını da Slack üzerindeki kanalımıza gönderiyoruz. Anlık olarak karşılaşılan nadir hatalar varsa onlara müdahale etmemizi hızlandırıyor. Redis’i session ve bazı uzun süreli önbellekte tutulması gereken veriler için kullanıyoruz. Memcache’yi sunucu içinde çalıştırıyoruz daha önemsiz ama performans için daha kısa süreli tutacağımız verileri saklıyoruz.
Yeni tasarımımız
Sherpa’nın tasarımları bize iletmesiyle 2019 Aralık ayında tasarımların ön yüze aktarılma işlemlerine başladık. Daha doğrusu bunun için iki iş yapmamak için direkt Laravel’in Blade tasarım motoruna uygun olarak kodlamaya başladık ki bu sayede hem hazır veri setlerinin nasıl görüleceğini canlı görebiliyorduk hem de bölüm bazlı kodlama yaparak aynı kodları farklı sayfalarda yeniden çağırabiliyorduk.
Tasarımın kodlanma sürecinde Zeplin’in hakkını teslim etmek gerekiyor. Tasarımcının çizdiği arayüzün stillerinin detaylarını görebilmek css’lerine ulaşabilmek büyük bir nimet.
Tasarım konusunda bir değişikliğe gitmek istiyorsanız tasarım ajansınız işe başlamadan hangi grid yapısını kullanacağınızı belirtmenizi öneriyorum ki biz öyle yapmıştık. 12 grid yapısıyla Bootstrap 4 kullandık arayüz iskeletinde. Reactjs veya Vuejs kullanmak istesek de açıkcası zaman açısından öyle bir şansımız olmadı. Bu yüzden site üzerindeki etkileşimler jQuery ile gerçekleşiyor. Bu konuda ilerleyen dönemlerde belki bir geliştirme yapabiliriz.
Yeni tasarımda etkileşimlerin büyük bir kısmı yazdığımız API servisi üzerinden geçiyor. Bunu yapmamızın sebebi ilerleyen dönemlerde API’ye ihtiyaç duyacak olmamız.
Daha fazlasını merak ediyorsanız
PHPStorm ve Sequel Pro en çok kullandığımız uygulamalar. Tasarım için Sketch ve Zeplin çok başarılı. İş yönetimi ve takibi için Trello’yu kullanıyoruz. Bulut sunucu olarak AWS kullanıyoruz. AWS içinde EC2, RDS, ElastiCache, S3, Cloudfront, Route53, SNS, VPC servislerini kullanıyoruz. Google tarafında Maps, Firebase ve TextToSpeech servislerini kullanıyoruz.
Umarım hangi teknolojileri kullandığımızı merak eden veya tavsiye isteyen kişiler için faydalı bir yazı olmuştur.