azurecloud etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
azurecloud etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

30 Kasım 2015 Pazartesi

Azure Depolama Servisi(Azure Storage)

Bulut teknolojisi,verileri için ölçeklenebilirlik,süreklilik,güvenlik vs. gereken uygulamalar için depolama servisini sunabilmektedir.Azure Storage,"big data" konseptli bilimsel, finans,analiz ,media tarzı uygulamaların yüzlerce terabyte'lık verilerini işleme ve depolama imkanını sağlamakla birlikte küçük miktarda verilerin depolanmasınıda sağlamaktadır.Kullandığın kadar öde prensibiyle çalışmaktadır ve anlık olarak milyonlarca kullanıcı isteyine karşılık vermektedir. Azure Storage dunyanın heryerinden erişilebilir olmakla birlikde istekde bulunan uygulamanın tipinden ve çalıştığı platformdan bagımsız olarak hizmet vermektedir.Java,C++,.NET vs gibi proramlama dillerini desteklemektedir.Azure Storage hizmetini kulanabilmek  için bir Storage Account'a(depolama hesabı) sahip olunması gerekir.İki tür depolama bulunmaktadır.Standart Storage Account: Bu hesap türü Blob Storage,Table Storage,Queue Storage,File Storage depolama türlerini barındırır.

  • Blob Storage dosya verilerini depolar.Bir blob döküman,media dosyası vs. gibi herhangi bir metin tipi veya binary veri olabilir.Blob Storage bazen Object Storage olarakda bilinir.
  • Table Storage. yapılandırılmış veri kümelerini  depolar.Table storage hızlı geliştirme(development) ve büyük miktardaki veriye hızlı erişim sağlayan bir NoSQL anahtar özellikli depodur.
  • Queue Storage iş akışını işleme ve bulut hizmetlerinin bileşenleri  arasında güvenli mesajlaşma sağlar.
  • File Storage  standart SMB protokolünü kullanan uygulamalar için ortak paylaşımlı depolama sağlar. 
Premium Storage Account  üzerinde I\O yoğunluklu işyüklerinin çalıştırıldığı  sanal  makineler için yüksek performanslı ve düşük gecikmeli disk desteyi sağlamaktadır.Uygulamalarınızın VM disklerini bu depolama birimine taşıyarak performans ve hız artışı sağlanabilir.
Blob Storage'e daha yakından bakarak örnekle gösterelim.Örnekde bir web sayfası bizden resim dosyası alsın ve bu resim dosyasını  daha önceden oluşturduğumuz  storage hesabımıza yüklesin. Öncelikle Blob Storage;

  • Blob Storage,büyük miktarda yapılandırılmamış verilerinizi tuttabileceyiniz dünyanın heryerinden HTTP veya HTTPS protokolleri ile erişilebilir olan bir servisdir. Verilerinizi herkese açık veya özel olarak tutabilirsiniz
    Genel olarak aşağıdaki işlemler için kullanılmaktadır;
  • Resim veya dökümanların web browsera servis edilmesi.
  • Dosyaların dağıtık erişim için depolanması.
  • Video ve Audio iletimi ve diğer işlemler.
  • Blob Servisin yapısı resimdeki gibidir.
Account dan bahsetmişdik.Container farklı blob setlerini tutan bir yapıdır.Bütün bloblar containerda tutulmalıdır.Blob ise herhangi bir tipte ve boyutdadaki bir dosyadır.Yapıcağımız örnekte azure cloud üzerinde çalışan apache tomcat websitesi,azure cloudda çalışan bir storage var.Öncelikle Storage Accounta bağlanmak için bir bağlantı stringi tanımlamamız lazım.
String storageConnectionString ="DefaultEndpointsProtocol=http;" +"AccountName=hesap_adınız;" +"AccountKey=hesap_anahtarı";
Bunlara azure platformundan erişe bilirsiniz.Storage ile ilgili java üzerinden işlemler yapabilmemiz için Azure Storage SDK for Java ya ihtiyaç vardır.Jar dosyası  bu adresden indirilebilir.Bununla beraber daha birkaç .jar dosyalarını indirmemiz lazım.Bunlar ;

  • jackson-core-2.x.x.jar
  •  slf4j-api-1.x.x.jar
  • slf4j-simple-1.x.x.jar
     
    web sayfamızın ana sayfası index.jsp 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Dosya Yukleme Formu</title>
</head>
<body>
yuklemek icin dosya secin: <br />
<form action="main.jsp" method="post"
                        enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Yukle" />
</form>
</body>
</html>


Burada dosya seçildikden sonra sunucuda bir yere kaydedilicek ve sonra Blob storage e gönderilicek.Bunun için main.jsp
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.apache.commons.io.output.*" %>
<%@ page import="com.microsoft.azure.storage.* "%>
<%@ page import="com.microsoft.azure.storage.blob.*" %>

<%
   File file ;
   int maxFileSize = 5000 * 1024;
   int maxMemSize = 5000 * 1024;
   //yuklenecek olan dosyanın serverde tutulacak dizinini belirle
   String filePath = "d:\\home\\site\\wwwroot\\bin\\apache-tomcat-8.0.28\\data\\";
   String fileName="";
   // formdan gelen içeriyin tipini dogrula
   String contentType = request.getContentType();
   if ((contentType.indexOf("multipart/form-data") >= 0)){

      DiskFileItemFactory factory = new DiskFileItemFactory();
      // bellekte depolanacak maksimum boyut
      factory.setSizeThreshold(maxMemSize);
      // yuklemek için handler oluştur
      ServletFileUpload yukle = new ServletFileUpload(factory);
      // yuklemek için maximum doya boyutunu belirle
      yukle.setSizeMax( maxFileSize );
      try{ 
         // yuklenen dosyanın parametrelerini parse et.
         List fileItems = yukle.parseRequest(request);

         // yuklenen dosyaları işle
         Iterator i = fileItems.iterator();

         
         out.println("<title>JSP Dosya Yukleme</title>");  
         while ( i.hasNext () ) {
            FileItem fi = (FileItem)i.next();
            if ( !fi.isFormField () )  
            {
                  // dosyanın parametrelerini al
                  String fieldName = fi.getFieldName();
                  fileName = fi.getName();
                  boolean isInMemory = fi.isInMemory();
                  long sizeInBytes = fi.getSize();
                  // dosyanın ismini bul ve oluştur
                  if( fileName.lastIndexOf("\\") >= 0 ){
                    file = new File( filePath + 
                    fileName.substring( fileName.lastIndexOf("\\"))) ;
                  }else{
                    file = new File( filePath + 
                    fileName.substring(fileName.lastIndexOf("\\")+1)) ;
                  }
                  //dosyayı yaz
                  fi.write( file ) ;
                  out.println("Upload edilen dosya: " + filePath + 
                         fileName + "<br>");
            }
         }
      }catch(Exception ex) {
         System.out.println(ex);
      }
   }
   else{
      out.println("Dosya Yüklenemedi <br>"); 
   }
   
   //Bağlantı stringi oluştur
   String storageConnectionString ="DefaultEndpointsProtocol=http;" +"AccountName=hesap_adi;" +
           "AccountKey=hesap_anahtari";
   try{
      // storage hesabını elde et
      CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);

      // istemci oluştur
      CloudBlobClient istemciBlob = storageAccount.createCloudBlobClient();

      // container oluştur
      CloudBlobContainer container = istemciBlob.getContainerReference("resimler");
      container.createIfNotExists();
      //storage e yuklenecek olan resim için yolu belirle
      String YuklenmisfilePath = filePath+fileName;
      // blob oluştur.
      CloudBlockBlob blob = container.getBlockBlobReference(fileName);
      File dosya = new File(YuklenmisfilePath);
      //yükle
      blob.upload(new FileInputStream(dosya), dosya.length());
      out.println("Dosyayi Storage e Yukleme Basarili <br>");

      //resim yüklendiyse,resmin containerde olup olmadıgını goster
      int i=1;//blobları numaralandırmak için
      for (ListBlobItem blobItem : container.listBlobs()) {
             //blob veya sanal dizin oldgunu kontrol et,blob ise 
             if (blobItem instanceof CloudBlob) {
                 // uygun blob u oluştur.
                  CloudBlob blob1 = (CloudBlob) blobItem;
                  //container daki butun dosyalari listele
                  out.println(i+".blob:"+blob1.getName()+"<br>");
                  i++;
              }
          }
      }
      catch (Exception e)
      {
          out.println("Dosya Storage e yüklenemedi.... <br>");
      }
%>
Burada belirtmemiz gereken iki jar dosyası daha var,bu jarlar form üzerinden upload işlemi için gerekli doslardır.Bunlar;

  • commons-io- 2.x.jar
  • commons-fileupload-1.x.x.jar

  Uygulamanın kkodlari bunlardır.Bu kodlar jar dosyalarının classpath e eklenerek yerelde veya sunucu üzerinde çalıştırılabilir.Upload işlemi yapıldıkdan sonra uygulamanın çıktısı;

 Buradan  bu web uygulamasına erişebilinir.Aşağıdaki video da Azure platformu üzerinden Storage oluşturma ve buna erişim için gereken bilgilerin nasıl elde edileceği anlatılmaktadır.







15 Ekim 2015 Perşembe

Bulut Teknolojisi ve Sanallaştırma üzerine

Bulut Teknolojisi internet uzerinden veri depolama,veri işleme ve veri paylaşımını sağlayan bir hizmetler bütünüdür.Bu hizmetlerin en basit örneği internetin yaygınlaşmasından  bu yana kullanılan e-posta,ve domain hizmetleridir.Tabiki bu hizmetleri istenen halde kendimize ait bir sunucu bilgisayar alarak,kendi e-posta hizmeti,internet sitemizi bu sunucu uzerinde barındıra biliriz,ama bunun sonucunda sunucu bakımı,yönetimi ve sürekliliyi sağlama işi bize düşer,ve buyuk ihtimal aldıgımız sunucunun bütün kapasitesini kullanmıyacağımızdan maliyet bakımından zarar ederiz.Bu Bulut teknolojisi için en basit tanım olsa gerek,çünkü günümüzde iş dünyasi ihtiyaçlarının  en basit olanları bunlardır.Bildiyimiz gibi büyük kurumsal şirketler,bilimsel araştırma merkezleri,devlet daireleri ve başka kurumlarda kullanılan teknolojiler devasa ölçüde veriler işlerler.Örnek olarak Avrupa Nükleer Araştırma Merkezi(CERN)'in 2012 statistiklerine göre,araşatırmalar sonucunda  yılda 22 petabyte veri saklamaya ihtiyaç duyuluyor,bu verinin depolanması ve gerektiginde  pratik bir şekilde erişilebilmesi için dış kaynaklı Bulut Teknolojisine yönelmiştir.Dünyada bir çok teknoloji devi Bulut hizmeti vermektedir,bunların arasında en önde geleni ise Microsoft'dur.

Bulut hizmetini model olarak karşımıza aşağıdaki şekilde çıkmaktadır.
               
  • SaaS(Software as a Servise)
    Yazılım olarak servis sağlayan modelidir bulutun.Uzaktaki herhangi bir sanal makine uzerinde kendi yazılımlarınızı kura,veya mevcut yazılımları kullanabileceyimiz hizmet sunmaktadır.Mevcut  yazılımlara örnek olarak Outlook üzerinden kulllanılan  Microsoft Office uygulamasıdır.
  • PaaS(Platform as a Service)
    Bu model daha çok geliştiriciler içindir.İşletim sistemi ve bunun uzerinde çalışacak servisleri istediyiniz gibi kullanabilirsiniz,örnegin php ve mysql ile bir veritabanı uygulaması geliştirdiyinizde,local de bu platformları kurmadan online olarak yazılım geliştirebilirsiniz.
  • IaaS(Infrastructure as a Service)
    Bu model en temel hizmet modelidir.Burada bulut saglayıcıları,sanal veya fiziksel makinalar olarak         sunulur.
Sanallaştırma,bilgisayar işletim sitemi,bilgisayar ağ kaynağı yada depolama biriminin fiziksel hali yerine sanal bir sürümünü oluşturur.Örneğin bilgisayarınız ile bagımsız bir  bilgisayar gibi davranan bir sanal makine oluştura bilirsiniz,ve fiizksel makineniz uzerinde birden fazla işletim sistemi,normal işletim sistemi ile aynı anda çalışabilir.Sanallaştırmanın temel avantajı maliyeti azaltmasındadır.Örneğin birden fazla sunucu kullanılan bir işletme sunucu sanallaştırması kullanarak fiziksel sunucu sayısını azaltabilir ve böylece bakım ve güvenlik maliyetlerinide azaltmış olur.Sanallaştırma mevcut donanımınızdan faydalı şekilde yararlanmanıza imkan sağlar.Yeni bir bilgisayar ve ya sunucu almak yerine sahip oldugunuz donanımın kullanımını geliştirebilirsiniz.Sanallaştırma ve Bulut teknolojisi birbiriyle ilişkilidir.Her ikiside bilişim kaynaklarından en iyi şekilde yararlanarak altyapı maliyetlerini azaltmak üzere sunulan farklı yöntemleri temsil ederler.Bulut hizmetleri gerçek donanım tarafından sunulur gibi gözukselerde her durumda sanallaştırılımış donanımlar tarafından sunulur,yani sanallaştırma bulut'un ana bileşenidir.
Buradan Azure Cloud uzerinden sanal makine oluşturmayı görebilirsiniz.