Dikkat! Bu yazı yazılım sektörüne yeni giren ya da ilgi duyan arkadaşlara hitaben, şekillenmesi bir hayli zaman alan büyük resmi, örneklerle gösterebilmek amacıyla yazılmıştır. (Ama deneyimli arkadaşlar ve sektörde halihazırda çalışanlar için de eğlenceli olduğuna dair söylentiler var) 😊
Yazılım sektörüyle alakalı almak isteyeceğiniz tüm eğitimlerin ilk derslerinde algoritmalardan bahsederler. “Bu olmazsa olmaz, işin temeli algoritmadır” derler. Yeni bir şey gibi anlatılır ama aslında algoritma dediğimiz şey zaten ilk insandan beri hayatımızın merkezinde olan bir kavramdır. Şimdi sıkıcı bir iki cümle kuracağım ama sadece bir şeyi göstermek istiyorum. “Sabah gözlerimi açtım. İşe gitmem gerektiği için yataktan kalktım. Uykumun açılması için yüzümü yıkadım. Acıktığım için kahvaltı yaptım. Canım öyle istediği için metro durağına minibüsle gitmek yerine yürümeyi tercih ettim.” Gördüğünüz gibi hayatta her aksiyonumuz anlamlı veya anlamsız bir sebebe istinaden gerçekleşir. Çünkü insan düşünce gücüne sahip bir canlıdır ve aksiyonlarını düşünerek, bir sebebe bağlayarak gerçekleştirir. Bu düşüncelerin sonucuna göre alacağımız aksiyonun ne şekilde gerçekleşeceğini belirleyen denkleme de algoritma denir.
Yani aslında algoritma düşüncenin çıktısıdır. Dolayısıyla aslında hayatımız durmaksızın ürettiğimiz algoritmalar üzerine kuruludur. Gelişen teknolojiyle beraber artık gün içerisinde her an kullandığımız algoritmaları bilgisayar diline aktararak işlerimizi daha hızlı, daha doğru, daha verimli yapabileceğimizi fark ettik ve aklımıza ne gelirse, sahip olduğumuz teknolojinin bize sunduğu olanaklar ölçüsünde bilgisayarlara aktarmaya başladık.
Bu girişi yaptıktan sonra mobil uygulamaların nasıl çalıştığını biraz olsun zihinlerimizde canlandırabilmek adına hayatın içinden bir örnek ve 4 farklı senaryoyla sizi baş başa bırakıyorum. İyi eğlenceler. (Örneklerde kullanılan teknik ifadeler farklı mimarilere göre farklı isimler alabilir, genel resme odaklanmanız önemle rica olunur.)
Görsel: Müberra Demir
1- Mobil uygulama karnımızı doyurur mu?
Doğru yerden bakarsanız neden olmasın.
Bir mobil uygulamanın baştan sona hangi süreçleri yaşadığını çok genel anlamda görebilmek için karnınızın acıktığını farz edelim ve bir restorana gidelim (ne ilgisi var şimdi diyebilirsiniz ama bekleyin 🙂
Karnınız acıktı ve bir restorana girdiniz. Hoşunuza giden bir masaya oturdunuz. Menüyü elinize aldınız, seçenekler arasında gözünüze kestirdiklerinizden sipariş vermek üzere garsona seslendiniz. Garson taleplerinizi dinledikten sonra siparişinizi hazırlatmak üzere mutfağın yolunu tuttu. Bu noktadan sonrası sizin için beklemekten ibaret ancak arkada hummalı bir çalışma başlıyor. Mutfağın girişinde siparişlerin doğru ve eksiksiz şekilde hazırlanmasından sorumlu olan bir aşçıbaşı karşılıyor garsonu. Garsondan siparişi aldıktan sonra mutfağa dönüp siparişin hazırlanabilmesi için gerekli olan istasyonlara talimatlar veriyor. Her bir istasyondan farklı ürünlerin bir araya getirilmesini bekledikten sonra siparişiniz sunuma hazır hale geliyor ve aşçıbaşı tarafından garsona teslim ediliyor. Garsonun elinde tepsiyle size doğru yaklaştığını gördüğünüzde ağzınız sulanmaya başlıyor ve siparişinizin eksiksiz şekilde servis edilmesiyle birlikte sizin için keyifli dakikalar başlıyor. Afiyet olsun.
Hikayeyi bir de şöyle dinleyelim:
Müşteri = Mobil uygulama kullanıcısı
Garson = Mobil uygulama (Client)
Aşçıbaşı = Integration
Mutfak = Backend
İstasyon = Process
(Biraz daha detaya inmek isterseniz istasyonlardaki şeflerin siparişi hazırlamak için kullandığı tüm aletleri de process’lerin kullandığı metot, SP ve tablolar olarak düşünebilirsiniz.)
Karnınız acıktı ve bir restorana girdiniz. Hoşunuza giden bir masaya oturdunuz. Menüyü elinize aldınız, seçenekler arasında gözünüze kestirdiklerinizden sipariş vermek üzere mobil uygulamaya seslendiniz. Mobil uygulama taleplerinizi dinledikten sonra siparişinizi hazırlatmak üzere backend’in yolunu tuttu. Bu noktadan sonrası sizin için beklemekten ibaret ancak arkada hummalı bir çalışma başlıyor. Backend’in girişinde siparişlerin doğru ve eksiksiz şekilde hazırlanmasından sorumlu olan bir integration karşılıyor mobil uygulamayı. Mobil uygulamadan siparişi aldıktan sonra backend’e dönüp siparişin hazırlanabilmesi için gerekli olan process’lere talimatlar veriyor. Her bir process’ten farklı ürünlerin bir araya getirilmesini bekledikten sonra siparişiniz sunuma hazır hale geliyor ve integration tarafından mobil uygulamaya teslim ediliyor. Mobil uygulamanın elinde tepsiyle size doğru yaklaştığını gördüğünüzde ağzınız sulanmaya başlıyor ve siparişinizin Success = true şekilde servis edilmesiyle birlikte sizin için keyifli dakikalar başlıyor. Afiyet olsun.
2- Hem ayranım dökülmesin hem yoğurdum ekşimesin
Yemeğinizin yanında şöyle buz gibi bir ayran iyi gider diye düşündünüz. Garsona seslendiniz ve ayran istediğinizi belirttiniz. Garson açık ayranın henüz hazır olmadığını, şu anda sadece kapalı ayran servis edebileceğini belirtti. “Peki” dediniz ve bakır bardakta gelen bol köpüklü ayran hayallerini başka bahara bıraktınız. Normalde siparişi alan garsonun aşçıbaşına gittiğinden bahsetmiştik ancak bu sefer durum farklı. Kapalı ayran restoran tarafından hazırlaması gereken bir ürün olmadığı için ve dışarıdan hazır şekilde getirildiği için garson bu sefer içecek dolabına yöneldi. Dolabın kapağını açtı ve ayranı alıp masanıza bıraktı. Eğer açık ayran servis edilebiliyor olsaydı garson alıştığımız şekilde aşçıbaşına gidip ondan ayranı alacak ve getirecekti.
Hikayeyi bir de şöyle dinleyelim:
Müşteri = Mobil uygulama kullanıcısı
Garson = Mobil uygulama (Client)
Aşçıbaşı = Integration
İçecek dolabı = Software Development Kit (SDK)
Yemeğinizin yanında şöyle buz gibi bir ayran iyi gider diye düşündünüz. Mobil uygulamaya seslendiniz ve ayran istediğinizi belirttiniz. Mobil uygulama açık ayranın henüz hazır olmadığını, şu anda sadece kapalı ayran servis edebileceğini belirtti. “Peki” dediniz ve bakır bardakta gelen bol köpüklü ayran hayallerini başka bahara bıraktınız. Normalde siparişi alan mobil uygulamanın integration’a gittiğinden bahsetmiştik ancak bu sefer durum farklı. Kapalı ayran restoran tarafından hazırlaması gereken bir ürün olmadığı için ve dışarıdan hazır şekilde getirildiği için mobil uygulama bu sefer SDK’ya yöneldi. SDK’nın kapağını açtı ve ayranı alıp masanıza bıraktı. Eğer açık ayran servis edilebiliyor olsaydı garson alıştığımız şekilde integrationa gidip ondan ayranı alacak ve getirecekti.
Ayranı kutulu şekilde dolaptan (SDK’dan) alma ile mutfaktaki (backend’deki) ilgili istasyonda hazırlayıp aşçıbaşı (integration) üzerinden garson (mobil uygulama) aracılığıyla müşteriye servis etme arasındaki 7 farkı bulalım.
- Dolaptan alınan ayran daha hızlı servis edilir. Garsonun aşçıbaşı ile (dolayısıyla mutfak ile) muhatap olması gerekmez.
- Dolaptan alınan ayran bu işte uzmanlaşmış kişiler tarafından profesyonel yöntemlerle üretildiğinden mutfakta üretilen ayrana göre daha standart bir kalite vadeder.
- Dolaptan alınan ayran içecek piyasasında uzmanlaşmış kişilerce dünya çapındaki tüm gelişmelerden haberdar olarak yenilenir ve son teknoloji ile donatılırken, mutfaktaki personel için bu sadece bir sürü üründen bir tanesidir ve gelişmeleri takip edip araştırma zahmetine girecek vakitleri olmaz.
- Dolaptan alınan ayranın hatalı bir ürün olup olmaması konusunda dolaba (üreticiye) güvenmek gerekir ancak mutfakta üretilen ayranla alakalı tüm sorumluluk sizdedir ve işinizi sağlama alarak üçüncü bir kuruluşa güvenme riskine girmemiş olursunuz. Ama tabi işi ehline vermişseniz güvenmek daha avantajlı da olabilir.
- Dolaptan alınan ayranla alakalı herhangi bir düzenleme yapamazsınız ancak mutfakta üretilen ayranı üretim aşamasından sunum aşamasına kadar her anlamda farklılaştırabilirsiniz.
- Dolaptan alınan ayran dolaptan alınmıştır, mutfakta üretilen ayran mutfaktan getirilmiştir.
- Dolaptan alınan ayran kapalıdır, mutfaktan gelen ayran açıktır.
* Son 2 madde ‘7 farkı bulalım’ sözü bir kere ağzından çıktığı için sözünü yiyemeyen birinin uydurduğu maddelerdir.
Özetle hem ayranımız dökülmesin hem yoğurdumuz ekşimesin olmuyor. İki yöntemin de artıları ve eksileri var. Artı ve eksileri değerlendirip içinde bulunulan duruma göre karar verilmesi gerekir.
3- Tatlı olarak ne alırdınız?
Son lokmayı da mideye indirdikten sonra doymuş olmanın verdiği mutlulukla yemeğin bitmiş olmasının getirdiği burukluğu aynı anda hissettiğiniz o anda, servisi toplamaya gelen garsonun sorusuyla burukluğu attınız üzerinizden: Tatlı olarak ne alırdınız? Seçeneklerinizi öğrenmek istediğinizde tatlıların restoranın kendi ürünü olmadığını, alanında uzman bir pastaneden hem sütlü hem şerbetli tatlıları günlük taze olarak aldıklarını öğrendiniz. İlgili pastanenin bu konuda ne kadar iyi olduğunu bildiğiniz için fıstıklı kadayıf (tatlı) almak istediğinizi garsona ilettiniz. Garson hemen siparişinizi hazırlatmak için mutfağa doğru yöneldi. Her zamanki gibi aşçıbaşı karşıladı garsonu. Garsondan siparişi öğrendikten sonra mutfağa dönüp gerekli istasyonlara talimatları verdi. Bu sefer istasyonlardaki çalışma her zamankinden biraz farklı. Yemeği hazırlarken hammaddelerin istasyonlar tarafından işlenmesiyle bir çıktı oluşurken bu sefer ilgili istasyon hazır olan bir tepsi kadayıfı (tatlı) pastaneden getirerek sunuma hazırlayacak olan istasyona devrediyor. İlgili istasyon tepsiden 1 porsiyon kadayıfı (tatlı) alıp sunuma hazır hale getirip aşçıbaşına iletiyor. Oradan da garsona teslim ediliyor ve ardından sizinle buluşuyor.
Hikayeyi bir de şöyle dinleyelim:
Müşteri = Mobil uygulama kullanıcısı
Garson = Mobil uygulama (Client)
Aşçıbaşı = Integration
Mutfak = Backend
İstasyon = Process
Pastane = 3. taraf
Tatlı = Hazır veri
Son lokmayı da mideye indirdikten sonra doymuş olmanın verdiği mutlulukla yemeğin bitmiş olmasının getirdiği burukluğu aynı anda hissettiğiniz o anda, servisi toplamaya gelen mobil uygulamanın sorusuyla burukluğu attınız üzerinizden: Tatlı olarak ne alırdınız? Seçeneklerinizi öğrenmek istediğinizde verilerin restoranın kendi ürünü olmadığını, alanında uzman bir 3. taraftan hazır verileri günlük taze olarak aldıklarını öğrendiniz. İlgili 3. tarafın bu konuda ne kadar iyi olduğunu bildiğiniz için hazır verileri almak istediğinizi mobil uygulamaya ilettiniz. Mobil uygulama hemen siparişinizi hazırlatmak için backend’e doğru yöneldi. Her zamanki gibi integration karşıladı mobil uygulamayı. Mobil uygulamadan siparişi öğrendikten sonra backend’e dönüp gerekli process’lere talimatları verdi. Bu sefer process’lerdeki çalışma her zamankinden biraz farklı. Normalde yemeği hazırlarken ham maddelerin process’ler tarafından işlenmesiyle bir çıktı oluşurken bu sefer ilgili process hazır verileri 3. taraftan getirerek sunuma hazırlayacak olan process’e devrediyor. İlgili process tepsiden hazır veriyi alıp sunuma hazır hale getirip integration’a iletiyor. Oradan da mobil uygulamaya teslim ediliyor ve ardından sizinle buluşuyor.
Ayranı dolaptan almanın (SDK entegrasyonu) olumlu ve olumsuz yanları, tatlıyı pastaneden almak ile (3. taraf entegrasyonu) hemen hemen aynıdır. Özetle ayranı dolaptan almanın güzel tarafı daha hızlıdır ve az efor gerektirir; tatlıyı pastaneden almanın avantajı ise üzerinde ufak da olsa oynamalar yaparak ürüne müdahale edilmesine fırsat vermesidir.
4- Günün menüsü cachelenir mi?
Sabah olur ve restoran açılır. Garson aşçıbaşından günün menüsünün ne olduğunu öğrenir. Artık restorana gelip “günün menüsü nedir?” diye soran her müşteri için aşçıbaşına gitmesi gerekmez, aklında tuttuğu bilgiyi söyleyiverir. Çünkü o bilgi bugün restoran kapanana kadar değişmeyecektir. Ancak ertesi gün olduğunda yeni günün menüsünü öğrenmek için aşçıbaşına gitmesi gerekecektir.
Hikayeyi bir de şöyle dinleyelim:
Müşteri = Mobil uygulama kullanıcısı
Garson = Mobil uygulama (Client)
Aşçıbaşı = Integration
Sabah olur ve restoran açılır. Mobil uygulama integration’dan günün menüsünün ne olduğunu öğrenir. Artık restorana gelip “günün menüsü nedir?” diye soran her müşteri için integration’a gitmesi gerekmez, cachelediği bilgiyi söyleyiverir. Çünkü o bilgi bugün restoran kapanana kadar değişmeyecektir. Ancak ertesi gün olduğunda yeni günün menüsünü öğrenmek için integration’a gitmesi gerekecektir.