SlideShare a Scribd company logo
1 of 25
Download to read offline
Erlang Web Çatıları
15 Ekim 2010
Özgür Web Günleri
Yeditepe Üniversitesi
Gokhan Boranalp
gokhan@zetaops.com
Joe Armstrong
Agner Krarup Erlang
●Birden fazla çekirdekli işlemcilerle hızlı çalışan
uygulama ihtiyacı.
●Hata toleranslı (fault-tolerant) ve kod değiştirme anında
servis dışı kalmayan uygulamalara olan dayanılmaz
arzu
●Yazılacak kod satırlarında ciddi azalma.
●Artan yük karşılama sorununda yüksek başarım
●Dağıtık hesaplama ihtiyaçları
●Dağıtık sistemlerde 1 numero! Bulutlar, bulutlarrr.
Neden Erlang?
Kod Neye Benziyor?
Ama Fakat Neden Erlang???
●Yüksek-seviye yapılar, (High-Level Constructs)
Örnek: TCP segmentlerinin decode edilmesi
decode(<< SourcePort:16, DestinationPort:16,
SequenceNumber:32,
AckNumber:32,
DataOffset:4, _Reserved:4,
Flags:8,WindowSize:16,
Checksum:16, UrgentPointer:16,
Payload/binary>>) when DataOffset>4 ...
●Bunu C ya da Java ile yapmayı düşünün :-)
●Pattern matching, kompleks veri yapılarından kolayca bilgi çekmek
●Bit sequence pattern matching, örneği yukarda
●Fonksiyonlar first-class datadır. Başka fonksiyonlarca çağrılabilir, değişkene gömülebilirler
●List comprehension, listeler üzerinde her türlü düzenleme, list filters, generators
➔Her Erlang prosesi kendi bellek alanında çalışır ve kendi heap ve stack'i vardır, proses
başına OS thread açılmaz,
➔Deadlock gibi sıkıntılardan kurtulmak için, prosesler birbirlerinin işine karışmazlar,
➔Prosesler, birbirleri arasında mesaj gönderme yoluyla iletişim kurarlar, mesaj herhangi bir
Erlang türü veri tipi olabilir,
➔Mesaj gönderimi asenkrondur, mesajı bir kere gönderdi mi, proses işine devam eder,
➔Mesajlar proses mail boxtan seçilerek getirilir, böylece gelip gelmedikleri konusunda
endişe edilmez. Bu sayede çok daha sağlam (robust) bir paralel çalışma elde edilir.
“area server” Prosesi şekillerin çevresini hesaplayıp istemciye gönderiyor.
* Erlang Programming, Francesco Cesarini and Simon Thompson, (sayfa 5)
Ölçeklenebilir, Güvenli ve Verimli Paralellik
●Hızlı ve ölçeklendirebilir paralel işlemler,
●Kaç adet birbirinden bağımsız proses olduğuna
bakılmaksızın, proses yaratma süreleri milisaniye
aralığına iner,
●Mesaj geçme sayesinde, aynı VM içinde, verinin bir
prosesin bellek alanından diğerine kopyalanması
milisaniyeler içinde olur.
Ölçeklenebilir, Güvenli ve Verimli Paralellik
Sağlamlık
●Prosesler birbirlerine bağlanıp durumları kontrol
edilebilir.
OTP middleware kütüphaneleri;
● İstisna izleme (exception monitoring)
● Hata düzeltme (error handling)
● Jenerik yapılar; sunucu, finite state machine, event
handlers
● Code profiling
● Unit tests
Dağıtık Hesaplama (Computation)
●Dağıtım modeli TCP/IP tabanlıdır,
●Sunucunuzun nerede olduğu farketmez, (location
transparency)
●Prosesler kolaylıkla bir sunucu kümesine dağıtılabilir,
Entegrasyon ve Açıklık
●C, Java, Ruby, Python, Perl, Lisp gibi diller Erlang ile
birlikte çalışabilir,
●C ve Java için yüksek seviye kütüphaneler
sayesinde eski (legacy) kodlar ya da ihtiyaç duyulan
uygulamalar, dağıtık Erlang noktalarında
çalıştırılabilir,
Pazarlamacılar İçin Neden Erlang???
●Aynı işi 100 sunucu yerine 10 sunucuda
yapabilirsiniz.
●Aynı iş için 120.000 satır kod yerine 40.000 satır kod
yazılır. Adam saat maliyetleri hayli aşağı düşer.
●Ölçeklendirme sorunu olan her projede uzun
zamanlı projelendirme maliyetlerini düşürür,
●Kritik uygulamalarda sistem hiç durdurulmadan
çalışabilirsiniz,
●Mevcut yazılım alt yapısı, ağır yük nedeniyle
kullanılamaz hale geldiyse mutlaka öneriniz,
●Kimsenin henüz bilmediği bir şey, hayli gizemli ve
karizmatik bir etki yaratabilir ;-)
Kimler Kullanıyor?
●Amazon, SimpleDB servisi
●Yahoo!, Delicious servisi
●Facebook chat servisi
●T-Mobile SMS ve yetkilendirme sistemi
●Motorola call processing ürünleri
●Ericsson GPRS ve 3G mobil ağları
●Goldman Sachs internal borsa sistemi
Meşhur Uygulamalar
●Wings 3D, model ve doku poligon örgüleri.
●Ejabberd (XMPP) tabanlı anlık mesaj sunucusu
●CouchDB “schema-less” dokuman-tabanlı veritabanı
●RabbitMQ, AMQP mesaj protokolü uyarlaması
Erlang Web Çatıları
●Erlang Web
●Nitrogen Web Framework
●Zotonic
●Chicago Boss
●Erylweb
Bileşenler
●Web Servers
● INETS
● YAWS
● Mochiweb
●Web Server Containers
● Simple Bridge
● EWGI
●REST Toolkit
● Webmachine
Nitrogen Web Framework
●Event driven
●AJAX
●Jquery
●Comet
●Özel template sistemi
●Data binding
●Mochiweb, YAWS ya da
INETS ile kullanılabilir
Nitrogen Web Framework
Erlang Web
●MVC
●XML to XHTML template engine
●ErlyDTL templates
●Wpart Templates
●AJAX desteği zayıf
●Comet özelliği yok
●Mnesia veya CouchDB bağlantısı
Zotonic
●Event driven AJAX
●MVC
●Jquery
●Web sockets ve Comet
●ErlyDTL Django templates
●PostgreSQL
●Mochiweb, Webmachine
Zotonic
●Ruby on Rails görünümlü Erlang
●MVC
●ErlyDTL Django templates
●PostgreSQL, MySQL, Tokyo Tyrant, Mnesia
●Modelden kod üretimi
●Mochiweb, Misultin, SimpleBridge
Chicago Boss
Karşılaştırma
Sorular
Kaynakça
Fun
●Epic Erlang Filmi: http://www.youtube.com/watch?v=uKfKtXYLG78
Erlang öğrenmek için
●http://learnyousomeerlang.com/
●http://www.erlang.org
Kitaplar
●Programming Erlang: Software for a Concurrent World http://www.pragprog.com/titles/jaerlang/programming-erlang
●Erlang Programming: http://oreilly.com/catalog/9780596518189
●Web Çatıları
●Zotonic: http://www.zotonic.com/
●Erlang Web: http://www.erlang-web.org/
●Nitrogen: http://nitrogenproject.com/
●Erylweb: http://www.erlyweb.org/
●Chicago Boss: http://www.chicagoboss.org
●gokhan@zetaops.com

More Related Content

Similar to Erlang web-frameworks

C# 5 Yeni özellikler
C# 5 Yeni özelliklerC# 5 Yeni özellikler
C# 5 Yeni özelliklerErkan BALABAN
 
Java, android ve arduino ile gömülü programlama
Java, android ve arduino ile gömülü programlamaJava, android ve arduino ile gömülü programlama
Java, android ve arduino ile gömülü programlamaborasayiner
 
Spring application framework
Spring application frameworkSpring application framework
Spring application frameworkKenan Sevindik
 
Terminel services yenilikleri web access remoteapp softgrid
Terminel services yenilikleri web access remoteapp softgridTerminel services yenilikleri web access remoteapp softgrid
Terminel services yenilikleri web access remoteapp softgridÇözümPARK
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı GözleyelimOguz Yarimtepe
 
Büyük Kamu Projelerinde PHP Kullanımı @ Phpİst 2013
Büyük Kamu Projelerinde PHP Kullanımı @ Phpİst 2013Büyük Kamu Projelerinde PHP Kullanımı @ Phpİst 2013
Büyük Kamu Projelerinde PHP Kullanımı @ Phpİst 2013Hüseyin Mert
 
Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Cihan Özhan
 
Serverless ile istegelsin
Serverless ile istegelsin Serverless ile istegelsin
Serverless ile istegelsin Ceri Tandogan
 
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - TürkçeApache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - TürkçeEmre Akış
 
Node js part 1 shared
Node js part 1 sharedNode js part 1 shared
Node js part 1 sharedEngin Yelgen
 
Bilgisayar Mimarisi 06, Feza BUZLUCA
Bilgisayar Mimarisi 06, Feza BUZLUCABilgisayar Mimarisi 06, Feza BUZLUCA
Bilgisayar Mimarisi 06, Feza BUZLUCAFeza BUZLUCA
 
CLR-IES-2512P_sartname.pdf
CLR-IES-2512P_sartname.pdfCLR-IES-2512P_sartname.pdf
CLR-IES-2512P_sartname.pdfYusuf Ölçer
 
Apache Spark : Genel Bir Bakış
Apache Spark : Genel Bir BakışApache Spark : Genel Bir Bakış
Apache Spark : Genel Bir BakışBurak KÖSE
 
Ceh ders not
Ceh ders notCeh ders not
Ceh ders notfaruk kan
 
Programlama Dilleri Tanıtım
Programlama Dilleri TanıtımProgramlama Dilleri Tanıtım
Programlama Dilleri TanıtımAtilla Özgür
 

Similar to Erlang web-frameworks (20)

C# 5 Yeni özellikler
C# 5 Yeni özelliklerC# 5 Yeni özellikler
C# 5 Yeni özellikler
 
Nmap & Hping
Nmap & HpingNmap & Hping
Nmap & Hping
 
Java, android ve arduino ile gömülü programlama
Java, android ve arduino ile gömülü programlamaJava, android ve arduino ile gömülü programlama
Java, android ve arduino ile gömülü programlama
 
Spring application framework
Spring application frameworkSpring application framework
Spring application framework
 
Terminel services yenilikleri web access remoteapp softgrid
Terminel services yenilikleri web access remoteapp softgridTerminel services yenilikleri web access remoteapp softgrid
Terminel services yenilikleri web access remoteapp softgrid
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı Gözleyelim
 
Büyük Kamu Projelerinde PHP Kullanımı @ Phpİst 2013
Büyük Kamu Projelerinde PHP Kullanımı @ Phpİst 2013Büyük Kamu Projelerinde PHP Kullanımı @ Phpİst 2013
Büyük Kamu Projelerinde PHP Kullanımı @ Phpİst 2013
 
Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)
 
Serverless ile istegelsin
Serverless ile istegelsin Serverless ile istegelsin
Serverless ile istegelsin
 
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - TürkçeApache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
Apache Kafka - Yüksek Performanslı Dağıtık Mesajlaşma Sistemi - Türkçe
 
C# Akademi 2005
C# Akademi 2005C# Akademi 2005
C# Akademi 2005
 
CERP 4.0 Sunum.pptx
CERP 4.0 Sunum.pptxCERP 4.0 Sunum.pptx
CERP 4.0 Sunum.pptx
 
Prtg Network Monitor
Prtg Network MonitorPrtg Network Monitor
Prtg Network Monitor
 
Node js part 1 shared
Node js part 1 sharedNode js part 1 shared
Node js part 1 shared
 
Bilgisayar Mimarisi 06, Feza BUZLUCA
Bilgisayar Mimarisi 06, Feza BUZLUCABilgisayar Mimarisi 06, Feza BUZLUCA
Bilgisayar Mimarisi 06, Feza BUZLUCA
 
CLR-IES-2512P_sartname.pdf
CLR-IES-2512P_sartname.pdfCLR-IES-2512P_sartname.pdf
CLR-IES-2512P_sartname.pdf
 
Apache Spark : Genel Bir Bakış
Apache Spark : Genel Bir BakışApache Spark : Genel Bir Bakış
Apache Spark : Genel Bir Bakış
 
Nmap el kitabi
Nmap el kitabiNmap el kitabi
Nmap el kitabi
 
Ceh ders not
Ceh ders notCeh ders not
Ceh ders not
 
Programlama Dilleri Tanıtım
Programlama Dilleri TanıtımProgramlama Dilleri Tanıtım
Programlama Dilleri Tanıtım
 

More from Gokhan Boranalp

Zetaops ZOPS presentation
Zetaops ZOPS presentationZetaops ZOPS presentation
Zetaops ZOPS presentationGokhan Boranalp
 
Google Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTEGoogle Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTEGokhan Boranalp
 
ZCloud Consensus on Hardware for Distributed Systems
ZCloud Consensus on Hardware for Distributed SystemsZCloud Consensus on Hardware for Distributed Systems
ZCloud Consensus on Hardware for Distributed SystemsGokhan Boranalp
 
Zops intelligent platform
Zops intelligent platformZops intelligent platform
Zops intelligent platformGokhan Boranalp
 
Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?Gokhan Boranalp
 
Buluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziBuluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziGokhan Boranalp
 
Acik Kaynak Kodlu Kurumsal Eposta Sistemleri
Acik Kaynak Kodlu Kurumsal Eposta SistemleriAcik Kaynak Kodlu Kurumsal Eposta Sistemleri
Acik Kaynak Kodlu Kurumsal Eposta SistemleriGokhan Boranalp
 

More from Gokhan Boranalp (11)

Zkernel
ZkernelZkernel
Zkernel
 
Zetaops ZOPS presentation
Zetaops ZOPS presentationZetaops ZOPS presentation
Zetaops ZOPS presentation
 
Gdg izmir kubernetes
Gdg izmir kubernetesGdg izmir kubernetes
Gdg izmir kubernetes
 
Google Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTEGoogle Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTE
 
ZCloud Consensus on Hardware for Distributed Systems
ZCloud Consensus on Hardware for Distributed SystemsZCloud Consensus on Hardware for Distributed Systems
ZCloud Consensus on Hardware for Distributed Systems
 
Zops intelligent platform
Zops intelligent platformZops intelligent platform
Zops intelligent platform
 
Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?
 
Buluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziBuluta Ilk Adım Analizi
Buluta Ilk Adım Analizi
 
Acik Kaynak Kodlu Kurumsal Eposta Sistemleri
Acik Kaynak Kodlu Kurumsal Eposta SistemleriAcik Kaynak Kodlu Kurumsal Eposta Sistemleri
Acik Kaynak Kodlu Kurumsal Eposta Sistemleri
 
erlang 101
erlang 101erlang 101
erlang 101
 
Git 101
Git 101Git 101
Git 101
 

Erlang web-frameworks

  • 1. Erlang Web Çatıları 15 Ekim 2010 Özgür Web Günleri Yeditepe Üniversitesi Gokhan Boranalp gokhan@zetaops.com
  • 3. ●Birden fazla çekirdekli işlemcilerle hızlı çalışan uygulama ihtiyacı. ●Hata toleranslı (fault-tolerant) ve kod değiştirme anında servis dışı kalmayan uygulamalara olan dayanılmaz arzu ●Yazılacak kod satırlarında ciddi azalma. ●Artan yük karşılama sorununda yüksek başarım ●Dağıtık hesaplama ihtiyaçları ●Dağıtık sistemlerde 1 numero! Bulutlar, bulutlarrr. Neden Erlang?
  • 5. Ama Fakat Neden Erlang??? ●Yüksek-seviye yapılar, (High-Level Constructs) Örnek: TCP segmentlerinin decode edilmesi decode(<< SourcePort:16, DestinationPort:16, SequenceNumber:32, AckNumber:32, DataOffset:4, _Reserved:4, Flags:8,WindowSize:16, Checksum:16, UrgentPointer:16, Payload/binary>>) when DataOffset>4 ... ●Bunu C ya da Java ile yapmayı düşünün :-) ●Pattern matching, kompleks veri yapılarından kolayca bilgi çekmek ●Bit sequence pattern matching, örneği yukarda ●Fonksiyonlar first-class datadır. Başka fonksiyonlarca çağrılabilir, değişkene gömülebilirler ●List comprehension, listeler üzerinde her türlü düzenleme, list filters, generators
  • 6. ➔Her Erlang prosesi kendi bellek alanında çalışır ve kendi heap ve stack'i vardır, proses başına OS thread açılmaz, ➔Deadlock gibi sıkıntılardan kurtulmak için, prosesler birbirlerinin işine karışmazlar, ➔Prosesler, birbirleri arasında mesaj gönderme yoluyla iletişim kurarlar, mesaj herhangi bir Erlang türü veri tipi olabilir, ➔Mesaj gönderimi asenkrondur, mesajı bir kere gönderdi mi, proses işine devam eder, ➔Mesajlar proses mail boxtan seçilerek getirilir, böylece gelip gelmedikleri konusunda endişe edilmez. Bu sayede çok daha sağlam (robust) bir paralel çalışma elde edilir. “area server” Prosesi şekillerin çevresini hesaplayıp istemciye gönderiyor. * Erlang Programming, Francesco Cesarini and Simon Thompson, (sayfa 5) Ölçeklenebilir, Güvenli ve Verimli Paralellik
  • 7. ●Hızlı ve ölçeklendirebilir paralel işlemler, ●Kaç adet birbirinden bağımsız proses olduğuna bakılmaksızın, proses yaratma süreleri milisaniye aralığına iner, ●Mesaj geçme sayesinde, aynı VM içinde, verinin bir prosesin bellek alanından diğerine kopyalanması milisaniyeler içinde olur. Ölçeklenebilir, Güvenli ve Verimli Paralellik
  • 8. Sağlamlık ●Prosesler birbirlerine bağlanıp durumları kontrol edilebilir. OTP middleware kütüphaneleri; ● İstisna izleme (exception monitoring) ● Hata düzeltme (error handling) ● Jenerik yapılar; sunucu, finite state machine, event handlers ● Code profiling ● Unit tests
  • 9. Dağıtık Hesaplama (Computation) ●Dağıtım modeli TCP/IP tabanlıdır, ●Sunucunuzun nerede olduğu farketmez, (location transparency) ●Prosesler kolaylıkla bir sunucu kümesine dağıtılabilir,
  • 10. Entegrasyon ve Açıklık ●C, Java, Ruby, Python, Perl, Lisp gibi diller Erlang ile birlikte çalışabilir, ●C ve Java için yüksek seviye kütüphaneler sayesinde eski (legacy) kodlar ya da ihtiyaç duyulan uygulamalar, dağıtık Erlang noktalarında çalıştırılabilir,
  • 11. Pazarlamacılar İçin Neden Erlang??? ●Aynı işi 100 sunucu yerine 10 sunucuda yapabilirsiniz. ●Aynı iş için 120.000 satır kod yerine 40.000 satır kod yazılır. Adam saat maliyetleri hayli aşağı düşer. ●Ölçeklendirme sorunu olan her projede uzun zamanlı projelendirme maliyetlerini düşürür, ●Kritik uygulamalarda sistem hiç durdurulmadan çalışabilirsiniz, ●Mevcut yazılım alt yapısı, ağır yük nedeniyle kullanılamaz hale geldiyse mutlaka öneriniz, ●Kimsenin henüz bilmediği bir şey, hayli gizemli ve karizmatik bir etki yaratabilir ;-)
  • 12. Kimler Kullanıyor? ●Amazon, SimpleDB servisi ●Yahoo!, Delicious servisi ●Facebook chat servisi ●T-Mobile SMS ve yetkilendirme sistemi ●Motorola call processing ürünleri ●Ericsson GPRS ve 3G mobil ağları ●Goldman Sachs internal borsa sistemi Meşhur Uygulamalar ●Wings 3D, model ve doku poligon örgüleri. ●Ejabberd (XMPP) tabanlı anlık mesaj sunucusu ●CouchDB “schema-less” dokuman-tabanlı veritabanı ●RabbitMQ, AMQP mesaj protokolü uyarlaması
  • 13.
  • 14. Erlang Web Çatıları ●Erlang Web ●Nitrogen Web Framework ●Zotonic ●Chicago Boss ●Erylweb
  • 15. Bileşenler ●Web Servers ● INETS ● YAWS ● Mochiweb ●Web Server Containers ● Simple Bridge ● EWGI ●REST Toolkit ● Webmachine
  • 17. ●Event driven ●AJAX ●Jquery ●Comet ●Özel template sistemi ●Data binding ●Mochiweb, YAWS ya da INETS ile kullanılabilir Nitrogen Web Framework
  • 18. Erlang Web ●MVC ●XML to XHTML template engine ●ErlyDTL templates ●Wpart Templates ●AJAX desteği zayıf ●Comet özelliği yok ●Mnesia veya CouchDB bağlantısı
  • 20. ●Event driven AJAX ●MVC ●Jquery ●Web sockets ve Comet ●ErlyDTL Django templates ●PostgreSQL ●Mochiweb, Webmachine Zotonic
  • 21. ●Ruby on Rails görünümlü Erlang ●MVC ●ErlyDTL Django templates ●PostgreSQL, MySQL, Tokyo Tyrant, Mnesia ●Modelden kod üretimi ●Mochiweb, Misultin, SimpleBridge Chicago Boss
  • 24. Kaynakça Fun ●Epic Erlang Filmi: http://www.youtube.com/watch?v=uKfKtXYLG78 Erlang öğrenmek için ●http://learnyousomeerlang.com/ ●http://www.erlang.org Kitaplar ●Programming Erlang: Software for a Concurrent World http://www.pragprog.com/titles/jaerlang/programming-erlang ●Erlang Programming: http://oreilly.com/catalog/9780596518189 ●Web Çatıları ●Zotonic: http://www.zotonic.com/ ●Erlang Web: http://www.erlang-web.org/ ●Nitrogen: http://nitrogenproject.com/ ●Erylweb: http://www.erlyweb.org/ ●Chicago Boss: http://www.chicagoboss.org