Merhaba,
Biraz konuyu dagitmis gibi olsada, oncelikle, hem sizin icin hemde bu konuda fikir sahibi olmak isteyen arkadaslar icin faydasi olur umidiyle, biraz bulut genel yapisina deginmekde sanirim fayda var. Sonrada elimden geldigince, soruya cevap vermeye calisayim
Oncelikle, Uygulamamin ihtiyaclarini iyi belirlemek lazim, ve bu tarz arastirmalarda mumkunse , uygulamin genel olarak seklini semalini / mimarisini ve uygulamin kullanim potansiyelini de soruya katarsaniz daha faydali ve pratik degeri daha yuksek cevaplar bulmak muhtemelen daha kolay olacaktir.
Ornegin ; Uygulamanin kullanimi icin ciddi bir yogunluk(sadece kullanici sayisi/trafigi olarak dusunmeyin) bekliyormusunuz? Yada, uygulamanizin ileriki zamanlarda hizli bir buyume ihtimali var mi? Uygulamanizla birlikte, kullanmak istediginiz baska ek yada detsekleyici sistemler mevcut mu? Ornegin, caching icin yada baska bir sebebden Redis benzeri bir seye ihtiyacaniz var mi? Uygulamanizda, real-time iletisim vb imkanlari olacak mi? Uygulama yogun bir sekilde yuksek RAM yada Islemci kullanimi yapacak mi? (ornegin resim isleme vb. gibi) Uygulamaniz icin de veri tabani disinda storage kullanimi olacak mi? (Ticari bir uygulamayi dusunun, kullanicilarin sisteme, dosyalar yukledigini dusunun(resim, fatura, catalog vb gibi), yada buyuk raporlar ve ya yedekler alinma ihtiyacinin yogun oldugunu) dusunun.
Bundan sonrasinda, X firmasi yada Y firmasini kullanmak adina, yada x firmasinin hangi urununu/servisini kullanmak daha faydali olur daha ekonomik olur daha rahat karar verilebilir.
Simdi genel olarak, bulut islem kavramina ve bulut servis firmalarina biraz bakalim ;
1- Cloud / Bulut firmalari icinde, azure ve aws digerlerinden farklidir. (digerlerinden kasit; digital ocean, heroku, rackspace, bluemix vs)
AWS yada Azure ile , iaas , paas , saas , gibi genel bulut yapilarinin hepsini bir arada bulacagimiz gibi , azure ve aws in genel olarak bulut kavramina girmeyen, yada sadece bu iki platforma ozel SDK ler toollar, ready to go alt yapilar vs. gibi uygulama gelistirme surecinin basindan sonuna kadar ve sonrasi icinde , bu iki platforma ozel hizmetleride mevcut.
2 - Digerleri , ornegin digital ocean yada heroku gibi, bulut surecinin sadece bir kismina ozel, yada bir kismiyla hizmet veren firmalardir.
3- Godady veya diger klasik hosting sistemleri, az cok hepimiz biliyoruz zaten. Genelde son bir iki seneye kadar "Hosting" kavrami deyince sadece bu tarz firmalar gelirdi aklimiza.
simdi bulut icin onemli olan 3 genel kavrama da bi bakalim ;
1- Infrastructure as a Service (IaaS) - Temel yazilim ve donanim kiralamak, hic bir ayar konfigurasyon, yada yardimci freameworkler olmadan, temel bir sunucu.
2- Platform as a Service (PaaS) - IaaS + yardimci yazilimlar freameworkler toollar ve bazi yardimci hazir araclarla onceden konfigure edilmis bir sistemi kiralamak.
3- Software as a Service (SaaS), Her seyi hazir bir sistem. ornegin ; Google Apps, Salesforce, Workday, Concur, Citrix GoToMeeting, Cisco WebEx . Yapmaniz gereken sadece bir uyelik secmek ve kullanmaya baslamak.
Yukaridaki listeyi soyle pratik bir WordPress ornegiyle aciklayalim.
IaaS => Bir bilgisayar aldiniz, bilgisayar da sadece isletim sistemi yuklu, ornegin Ubuntu 2014, ve belki bazi temel araclar ornegin Python, GCC vs. burdan sonrasi tamamen size kalmis, PHP, kullanacaginiz DB(Mysql vs), FTP, Wordpres herseyi siz ayarlayip yuklemeniz gerekmekte
PaaS => Bir firma buldunuz, Wordpres icin gerekli tum alt yapiyi sagliyor, ornegin php mysql vs her sey yuklu, siz sadece wordpresi yukleyip kullanmaya basliyorsunuz. (Heroku ve digitalocean gibi)
SaaS => Hic bir seyi yuklmeden, sadece bir uyelikle, hazir bir Wordpres uygulmaniz oluyor.
Asagidaki linkde daha detayli bilgi edinebilirsiniz.
nderstanding the Cloud Computing Stack
Yukaridaki 3 parcaninda klasik hostingden en buyuk farki, olceklenebirlirlik, tasinilabilirlik ve maliyet acisindan cok daha kabul edilebilir ve esnek olmalari.
Birde baska bir onemli ayrim, artik nerdeyse tamami konteynir (docker gibi) tabanli olmasi. bunun en buyuk faydasida, ornegin kullandiginiz hizmetin RAM yada Islemci gucunu begenmiyorsunuz, daha guclu bir makinaya gecmek yada ayni makinadan bir tane daha alip load balancing vs gibi araclara performans artisi saglamak istiyorsunuz, hersey konteynir tabanli oldugu icin, (yani uygulama aslinda direk olarak host edilen makinada degil, bu makinanin uzerinde kurulu bir container da calistigi icin) mevcut uygulamanin yuklu oldugu konetynir oldugu gibi alinip daha guclu bir makinaya tasiniyor, yada baska bir makinada ayni konteynirin bir baska kopyasini calistiriyorlar.
Container lar VM lerden cok daha hizli ve kolay konfigure edilebildigi icin, her yonden ciddi kolaylik ve avantaj sagliyor. AWS ve azure bu 3 parcanin tamamini yada tek tek istedigin gibi kkullanama imkan veren ve kendi ozel ekstra servis ve hizmetleri de olan en buyuk iki oyuncu. DIgerleri genelde sadece yukaridaki 3 luden 1 tanesine odaklanmis durumda.
Simdi sorunuza, benim kendi tecrubelerimden soyle cevap vermeye calisiyim .
1- Godaddy den mumkun oldugunca uzak durun , Yillarca hem calisitigim firmalarin urunleri icin hemde kisisel projelerim icin kullandim. Kesinlikle tavsiye etmem.
2-AWS yada azure gibi alt yapilar biraz karisik gelebilir ilk baslarda, aceleniz varsa ve zaman harcamadan hemen biseyler yapmaniz gerekiyorsa, pek uygun olmayacakdir. Ama performans, fiyat ve yonetim kolayligi anlaminda cok ama cok ciddi artilari var. Bir kac kucuk ayarla , mevcut sistemi cok hizli bir sekilde buyutebilir(islemci kapasitesi vs.) yada kucultebilirsiniz. Uygulamanin belirli zamanlarda daha fazla yada daha az kaynak kullanilmasi gibi zamana bagli ayarlamalar vb ek ozellikleri cok hizli ve kolay bir sekilde kullanabilirsiniz. AWS yada Azure da komple bir sistem/uyelik almak yerine, sadece veri tabani hizmeti, sadece dosya yukleme deposu vb hizmetleri alip hosting i baska bir yerden dahi temin edebilirsiniz.
Sozun ozu, aylik 20$ a digital ocean da bir hizmet almak yerine, biraz zaman harcayip, AWS de bir E2 hizmeti kullanmak bana gore cok daha mantikli olacaktir. Azure icin de asagi yukari ayni durum soz konusu.
Gercek hayattan bir ornek olarak ; daha gecenlerde soyle bir durum soz konusu oldu, Avrupadan(fransadan) bir firma bizim bir urunumuzu kullanmak istedi, fakat sunucularin ve ozellikle DB lerin fransada host edilmesini sart kostular, yapilmasi gereken tek sey AWS yada azure da bulunan container i alip (docker) oldugu gibi fransada ki bir firmaya yuklemek oldu(Rackspace in fransa sunucularina), sifir konfigurasyon, yada installation gerekti diyebilirim, sadece gerekli domain ve bazi network ayarlari yapmak kaldi. Ustelik firmanin islemci ve ram ihtiyaci su an icin dusuk oldugundan, sistem cok ama cok ucuz bir maliyetle kuruldu, ileride firma sadece gerek duydukca islemci yada ram aritirimina gidebilir yada yeni DB sunucularini bir kac tikla sisteme dahil edebilir. Bu esnekligi, tamamen olmasada kismi durumlar icin, Openshift yada herokuda da bulabilirsiniz. Ama AWS yada azure yada rackspace gibi buyuk bulut servis saglayicilarin da cok daha fazlasini daha ekonomik olarak bulabilirsiniz.
Aws yada azure a daha kolay ve hizli baslamak, ve ilk basdaki karisikligi en aza indirmek icin, iki platformunda, marketplace leri mevcut, market placelerde, hazir ornekler/image ler var ve cok buyuk kismi resmi ve ucretsiz yani guvenilir ve iyi dokumanlari olan ornekler. Ordan ornegin bir LAMP stack i tek tikla yukleyip sonra bu instance da laraveli kolay ca yukleyebilirsin. Hem azurun hem AWS in ucretsiz bir kullanim seviyesi mevcut, uygulamaniz bu sinirlari gecemedigi surece 1 seneye kadar , hic bir odemede yapmak zorunda kalmiyorsunuz. Ozellikle gelistirme surecinde cok iyi bir imkan.
AWS uygulama magazasi :
Ornek AWS Nginx stack
Yada azure icin ;
Azure ornekleri
yukledikden sonra, yapmaniz gereken seyler az cok daha onceki surecle ayni, dosya transferi icin FTP yada SSH le baglanip laraveli kurmak , bir kacda domain ayari vs yapmak. zaten dokumanlarda mevcut.
AWS ve Azure gibi komple sistemler icin son bir sey daha soylemekte fayda var, bu sistemlerin hem kendi urettikleri hizmet ve servisleri, hemde baskalarinin bu sistemler icin urettikleri diger servis ve hizmetleri uygulamaniza cok hizli ve kolay bir sekilde dahil etme imkaniniz var.
3- Hemen hizlica baslayim ve cok da karisik olmasin diyorsaniz ,
Digital ocean yada openshift kullanmakda dogru alternatifler. Ben , digital ocean i Laravel / PHP icin kullanmadim , sadece Node.js icin kullanmistim. ama openshift i tavisye edebilirim.
Son olarak, Mumkunse , AWS e biraz zaman ayirin. Bu proje icin olmazsa bile ilerisi icin .
Uzun oldu farkindayim ama size ve diger arkadaslara faydasi olur diye biraz detayli anlatmaya calistim. uzun suredir bu konulari turkce konusup yazmadigim icin, yazi da anlatim bozukluklari da olabilir.
Insallah faydali olmustur.
(Klavyemde turkce karakter olmadigi ici okumakda biraz zorluk cekebilirsiniz.)