Takip et

Giriş: Web Servislerinin Önemi ve Mülakatlarda Yeri

Giriş: Web Servislerinin Önemi ve Mülakatlarda Yeri Günümüz yazılım dünyasında, uygulamaların birbirleriyle sorunsuz bir şekilde iletiş

Giriş: Web Servislerinin Önemi ve Mülakatlarda Yeri

Günümüz yazılım dünyasında, uygulamaların birbirleriyle sorunsuz bir şekilde iletişim kurabilmesi hayati önem taşımaktadır. Bu iletişimi sağlayan temel mekanizmalardan biri de web servisleridir. Dağıtık sistemler, mikro servis mimarileri, mobil uygulamalar ve kurumsal entegrasyonlar gibi birçok alanda web servisleri vazgeçilmez bir role sahiptir. Bu nedenle, yazılım geliştirici mülakatlarında web servisleri, özellikle de SOAP ve RESTful mimarileri hakkında bilgi sahibi olmak, adayların teknik yetkinliğini gösteren kritik bir faktördür.

Bu rehberde, SOAP ve RESTful web servislerinin temel prensiplerini, avantajlarını, dezavantajlarını ve mülakatlarda sıkça sorulan soruları ele alacağız. Amacımız, hem teorik bilgiyi pekiştirmek hem de pratik mülakat senaryolarına hazırlık yapmanızı sağlamaktır.

Web Servis Temelleri ve İletişim Protokolleri

Web servisleri, farklı platformlarda ve farklı programlama dillerinde yazılmış uygulamaların ağ üzerinden birbirleriyle iletişim kurmasını sağlayan standartlaştırılmış yöntemlerdir. Bu servisler, genellikle bir istemcinin (client) bir sunucuya (server) istek göndermesi ve sunucunun bu isteği işleyerek bir yanıt döndürmesi prensibiyle çalışır.

Veri Formatları ve İletişim

Web servisleri, veri alışverişi için çeşitli formatlar kullanabilir. En yaygın olanları:

  • XML (Extensible Markup Language): Özellikle eski ve kurumsal sistemlerde yaygın olarak kullanılır. Yapılandırılmış veriyi hiyerarşik bir şekilde temsil eder.
  • JSON (JavaScript Object Notation): Hafif, okunması kolay ve web uygulamalarında (özellikle RESTful servislerde) en çok tercih edilen veri formatıdır.

İletişim genellikle HTTP (Hypertext Transfer Protocol) üzerinden gerçekleşir, ancak SOAP gibi bazı servisler SMTP, JMS gibi farklı taşıma protokollerini de kullanabilir.

SOAP (Simple Object Access Protocol) Detayları ve Mülakat Soruları

SOAP, dağıtık ortamlarda bilgi alışverişi için tasarlanmış XML tabanlı bir mesajlaşma protokolüdür. Genellikle kurumsal düzeydeki uygulamalar ve karmaşık entegrasyonlar için tercih edilir.

SOAP’un Temel Özellikleri ve Bileşenleri

  • XML Tabanlı: Tüm SOAP mesajları XML formatındadır. Bu, mesajların daha verbose (ayrıntılı) olmasına neden olur.
  • Protokol Bağımsızlığı: HTTP’nin yanı sıra SMTP, FTP, JMS gibi farklı taşıma protokolleri üzerinden de çalışabilir.
  • WSDL (Web Services Description Language): Bir SOAP servisinin nasıl kullanılacağını (hangi metotları sunduğu, hangi parametreleri aldığı, hangi dönüş tiplerini kullandığı vb.) açıklayan XML tabanlı bir dildir. Bir servis için bir “sözleşme” görevi görür.
  • ACID Uyumluluğu: Dağıtık işlemler ve güvenli mesajlaşma için güçlü destek sunar.
  • WS-Security: Mesaj düzeyinde güvenlik (şifreleme, imzalama, kimlik doğrulama) sağlamak için bir dizi standart sunar.

SOAP Mesaj Yapısı

Bir SOAP mesajı temelde üç ana bölümden oluşur:

  1. Envelope (Zarf): Mesajın kök elementi olup, mesajın bir SOAP mesajı olduğunu belirtir.
  2. Header (Başlık): İsteğe bağlıdır. Kimlik doğrulama, işlem bilgileri gibi uygulama veya protokol ile ilgili meta verileri taşır.
  3. Body (Gövde): Mesajın ana içeriğini, yani çağrılacak metot parametrelerini veya metodun dönüş değerini içerir.
  4. Fault (Hata): Hata durumunda, hata kodunu, mesajını ve detaylarını içeren isteğe bağlı bir bölümdür.

Örnek SOAP İsteği (XML):



   
   
      
         12345
      
   

SOAP’un Avantajları ve Dezavantajları

  • Avantajları:
    • ACID uyumluluğu ve güçlü işlem desteği.
    • WS-Security gibi yerleşik güvenlik standartları.
    • WSDL sayesinde sıkı sözleşme ve otomatik kod üretimi.
    • Protokol bağımsızlığı.
    • Kurumsal düzeyde çözümler için uygun.
  • Dezavantajları:
    • XML tabanlı olduğu için daha karmaşık ve verbose mesajlar.
    • Daha fazla ağ trafiği ve işleme yükü.
    • Geliştirme süreci REST’e göre daha yavaş ve karmaşık olabilir.
    • Daha az esnek.

Mülakat Soruları: SOAP

  1. SOAP nedir ve ne amaçla kullanılır?

    Yanıt: SOAP, dağıtık ortamlarda bilgi alışverişi için tasarlanmış XML tabanlı bir mesajlaşma protokolüdür. Genellikle kurumsal entegrasyonlar, finansal işlemler gibi yüksek güvenlik, güvenilirlik ve işlem bütünlüğü gerektiren senaryolarda kullanılır.

  2. WSDL nedir ve neden önemlidir?

    Yanıt: WSDL (Web Services Description Language), bir SOAP web servisinin nasıl çağrılacağını (hangi metotları sunduğunu, parametrelerini, dönüş tiplerini vb.) açıklayan XML tabanlı bir dildir. Servis ile istemci arasında bir “sözleşme” görevi görür ve istemcilerin servisi otomatik olarak keşfetmesini ve entegre etmesini sağlar.

  3. SOAP mesaj yapısını açıklayın.

    Yanıt: Bir SOAP mesajı bir Envelope (zarf) ile başlar. Envelope içinde isteğe bağlı Header (başlık) ve zorunlu Body (gövde) bulunur. Header, meta verileri (güvenlik bilgileri gibi) taşırken, Body asıl mesaj içeriğini (metot çağrısı veya yanıtı) içerir. Hata durumları için isteğe bağlı Fault (hata) bölümü de olabilir.

  4. SOAP kullanmanın avantajları ve dezavantajları nelerdir?

    Yanıt: Avantajları arasında güçlü güvenlik (WS-Security), işlem bütünlüğü (ACID), resmi bir sözleşme (WSDL) ve protokol bağımsızlığı sayılabilir. Dezavantajları ise XML’den dolayı karmaşıklık ve verbosity, daha fazla ağ yükü ve geliştirme zorluğudur.

RESTful (Representational State Transfer) Web Servisleri ve Mülakat Soruları

REST, World Wide Web’in temel mimari prensiplerini kullanan bir yazılım mimarisi stilidir. SOAP’un aksine bir protokol değil, belirli kısıtlamalar ve prensipler bütünüdür. Genellikle mobil uygulamalar, tek sayfa uygulamaları (SPA) ve mikro servis mimarileri için tercih edilir.

REST’in Temel Mimari Prensipleri (Kısıtlamaları)

Bir API’nin “RESTful” olabilmesi için belirli prensiplere uyması gerekir:

  • Client-Server (İstemci-Sunucu): İstemci ve sunucu birbirinden bağımsızdır. İstemci kullanıcı arayüzünü ve sunucu veri depolamasını ve iş mantığını yönetir.
  • Stateless (Durumsuz): Her istek, sunucu tarafından işlenmesi için gerekli tüm bilgiyi içermelidir. Sunucu, istemcinin önceki isteklerinden herhangi bir bağlam veya durum bilgisi saklamaz. Bu, ölçeklenebilirliği artırır.
  • Cacheable (Önbelleklenebilir): Yanıtlar önbelleğe alınabilir olarak işaretlenebilir, bu da performansı artırır ve sunucu yükünü azaltır.
  • Layered System (Katmanlı Sistem): İstemci, son sunucuya mı yoksa ara bir bileşene (proxy, load balancer) mı bağlı olduğunu bilmez. Bu, mimarinin esnekliğini ve ölçeklenebilirliğini artırır.
  • Uniform Interface (Tekdüzen Arayüz): En önemli prensiplerden biridir. Dört alt kısıtlaması vardır:
    1. Resource Identification in Requests (Kaynakların İsteklerde Tanımlanması): Kaynaklar URI (Uniform Resource Identifier) ile tanımlanır.
    2. Resource Manipulation through Representations (Temsiller Aracılığıyla Kaynak Manipülasyonu): İstemci, bir kaynağın temsilini (JSON veya XML gibi) alarak onu manipüle edebilir.
    3. Self-Descriptive Messages (Kendi Kendini Açıklayan Mesajlar): Her mesaj, nasıl işleneceği hakkında yeterli bilgiyi içermelidir (örn: HTTP metotları, durum kodları, içerik tipi).
    4. HATEOAS (Hypermedia as the Engine of Application State): Bir kaynağın temsilinde, ilgili diğer kaynaklara bağlantılar (hypermedia linkleri) bulunmalıdır. Bu, istemcinin API’yi dinamik olarak keşfetmesini sağlar.

HTTP Metotları ve Durum Kodları

RESTful servisler, kaynaklar üzerinde CRUD (Create, Read, Update, Delete) operasyonları için standart HTTP metotlarını kullanır:

  • GET: Bir kaynağı veya kaynak koleksiyonunu okumak için kullanılır. İdempotent’tir ve güvenlidir (sunucu durumunu değiştirmez).
  • POST: Yeni bir kaynak oluşturmak için kullanılır. Genellikle bir koleksiyona yeni bir öğe ekler. İdempotent değildir.
  • PUT: Mevcut bir kaynağı tamamen güncellemek veya yoksa oluşturmak için kullanılır. İdempotent’tir.
  • DELETE: Bir kaynağı silmek için kullanılır. İdempotent’tir.
  • PATCH: Mevcut bir kaynağın kısmi güncellemesi için kullanılır. Genellikle idempotent değildir.

HTTP Durum Kodları: API yanıtlarının sonucunu belirtmek için kullanılır (örn: 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error).

Örnek RESTful İstek ve Yanıt (JSON):


// GET Request
GET /api/products/123 HTTP/1.1
Host: example.com
Accept: application/json

// GET Response
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": "123",
    "name": "Akıllı Telefon X",
    "price": 999.99,
    "currency": "USD",
    "links": [
        {"rel": "self", "href": "/api/products/123"},
        {"rel": "category", "href": "/api/categories/electronics"}
    ]
}

// POST Request
POST /api/products HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "name": "Yeni Ürün Y",
    "price": 49.99,
    "currency": "EUR"
}

// POST Response
HTTP/1.1 201 Created
Location: /api/products/456
Content-Type: application/json

{
    "id": "456",
    "name": "Yeni Ürün Y",
    "price": 49.99,
    "currency": "EUR"
}

REST’in Avantajları ve Dezavantajları

  • Avantajları:
    • Hafif ve basit.
    • HTTP’yi doğrudan kullandığı için kolay anlaşılır ve uygulanabilir.
    • JSON gibi hafif veri formatları ile hızlı performans.
    • Ölçeklenebilirlik ve esneklik.
    • Mobil ve web uygulamaları için ideal.
    • Daha hızlı geliştirme süreci.
  • Dezavantajları:
    • SOAP’taki gibi yerleşik güvenlik veya işlem desteği yok (HTTP/TLS, OAuth gibi ek mekanizmalar gerekir).
    • Resmi bir sözleşme dili yok (OpenAPI/Swagger gibi araçlar kullanılır).
    • HATEOAS prensibini tam olarak uygulamak zor olabilir.

Mülakat Soruları: RESTful

  1. RESTful servis nedir ve temel prensipleri nelerdir?

    Yanıt: RESTful servis, Representational State Transfer (Temsili Durum Aktarımı) mimari stiline uyan bir web servisidir. Temel prensipleri; istemci-sunucu ayrımı, durumsuzluk (statelessness), önbelleklenebilirlik (cacheable), katmanlı sistem ve tekdüzen arayüzdür (uniform interface).

  2. Stateless (Durumsuz) ne demektir ve neden önemlidir?

    Yanıt: Stateless, sunucunun her istemci isteğini bağımsız olarak ele alması ve önceki isteklerden herhangi bir oturum veya durum bilgisi saklamaması anlamına gelir. Bu, sunucunun daha kolay ölçeklenmesini sağlar, çünkü herhangi bir sunucu isteği işleyebilir ve sunucu arızaları istemci deneyimini daha az etkiler.

  3. Idempotent nedir? Hangi HTTP metotları idempotenttir?

    Yanıt: Idempotent bir işlem, aynı isteğin birden çok kez tekrarlanmasının sistem üzerinde aynı etkiyi yaratmasıdır. Yani, ilk çağrıdan sonra yapılan ek çağrıların sistem durumunu değiştirmemesi veya aynı sonucu üretmesidir. GET, PUT ve DELETE metotları idempotenttir. POST metodu ise idempotent değildir çünkü her çağrıda yeni bir kaynak oluşturabilir.

  4. HATEOAS nedir ve neden önemlidir?

    Yanıt: HATEOAS (Hypermedia as the Engine of Application State), REST mimarisinin Uniform Interface kısıtlamasının bir parçasıdır. Bir kaynağın temsilinde, istemcinin uygulamanın durumunu değiştirmek için kullanabileceği bağlantılar (hypermedia linkleri) içermesi gerektiğini belirtir. Bu, istemcinin API’yi statik URL’lere bağlı kalmadan dinamik olarak keşfetmesini ve etkileşimde bulunmasını sağlar, böylece API evrildikçe istemci kodunun daha az değişmesini sağlar.

  5. REST API tasarımında dikkat edilmesi gerekenler nelerdir?

    Yanıt: Kaynakları açıkça tanımlayan URI’lar kullanmak, doğru HTTP metotlarını kullanmak, anlamlı HTTP durum kodları döndürmek, JSON gibi hafif veri formatlarını tercih etmek, sürümleme yapmak (örn: /v1/products), kimlik doğrulama ve yetkilendirme mekanizmaları kullanmak, ve HATEOAS prensibini mümkün olduğunca uygulamak.

SOAP vs. REST Karşılaştırması ve Pratik Senaryolar

SOAP ve REST arasındaki seçim, projenin gereksinimlerine ve bağlamına bağlıdır. İşte temel karşılaştırma ve ne zaman hangisinin tercih edileceğine dair pratik bilgiler:

Temel Farklar Tablosu

Özellik SOAP REST
Mimari Stil / Protokol Protokol Mimari Stil
Veri Formatı XML (zorunlu) JSON (tercih edilen), XML, HTML vb.
Taşıma Protokolü HTTP, SMTP, JMS, FTP vb. HTTP/HTTPS (zorunlu)
Sözleşme WSDL ile sıkı sözleşme Resmi sözleşme yok (OpenAPI/Swagger kullanılır)
Durum Yönetimi Durumlu olabilir Durumsuz (Stateless)
Güvenlik WS-Security (yerleşik) SSL/TLS, OAuth, JWT (ek mekanizmalar)
Performans Daha yavaş (XML verbosity) Daha hızlı (hafif veri, önbellekleme)
Karmaşıklık Daha karmaşık Daha basit

Ne Zaman Hangisini Kullanmalı?

  • SOAP Kullanım Senaryoları:
    • Kurumsal Uygulamalar: Büyük şirketlerdeki eski sistemlerle entegrasyon.
    • Finansal İşlemler: Bankacılık, sigortacılık gibi yüksek güvenlik, işlem bütünlüğü (ACID) ve güvenilirlik gerektiren alanlar.
    • Resmi Sözleşme Gereksinimi: Servislerin çok sıkı tanımlanması ve değiştirilemez bir sözleşmeye sahip olması gereken durumlar.
    • Dağıtık İşlemler: Birden fazla servisin tek bir işlemde birleştiği senaryolar.
  • REST Kullanım Senaryoları:
    • Mobil Uygulamalar: Hafif, hızlı ve düşük bant genişliği dostu olduğu için idealdir.
    • Web Uygulamaları (SPA’lar): React, Angular, Vue gibi framework’lerle geliştirilen uygulamalar.
    • Mikro Servisler: Bağımsız, küçük ve hızlı servislerin birbirleriyle iletişim kurması gereken mimariler.
    • Herkese Açık API’ler: Üçüncü taraf geliştiricilerin kolayca entegre olabilmesi için basit ve standart tabanlı API’ler.
    • IoT Cihazları: Kaynak kısıtlı cihazlar için hafif iletişim.

Pratik Bilgi: Yeni projelerin çoğu, esnekliği, basitliği ve performans avantajları nedeniyle RESTful mimariyi tercih etmektedir. Ancak, mevcut bir SOAP servisiyle entegrasyon yapmanız gerekiyorsa, SOAP’u anlamak ve kullanmak zorunlu hale gelir.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Web servisleri, modern yazılım mimarilerinin temel taşlarından biridir. SOAP ve RESTful mimarileri arasındaki farkları, avantajları ve dezavantajları anlamak, bir yazılım geliştiricinin yetenek setinde kritik bir beceridir. Mülakatlarda bu konulara hakim olmak, teknik bilginizi ve problem çözme yeteneğinizi sergilemenizi sağlayacaktır. Her iki yaklaşımın da kendine özgü kullanım durumları olduğunu unutmayın ve projenizin gereksinimlerine en uygun olanı seçmeye özen gösterin.

Sıkça Sorulan Sorular (SSS)

  1. Web servisleri neden kullanılır?

    Yanıt: Farklı platformlarda, farklı dillerde yazılmış uygulamaların ağ üzerinden güvenli, standart ve etkin bir şekilde iletişim kurmasını sağlamak, veri alışverişi yapmak ve dağıtık sistemler oluşturmak için kullanılır.

  2. SOAP ve REST arasındaki en temel fark nedir?

    Yanıt: SOAP bir protokoldür (XML tabanlı, sıkı kurallı), REST ise bir mimari stildir (HTTP tabanlı, kaynak odaklı, daha esnek).

  3. RESTful API’lerde durum yönetimi (state management) nasıl yapılır?

    Yanıt: RESTful API’ler doğası gereği durumsuzdur (stateless). Yani sunucu, istemcinin durumunu saklamaz. İstemci her istekte gerekli tüm bilgiyi (örn. kimlik doğrulama token’ı) göndermelidir. Oturum yönetimi genellikle istemci tarafında veya token tabanlı kimlik doğrulama (JWT gibi) ile yapılır.

  4. HTTP metotları arasında farklar nelerdir?

    Yanıt: GET (okuma), POST (oluşturma), PUT (tam güncelleme/oluşturma), DELETE (silme), PATCH (kısmi güncelleme). GET, PUT, DELETE idempotenttir, POST ve PATCH genellikle değildir.

  5. API Gateway nedir, ne işe yarar?

    Yanıt: API Gateway, istemcilerden gelen tüm API çağrılarını alan ve bunları uygun mikro servislere veya arka uç sistemlerine yönlendiren tek bir giriş noktasıdır. Kimlik doğrulama/yetkilendirme, hız sınırlama, izleme, loglama, yük dengeleme gibi işlevleri merkezi olarak yönetir. Özellikle mikro servis mimarilerinde çok yaygındır.

  6. Microservices mimarisinde hangi web servis tipi daha çok tercih edilir?

    Yanıt: Mikro servis mimarilerinde genellikle RESTful servisler tercih edilir. Bunun nedenleri; hafif olmaları, hızlı geliştirme sağlamaları, JSON gibi hafif veri formatlarını kullanmaları ve HTTP’nin standart özelliklerinden faydalanmalarıdır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.