Bloğa geri dön

Web Evrimi: CGI'dan Websockets'e (ve bulut altyapınızı daha iyi izlemenize nasıl yardımcı olacağı)

Web Evrimi: CGI'dan Websockets'e (ve bulut altyapınızı daha iyi izlemenize nasıl yardımcı olacağı)

Son birkaç yılda, websocket'ler tüm modern web uygulamalarında az çok standart bir bileşen haline geldi, peki ama neden böyle ve buraya nasıl geldik? Daha da önemlisi, websocket'ler bulut altyapınızı daha etkili bir şekilde izlemenize nasıl yardımcı olabilir?

Bu konunun teknik doğası gereği, detaylara çok derinlemesine dalmak mümkündür. Ancak konuları ‘nispeten üst düzeyde’ tutmaya ve bulut altyapısı kullanıcılarımıza sağladığı faydalara odaklanmaya çalışacağım.

İşleri yapmanın eski yolu

Web'in ilk günlerinde her şey statikti. Bir sunucuyla etkileşime girmeniz gerekirse (statik bir sayfayı işlemekten öte), bir tür CGI betiği çalıştırmanız gerekirdi. Bunun tipik bir örneği, bir e-posta listesine kaydolmak gibi bir şeydi. E-posta adresinizi girip 'gönder'e basardınız, ardından verileri işleyen ayrı bir sayfa görürdünüz. Bu da girdiyi alan ve sunucuda işleyen bir betikti.

PHP Logo
90'lara gelindiğinde, sunucu tarafı betik yazımı önemli ölçüde gelişmişti. Teknoloji, basit görevleri yürütmekten tamamen dinamik sayfalar oluşturmaya evrilmişti. PHP gibi programlama dilleri ve mod_perl gibi daha gelişmiş sunucu tarafı teknolojileri, çok daha sofistike web programlamayı mümkün kıldı. Bu teknolojiler önemli olsa da, yine de yükleme sırasında sayfa oluşturulması konsepti etrafında şekillenmişti. Bir kez yüklendikten sonra, içeriği yenilemek için tüm sayfayı yeniden yüklemek gerekiyordu.

Web geliştikçe, 2000'lerin AJAX/Web 2.0 dönemine girdik ve web sayfaları çok daha dinamik ve duyarlı hale geldi. Artık ekrandaki içeriği güncellemek için sayfayı yeniden yüklemeniz gerekmiyordu. Tek yapmanız gereken bazı JavaScript eylemlerini tetiklemekti. Birçok AJAX sayfası hala PHP ile destekleniyordu, ancak istemci tarafı JavaScript’in kullanıma sunulmasıyla daha dinamik hale getirilebildi.

AJAX ile Tanışma

AJAX'ın kullanıma sunulmasıyla birlikte, sunucu ve istemci arasındaki sürekli iletişim giderek daha önemli hale geldi. Belirli bir sayfadaki tek bir kullanıcıdan aniden önemli miktarda API çağrısı üretilebiliyordu. Bunu bir 'çekme' (pull) yöntemiyle yapıyorduk; yani istemci, belirli bir aralıkta (veya bir eyleme bağlı olarak) sunucudan güncellemeler talep ediyordu.

2010’lu yıllara girdiğimizde, web sayfalarının tamamen ön uç (HTML/JavaScript/CSS) ve arka uç (Ruby on Rails, Django vb.) olarak ikiye ayrılması yaygındı ve bunlar genellikle farklı sunucularda barındırılıyordu. Ön ucun arka uçla iletişim kurma yolu bir API aracılığıylaydı. Ön uç az çok statikti. Bu eğilimle birlikte, sunucuya API çağrıları yapmak önemli bir darboğaz haline geldi. Sunucudan on farklı şey çekmeniz gerekiyorsa, bu genellikle her biri önemli bir ek yük ve gecikme taşıyan on farklı API çağrısı yapmanız gerektiği anlamına geliyordu.

Modern yol

HTML5 LogoBu gecikme ve ek yük sorununu çözmek için, HTML5'in bir parçası olarak websocket'ler tanıtıldı ve tüm modern tarayıcılarda uygulandı. Geleneksel 'çekme' (pull) yaklaşımının aksine (yani istemcinin sunucudan değişiklikleri istemesi), bir websocket, adından da anlaşılacağı gibi, sunucunun değişiklikleri istemciye 'itebildiği' (push) bir sokettir. Dolayısıyla, herhangi bir değişiklik yoksa, herhangi bir iletişime de gerek yoktur. Ayrıca, istemci bağlantı açıp kapatmanın getirdiği ek yük olmadan doğrudan sunucuyla iletişim kurabildiğinden, uygulama çok daha duyarlı hale gelir.

Kendi web uygulamamız tam olarak bu şekilde inşa edilmiştir. Gerçek uygulama, API'ye bir websocket bağlantısı açan statik bir sayfadır. Bu soket açıldıktan sonra, web uygulaması sunucudan değişikliklerle ilgili bildirimler alabilir. Komutları hala RESTful API'ye gönderiyoruz, ancak bildirimleri websocket kullanarak sunucudan istemciye iletiyoruz.

Sadece web sayfaları için değil

Bir websocket kullanarak güncellemeleri almanın en belirgin yolu bir tarayıcı aracılığıyla olsa da, başka durumlar da mevcuttur. Belki de mimarinizdeki değişiklikleri izleyen ve buna bağlı olarak eylemleri tetikleyen bir araç yazıyorsunuzdur. Bu durumda, websocket'imizi kullanarak uygulamanızı önemli ölçüde hızlandırabilirsiniz.

Python Kütüphanemizde, pycloudsigma, websocket'ler için yerleşik desteğe sahibiz. Hatta bunu sadece birkaç satır kodla websocket aktivitelerini izlemek için nasıl kullanabileceğinizi gösteren basit bir örneğimiz bile var. İşte monitor_websocket_activity.py dosyasının, web uygulamasındaki kullanıcı girişinin tetiklediği eylemleri izlemesine dair hızlı bir demosu.
Hizmetlerimiz hakkında daha fazla bilgi için Özelliklerimize göz atın.

author

Viktor Petersson

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.