Hibrit (Karma) vs. Native (Yerli) Mobil Uygulama Geliştirme



Hibrit (Karma) vs. Native (Yerli) Mobil Uygulama Geliştirme: Metodolojiler, Riskler ve Araçlar

 

Odak noktamız web’deki içeriklerden mobildeki içeriklere doğru değişirken, mobil cihazlarımız iletişim kurma, içerik tüketme, iş yapma şeklimizde ve çok daha fazlasında git gide daha hayati bir rol oynuyor. Her vertikal’deki kuruluş ve işletmeler için, mobil uygulamalar, yarışta ortalamanın ilerisinde olma ve müşterilerle ilişkili kalabilme açısından artık bir seçenek değil, bir zorunluluktur. Hibrit mobil geliştirmeye karşı native mobil geliştirme hakkında metodolojiler, riskler ve araçlar konusunda daha fazlasını öğrenmek için yazımızı okuyun.

 

Mobil bir uygulama geliştirirken göz önünde bulundurulacak ilk şey, hedef kitlenizin alışkanlıkları ve davranışlarıdır. Bu kişilerim işletmenizle ve uygulamanızda sunulan ürünler veya hizmetlerle nasıl etkileşim kuracaklarını anladığınız zaman, mobil aygıtlar aracılığıyla işletmenizi etkili bir şekilde yönetmenize olanak sağlayan bir uygulama yaratabileceksiniz.

İşletmem Mobil Bir Uygulamaya İhtiyaç Duyuyor – Nereden Başlamalıyım?

Şimdi bir mobil uygulama yaratmaya ihtiyaç duyduğunuzu belirlediğinize göre, nereden başlamalısınız? Ürün, hizmet ve müşterilerinizin iş gereksinimlerine cevap verecek bir mobil uygulama yaratmak, başlatmak ve sürdürmek için, mobil stratejinize el atmadan önce göz önünde bulundurmanız gereken birkaç önemli faktör vardır. Bunlar arasında, ekibiniz (eğer varsa) tarafından sahip olunan geliştirme becerilerinin seviyesini belirleme, hangi tiplerde aygıt fonksiyonelliği gerektiğini ve güvenliğin, çevrimdışı yeteneklerin ve birlikte işlerliğin önemini anlama vardır.

 

Muhtemel Geliştirme Yolları: Hibrit vs. Native Mobil Geliştirme

 

Çoğu durumda, geliştirme stratejisi bakımından “mükemmel” tercih yoktur, fakat konu geliştirme rotanız olduğunda ilerisiyle ilgili planlama yapmak, uygulamanızı geliştirme konusunda doğru yolu belirlemenizde size yardımcı olacaktır.

 

Native uygulamalar; iOS, Android ve daha az boyutlarda Windows Mobile gibi mobil işletim sistemlerine özgü geliştirme araçları ve dilleri kullanarak geliştirilir.

 

Hibrit uygulamalar, bir native kapsayıcısı içine gömülü HTML5’ten inşa edilir ve hibrit ve native tasarım öğeleri uygulamayı oluşturmak için bir araya gelir.

Hibrit mobil geliştirme ayrı yaklaşımlara bölünebilir:

  • Web Hibrit Uygulamalar: Bir web sitesinin etrafında olan ve altta yatan platformun bazı özelliklerini sergileyen shell’ler veya wrappers …
  • Saf Hibrit Uygulamalar: Altta yatan platform API’sının hedef dile maruz bırakıldığı

 

Bu iki metodoloji arasındaki tercih son yıllarda geliştiriciler ve işletmeler arasında tartışmalara yol açmıştır çünkü her ikisi de hem avantajlar hem de dezavantajlar sunar.

 

Native Mobil Geliştirme (Android/iOS)

Native uygulamalar genellikle, belirli bir mobil işletim sistemi için geliştirilmiş tablet ve akıllı telefon uygulamalarıdır. iPhone için uygulamalar geliştirenler Objective C veya Swift ile X-code kullanarak kod yazarlar. Android geliştiricileriyse Android stüdyo ve Java kodu kullanırlar; gerçi Kotlin de oldukça popüler hale geldi.

 

Native Geliştirmenin Avantajları

Native bir metodoloji kullanarak geliştirilmiş uygulamalar daha iyi bir kullanıcı deneyimine (UX) sahiptir çünkü daha hızlı çalışır ve veri ve grafikleri yüksek hızlarda işlerler; bu, karmaşık algoritmalara dayanan oyunlar veya foto düzenleme uygulamaları yaratan geliştiriciler için oldukça önemlidir. Kullanıcı deneyimi kalitesini artırarak, özel olarak Android, veya iOS için geliştirilmiş uygulamalar, kullanıcılarının alışık oldukları platforma özgü kullanıcı arabirimi (UI) standartlarını kusursuz şekilde karşılar. Bu, Android’de materyal dizaynının kullanımını, fiziksel ya da her yerde olan “geri tuşu”nu  veya  kullanıcıların bileceği “swipe-heavy” iOS gezintisini içerebilmektedir. Bunlar ufak noktalar gibi gözükebilse de, mobil cihazlarımızda gezme şeklimiz, her gün saatlerce yaptığımız, çoğumuza kolay gelen bir şeydir ve alıştığımız gibi akıcı olmayan bir gezinti sinir bozucu olabilmektedir. İşlevsellik de native mobil geliştirme için büyük bir avantajdır çünkü hem Apple hem Android işletim sistemleri dahilinde kamera, kişiler, mikrofon, takvim gibi native geliştirme aracılığı ile kolayca erişilebilen çekirdek özelliklere sahiptir; hibrit uygulamalara ise sınırlı erişim verilir.

 

Son olarak, bir uygulamanın başarılı olabilmesi için hem Google Play hem de App Store’da sergilenmesi gerekir. Keşfedilmenin en iyi yolu “Editör’ün Seçimi” olarak öne veyahut vitrine çıkarılmaktadır. Öne çıkmak günlük 1000’lerce indirilmeye yol açabilmektedir fakat bu genellikle her bir platform tarafından yayınlanan en son OS özelliklerinden faydalanmanıza bağlıdır, bu da native geliştirmeye bağlıdır.

 

Native Geliştirmenin Dezavantajları

İlk olarak, native uygulamaların geliştirilmesi daha zordur çünkü geliştiricilerin Objective-C, Swift, Kotlin ve diğer yüksek odaklı dillerde akıcı olmaları gerekir. Mobil dillerde branşlaşmak isteyen geliştiricilerin karşılaştığı bir başka engel şudur: bu belirli dilleri öğrenmek için mevcut olan kaynaklar genellikle ya çok teorik ya da çok pratiktir. İyi dengeli kaynaklar bulmak zor olabilmektedir.

 

Ek olarak, her bir işletim sistemi için yazılmış platforma özgü kodun ayrı diller ve API süreçlerinden dolayı iOS’ten Android’e ve tersi yönde tekrar yazılması gerekir.

Son olarak, iki ayrı geliştirme ekibini idame ettirmenin maliyeti mobil bir uygulama ihtiyacında olan pek çok kuruluş için fazla maliyetli olabilmektedir.

 

Hibrid bir Uygulama Nedir? 

Hibrit uygulamalar esasen native bir shell arkasındaki web uygulamalarıdır ve bu sebeple sadece bir uygulamanın geliştirilmesi gerekir çünkü bu, hem Android hem iOS cihazlara adapte olabilmekte ve benimseyebilmektedir. Çoğu hibrit uygulama HTML5, CSS ve Javascript çapraz-uyumlu web teknolojileri kullanılarak yaratılır. Hibrit geliştirme, Cordova ( ve PhoneGap gibi Cordova-tabanlı araçlar), Appcelerator Titanium ve Xamarin gibi platformlar tarafından olanaklı kılınır.

 

Hybrid Geliştirme Platformları

 

Cordova

Cordova’da geliştirme, bir web sayfası oluşturmak için ihtiyaç duyulan geliştirmeye benzerdir; html, CSS ve JS, hepsi Cordova’da paketlenmiş bir web görünümü yaratmak için bir araya gelir.

 

Titanium

Titanium’u Cordova’dan ve PhoneGap gibi Cordova-tabanlı araçlardan ayıran, eğer hem native hem HTML-tabanlı kullanıcı arayüzü kullanan bir uygulama yaratmak istemiyorsanız, HTML ve CSS dosyalarına ihtiyaç olmamasıdır. Titanium, uygulamanızı bir tarayıcı yerine gerçek platformda emüle (ya da simüle) etmenize yardımcı olan oldukça faydalı bir mobil araç kitiyle gelir. Uygulamanız cihazda çalıştırıldığında, bir web görünümüne paketlenmez bunun yerine bir Javascript motoru tarafından yorumlanır. (iOS’ta JavaScriptCore veya Android’de Rhino)

 

Xamarin

Xamarin’in, geliştiricilerin native kullanıcı arayüzleri olan ve C#’ye odaklanan birden çok platformda kod paylaşan, native Android, iOS ve Windows uygulamaları yazmak için kullanabilecekleri C#-shared bir kod tabanı vardır. Xamarin, Cordova’ya benzer şekilde çalışır.

 

Hybrid Geliştirmenin Avantajları

Hibrit uygulamalar daha hızlıdır ve geliştirilmeleri daha basittir. Bunun yanında sürdürülmesi de daha kolaydır çünkü çoklu platforma özgü olanların aksine sadece bir kod tabanı ile ilgilenirsiniz. Hibrit uygulamanızı geliştirmeyi bitirdiğinizde, bir kod satırı ile ek platformlar ilave edebilirsiniz. Hibrit uygulamalar geliştirmedeki basitlik, geliştiricilerin aynı uygulamanın platforma özgü versiyonlarını geliştirebilmek için ek diller öğrenmelerini gerektirmemesinden gelir. Ek olarak, hibrit uygulamalar tüm platformlar için bir dile dayandığından, geliştirme bittiği zaman, hibrit uygulamalar her iki platform için de kullanıma hazırdır.

 

Hibrit Geliştirmenin Dezavantajları

Daha hızlı ve geliştirmesi native uygulamalara göre daha basit olmakla birlikte, hibrit uygulamalar, native uygulamaların sunduğu “gerçek” platforma özgü kullanıcı deneyimine sahip değildir. Ayrıca hibrit metodolojisini kullanan geliştiriciler, bazı ilave eklentiler olmasına rağmen  kamera, GPS, takvim gibi çekirdek cihaz özelliklerine erişimi kaybetme durumuyla karşılaşırlar. Son olarak hibrit uygulamalar, konu performans ve özellikle oyunlardaki gibi grafikler olduğunda, native uygulamaların gerisinde kalır. Ayrıca bir uygulamanın iki işletim sistemine adapte ediliyor olmasından dolayı, kullanıcılar, native uygulamalarla karşılaştırıldığında uygulamalarındaki etkileşimde bir farklılık olduğunu hissedeceklerdir.

 

 

Hangi metodolojiyi kullanacağınıza karar vermeden önce sorulması gereken Beş Ana Soru

Her bir metodolojinin avantaj ve handikaplarını belirlediğimize göre, uygulamanız için hangi metodolojinin doğru olduğunu anlama yolunda hangi sorular sorulmalı?

 

  1. Mobil Uygulamada native özellikleri kullanmak istiyor musunuz?

Çekirdek cihaza, platforma ve özelliklere erişmeye ihtiyaç duyacaksınız, aradığınız yanıt native’dir. Hibrit geliştiriciler için, kullanılan framerwork’e bağlı olarak, native özelliklere erişim sınırlı olabilmekte hatta olmayabilmektedir.

 

  1. Uygulamanızı market’e ne kadar hızlı koymak istiyorsunuz?

Pazarlama zamanı, nihai olarak kuruluşunuzun kaynaklarına ve uygulamalarına bağlıdır fakat eğer zaman bir etmense, hibrit geliştirme aynı zamanda, daha kısa bir zaman diliminde daha fazla platformda lansman yapmanıza olanak sağlayacaktır.

 

  1. iOS ve Android’deki geliştiriciler iyin ayrı bir bütçeniz var mı?

Native geliştirme, muhtemelen bildiğiniz üzere, bütçeye oldukça bağlıdır. Asgari düzeyde bile, mevcut geliştiricilerinizin etkili bir şekilde iki platform için iki versiyon geliştirme yolunda kendilerini eğitmeleri ve yeni diller öğrenmeleri gerekir. Çoğu durumda, iki ayrı geliştirme ekibi tutmak için bir bütçe ayırmanız gerekebilmektedir. Eğer iOS ve Android için özel olarak kod yazacak geliştiriciler tutma ve eğitme için bütçeniz ve vaktiniz yoksa uygulamanızı hibrit metodolojisi kullanarak geliştirmeniz daha iyi olabilir.

 

  1. Mobil uygulamanızı ne sıklıkla güncellemeniz gerekiyor?

Uygulamanızı sık sık güncellemeyi planlıyorsanız, tercih edilen metodoloji olarak hibriti seçmek isteyebilirsiniz. Uygulamanıza veya işlevselliğine integral bir değişiklik yapmıyorsanız, bir satır kod, her bir platform üzerinde o güncellemeyi uygulamanıza vermenize yetecektir. Sık güncellemeler pek çok bankacılık uygulaması ve başlıca yeni uygulamanın hibriti seçmesinin nedenlerinden biridir.

 

  1. En iyi kullanıcı deneyimine sahip olmak istiyor musunuz?

Önemli bir soru. Native uygulamalar, konu son kullanıcıya daha yüksek kaliteli, hızlı ve alıştıkları gibi bir kullanıcı deneyimi sunma olduğunda hibritlerin önündedir.  Kullanıcılarınıza mümkün olan en iyi kullanıcı deneyimini sunmak önemliyse, seçiminiz kesinlikle native geliştirme olmalıdır.  Deneyimli front end geliştiriciler, hibrit kullanıcı deneyimini bir native deneyime yakın hale getirebilseler de, tamamen native bir deneyimin yerini asla tutamaz.

 

Mobil Güvenlik Riskleri

Çoğu modern web uygulaması gibi mobil uygulamalar, hayatlarımıza değer katmakta ama önemli riskleri de beraberlerinde getirmektedir. Hangi geliştirme metodolojisinin ihtiyaçlarınıza en iyi uyduğunu göz önünde bulundururken, güvenlik de karar verme sürecinizde önemli bir rol oynamalıdır.

 

Native uygulamaların çeşitli sebeplerden dolayı hibrit uygulamalardan daha güvenli olduğu düşünülür. Platforma özgü dahili güvenlik özelliklerini sonuna kadar kullanabilmeleri bu sebepler arasındadır. Hibrit uygulamaların web görünümlerine bağımlı oldukları gerçeği, belli API’leri kullandıkları zaman injection ataklarına yatkın olmaları anlamına gelir. Saldırı yüzeyini asgariye indirmek için her bir platforma özgü çeşitli teknikler, araçlar ve üçüncü parti kütüphaneler sağlanmaktadır.

 

Saldırganlar mobil cihazlara nasıl yetkisiz erişim sağlayabiliyor?

  • Saldırganlar çalıntı veya kayıp bir cihaza erişirler
  • Zararlı uygulamalar (telefonunuzdan ve diğer uygulamalardan veriler alır)
  • Saldırganlar bir uygulamanın kaynaklarına erişmek için ters mühendislik yaparlar (mobil uygulamanız tarafından kullanılan kaynak koda/kaynaklara tam erişim)

 

Native Uygulamalar için Güvenlik Kaygıları

Native uygulamaların güvenliğine gelince, suistimal teknikleri ve araçları farklı olmasına rağmen zaafiyetler tüm platformlar için neredeyse aynıdır. Android’de native uygulamalar, saldırganların potansiyel olarak cihaz üzerine bir shell koyarak veya sadece uygulamanın yedeğini alarak suistimal edebilecekleri telefonun yerel veri deposunda hassas veriler depoluyor olabilir.

 

iOS üzerinde, bilgisayar korsanları benzer bir vektör aracılığıyla çalışabilirler.

 

Native Uygulamaları Tehdit Eden Sık Görülen Saldırılar

  • Güvensiz yerel veri depolaması
  • Zayıf SSL uygulaması
  • Kasıtsız veri açıkları
  • Kod İnjeksiyonu

Hibrit Uygulamalar için Güvenlik Kaygıları

Hibrit uygulamalar da hassasiyetlerden muaf değildir; özellikle de iyi yazılmamış kodları varsa…

Hibrit uygulamalar web görünümlerini yaygın şekilde kullanırlar. Bu, eğer kod doğru şekilde güvenlik altına alınmadıysa uygulamayı potansiyel suiistimallere karşı açık bırakır. JavaScript veya HTML’ye özgü herhangi bir saldırı ayrıca hibrit uygulamalar için de bir tehdittir ve backend API’yle alakalı hassas noktalar da yaygındır. Uygulamanıza karşı saldırılara tam bir koruyucu çözüm olmasa da, tehditleri asgariye indirmenin yollarından biri sadece dahili güvenlik kontrolleri olan güvenli frameworkler’le çalışmaktır. İlave olarak, ters mühendislik man-in- the-middle (iki bağlantı noktası arasındaki bağlantıyı izinsiz izleme) saldırılar da hibrit uygulamaları tehdit etmektedir.

 

Hibrit Uygulamaları Tehdit Eden Yaygın Saldırılar

  • JavaScript Injeksiyonu (JS ve HTML kullanımından dolayı)
  • Zayıf SSL uygulaması (native ile aynı)
  • Önbelleğe alma sorunları

 

Hibrit vs. Native Mobil Geliştirme Hakkında Kitle Soruları:

 

Hibrit bir yaklaşım, uygulamanın resmi uygulama mağazalarında yayınlanmasını etkiler mi?

Evet, hem Apple hem Google’ın uygulamanızın yayınlanması için uyması gereken bir gereklilikler listesi yayınlamasına rağmen, hibrit uygulamalar geliştiren geliştiricilerin çoğu, düzeltilmesi ve yeniden teslim edilmesi gereken retlerle karşılaştıklarından kendilerini onaylanma kısmında takılmış olarak bulabilmekteler.

 

Android’de, hibrit uygulamaların onaylanması yaklaşık 3 gün hatta bir haftaya kadar zaman alırken,  native uygulamaların onaylanması yaklaşık 24 saat alır.

 

iOS 8’den itibaren WebGL’nin dahil edilmesiyle, WebGL kullanmayı düşünen hem mobil websiteleri hem hibrit uygulamalar için potansiyel performans ve güvenlik sorunları nelerdir?

Kaygılar diğer özelliklerin kullanıldığı zamanlardakilerle aynı; eğer webGL kullanıyorsanız, uygulamanızın karşılaşabileceği web saldırılarından haberdar olmalısınız. Fakat bunlar henüz yeterince kategorize edilmemiştir

 

Hibrit app platformlarından hangisi ters mühendislik ve uygulama modifikasyonuna karşı en çok veya en az güvenlidir?

Web-tabanlı hibrit uygulamalar en az güvenli olanıdır ve kod yazarken özellikle de uygulama dahilinde bilgilerin nerede depolanacağıyla ilgili dikkatli olmadıysanız web siteleri kadar korunmasız olabilmektedir. Eğer geliştirme için Cordova kullanıyorsanız, uygulamanız için koruma sağlamaya yardımcı olabilecek eklentiler olsa da uygulamanızın güvensiz olduğunu göz önünde bulundurmalısınız.

 

Checkmarx kullanarak Cordova ile geliştirilmiş uygulamaları taramak mümkün mü?

Evet. Checkmarx OWASP top 10 mobil tehditleri için özel olarak tarama yapar, bu da kodunuzdaki hangi kategorilerin en büyük zafiyetlere sahip olduğunu anlamanıza yardımcı olur. Checkmarx taramaları ayrıca mobil uygulamalar için özel raporlar sağlar.

 

Size göre, Ionic gibi, native bir uygulamanın görünüm ve davranışına çok yakın bir eş sunan frameworkler, görünüm ve hissiyat açısından native ile karşılaştırıldığında nasıl performans veriyor?

Ionic, gerçek bir native görünüm ve hisse en yakını sunan Titanium’a yaklaşıyor. Aslında o kadar yakın ki bazı kullanıcılar hibrit bir uygulamada olduklarını fark etmeyecekler bile. Gerçekten iyi tasarımlanmış Ionic veya Titanium, uygulama, hatta Cordova ile, her zaman UI/UX’te ufak boşluklar olsa da, gerçek bir native uygulamanın görünüş ve hissine yaklaşabileceksiniz.

 

OWASP’e göre mobil güvenliği test etmek için iyi araçlardan birkaçı nelerdir?

Mobil güvenliğinizi test etmenize yardımcı olacak açık kaynak çözümler olsa da, bu çözümler genellikle genel güvenlik değerlendirmesi için tarama yapmak yerine belirli saldırılara odaklanır. Checkmarx tüm 20 programlama dilinde ve bunların en yaygın frameworklerinde güvenlik, kalite ve uyumluluk sorunları için tarama yapar ve uygulamanızın güvenlik durumu konusunda size en iyi anlayışı sunar.

 

M4 (Güvensiz Yetkilendirme) ve M6 (Güvensiz Yetkilendirme) arasındaki fark nedir?

OWASP Project Mobile Top 10’daki bu iki tehdit, benzer gözükse de, aslında farklıdırlar. M4 (Güvensiz Yetkilendirme) genellikle gerekli olduğu zaman kullanıcıyı belirlemede başarısız olduğunuz zamandaki gibi son kullanıcı (kötü oturum) yönetimi ile alakalıdır. M6 (Güvensiz Yetkilendirme) yetkilendirmedeki başarısızlıklarla ilgilidir. Kullanıcıyla ilgili yetkilendirmeden arklı olan istemci/müşteri tarafındaki (forced browsing) yetkilendirme. Tehditlerden biri, kötü oturum yönetimi ile ilgilidir, diğeri yetkilendirmedeki başarısızlıkları yakalar.