MOBİL UYGULAMA PROJELERİNDE NEDEN DEVOPS İHTİYACIMIZ VAR?
Backend sistemleri, bulut tabanlı mikroservis uygulamalarına; web sistemleri mobil uygulamalara dönüşürken boyut ve kapsam ne olursa olsun her yazılım geliştirme projesinde sürekli entegrasyon (CI) ve sürekli teslimat (CD) giderek daha önemli hale geliyor. Mobil uygulama geliştirme CI/CD, popüler adıyla DevOps, sistemlerinden maksimum yararlanılabilecek alanlarından biridir.
Sürekli Entegrasyon ve Sürekli Teslimat nedir?
Sürekli Entegrasyon, İngilizce adıyla Continuous Integration, (veya kısaca CI), ortak bir kod havuzuna gönderilen her bir kodu otomatik derlemenin yoludur. Bu derleme süreci, kod incelemeleri, kod analizi ve birim testleri gibi iş akış adımlarıyla entegre olarak uçtan uca geliştirilebilir.
Sürekli Teslimat, İngilizce adıyla Continuous Delivery, (veya kısaca CD), uygulamanın ortam dağıtımı (örneğin AppStore, Google Play veya bir geliştirme veya dağıtım platformu), kod imzalama, sürüm oluşturma ve başarıyla oluşturulmuş sürümlerin ilgili kullanıcılarla dağıtılması yöntemidir.
DevOps süreci (CI/CD) nedir?
CI ve CD’yi birlikte düşündüğünüzde, popüler olarak DevOps olarak adlandırılan tam bir uçtan uca uygulama yayınlama altyapısı elde ederiz. CI ile uygulamamızı oluşturur ve onu CD adımına iletiriz. CD ile, uygulamanın pipeline sonucunda doğru alıcılara doğru bir şekilde iletilmesini sağlarız.
DevOps, mobil uygulama projelerindeki en belirgin sorunlardan bazılarıyla nasıl ilişkilidir?
Temelleri oluşturduktan sonra, mobil uygulama yaşam döngüsünde yaygın görülen sorunlardan ve DevOps’un bunları nasıl ele aldığından başlayarak mobil uygulama geliştirmede neden DevOps’a ihtiyacınız olduğunu açıklayalım:
- Kod repoları, ekipler için bir iş birliği aracı olarak değil, bir dosya deposu gibi kullanılıyor. Depo olarak kullanılan alanlar hem güvenlik açığı oluştururken hem de yüksek boyutlu projelere neden oluyor. Otomatikleştirilmiş DevOps süreci, sık ve doğru kod aktarımlarını teşvik ediyor.
- Son kullanıcı sürümünde geliştirici hatasından kaynaklı sorunlar ile düşük uygulama kalitesi uygulamamızda kullanıcı deneyimini direkt etkiliyor. Otomatik DevOps işlemi; manuel işlemi ve haliyle insan hatası olasılığını da ortadan kaldırır.
- Birden çok bağımlılığa sahip büyük uygulamaların uzun derleme süreleri: Bulut tabanlı DevOps araçları, yerel ortamları kaynaktan ve uzun derleme sürecinden kurtarır, zamandan tasarruf sağlar.
- Mobil işletim sistemlerinde ve geliştirme altyapılarında sık sık yapılan güncellemelerle hızla değişen ortam ekip arasında paylaşımı negatif etkiler. DevOps araçları, bulut üzerinde sundukları seçenekler ile ortamları güncel tutarken fazla cihaz yatırımlarına olan ihtiyacı ortadan kaldırır.
- Apple ve Google’ın benzersiz gereksinimleri nedeniyle uygulama kodu imzalamada karmaşıklıklar ve gecikmeler yaşanabilir. DevOps ile uygulama yaşam döngüsündeki tüm karmaşık adımlar otomatikleştirilir ve geliştiriciler bu karmaşıklıklardan izole edilir.
- DevOps uygulama yaşam döngüsünün her adımı için kurulması gereken lokal altyapıları minimize ederek tüm yapıları tek bir kullanışlı erişim noktasından otomatik olarak toplar ve sunar.
Tüm bu sorunlar ve daha fazlasıyla uğraşmadan sadece mobil uygulamanızı geliştirmeye odaklanabilmek için DevOps altyapıları ideal çözümler sunmaktadır.
Mobil uygulama projelerinde neden CI sürecine ihtiyacınız var?
CI, yalnızca bir kaynak kontrol sistemi kullanmak ve birden fazla geliştirici beraber çalışırken çakışmaları çözmekle ilgili değildir. Bir disiplin ve geliştirme standardı oluşturmakla ilgilidir.
Bir ekip olarak ortak bir kod reposunu DevOps olmadan kullanırken genel eğilim, onu bir yedekleme aracı gibi kullanmak ve günün sonunda değişiklikleri iletmektir. Bu açıdan bakıldığında, CI’ın en önemli avantajlarından biri, daha sonra statik kod analizi, kod kalitesi, incelemesi ve tabii ki test otomasyonu veya manuel test dağıtımı ile entegrasyon gibi otomatikleştirilmiş iş akışı adımlarıyla geliştirilmiş yapılar yaratmasıdır.
CI, daha kısa test ve yayın döngüleri sağlar. Bu, mobil uygulamaların benzersiz karmaşıklıkları ve hataya açık yapısı ile daha da önem kazanır.
Native veya hibrit bir cross platform altyapısı ile geliştirdiğiniz mobil uygulama projesinde, aynı projeyi iOS ve Android için yayınlamak tamamen bağımsız çabalar gerektirir ve tüm bu süreç DevOps ile otomatikleştirilebilir.
Mobil uygulama projelerinde neden CD sürecine ihtiyacınız var?
Benzer şekilde, CD yalnızca farklı ortamlar için birden çok uygulama dosyasını yüklemek ve indirmekle ilgili değildir. CD, uygulama yayınlama sürecini otomatikleştirir ve insan faktörünü ortadan kaldırır. Bu da daha kısa yayın döngüleri sağlar ve daha güvenilir uygulamalar üretir.
Mobil uygulamalarda en önemli sorunlardan biri yayın anahtarlarıdır ve otomatikleştirilmiş bir CD işlemiyle hem bu anahtarları kaybetmez hem de birden fazla ortam için aynı uygulamayı kolayca yayınlayabilirsiniz.
Mobil geliştirmeyi daha karmaşık hale getiren ancak aynı zamanda daha da önemli kılan bir diğer nokta, web uygulamalarının çoğu için geçerli olmayan kod imzalama tekniğidir. Özellikle iOS uygulamaları için, farklı dağıtım yöntemleri (Ad hoc, enterprise ve AppStore) için farklı kod imzalama prosedürleri vardır ve manuel olarak yapılan bu işlemler geliştiricilerin çok fazla zamanını almaktadır.
CD ile tüm bu imzalama ve yayınlama süreleri otomatikleştirilerek minimuma indirilebilmektedir.
Peki Sonuç?
Burada anlattığımız DevOps teknolojilerini kullanarak daha önce 2 ile 4 saat arasında süren uygulama yayınlama prosedürlerimiz 10 ile 30 dakika aralığına indi. Aynı zamanda otomatikleşen sistemler ile geliştiricilerimizin müdahalesine duyduğumuz ihtiyacı ortadan kaldırdı ve müşterilerimize maliyet avantajı sağladı.
Tabii ki bunlar, mobil geliştirmede DevOps kullanmanın nedenleri ve avantajları açısından buzdağının sadece görünen kısmıdır.
Bu makale, aşağıdaki soruları yanıtladığımız DevOps makale dizisinin ilk adımı olacak:
- CI / CD nedir ve mobil uygulama projelerinde neden DevOps’a ihtiyacınız var?
- DevOps’un operasyonel ve ticari faydaları nelerdir?
- Hangi DevOps platformları, mobil uygulama yaşam döngüsündeki yaygın sorunları nasıl çözer?
İlk yazımızda, DevOps yapmaya başlamak için genel konseptleri açıklamaya çalıştım. Yazılara DevOps’un uygulamalarımız üzerindeki faydaları ile devam edeceğiz.