Blip technicznie, czyli inżynieria uzależnień...

Post on 15-Nov-2014

4.035 views 0 download

description

Prezentacja ze styczniowego Bootstrapa.

Transcript of Blip technicznie, czyli inżynieria uzależnień...

Blip technicznie, czyliInżynieria uzależnień

Co to jest ten blip?

blog na spidzie?

IRC 2.0?

kolejna FaJnA StRonKa?

Tak na początku myśląnowi użytkownicy.

A programiści,zwykle mówią...

Mylą się jednak srodze.Bo blip, to też:

Mylą się jednak srodze.

• SMS

• MMS

• GaduGadu

• Jabber (GTalk, SPIK, inne)

• API

• Widget

• naGłos

• naprawdę dynamiczne WWW

Bo blip, to też:

42%

24%

22%

2%10%

WWW GG Jabber SMS/MMS API

WWW to nie wszystko

Zacznijmy od nowa.

Programowanie w czasach zarazy.

Programowanie w czasach zarazy.

Osoby wrażliwe na piękno koduprosimy o zamknięcie oczu.

LAMP? nie, dziękuję.

• FreeBSD

• Lighttpd

• PostgreSQL (+Slony-I)

• Ruby + Rails

• one more thing..

LAMP? nie, dziękuję.

Python + ekg!

Twitter nie dawał rady, więc..

Użyliśmy ANSI C!

Maszyneria

Maszyneria

• “zapomniany” pecet, webrick:3000

• hetzner.de

• pożyczone maszyny z rsync’em

• nokia 6310 na strychu

A potem wszystko zaoraliśmy.no, prawie wszystko.

Architektura jest banalna.

DarklordWłada nami ciemny demon

Transporty to oddzielne wątki~# darklord_ctl list_services--- mms_transport: :thread_state: "#<Thread:0x2ba46d51fd78 sleep>" :uptime: 26h 55m 23sgadu_gadu_transport: :thread_state: "#<Thread:0x2ba46d591978 sleep>" :uptime: 26h 55m 23sjabber_transport: :thread_state: "#<Thread:0x2ba46d520520 sleep>" :uptime: 26h 55m 23ssms_transport: :thread_state: "#<Thread:0x2ba46d591298 sleep>" :uptime: 26h 55m 23sweb_service: :thread_state: nil :uptime: 26h 55m 23s

zarządzalne w biegu# darklord_ctl commands

commands

debug_start

debug_stop

list_services

service_restart

service_start

service_stop

stats

stop

raportujące usłużnie# darklord_ctl stats gadu_gadu_transport

--- !map:Statistics

:last_incoming_message_received: 1197378880

:inbound_messages_received: 1168

:event_disconnect_count: 4

:inbound_messages_flood_protected: 17

:updates_handled: 1148

:outbound_messages_handled: 12386

:verifications_handled: 20

:inbound_messages_handled: 1168

:last_outgoing_message_sent: 2007-12-11 14:14:53

:outbound_messages_failures: 1

:event_conn_failed_count: 653

MMS

MMS•Użytkownik wysyła na e-mail (m@blip.pl)•Wiadomość trafia na serwer SMTP•DarkLord pobiera za pomocą POP3•E-mail jest oczyszczany za pomocą MMS2R (do którego wykonaliśmy kontrybucję!)•Odczytujemy wysyłający numer, szukamy u nas•Wysyłamy przez API żądanie POST razem z załącznikami•Potwierdzamy przyjęcie MMSa SMSem i...

Donos trafia na blipa!

SMS

SMS

•Użytkownik wysyła SMS na nasz numer

•SMS trafia do modemu GSM

•Gammu w trybie SMSD spięte z MySQLem

•SMSowy sługa DarkLorda pobiera i..

Informacja z ulicy trafia prosto na blipa!

Jabber

Jabber

•Własny serwer ejabberd (niezależność, SRV)

•Biblioteka: xmpp4r

•Wątek jabber_transport działa jako klient

Gadu naGłos

Gadu naGłos

•Użytkownik dzwoni z telefonu lub Gadu

•WS z nagłosu pyta o to, czy chcemy słuchać?

•DarkLord decyduje czy ma czas na audiencję

•WS notyfikuje o nowej, pachnącej mp3

•DarkLord pobiera mp3 i przekazuje przez API

do Rails..

Wracam po szkolei dzwonię na blipa!

Jak to się robi?

Ruby + Rails

nginx

Czemu nginx?

Czemu nginx?

•Bardzo mały

•Duże możliwości konfiguracyjne

•Nieco szybszy niż Lighttpd

•Lepsze możliwości rewrite’owania URLi

•Stabilny, nie cieknie, świetny jako reverse-proxy

GlusterFS

Czemu GlusterFS?

Czemu GlusterFS?•Część GNU Clustering Platform (FS, HPC, EP)

•Agregacja wielu źródeł danych w jeden FS

•“Skalowalność ponad Petabajty”

•Różne schedulery, brak metadanych, moduły!

•Niezależny od sprzętu i systemu.

•Prosta konfiguracja

•FUSE

CruiseControl.rb

RCov - badanie pokrycie kodu testami

BDD - specyfikacja zamiast testów

User- should add http:// to url when missing- should not add http:// to url when already present- should find users from GaduGadu contact list- should not track anyone through im when no im configuration- should send email invitations

PYTANIA?

K THX BAI

Zbigniew Sobieckizbigniew@sobiecki.name