MottoJoy’un Başlangıç Hikayesi

Şans eseri sayılabilecek şekilde başlayan bir tanışmadan sonra belki de turizm sektörüne güzel bir katkı sağlayacak bir uygulamanın hikayesini yazmış olduk.

O zamanlar eski çalıştığım yerden henüz ayrılmamıştım. Akşamları bir iki saatimi ayırarak bir projeye destek olmak ve kendimi geliştirmek istiyordum. Bunun için Kolektifhouse’ın slack grubuna yazdım. Böylece Mottojoy’un kurucusu Ferdi benimle iletişime geçti ve tanışmış olduk.

Şubat 18'de başlayan çalışmalarımız benim de Mart 18'de işten ayrılmam ile birlikte hız kazandı ve bugün artık ürünümüz hazır şekilde piyasada.

Tabii unutmamak lazım ilk önce web sitesi olarak başlayan proje ufak bir karar değişikliği ile mobile döndü. Bu vesile ile aramıza Süha ve ekibi de katılmış oldu. Web sitesini de unutmuş değiliz ama şu an önceliğimiz mobilde.

Ben projede ne yaptım?

Projenin tüm teknik yönetimini yaptım ve backendini yazdım. Ferdi CTO dese bile bence çok iddialı ve herkesin kendine CTO dediği bir dönemde içi de boş bir kelime. MottoJoy’un Mühendisi desek daha iyi sanırım.

Nerede bu uygulamalar?

Projenin teknik detaylarından bahsetmeden önce uygulamaları incelemek isteyenleri şöyle alalım.

Image for post
Image for post
Image for post
Image for post

Backend geliştirmesi

Backendi .NET Core kullanarak geliştirdim. Notedu’da .NET MVC 5 kullanmıştım ama .NET Core’daki open source desteği ve özellikle performans artışlarından dolayı ufak bir değişiklik yapmaya karar verdim. Microsoft’un .NET Framework 4.7 ve .NET Core 2.0 arasıda yaptığı performans testleri ve sonuçlarına bu blog yazısından ulaşabilirsiniz.

Ayrıca daha önce Azure kullanmış olmam ve işe çıkışımızı inanılmaz hızlandıran özellikleride .NET kullanmama ayrı bir katkısı oldu. Kullandığım yapılar, araçlar ve özellikler bununla sınırlı değil. Hepsinden ufak ufak bahsedelim.

.NET Core ve VS

.NET Core için tekrar bir başlık açmaktan kendimi alamadım. .NET Core’un kodlarının GitHub üzerinde paylaşılması, katkı sağlayabilmek veya sadece kodlarını inceleyebilmek bile artı bir puan iken kod kalabalığının azaltılması, sağladığı hız ve tabii ki Visual Studio gibi bir IDE’ye sahip olması benim için vazgeçilmez kılabiliyor. Özellikle ADA ve Vi ile geçirdiğim 1 yıllık sürede bir IDE’nin faydalarını ve kodlama hızına artısını çok iyi anladım. Hatta IntelliSense bazen verdiği öneriler ile sana bir şey öğretedebiliyor. Tabii IntelliSense ile kod yazıp ‘.NETçiyim’ (sevmediğim bir kelime bişiciyim. Ben bişici değilim bilgisayar mühendisiyim. Göktürkçe programla dili olsa onuda öğrenir Orhun Anıtlarını dikerim.) diye dolaşanlar yüzünden çıkan kötü yazılımların biraz olumsuz bir tanıtıma neden olma durumuda var.

Azure

Açık söylemek gerekir Azure Notedu ile bizi BizSpark’a kabul ettiğinden beri her gün farklı bir özelliğini test ederek daha hızlı sistemler kurmaya çalışıyorum. Yakında IoT araçlarını ve altyapılarını kullanmaya ve test etmeyede başlayacağım. Onlarla ilgili bir şeyler yazacağım. MottoJoy’da da 6 farklı altyapısını bir arada kullanıyoruz. Bunlardan yine kısa kısa bahsedelim.

Web App

Azure Web App’ler neredeyse her türlü web sitenizi ve API’larınızı kurabildiğiniz bu PaaS’lar ileriki projelerinizde kesinlikle vazgeçilmez olacakır. Sonuçta her türlü güvenlik ve kurulum işlemi yapılmış tek tuşla deploy edebildiğiniz serverlar. Ayrıca auto-scaling, kolay upgrade/downgrade, kullandığın kadar öde de bir kaç diğer artısı. Bizim en çok bir sistem adminine veya o alanda harcayacağımız zamana ihtiyaç duymadan hızlı kurulumu işimize yaradı.

Application Insights

Bir .NET uygulaması için herşeyi hazır analiz ve performans yönetimi aracı. Ayrıca VS ile entegre olduğu içinde canlıda olan hata ve olayları VS içinde ilgili fonksiyon üzerinde görüp detaylarına ulaşabiliyoruz. Bu aracın faydalarını anında gördük. Test yayınımız sırasında kullandığımız ödeme sistemi bir anlaşmazlık nedeniyle işlem başına saniyede 15 defa sistemimize istek yolladığı ve hata aldığını tespit ettik. Biraz daha artsa DoS atağı bile sayılabilecek :) bir sıkıntıya hemfn çözüm bulmuş olduk.

Azure Search

İşte uygulamalarınızda çok ucuza fark yaratabileceğiniz bir araç. Respose time 50 milisaniyelere kadar inen bu araç ile arama işleriniz inanılmaz hızlı ve kolay olacaktır. Tüm arama fonksiyonlarımızı burada tutarak hem sunucu yükümüzü oldukça hafiflettik hem de hız kazandık.

SQL, Storage ve CDN

Bunların kullanımında bahsetmeye çok da gerek yok sanırım ama kuruduğunuz sistemi hızlandıracak bir çok dikkat edilmesi gereken nokta bu altyapılarda.

Cloudinary

Cloudinary resimlerin CDN ve cihazlar arası uyumluluk çözümü için bize çok kolaylık sağladı. Başta Azure CDN’lerini kullanmayı düşündük ama onlarda query üzerinden resim düzenleme ve yeniden boyutlandırma olmadığı için karar değiştirmek zorunda kaldık. Azure Functions üzerinde istediğiniz fonksiyonları tanımladıktan sonra CDN ile depolama arasında bu fonksiyonlardan yararlanarak gerekli işlemleri yapmak mümkün ama dünyayı yeniden keşfetmeye ne gerek var?

Postman

Postman API testleri ve iOS & Android geliştiricilere dokümantasyon aktarmak için çok başarılı bir araç. Ücretsiz versiyonu bile oldukça iş görüyor.

Mailgun

Mailgun eposta servisi olarak kullandığımız başarılı bir araç. .NET kütüphaneleride mevcut. Her ay 10K gönderimin ücretsiz olmasıda yeni başlayan projeler için ayrı artı.

Sonuç çok basit uygulamalarımız yayında. API’ya gelen isteklerin %80 250ms’in altında cevaplanıyor. Hatta bu %80'nin %90'ı 100ms’in altında.

Yaptığımız testlerde S1 sunucusu ile 10K/dakika isteği hiç sıkıntı olmadan cevaplayabiliyor.

Umarım MottoJoy çok güzel yerlerde göreceğiz.

Sevgilerimle :)

Originally published at irensaltali.com on June 2, 2018.

Written by

MSc. Computer Engineer. Founder of @noteducom and @image4io, co-organizer in @serverlesstr, Community Builder of @awscloud

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store