Rozpoczynamy nowy projekt i wdrażamy przy tworzeniu przez nas korporacje chmurę typu openstack (patrz http://www.openstack.org/ ). Projekt jest narzędziem bezpieczeństwa dla naszej korporacji. Obecnie prowadzimy setki dedykowanych serwerów dla narzędzi bezpieczeństwa i przenosimy je do instancji openstack w naszych korporacjach.
Inne projekty w mojej firmie używają obecnie erlang w kilku aplikacjach serwera rozproszonego, a inne pytania / odpowiedzi wskazują, że erlang jest używany w kilku popularnych usługach w chmurze. Próbuję przekonać innych do rozważenia, gdzie może to mieć zastosowanie w naszym projekcie.
Jakie są mocne strony Erlanga w zakresie programowania w chmurze? Gdzie są obszary, w których szczególnie zaleca się stosowanie Erlang?
źródło
Odpowiedzi:
Oprócz faktu, że Erlang został specjalnie opracowany do pracy w sytuacjach współbieżnych / równoległych / rozproszonych, dwie główne techniki, które wykorzystuje, aby to umożliwić, to:
Bez skutków ubocznych:
Oznacza to, że jeśli dasz funkcji kawałek danych, który chcesz wykonać, nie będzie to miało wpływu, z wyjątkiem bardzo ścisłych przypadków, na cokolwiek innego w systemie / uruchomionym procesie. Oznacza to, że jeśli wykonasz funkcję 300 razy jednocześnie, żadne z tych 300 wykonań funkcji nie wpłynie na żadne inne.
Technika implementacji zapewniająca brak skutków ubocznych nazywa się „niezmiennością”, co z grubsza oznacza, że nie może być zmutowana (zmieniona). Oznacza to, że zaraz po utworzeniu zmiennej wartość tej zmiennej nie może być modyfikowana. Erlang implementuje to zachowanie za pomocą „pojedynczego przypisania”, więc po przypisaniu wartości do zmiennej nie można jej przypisać ponownie.
Zapewnia to, że żaden kod nie może przypadkowo zmienić wartości X powodującej wyścig, dlatego jest z natury bezpieczny dla wątków, a jednoczesne użycie staje się banalne. Jest to bardzo rzadkie zachowanie wśród języków oprogramowania i największy sposób, w jaki Erlang jest tak dobrze przystosowany do równoczesnego wykonywania.
Model aktora:
Jest to szczególny sposób modelowania, który pokazał, że upraszcza implementację przetwarzania równoległego i zarządzanie nim. Prosto z wikipedii (http://en.wikipedia.org/wiki/Actor_model):
źródło
Erlang jest szczególnie silny w obliczeniach równoległych / równoległych. W rzeczywistości został zaprojektowany pierwotnie w tym właśnie celu. Nie ma to nic wspólnego z chmurą, poza tym, że często wymagające aplikacji obliczenia są równoległe i wdrażane w instancjach „chmurowych”, aby ułatwić zwiększenie / zmniejszenie wydajności na żądanie.
Reszta to tylko marketing-talk.
źródło
Jednym z aspektów chmury, który różni się od tradycyjnych wdrożeń sprzętowych, jest łatwość, z którą można w razie potrzeby rozpędzać nowe instancje. Możliwość monitorowania innych węzłów i procesów w innych węzłach sprawia, że relatywnie proste jest budowanie wysoce dynamicznych systemów, które mogą dodawać lub usuwać VMS i zarządzać nimi w razie potrzeby.
Jest to szczególnie ważne, jeśli budujesz swój system za pomocą frameworka OTP (Open Telecom PLatform) erlanga, który zapewnia zarówno strukturę, jak i mechanizmy (drzewa superwizorów) do wspierania budowania całkiem skomplikowanych rzeczy przy znacznie mniejszym nakładzie pracy, niż można sobie wyobrazić. Erlang radzi sobie ze wszystkimi trudnymi bitami, więc nie musisz.
źródło