You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
AWS Bulut Projesi Raporu, AWS servislerine neden ihtiyaç olunduğunu, AWS servislerini kullanarak oluşturulmuş bir bulut sisteminin nasıl çalıştığını, ne gibi gereksinimlerin olduğunu, hangi aşamalardan geçildiğini detaylı şekilde açıklayarak kullanıcıların kullanım kolaylığı elde etmesi için hazırlanmıştır.
AWS (Amazon Web Services) nedir?
Amazon Web Servisleri, Amazon tarafından hizmete sunulmuş, isteğe bağlı bulut bilişim servis modelleri (IaaS,PaaS,SaaS) ve uygulama programlama arayüzleri (API) gibi servisleri sağlayan bir bulut servisidir. Temmuz 2002 tarihinde kullanıma sunulmuş olup, kullandıkça öde prensibiyle bireysel kullanıcılara, kurumsal şirketlere bulut bilişim hizmetleri tesis etmektedir. Ayrıca çeşitli temel altyapı hizmetleri ve dağıtılmış bilgi işlem altyapı hizmetleri sağlamaktadır. AWS teknolojisi dünya genelinde sunucu çiftliklerine dağıtılarak kullanıma sürülür. Abonelik modellerine göre seçilen donanım, işletim sistemi, kullanım miktarı, veri depolama, veri gizliliği ve güvenliği opsiyonlarına göre fiyatlandırma vardır.
Amazon Web Servisleri nasıl kullanılır?
Amazon web servisleri, aws.amazon.com üzerinden ücretsiz kaydolunarak kullanılabilir. Ek 1 de gözüktüğü gibi geçerli bir e-posta adresi ve oluşturacağınız kullanıcı adı ile kullanıma başlanabilir.
Ek 1
Kaydolduktan sonra giriş kısmında bulunan Console Home sekmesinden son kullandığınız servisleri, elde ettiğiniz gelirleri görüntüleyebilir, arama kısmından kullanacağınız servislere erişebilirsiniz. Ayrıca Ek 2’de görüldüğü gibi Welcome to AWS kısmından AWS kullanımıyla ilgili başlangıç seviyesinde bilgilere erişerek hızlıca kullanıma başlayabilirsiniz.
Ek 2
AWS ile Kendi Bulut Sisteminizi oluşturma
Amazon Web Servisleri ile kendi bulut sisteminizi oluşturmanız için AWS’ in bazı servislerini kullanmanız gerekmektedir. Temel olarak 5 ayrı servis kullanacağımız projede, öncelikli olarak bu servislerin ne olduğunu, kendi içlerinde nasıl gereklilikleri olduğu ve nasıl kullanıldıklarını ele alacağız. Bu 5 servis şu şekildedir: AWS Amplify, API Gateway, Lambda, IAM (Identity and Access Management) ve DynamoDB.
Bulut Projesi’nin Mimarisi
Bulut Projesini oluştururken dikkat edilmesi gereken en önemli hususlardan biri kullanılacak servislerin birbirileriyle olan entegrasyonu ve çalışma sistemlerindeki devamlılığı sağlayan mimarilerdir. Projemizde oluşturulan web sitesi için gerekli olan servislerin birbirleriyle olan ilişkileri Şekil 1’deki gibidir. Tüm bu servislerin doğru çalışması için birbirleriyle olan bağlantılar ve ne için gerekli oldukları ileriki bölümlerde detaylıca ele alınacaktır.
Şekil 1
AWS Amplify
AWS Amplify, ön uç web ve mobil geliştiricilerinin, kullanım örnekleri geliştikçe AWS hizmetlerinin genişliğinden yararlanma esnekliğiyle AWS üzerinde tam yığın uygulamalarını kolayca oluşturmasına, göndermesine ve barındırmasına olanak tanıyan eksiksiz bir çözümdür. Bulut uzmanlığı gerektirmeden kendi web servislerinizi, mobil uygulamalarınızı kolayca kullanmaya olanak tanır. Projemizde bir web sitesi üzerinden işlem yapacağımızı düşünürsek, web sitesi kaynak kodlarını AWS Amplify’ a yükleyerek kullanıma başlanabilir.
Ek 3
Ek 3’te bulunan New App kısmından Host Web App seçilerek projenizin kaynak kodu için açılan sekmeden hangi yolla kaynak kodlarınızı yükleyeceğinizi seçmeniz gerekir. (Hosting Page)
Hosting Page
GitHub üzerinden yüklemeyi seçtiğimizi varsayarsak aktif olarak bulunan bir GitHub hesabını AWS ile eş zamanlayarak projenizi GitHub üzerinden yükleyebilirsiniz. Herhangi bir git sağlayıcısı kullanmak istemezseniz Deploy without Git provider seçeneğiyle kaynak kodlarınızı zipleyerek ya da bilgisayarınızdan dosya halinde sürükleyerek yükleme yapabilirsiniz.
Yükleme tamamlandıktan sonra projeniz App kısmında Ek 4’teki gibi gözükmelidir.
Ek 4
Domain kısmındaki linkte kaynak kodlarıyla (HTML,CSS,Javascript) oluşturmuş olduğunuz web sitesinin kendisi bulunmaktadır. (Ek 5.)
Ek 5
Bir sonraki adımda Lambda servisini kullanarak web sitesi için gerekli olacak fonksiyonları kullanıma hazır hale getireceğiz.
Lambda
AWS Lambda, sunucu tedarik etmeden veya yönetmeden neredeyse her tür uygulama veya arka uç hizmeti için kod çalıştırmanıza olanak tanıyan, sunucusuz, olaya dayalı bir işlem hizmetidir. Lambda'yı 200'ün üzerinde AWS hizmeti ve hizmet olarak yazılım (SaaS) uygulamasından tetikleyebilir ve yalnızca kullandığınız kadar ödeyebilirsiniz. Lambda’ nın projedeki temel kullanımı, kullanıcının girdiği kullanıcı adı ve şifreyi, içerisine eklediğimiz fonksiyon sayesinde bilgilerin alınmasına olanak tanır. Kullanım adımlarına gelirsek, arama kısmına Lambda yazarak servis arayüzünde bulunan Create Function seçeceğiyle fonksiyon oluşturulur. Ek 6' da görüldüğü şekilde ayarlar yapılır.
Ek 6
Runtime kısmında Lambda fonksiyonunu yazarken kullanacağınız programlama dili seçilir. Projeye göre Python 3.9 seçilmiştir. Diğer ayarlara dokunmadan fonksiyon oluşturulur. Yeni açılacak sayfada alt tarafta bulunan Code kısmına gelerek kullanıcının girdiği verileri eşleyen ve DynamoDB ile bağlantıları sağlayacak kodlar fonksiyon için yazılır. (Ek 7). Kod yazıldıktan sonra üst kısımda bulunan Deploy kullanılarak fonksiyon yüklenir. Test seçeneği kullanılarak alt kısımda bulunan JSON dosyası ile fonksiyonun çalışıp çalışmadığı test edilir. (Ek 8.) Bütün bu aşamalar tamamlandıktan sonra Lambda fonksiyonunu çağırması için bir API Gateway oluşturulur.
Ek 7
Ek 8
API Gateway
Application Programming Interface (API), bir yazılımın başka bir yazılımla tanımlanmış işlevlerinin kullanılabilmesi için oluşturulmuştur. Projede web sitesinde istemci ile sunucu arasındaki iletişim için kullanılmaktadır. Amazon API Gateway ise, yazılım geliştiriciler tarafından istenen ölçekte API yayımlanmasını, API’lerin izlenmesini, bakımının yapılmasını, güvenliğinin sağlanmasını ve çalıştırılmasını mümkün kılan, tam olarak yönetilen bir hizmettir. API’leri uygun ölçekte güvenli ve güvenilir bir şekilde çalıştırmak için gereken tüm kaçınılmaz ağır yüklerin üstesinden gelen bir kullandıkça öde hizmetidir. Amazon API Gateway’i kullanmak için servisi AWS üzerinden açmak gerekmektedir. Açtıktan sonra Create API seçilir. Ardından REST API (Public) seçilir. Ardından açılan sayfada Ek 9 da görüldüğü şekilde ayarlamalar yapılır.
Ek 9
Daha sonrasında oluşturulan API içerisinden Create Method seçilir ve POST metodu oluşturulur. (Ek 10.) Tüm bu aşamalardan sonra Ek 11’deki şema elde edilir. Bu işlemlerin ardından Actions kısmından Enable CORS seçeneğindeki adımlar tamamlanır. Bunun ardından Deploy API seçilerek bir Stages oluşturulur.
Ek 10
Ek 11
Oluşturulan Stages AWS tarafından oluşturulmuş bir URL barındırmaktadır. (Ek 12.)
Ek 12
Oluşturulan bu URL sizin API Gateway’inizi oluşturmaktadır. Amplify ile API Gateway servislerini birbirleriyle etkileşime sokmak için bu Invoke URL kullanılmaktadır. Kaynak kodumuzda script kısmında Ek 13’teki gibi Invoke URL kullanılarak Amplify ile API Gateway servisleri bağlanır.
Ek 13
DynamoDB
Amazon DynamoDB, her ölçekte yüksek performanslı uygulamaları çalıştırmak için tasarlanmış, tam olarak yönetilen, sunucusuz, anahtar-değer NoSQL veri tabanıdır. DynamoDB; yerleşik güvenlik, sürekli yedeklemeler, otomatikleştirilmiş çok Bölgeli çoğaltma, bellek içi önbelleğe alma, içeri ve dışarı veri aktarma araçları sunar. DynamoDB servisine giderek, Create Table komutuyla DynamoDB oluşturulur. Bu sayede Lambda fonksiyonundan sonra oluşan veriler DynamoDB ile veri tabanında depolanır. Bunun yapılması için IAM üzerinden gerekli izinlerin ve erişimin sağlanması için DynamoDB ile oluşturulan Amazon Resource Name (ARN) kopyalanır (Ek 14) ve gerekli konfigürasyonlar için kullanılır.
Ek 14
IAM (Identity and Access Management)
IAM ile ayrıntılı izinler belirleyerek kimin neye erişebileceğini tanımlarsınız. IAM daha sonra, her istek için bu izinleri uygular. Erişim varsayılan olarak reddedilir ve yalnızca izinlerde "İzin Ver" komutu varsa erişim sunulur. Bulut projesinde gerekli izinlerin sağlanabilmesi için Lambda servisi ile Configurations kısmına gelinir. Ardından sol tarafta bulunan Permissions seçeneğine tıklanarak Execution Role seçeneğine gidilir. Burada açılan sayfa ile Add Permission ardından Create Inline Policy seçeneğiyle JSON dosyası güncellenir. (Ek 15) JSON kodunda yer alan Resource kısmına DynamoDB ile oluşturulan ARN yapıştırılır. Bu sayede DynamoDB için gerekli izinler sağlanmış olur.
Ek 15
Tüm bu adımların ardından Amplify üzerinden web sitesini çalıştırarak kullanıcı adı ve parola girilir. (Ek 16)
Ek 16
DynamoDB servisiyle Explore Items seçilerek girilen şifre ve kullanıcı adı veri tabanına kaydolmuş olur. (Ek 17)
Ek 17
Tüm bu adımların ardından web sitesi kullanılarak oluşturulmuş Bulut Projesi tamamlanmış olur. AWS servislerini kullanarak bulut hizmet modeli olarak PaaS (Platform as a Service) ve SaaS (Software as a Service) modellerini kullanarak AWS bizim için arka planda sunucu, orta katman, ağ iletişimi, depolama gibi kısımları halleder. Buna ek olarak kendi yazdığımız kaynak kodlarıyla uygulama kısmını kendimiz yaptık. Büyük kolaylık sağlayan bu bulut sistemi sayesinde projemizi çalıştırmak için sanal bir ortam elde ettik.