Nasıl hızlı prototipleme ile kendi web uygulamanızı hayata geçirebilirsiniz?

Eğer web tabanlı ya da online bileşenleri olan bir uygulama projeniz varsa, 3 dakikanızı ayırıp bu yazıyı okuyabilirsiniz.

Basit bir iş ve aksiyon planı ile projenize nasıl hızlı başlangıç yapabilirsiniz? Hem de cebinizden çıkacak parayı minimize ederek!

Buyrun başlayalım.

Bir küçük not. Projenizin fizibilite araştırması, pazar araştırması, market stratejisi, gelir modeli gibi “business related” konuları hallettiğinizi varsayıyorum. Başka bir yazıda da bunlara değiniriz. Şimdilik bu yazıda teknolojik açıdan projeyi sırtlayacağız.

Öncelikle teknolojik eğilimlerimizi belirleyeceğiz. Benim yönelimlerim aşağıdaki gibi…

Clean mimari ve DDD ile ilerleyeceğiz. Olabildiğince microservice mimarisini tercih edeceğiz ancak hızlanacağımızı düşündüğümüz yerde monolithic mimariye geçişten korkmayacağız.

Not: Çevik yazılım geliştirme metodolojisini benimseyeceğiz. Bu nedenle kafamızda proje için kuracağımız model “başla-bitir” değil “sadece yap-daha iyi yap-en iyisini yap” olacak. Kısıtlı zamanda olabildiğince fazla çıktı üretmeye odaklanacağız. Fazla çıktı üretmek demek bug’lı bir API ya da düzensiz bir veritabanı demek kesinlikle değil; olabileceğinin en iyisi olmayan ama görevlerini layığıyla yerine getiren yapılar demek.

Devam…

Microsoft teknolojileri ile ilerlemeyi tercih ediyorum. .Net Core 2.2 güzel bir seçim. Eğer RDB ihtiyacımız varsa MSSQL Server Express tercih edebiliriz. MySQL ya da PostgreSQL de güzel opsiyonlar. NoSQL DB ihtiyacımızı da MongoDB ile karşılayabiliriz. RethinkDB de bir zamanlar güzel bir opsiyondu. Onu da anmadan geçmeyelim…

Bize bir API gerekli. Böylelikle front-end ile back-end’i birbirinden tamamen izole çalıştırıp belki de front-end tarafında MS dışında teknolojiler ile ilerleme yolunu da açalım kendimize.

Görünüşe göre kurgulayacağımız clean mimari API, Infra, Domain ve bir Web projesinden oluşacak şimdilik. Yolda ihtiyaçlarımıza göre hamuru yoğurmaya devam edebiliriz.

Geliştirmeye başlamadan önce altyapıyı ve diğer ek gereksinimleri halledeceğiz. Sonrasında da güzel bir proje iş planı ile koda girişeceğiz.

  • Alan adı

Aciliyeti olmasa da ben genellikle bir projeye başlarken potansiyel alan adlarını alternatifleri ile kenara ayırmayı seviyorum. Son kullanıcının erişimine açılacak bir alan adı projenin lansmanına kadar aciliyeti olan bir gereksinim değil. Ancak güzel bir alan adı bulduğunuzda kaçırmamakta da fayda var.

Eğer ki proje kaynaklarına erişim amacıyla bir domain edinmekten bahsediyorsak burada ücretsiz çözümlerden olan dyn-dns ya da no-ip gibi araçlardan faydalanabilirsiniz. Örneğin kiraladığınız sanal makine üzerindeki test API’larına ve test Web uygulamasına kolay erişim için akılda kalıcı bir pseudo-domain adını bu araçlardan edinebilirsiniz.

  • Web uygulamasını barındıracağımız ortam

Web uygulamasının yalnızca front-end barındırdığını düşünürsek basitçe görevi son kullanıcının API ile konuşmasını sağlamak olacağa benziyor. Bu sebeple başlangıç için basit bir linux ya da windows hosting ile ilerleyebiliriz.

  • API uygulamasını barındıracağımız ortam

Bu bölüm diğerlerine nazaran daha kritik. .Net Core ile ilerliyor da olsak özellikle başlangıç için tam erişime sahip olduğumuz bir altyapıya sahip olmak bize hız kazandırabilir. Bu sebeple bir sanal sunucu ile ilerleyeceğiz. Bu prototipleme için AWS üzerinden bir t2.micro EC2 sanal sunucuyu 12 aylık ücretsiz olarak açabiliriz. 1 GB Ram’e sahip ve lisanslı Windows Server 2019 ile geliyor. CRUD operasyonları için ilk etapta yeterli olacaktır. Velev ki yetersiz kalmaya başladı, herhangi bir migration yapmadan ücretli modele geçip kaynakları yükseltmek çok kolay. Ki eğer t2.micro ile yetinemiyorsak, ücretli modeli karşılayacak paranın gelişi çok uzak değil demektir…

  • RDB ve/veya NoSQLDB bileşenlerini barındıracağımız ortam

Yine aws üzerinden hazır paketlenmiş ücretsiz linux mongoDB sanal makinesi açabilir ya da daha da hızlanmak istiyorsak API uygulamasını barındıracağımız sanal makineye mongoDB kurulumu gerçekleştirebiliriz. İkisini aynı makineye kurmak tüyler ürpertse de eğer bize prototipleme aşamasında hız kazandıracaksa ötesini düşünmeye gerek yok!

Kodlamadan önce altyapı gereksinimlerimizi tamamladık. Şimdi tercihen TFS, SVN ya da Git ile Azure DevOps Server, Github ya da Bitbucket gibi bir VCS eşliğinde prototip kodlamaya girişebiliriz.

Önemli Not: Böyle bam güm ilerlemenin bir getirisi olarak, her sprint sonunda çıkan release’i karşımıza alıp bunun neresini daha iyi yapabiliriz diye düşünmek zorundayız. Ve işin içine yalnızca kodlamayı değil, altyapı ve teknoloji tercihlerimizi de dahil edeceğiz. Böylelikle iş işten geçmeden bu proje ve bu projenin müşterisi için doğru tercihleri kolaylıkla görebileceğiz ve gerçekleştirebileceğiz.

Bir sonraki yazıda kodlamaya girişmeden önce yazılımın mimari tasarımını nasıl yaptığımızı, front-end için kullanıcı arayüzünü ve kullanıcı deneyimini iyileştirecek tercihleri nasıl belirlediğimizi tartışalım.