Zumbara X Android Uygulaması Proje Mimarisi

Murat Can Bur
GDGIstanbul
Published in
3 min readSep 16, 2018

Uygulamaların doğru ve temiz bir mimariyle inşa edilmeye başlanmış olması şüphesiz uzun vadede yaşamaya devam edip edemeyeceği konusunda en önemli unsurlardan biridir. Biz (Team-X) olarak bu sebeple Zumbara X projesinde topluluktan katılan herkesin rahatça adaptasyonunun sağlanması , örnek oluşturması, rahatça bakımının yapılabilmesi amacıyla Google’ın önerdiği temel kavramların uygulamaya aktarılması gibi sebeplerle çok titiz davrandık. Bu yazıda Zumbara X projesinin mimari detaylarını genel hatlarıyla anlatıyorum.

Zumbara-X ‘i ilk defa duyanlar için önce yayımladığımız ilk yazıya bakmalarında fayda var.

Branch Yapısı

Zumbara Projesi yaşam döngüsü boyunca iki ana branch’ den meydana gelecektir. Bu iki branch sırasıyla master ve develop olarak isimlendirilir.

Geliştirmeler için feature branch oluşturulacak olup, Pull-Request sistemi ile geliştirilen kodların belirli bir standart üzerinde devam etmesi sağlanacaktır.

Proje Mimarisi

Projenin mimarisini genel hatlarıyla anlatacak olursak, uygulama her birinin kendi sorumlulukları olan ayrı katmanlardan meydana gelmektedir. Projenin genel olarak mimarisi kurgulanırken takip ettiğimiz kaynak ise Google tarafından temel anlamda referans olarak paylaşılan aşağıda bulunan yazıdır.

UI:

Bu katman içersinde bulunacak olan sınıflar Activity, Fragment, Adapter gibi arayüz ile doğrudan ilişkili sınıflar olacaktır. Bu sınıflar içerisinde herhangi bir business ile alakalı mantık içeren kod bulundurmayacak ve sadece presentation katmanınından observe edilen data ’yı arayüzde göstermekle sorumlu olacaktır.

Presentation:

Bu katman içerisinde bulunacak olan sınıflar UI ve Data katmanları arasında meydana gelen bağlantılı işlemlerin gerçekleşmesi sağlayacaktır. Bu katman içinde yer alan yapıyı inşa etmek için Android Architecture Components kütüphanelerinden destek alınmaktadır. LiveData, ViewModel gibi yapılar ile uygulamanın reactive bir şekilde çalışmasına ve Android lifecycle sistemine bağlı kalarak hayatına devam etmesine destek sağlanması amaçlanmaktadır.

Repository:

Bu katman içerisinde bulunacak olan sınıflar uygulamanın network isteklerinin oluşturulduğu veya local cache/database vb. depolama işlemlerine ait kodların yazıldığı yapılardan meydana gelmektedir.

DataSource

Kendi içerisinde remote kaynak üzerinden beslenen RemoteDataSource olarak isimlendirdiğimiz yapılar ve local kaynak üzerinden beslenen LocalDataSource olarak isimlendirdiğimiz yapılar bulunmaktadır.

Mimariyi genel olarak özetleyen şematik gösterimi de ayrıca paylaşmak gerekirse;

Önümüzdeki günlerde “Bir özelliğin baştan sona yapılabilmesi için gerekli adımlar neler olabilir?”, “Tasarım için uygulama da uygulanacak mimari nelerdir?” gibi aşamaları anlatan yazılar yazı yazmaya devam edeceğiz. Ayrıca Github sayfasında bulunan README, yakın zaman içerisinde güncellenecek. Bu temel adımları tanımladıktan sonra topluluktan projeye katkıda bulunmasını isteme zamanı gelecek. Yakında güzel haberlerle görüşmek üzere…

--

--

Murat Can Bur
GDGIstanbul

Blogger , Public Speaker, Mobile Engineering Team Lead @Trendyol