Skip to main content

⚡ Yüksek Performanslı Web Uygulamaları: Julia ile Hızlı Geliştirme Rehberi


🎯 Bu Rehberde Ne Öğreneceksiniz?

Julia, özellikle bilimsel hesaplama ve veri analizi gibi yüksek performans gerektiren alanlarda öne çıkan modern bir programlama dilidir.
Bu rehberde, Julia'nın arka uç gücünü kullanarak etkileşimli web uygulamaları geliştirmenin iki farklı yöntemini öğreneceksiniz:

  • PlutoSliderServer: Kod yazmadan, not defteri tabanlı hızlı geliştirme.
  • HTMX + WebSockets: Daha fazla özelleştirme ve tam kontrol sunan HTML tabanlı yapı.

🧠 1. Julia: Performans, Basitlik ve Güç

Julia, sade sözdizimi ve gelişmiş veri yapılarıyla üst düzey bir dildir.
Benzersiz JIT (just-in-time) derleyicisi, yüksek seviyeli kodu anında makine komutuna dönüştürür.
Bu sayede C ve Fortran kadar hızlı, ama Python kadar kolay bir deneyim sunar.

Neden Julia?

  • 🚀 Gerçek zamanlı veri işlemede yüksek performans
  • 🧮 Bilimsel kütüphanelerle mükemmel entegrasyon
  • 💻 GPU desteğiyle paralel hesaplama
  • ✍️ Unicode sembollerle matematiksel yazım kolaylığı

🧩 2. Yöntem 1: PlutoSliderServer ile Hızlı Etkileşimli Uygulamalar

🧱 2.1 Kurulum ve Ortam Hazırlığı

Adım 1: Julia’yı Kurun

Resmi Julia sitesinden son sürümü indirin.
Julia 1.10 önerilir.

Adım 2: Proje Ortamı Oluşturun

Julia REPL’de ] tuşuna basarak Paket Moduna geçin:

activate /home/tr1-node01/julia-web-projesi

Bu komut, proje bağımlılıklarını ayrı bir ortamda tutar.

Adım 3: Pluto Paketini Ekleyin


add Pluto

💡 Bu komut, Pluto not defteri aracını indirir ve derler.

Adım 4: Pluto’yu Başlatın


using Pluto
Pluto.run()

Tarayıcınızda Pluto arayüzü otomatik olarak açılır.

💡 2.2 Etkileşimli Not Defteri Geliştirme

Yeni bir not defteri oluşturun ve PlutoUI paketini dahil edin:


using PlutoUI
@bind x Slider(1:10)
@bind y NumberField(5)
Markdown("Toplam: **$(x + y)**")

🎛️ Bu örnek, kaydırıcıyı oynattığınızda sonucu anında günceller.

🔒 2.3 Sunucu Yayını ve Güvenlik

Güvenlik Önerisi: Julia süreçlerini ana sistemden izole etmek için Docker veya systemd-nspawn konteynerleri kullanın.

Adım 1: PlutoSliderServer Kurulumu


add PlutoSliderServer

Adım 2: Reverse Proxy Ayarı (Apache)


ProxyRequests Off
ProxyPass "/etkilesimli/" "http://127.0.0.1:2345/" nocanon
ProxyPassReverse "/etkilesimli/" "http://127.0.0.1:2345/" nocanon

Bu ayarlar, /etkilesimli/ alt yoluna gelen trafiği PlutoSliderServer’a yönlendirir.

Adım 3: Kalıcı Sunucu Başlatma


using PlutoSliderServer
run_directory("/srv/web_apps/"; Export_offer_binder=false)

Bu komut, dizindeki tüm not defterlerini otomatik olarak yayına alır.


🌐 3. Yöntem 2: HTMX + WebSockets ile Özelleştirilmiş Web Uygulamaları

Pluto yeterince esnek gelmiyorsa, bu yöntemle HTML, HTMX ve WebSocket tabanlı etkileşimli web uygulamaları oluşturabilirsiniz.

⚙️ 3.1 Ön Uç (Frontend) Yapılandırması

HTML dosyanıza HTMX ve WebSocket uzantısını ekleyin:


<script src="/htmx.js"></script>
<script src="/ws.js"></script>

<input data-hx-ext="ws" data-ws-send
data-ws-connect="wss://rabisu.cloud/ws-app/"
type="range" name="s" min="1" max="10">
<p id='sonuc'></p>

Kullanıcı kaydırıcıyı değiştirince veri Julia sunucusuna gider ve sonuç anında güncellenir.

🧩 3.2 Arka Uç (Backend) İletişimi


using HTTP, JSON

WebSockets.listen("127.0.0.1", 8660) do ws
for msg in ws
d = JSON.parse(msg)["s"]
WebSockets.send(ws, "<p id='sonuc'>Seçilen: $d</p>")
end
end

💡 HTMX, gelen HTML parçacıklarını otomatik olarak sayfada doğru yere yerleştirir.

🖼️ 3.3 Görsel Verileri Base64 ile Gömmek


using Plots, Base64

p = plot(sin, 0, 2π, label="sin(x)")
io = IOBuffer()
show(io, MIME"image/png"(), p)
encoded = base64encode(take!(io))
WebSockets.send(ws, "<img src='data:image/png;base64,$encoded'>")

📈 Bu yöntemle grafik veya medya dosyalarını ekstra depolama gerektirmeden sunabilirsiniz.


🧰 4. Yayınlama (Deployment) Rehberi

Her uygulama için bağımsız bir Julia ortamı oluşturun.

Konteyner içinde systemd-run ile servis olarak başlatın.

Reverse proxy üzerinden HTTPS zorunluluğunu etkinleştirin.


systemd-run --unit=julia-webapp julia -e "using MyApp; startserver()"

❓ Sıkça Sorulan Sorular (SSS)

1. Julia web geliştirmeye uygun mu?

Evet. Julia, JIT derleyicisi ve çok çekirdekli hesaplama desteğiyle yüksek performanslı web uygulamaları için idealdir.

2. PlutoSliderServer mı yoksa HTMX mi?

PlutoSliderServer: Eğitim, prototipleme, demo amaçlı kullanın.

HTMX + WebSockets: Kurumsal, tam kontrol isteyen projeler için idealdir.

3. Neden Reverse Proxy kullanmalıyım?

Sunucunuzun gerçek portlarını gizler.

SSL/TLS (HTTPS) trafiğini yönetir.

Yük dengeleme ve önbellekleme avantajı sağlar.

4. Kullanıcı Julia koduna erişebilir mi?

Hayır. PlutoSliderServer, yalnızca etkileşimli bileşenleri çalıştırır. Kullanıcı keyfi kod yürütemez.

5. Julia’yı Rabisu Bulut üzerinde çalıştırabilir miyim?

Evet. Rabisu Bulut’un izole konteyner altyapısı, Julia uygulamaları için güvenli, yüksek performanslı bir çalışma ortamı sunar.


🏁 Sonuç

Julia, sadece bilimsel bir dil değil; artık web geliştiricilerinin de güçlü bir aracıdır. PlutoSliderServer ile hızlı prototipler, HTMX + WebSockets ile profesyonel sistemler oluşturabilirsiniz.

💡 Rabisu Bulut altyapısında Julia uygulamalarınızı barındırarak, hem güvenliği hem de performansı aynı anda elde edin.