7 listopada 2009

Pobujaj w chmurach z Python lub PHP przy pomocy libcloud

Cloud computing (przetwarzanie sieciowe w chmurze) odnosi się do wielu dziedzin informatyki i przez ostatnie kilka lat stał się elementem ofert wielu poważnych firm hostingowych. Efekt to wiele różnych znaczeń przetwarzania w chmurach i wiele różnych interfejsów programistycznych API. Jedno jest pewne są takie zastosowania, w których chmury obliczeniowe ratują przedsiębiorców.



Faktem jest, że takie korporacje jak Amazon,
Google, Microsoft od wielu lat przed pojawianiem się tematu wykorzystywały chmury lub tzw. gridy w swoich infrastrukturach sieciowych, lecz dziś mogą mocami obliczeniowymi cieszyć również klienci indywidualni.

Jako przykład praktyczny wykorzystam zlecenie jakie miałem okazję wykonać ostatnio. Klient potrzebował zaindeksować i otagować kilka gigabajtów danych dostarczonych w postaci plików tekstowych na DVD-ROM. Algorytm indeksacji nie jest tajny, więc wspomnę tylko, że danych źródłowych docelowy miał kilka tytułów, kilka opisów w różnych językach oraz powiązane atrybuty. Po krótkim reserchu okazało się, że na maszynie lokalnej oraz na dostępnym wirtualnym hostingu skrypty muszą działać dokładnie ok. tygodnia, aby przetworzyć wszystkie dane i utworzyć tabelę wyników. Uwzględniłem tutaj tabele wyników pośrednich dla optymalizacji oraz cachowanie często powtarzających się atrybutów w pamięci RAM.



Jak na złość zlecenie zostało zaplanowane na 5 dni i klient był nieugięty w terminie. Postanowiłem dać zarobić właścicielom chur obliczeniowych i skorzystałem z usługi Amazon. Jedyne co zrobiłem, to wypożyczyłem moc obliczeniową z bazą danych mysql i cachowaniem na 3 dni. Koszt był wystarczająco niski i udało się wykorzystując chmury uzyskać bardzo zadowalające wyniki. Co ciekawe rozliczałem się za megabajt transferu oraz czas procesowa w używaniu bazy danych mysql ;-) Polecam - na pewno nie stracicie, ale będzie to pozytywne zauroczenie mocami, jakimi dysponuje taka chmurka.
Aby móc efektywnie korzystać z serwerów wirtualizacji i zrobić pierwszy krok do korzystania z przetwarzania sieciowego, należy zoptymalizować sprzęt oraz oprogramowanie pod kątem zbalansowania poboru mocy oraz wydajności. Uzyskanie odpowiedniej równowagi eliminuje problem przeciążenia serwerów, a zasoby dla aplikacji i oprogramowania mogą być przydzielane w zależności od potrzeby, by zapewnić ich optymalne działanie.




Niniejszą wypowiedzią chciałbym skierować uwagę i odnotować istniejące,
zarazem promowane na rynku usługi i API upraszczające używanie chmur do minimum.
Skupić się warto na tym, że niektóre API obsługują wielu providerół chmur.
Oto lista providerów chmur, z którymi warto się zapoznać:

http://incubator.apache.org/libcloud/ - zestawienie wspieranych chur przez API

http://www.simplecloudapi.org/ http://www.simplecloudapi.org/api PHP class API http://www.simplecloudapi.org/api/simple-queue

http://deltacloud.org/ http://deltacloud.org/api.html

http://webhosting.pl/print/Zend.oferuje.deweloperom.PHP.interoperacyjnosc.dla.chmur

http://incubator.apache.org/libcloud/getting-started.html Python example





Materiały:

Matt Mullenweg o roli Open Source w technologii chmur

Dokument PDF na temat konstruowania chmur obliczeniowych

Cloud computing - MultiCore klucz do wirtualizowanych systemow

2 komentarze:

Anonimowy pisze...

Więcej szczegółów na temat HA (High Availability) na Amazon EC2 tutaj:

http://www.mysqlperformanceblog.com/2010/06/17/high-availability-for-mysql-on-amazon-ec2-part-1-intro/

http://www.mysqlperformanceblog.com/2010/06/29/high-availability-for-mysql-on-amazon-ec2-%e2%80%93-part-2-setting-up-the-initial-instances/

Anonimowy pisze...

Three key things to know about moving MySQL into the cloud.

http://www.mysqlperformanceblog.com/2009/07/13/what_problems_will_i_have_migrating_into_the_cloud/