Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Erlang Web Scalable & Reliable web framework ErlLounge, Kraków Lipiec 2009 (wersja rozszerzona dla czytelników off-line;))

Podobne prezentacje


Prezentacja na temat: "Erlang Web Scalable & Reliable web framework ErlLounge, Kraków Lipiec 2009 (wersja rozszerzona dla czytelników off-line;))"— Zapis prezentacji:

1 Erlang Web Scalable & Reliable web framework ErlLounge, Kraków Lipiec 2009 (wersja rozszerzona dla czytelników off-line;))

2 Dziś Dlaczego? Dlaczego? Kto? Kto? Co? Co? Jak? Jak? Co dalej? Co dalej? Jak zacząć? Jak zacząć?

3 Dlaczego? Naturalny frontend dla systemów napisanych w Erlang/OTP Naturalny frontend dla systemów napisanych w Erlang/OTP Wsparcie dla skalowalności w każdej warstwie: Wsparcie dla skalowalności w każdej warstwie: HTTP servers: Yaws and INETS… HTTP servers: Yaws and INETS… Cache i dystrybucja sesji Cache i dystrybucja sesji Databases: Mnesia, CouchDB… Databases: Mnesia, CouchDB… Zarządzanie kodem (Buildability, Integrity) Zarządzanie kodem (Buildability, Integrity) Paradygmat MVC Paradygmat MVC Nie ma Erlanga w templatach HTML Nie ma Erlanga w templatach HTML Rozszerzalność (plugins) Rozszerzalność (plugins)

4 Kto? ETC ETC SourceForge SourceForge BitBucket BitBucket

5 Jak to działa? Przetwarzanie requestu z serwera HTTP Przetwarzanie requestu z serwera HTTP Przetwarzanie danych Przetwarzanie danych Rozwijanie dynamicznych danych w templatach (za pomocą wpartów lub DTL) Rozwijanie dynamicznych danych w templatach (za pomocą wpartów lub DTL)

6 OUT IN

7 OUT Dispatcher Dispatcher – Przyjazne URL na bazie regexpów Controllers, Docroot, Templates Controllers, Docroot, Templates – Dostępne za pomocą reguł dispatchera {rodzaj, URL pattern, {moduł, funkcja}}. {rodzaj, URL pattern, {moduł, funkcja}}. {dynamic, "^/index.html$", {main, home}}. {dynamic, "^/index.html$", {main, home}}. {dynamic, delegate, "^/user", "config/dispatcher/user.conf"}. {dynamic, delegate, "^/user", "config/dispatcher/user.conf"}. {static, "^/about$", "about.html"}. {static, "^/about$", "about.html"}. {static, "^style.css$", enoent}. {static, "^style.css$", enoent}.

8 OUT Templates Templates – Zgodne z XHTML – Budowane przez wtpl Wparts Wparts – Dynamiczne znaczniki Wtypes Wtypes – Formatowanie wg. typu

9 OUT Form builder Form builder – Generowane na podstawie typów Caching Caching – Binarna postać stron i18n i18n – Tłumaczenia – Wiele języków config/languages/pl.conf file: {"pass", "Hasło"}. template: template:

10 IN Request dictionary & sesja Request dictionary & sesja – Podręczna pamięć o długości życia requestu wpart:fget("post", "form_input"), wpart:fget("post", "form_input"), wpart:fget("session", "username"), wpart:fget("session", "username"), wpart:fset("node", node()) wpart:fset("node", node()) And then in your template: And then in your template: Wtypes Wtypes - automatyczna walidacja

11 IN Dataflow Dataflow - Funkcyjne szeregowanie przetwarzania requestu Annotations Annotations – Meta opis dataflowu Distribution Distribution – Dwupoziomowa architektura – każdy z poziomów rozproszony horyzontalnie e-Components e-Components – Mechanizm rozszerzeń i wtyczek (paypal, e_backup)

12 Annotations Meta-language kontrolowania realizacji requestu Meta-language kontrolowania realizacji requestu Definiują funkcje przed i po właściwym kontrolerze Definiują funkcje przed i po właściwym kontrolerze – Autoryzacja – Walidacja danych wejsciowych Przykładowe zastosowania po zwroceniu tokenu dla servera Przykładowe zastosowania po zwroceniu tokenu dla servera – Invalidacja zawartości cache – Asynchroniczne (względem requestu) operacje np. na dysku lub w logach.

13 Annotations -module(my_utils).-export([logme/4]).-include_lib("eptic/include/e_annotation.hrl").?BEFORE. logme(AnnArgs, Mod, Fun, ControllerArgs) -> io:format("~s~n", [AnnArgs]), io:format("~s~n", [AnnArgs]), {proceed, ControllerArgs}. {proceed, ControllerArgs}. -module(controller). -export([my_fun/0]). […] ?LOGME("Calling my_fun"). my_fun() -> wpart:fget("post", "id"), […]

14 Budowanie formularzy Forularze z defaultowymi wartosciami (edycja) Forularze z defaultowymi wartosciami (edycja) Szkielet formularza oparty na: Szkielet formularza oparty na: HTML table - HTML table - Paragraph - Paragraph - List - List - Div - Div -

15 Formularze Reprezentacja typów I formularzy za pomocą recordów Reprezentacja typów I formularzy za pomocą recordów article.hrl article.hrl -record(article, { id, id, text, text, hide hide }). }). -record(article_types, { id = {integer, […]}, id = {integer, […]}, title = {string, […]}, title = {string, […]}, hide = {enum, […]} hide = {enum, […]} }). }). templates/article.html

16 Caching Caching – realizacja kontrolera, action caching Caching – realizacja kontrolera, action caching {dynamic, "^/blog/list", {blog, list}, [{cache, persistent]}. {dynamic, "^/blog/list", {blog, list}, [{cache, persistent]}. Cache – strony statyczne Cache – strony statyczne {static, "^/faq$", "doc/faq.html", [{cache, normal}]}. {static, "^/faq$", "doc/faq.html", [{cache, normal}]}. Cache – template scope Cache – template scope SOME CONTENT SOME CONTENT

17 Cache - Invalidacja regexp regexp Precyzyjne działanie za pomocą anotacji Precyzyjne działanie za pomocą anotacji?INVALIDATE(["^/blog/list"]). update_blog() -> [update your database here...] [update your database here...] {template, "blog.html"}. {template, "blog.html"}.?INVALIDATE_GROUPS(["menus"]). update_menu() -> [update your database here...] [update your database here...] {template, "blog.html"}. {template, "blog.html"}.

18 Distribution Front End Front End – HTTP server – Dispatcher – Cache tables – Static content Back End Back End – Invalidator – Controllers – Templates – Database

19 Stress testing One machine for Erlang Web application and one for Tsung One machine for Erlang Web application and one for Tsung – Intel Core 2 Due 2.4 GHz – 3 GB DDR2 RAM – Erlang R12-5, no hipe – Suse 11 Application implemented with Application implemented with – INETS or Yaws 1.80 – Mnesia as database – dispatcher, template inheritance – Erlang Web cache or memcached (through merle)

20 Stress testing Erlang Web cache Erlang Web cache Inets server Inets server Tsung (HTTP 1.1 connections) Tsung (HTTP 1.1 connections) – 1500 pages / sec Memcached through merle Memcached through merle Inets server Inets server Tsung (HTTP 1.1 connections) Tsung (HTTP 1.1 connections) – 1000 pages / sec

21 Plugins bin/e_component.erl list - lists all the e_components bin/e_component.erl list - lists all the e_components bin/e_component.erl search Keyword bin/e_component.erl search Keyword bin/e_component.erl details Name bin/e_component.erl details Name bin/e_component.erl install Name bin/e_component.erl install Name bin/e_component.erl path Path install Name bin/e_component.erl path Path install Name

22 Przykłady erlang-consulting.com erlang-consulting.com

23 Przykłady umbria-rentals.com umbria-rentals.com

24 Przykłady erlang-consulting.com erlang-consulting.com umbria-rentals.com umbria-rentals.com protest-project.eu protest-project.eu

25 Przykłady erlang-consulting.com erlang-consulting.com umbria-rentals.com umbria-rentals.com protest-project.eu protest-project.eu erlang-web.org erlang-web.org

26 Przykłady erlang-consulting.com erlang-consulting.com umbria-rentals.com umbria-rentals.com protest-project.eu protest-project.eu erlang-web.org erlang-web.org erlang-factory.com erlang-factory.com

27 Zasoby Projekt: (przykładowe tworzenie aplikacji krok po kroku) Projekt: (przykładowe tworzenie aplikacji krok po kroku) Wiki: Wiki: Ropozytorium Ropozytorium

28 Pytania

29 Więcej -> Dziękuję


Pobierz ppt "Erlang Web Scalable & Reliable web framework ErlLounge, Kraków Lipiec 2009 (wersja rozszerzona dla czytelników off-line;))"

Podobne prezentacje


Reklamy Google