[vz-dev] Erlang/OTP
heinz, haeberle
kheinz57 at gmx.de
Fri Dec 31 07:30:49 CET 2010
Hallo Zusammen,
Justin hat mich drauf aufmerksam gemacht, dass Erlang/OTP auf dieser
Liste aufgetaucht ist.
Da ich auch sowas in Richtung Volkszähler gebastelt habe, hier ein paar
Anmerkungen dazu:
Mein Aufbau:
- Ferraris Zähler mit ELV IR Reflexlichtschrankenabtastung
- ethersex auf pollin Net IO per watchcat an DSL-Router
(- zuvor habe ich ein embedded Linux board dazu benutzt. Siehe Quellcode
github)
- erlang web und datenbank server auf einem vServer (€2.49 mtl)
- Kurven ankucken per jQuery.Flot im Browser
Allerdings habe ich aktuell keine lauffähige Hardware im Keller. Die hat
einen Haus-Umbau nicht überlebt.
Über ca. 4 Monate ist es aber recht stabil gelaufen. Da muss ich auch
den ethersex Leuten danken. Echt klasse projekt!
Gründe für meinen Aufbau:
- Erlang lernen
- jQuery/flot lernen
- Testen: funktioniert die IR Geschichte
- Stromverbrauchsdaten niemandem weitergeben (weder an EnBW noch an
google...)
Der existierende code würde ich als ersten Sprint (im Sinne von SCRUM)
sehen. Ein sogenannter funktionierender Durchstich. Mehr ist es nicht.
Was auf jeden Fall noch notwendig wäre ist:
- Verwaltung einer Hirarchie (n Zähler an n Häusrern/Objekten von n
Benutzern)
- Datenkonzentration: je älter Daten werden um so mehr Messwerte werden
zu einem zusammengefasst.
- Zoom im Plot
- Datenschutz: Wo gibt es Schwachstellen, dass jemand die Daten
missbrauchen kann sollte es im grösseren Stil verwendet werden (für den
Fall, dass es einen volkszähler hoster geben sollte ;-))
- Für die IR Geschichte (so sie überhaupt noch eine Daseinsberechtigung
hat) einen automatischen Abgleich
So jetzt noch ein bisschen Senf zum Thema Erlang/OTP von meiner Seite:
Ich kann nicht sagen ob Erlang für das Projekt die beste Lösung ist.
Dazu fehlt mir in diesem Umfeld die Erfahrung. ASP.net, Ruby on Rails
(und all dessen Nachahmer), LAMP usw. bieten sicher ein recht
fruchtbares und stabiles Umfeld. Allerdings gewinne ich so langsam den
Eindruck, dass manche dieser Biester unhandlich werden. (Hier komme ich
gewöhnlich mit dem Thema DSL = domainen spezifischer sprachen, aber das
ist ein anderes Thema ;-)).
Wenn man aber mehr den Forschungs (=Spieltrieb)-Gedanken hinzunimmt ist
es sicher eine interessante Alternative:
Anstelle MNESIA (orginal name war Amnesia, was aber für eine datenbank
ein denkbar schlechter Name ist!) könnte man DETS als key value store
einsetzen. Ob es allerdings sinnvoll ist....?
Ich glaube Skalierbarkeit ist hier kein so grosses Thema, da die Daten
unterschiedlicher Zähler im Wesentlichen unabhängig voneinander sind.
Und ein Zähler nicht sehr viele Daten liefert.
Ausfallsicherheit ist dabei auch kein sehr wichtiges Thema, ich denke
die Messgeräte müssen sowieso Daten puffern wenn sie diese nicht
abliefern können. Ob dies also am Server oder an der Internetverbindung
liegt ist Jacke wie Hose.
Aber eines bietet Erlang auf jeden Fall: Ein stabiles und erprobtes
System um die Technik von Morgen zu erproben! Als da wäre:
- kommunikation statt shared memory (keine race conditions! Und damit
die 1000 cores nicht nur an der semaphore warten)
- leichtgewichtiges Prozessmodell (damit die 1000 cores in Zukunft auch
was zu tun haben)
- funktional statt imperativ (optimierbar für die 1000 cores;-) und
besser testbar da ohne Seiteneffekte)
- pattern matching (spart ernorm code, vor allem bei den URL's usw)
- ausdruckstark (der komplette Servercode ist ohne die Verwendung von
externen libs und mit Kommentaren 380 Zeilen lang)
- es ist einfacher fehlertolerante Systeme zu bauen (sagt Joe zumindest.
siehe - oder besser höre - den podcast unten)
- dynamisch typisierte Sprache (ist im Web ein bewährtes Konzept)
Fazit:
- wer es nehmen will soll es tun, aber bitte niemand Erlang aufzwingen.
Es ist ANDERS und damit muss man umgehen wollen.
- Im Sinne der Privatheit der Daten ist es sicher kontraproduktiv auf
Erlang zu setzen. Hier bietet ein PHP/MySQL Umfeld sicherlich einen
unschlagbaren Preisvorteil.
Für eine echte plug und play Lösung - wie sie der Elektriker von nebenan
benötigen würde - ist dies allerdings auch nicht ausreichend.
- aber warum nicht mehrere Implementierungen machen welche auf der API
Ebene kompatibel sind? Also ich denke mein web Front Ende als auch das
NetIO würden bei einem PHP/MySQL Server nichts wesentliches bemerken.
Hat oft sogar den Vorteil, dass die Schnittstellen sinnvoll abgestimmt
und definiert werden. Und dies trägt gewöhnlich zur Stabilität und
Flexibilität am meisten bei.
Links:
- http://www.se-radio.net/2008/03/episode-89-joe-armstrong-on-erlang
- https://github.com/kheinz57
Gruessle und guten Rutsch
Heinz
P.S.: Soviel Senf! Ich hoffe es wird niemand schlecht dabei. Naja, Wurst
;-)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://volkszaehler.org/pipermail/volkszaehler-dev/attachments/20101231/adb2b092/attachment.html>
More information about the volkszaehler-dev
mailing list