Blog

Mobil uygulama ile beraber web sitesi ve web uygulaması da gerekli mi?

Herkese merhaba,

Bu konu çok sorulduğu için değinmek istedim. Çünkü web uygulamasının artıları olduğu gibi eksileri de var aslında. Bunları bir uygulama yaparken düşünmek lazım.

Önce artılarından bahsedilim ya da neden web tarafına ihtiyacımız var. Yapacağınız uygulamaya göre tabi değişir ama uygulamanın bir tanıtım sayfası, hakkında, gizlilik ilkeleri ve kullanıcı sözleşmesi gibi sayfaların bulunduğu bir web sitesine ihtiyaç duyacağız zaman zaman. Sebebi de bu bilgilerin artık google ve apple tarafından isteniyor olması. Uygulamaların gizlilik ve sözleşme sayfaları yok ise olumlu karşılanmıyor ve mobil reklamlar kısıtlanabiliyor ya da kaldırılabiliyor uygulamanızdan. Apple ve Google bunları kullanıcılarını korumak ve app hakkında ne haklara sahip bilmek için istiyor.

Tanıtım sitesi yapmak dışında mobil uygulamanızın tüm özelliklerini içeren bir web uygulaması yapıp yapmama konusunda kararsız kalıyorsanız şunları düşünerek karar verebilirsiniz.

Mobil uygulamada reklamdan gelir elde etmek istiyorsanız web tarafının olması bu gelirinizi bir miktar düşürebilir. Web sitesine gelen kullanıcıları mobil uygulamayı indirmeye yöneltmek daha iyi bir çözüm olabilir. Ancak büyük çaplı ve ya global bir uygulama yapıyorsanız bu durumda her platformda hizmet sunmak için web uygulaması da düşünebilirsiniz. Çünkü burada amaç reklamdan daha çok kullanıcılara en iyi hizmeti her kanaldan vermek olacaktır.

Web sitesini yapmayı benim tavsiyem sona bırakın. Eğer yapacaksanız işleri fazlandırın. Backend oturduktan ve uygulamalarınız hayata geçtikten sonra da web sitesi yapıp yapmamaya her zaman karar verebilirsiniz.

Bazı durumlarda ise web den başlamak ve android/ios u sona bırakmak tercih sebebi olabiliyor. Bu genelde eldeki imkanlar ile de alakalı tabiki. Önce bir yapı otursun belli şeyleri tecrübe edelim, şu anda elimizde web yazılımcısı mevcut buradan başlayalım gibi konulardan dolayı web öne çıkarak mobil uygulamalar sona bırakılabiliyor.

Ben hangisi önce ya da hangisi sonra buna şu iyidir demek istemiyorum. Bu konuda kesin bir karar yok ancak mobil uygulamalardan başlamak da bazen daha maliyetli olabiliyor. En iyisi yapacağınız işin hedef kitlesine göre hareket etmek tabiki. Kullanıcılar en çok hangi kanaldan gelecek bunu düşünerek bir karar vermek en doğrusu.

Umuyorum bir miktar faydalı olmuştur yazdıklarım. Sorularınız var ise bu konu ile alakalı bu sayfanın altındaki yorum kısmına yazabilirsiniz. Her soruyu en kısa sürede cevaplamaya çalışıyorum.


Mobil uygulamada backend nasıl olmalı?

Herkese merhaba,

Bugün önemli bir konuya değineceğim. Mobil uygulamaların görünmeyen ama en önemli kısmı. Backend.

Backend ne demek ne işe yarar kısaca önce bundan bahsedelim. Daha önceki yazılarımda yönetilebilir mobil uygulamalar ve yönetim paneli nasıl olmalı onlardan bahsetmiştim. Bu yazıyı da okumanızda fayda var. Bkz:
https://ferhatbalaban.com/yonetilebilir-mobil-uygulamalar/

Backend, yönetim paneli ile karıştırılmamalı. Yönetilebilir uygulamaların mutlaka bir backend i vardır. Neden mi? Yönetilebilir olması demek aynı zamanda client app lerin yani ios ve android in ayarları çektiği işlemleri yaptığı bir backend api si vardır. Bu api genelde json formatında çıktılar verir client mobil uygulamalara.

Basit anlamda bir mobil uygulama backend şunlardan oluşur.

1 – Veritabanı

2 – Backend Api

Örneğin en basit anlamda backend api de bulunan bir settings servisi veritabanında bulunan settings tablosundan gerekli verileri çekerek json a dönüştürür ve clientlara iletir.

Örnek json çıktısı:

{
“success”: true,
“error_code”: 0,
“error_message”: “”,
“data”: [
{
“key”: “default_banner_mode”,
“value”: “2”
},
{
“key”: “admob_app_id_ios”,
“value”: “ca-app-pub-34534345345345~4361065035”
},
{
“key”: “admob_banner_id_ios”,
“value”: “ca-app-pub-43353453453/7181055093”
}
]
}

Bu çıktıda ios a gerekli bazı ayarlar gönderilmiştir. Backend istek yapan client a bakarak ve istek yapan user a göre gerekli dönüşleri yapabilir. İşte tüm bu kurgu yani nasıl çıktı vereceği veritabanındaki değerleri nasıl döneceği yada veritabanına nasıl insert/update/delete yapacağına backend api karar verir.

Peki bu backend api nasıl hazırlanıyor?

Öncelikle backend api yi oluşturacağınız yazılım dilini seçiyorsunuz. Bu dotnet, php olabilir. Hangi platformu seçerseniz onunda içinde kullanacağınız mvc framework lerden birini seçmeniz gerekiyor.

Dotnet için:
.net mvc framework
.net mvc core framework

Php için:
Laravel
Symphony
Codeignitor


Tüm bu seçimleri nasıl yapmalısınız ne seçmelisiniz buna bu yazıda girmeyeceğim ancak müşteriniz yada yazılımcılarınız hangi platformu tercih ediyorsa onu seçiyorsunuz genelde. Ancak seçim şansınız varsa ne seçmelisiniz? Buna başka bir yazıda değineceğim çünkü çok uzun olacak o yazıda. Sebebi de bu konu en çok tartışma konusu ve özellikle microsoft ile çalışanların .net kullananların php tercih etmemesi yada linux ile çalışanların .net e çok uzak olması sebebi ile 2 platform arasında şu daha iyidir gibi tartışmalar çok oluyor.

Bu güne kadar hem müşterilerin tercihi sebebi ile hem de bilgi edinmek amacı ile 2 tarafta da oldukça tecrübem oldu. Ağırlıklı olarak php-mysql tercih etsekte .net ve .net core kullandım ve karşılaştırma şansım oldu. Ancak son zamanlarda eğer tercih bize bırakılırsa Php-Laravel tercih ediyoruz. Bunu da başka bir yazıda anlatacağım.

Php kullananlar da genelde php ile tam uyumlu mysql veritabanını kullanmayı seçiyor. Laravel framework ile de backend api yi oluşturarak sağlam bir backend api yi kolayca yapabiliyorlar.

Birçok yerde Laravel nedir nasıl çalışır bilgi alabilirsiniz ancak ben gözlemlediğim en büyük faydaları yazacağım burada.

1 – Güvenlik: Php framework lerde birçok yapı hazır gelir. Bunlar içinde en önemliside bence kullanıcıların authentication yani yetkilendirme işlemleridir. Hangi kullanıcı ne yapabilecek hangi api functionlarını çağırabilecek gibi tüm bunları Laravel altyapısı ile sağlam şekilde kurgulamak çok kolay ve etkili sonuçlar verir.

2 – Migration: Veritabanınızı migration lar ile yönetmek oldukça pratiktir. Özellikle test ortamınız var diyelim burada bir tablo yada kolon oluşturdunuz aynısını prod a da yapmanız lazım hazır olduğunuzda. Ne yapmıştım diye hep test db sini incelemek zorunda kalırsınız. Migration lar ile tüm bunların kaydını tutabilir ve kolayca tek bir komutla bunu prod ortamına aktarabilirsiniz.

3 – MVC: Kullanılan her framework günümüzde bir mvc yapısından oluşur. Yani Model-View-Controller. Modeller veritabanındaki tabloları simgelerken, Controller arayüzünüzle veritabanı arasında tüm kurgularınızın yer aldığı işi yapan kısımdır. View ler ise arayüz yani ekranda görünen kısımdır. Laravel de buna ek olarak bu model, view ve controller ları komutlar ile kolay şekilde oluşturabilir ve hızlı şekilde kod geliştirebilirsiniz.

4 – Performans: Cache yapısı Laravel de iyi kurgulanmış ve kullanması çok kolay. Sürekli veri çekmeniz gerekmeyen tablolarınız illaki olacaktır. Bunları cache yani önbellek ile saatlik , günlük cache ler ile kullanabilir ve performansınızı kolay şekilde yönetebilirsiniz.

5 – Model – Tablo İlişkisi: Modellerimiz ile sql yazmadan php kodları ile select/insert/update/delete işlemlerini kolay şekilde yapabiliriz.

6 – Hazır kütüphaneler: Laravel birçok hazır kütüphane içeriyor ve bunları kolay şekilde projeye import edebiliyorsunuz.

Bunların dışında hiçbir framework siz iyi kurgulamazsanız backend api tam olarak iyi olmaz. Birazda bunlardan bahsedelim.

1 – Loglama: Her işlemi loglamanızda fayda vardır. Bunun için bir log request tablosu yaratabilir ve client ların yaptığı her request i ve dönüşlerinizi loglayabilirsiniz. Laravel burada yine imdadımıza yetişiyor. Middleware dediğimiz katmanda tek bir class ile bu işlemleri yapabiliyorsunuz. Hatta 500 hataları oluştuğunda yada client lara verdiğiniz response ların süreleri belli değerleri aştığında alert ler üretip ilgili kişilere mail ve sms atabilirsiniz burada. Bu sayede bir problem olduğunda anında haberiniz olur.

2 – Kritik kontroller: Backend i yazarken örneğin kritik işlemler var ise bunları çok iyi kontrol etmek ve açık kapılar bırakmamak gerekir. Örneğin bir satınalma işleminiz var ise Apple store yada Google play üzerinden bu satınalma genelde client dan yapılır ancak alınan receipt yani fatura çıktısı diyelim buna bu backend e iletilmeli ve backend tarafında yine google ve apple a sorgulama yapılarakçift kontrol yapılmalıdır. Çünkü backend api nizin yapısını çözen biri mutlaka satınalma yapmış gibi backend inize istek yapabilir. Bundan dolayı bu gibi yerlerde yani kritik yerlerde mutlaka çok fazla detaylı düşünmeli her aşamada kontroller koymalı ve bazende bir hacker gibi düşünmeniz gerekmektedir.

Daha anlatacak tabi çok şey var ama çok da uzun yazmak istemiyorum. Sadece genel bilgi vermek istedim. Başka yazılarda backend ile ilgili farklı detaylara girmeye devam edeceğim. Şimdilik hoşçakalın.