Google AppEngine vs Amazon EC2

Μέσα στις διακοπές του Πάσχα δούλεψα πολύ προσπαθώντας να μεταφέρω[1] το urlBorg στο Google AppEngine και νομίζω ότι πλέον έχω μία αρκετά καλή αντίληψη για το συγκεκριμένο περιβάλλον. Διαβάζοντας τα σχετικά άρθρα που έγραψα στο vrypan|net|log κάποιοι με ρώτησαν “γιατί μπαίνεις σε όλο αυτό τον κόπο και δεν χρησιμοποιείς το Amazon EC2“; Ορίστε λοιπόν μία σύγκριση των δύο.

Καταρχήν πρέπει να ξεκαθαρίσουμε ότι μιλάμε για δύο εντελώς διαφορετικά προϊόντα.

Το Amazon EC2 είναι ουσιαστικά virtual hardware. Αυτό σημαίνει ότι μπορεί κανείς να το χρησιμοποιήσει όπως ακριβώς θα έκανε με ένα (ή περισσότερους) dedicated servers. Μπορείς να ξεκινήσεις χρησιμοποιώντας ένα virtual server με χαμηλές προδιαγραφές ταχύτητας και πολύ εύκολα αν η εφαρμογή σου έχει επιτυχία να αναβαθμίσεις σε ένα μεγαλύτερο -και επειδή ακριβώς το hardware είναι virtual, η μετάβαση αυτή γίνεται απλά πληρώνοντας για περισσότερα resources. Μπορείς ακόμη πολύ εύκολα να “σηκώσεις” νέους servers, π.χ. να βάλεις την database να τρέχει σε ένα ξεχωριστό “μηχάνημα” κ.λ. Και αν μιλάμε για web sites, μπορείς καθώς μεγαλώνει η κίνηση στο site σου να προσθέτεις επιπλέον web servers, να έχεις 2 ή και περισσότερα μηχανήματα με db replication κ.λ. Όπως ακριβώς θα έκανε κανείς με dedicated servers, αλλά πολύ πιο εύκολα, σχετικά πιο φθηνά (έως πολύ πιο φθηνά) και με την σιγουριά που προσφέρει η υποδομή της Amazon.

Από την άλλη, το Google AppEngine είναι ένα εντελώς διαφορετικό περιβάλλον. Έχει πάρα πολλούς και σημαντικούς περιορισμούς. Η γλώσσα προγραμματισμού αυτή την στιγμή είναι αποκλειστικά Python (αν και λέγεται ότι θα ακολουθήσουν και άλλες στο μέλλον). Οι βιβλιοθήκες που είναι διαθέσιμες είναι περιορισμένες και δεν επιτρέπουν πράγματα όπως image manipulation και γενικά οποιαδήποτε library της python είναι compiled (π.χ. γραμμένη σε C). Επίσης, δεν μπορεί κανείς να έχει background processes. Το μεγαλύτερο όμως πρόβλημα είναι ότι για την αποθήκευση δεδομένων δεν χρησιμοποιείται μία RDBMS άλλα το “Google Datastore” που για όποιον έχει συνηθίσει να δουλεύει με RDBMS μοιάζει να είναι ανίκανο να κάνει ακόμη και τα πιο βασικά (π.χ. ένα SELECT SUM() ή ένα unique auto increment ID).

Η προσέγγιση του Google AppEngine είναι “ορίστε το περιβάλλον στο οποίο αναπτύσσουμε σαν Google τις εφαρμογές μας, αν θέλετε και μπορείτε, χρησιμοποιήστε το”. Οι περιορισμοί που βάζει προφανώς έχουν κάποιο λόγο: να μπορεί μία εφαρμογή να κάνει “άπειρο”[2] scale [3]. Η προσέγγιση αυτή έχει τα καλά της και τα κακά της. Το κακό είναι ότι μεταφέρει τα διάφορα προβλήματα κλίμακας στον developer (προβλήματα για τα οποία σε άλλες περιπτώσεις φροντίζει η “υποδομή”, όπως το OS, ο web server, η RDBMS). Από την άλλη, μία καλογραμμένη εφαρμογή δεν έχει τα προβλήματα κλίμακας που ακριβώς αυτή η “υποδομή” βάζει από κάποιο σημείο και μετά (π.χ. με ένα καλύτερο server και με λίγη προσοχή μπορεί όντως ένα τυπικό website να αντέξει την κίνηση όταν οι επισκέπτες από 1000/ημέρα γίνουν 100.000 την ημέρα, αλλά δεν θα βρείτε server που να μπορέσει να αντιμετωπίσει με τίποτα 1.000.000 επισκέπτες το δευτερόλεπτο, για αυτό και όσοι αντιμετωπίζουν τέτοια προβλήματα έχουν server farms, clusters κ.λ.)

Κατά την γνώμη μου η επιλογή μεταξύ των δύο ξεκινάει με το ερώτημα “πόσο μεγάλη θα μπορούσε να γίνει η εφαρμογή μου στην ιδανική περίπτωση”. Π.χ. ένα site που απευθύνεται αποκλειστικά σε Έλληνες είναι δεδομένο ότι δεν μπορεί να ξεπεράσει κάποιο μέγεθος. Αντίθετα, αν φτιάχνετε το επόμενο twitter ή Google Analytics, η κίνηση σε περίπτωση επιτυχίας θα είναι πολλές τάξεις μεγέθους μεγαλύτερη από όσο θα μπορούσαν να σηκώσουν 1 ή 2 servers.

Μετά είναι το ερώτημα αν θέλει κανείς να “δεθεί” με την υποδομή της Google ή θα προτιμούσε να αντιμετωπίσει τα πιθανά προβλήματα κλίμακας μόνος του. Τα προβλήματα αυτά προφανώς και λύνονται (δεν περίμενε την Google το CNN ή το BBC για να μπορέσουν να εξυπηρετούν πολλά εκατομμύρια pageviews την μέρα), αλλά θα πρέπει να αντιμετωπίσει κανείς μόνος του (ή προσλαμβάνοντας ειδικούς) τις τεχνικές δυσκολίες. Ναι, μπορείτε να “σηκώσετε” όσους DB servers χρειάζεστε και να κάνετε replication και να έχετε άλλους τόσους η περισσότερους clustered web servers στο EC2, αλλά κάποιος θα πρέπει να ασχολείται με το πώς γίνεται αυτό το πράγμα, να κάνει maintenence, monitoring, optimization κ.λ. στην υποδομή -ένας ή περισσότεροι system admins, db admins κ.λ. Μία καλογραμμένη εφαρμογή που τρέχει στο AppEngine απλά ίσως να χρειαστεί optimization από τον developer.

Και βέβαια, κατά πόσο αξίζει να επενδύσει κανείς τόση περισσότερη δουλειά (γιατί όπως είπα το development στο AppEngine είναι σημαντικά δυσκολότερο) και να μάθει μία τόσο διαφορετική πλατφόρμα, όταν έχει ήδη επενδύσει μήνες ή χρόνια για να αποκτήσει γνώσεις και εμπειρία σε ένα άλλο (π.χ. LAMP) που είναι συμβατό με το EC2.

Ελπίζω να έδωσα μία πιο πλήρη εικόνα από αυτή που κυκλοφορεί με απλοποιήσεις όπως “η Google παρουσιάζει τον αντίπαλο του Amazon EC2″.

Για εμένα η επιλογή να ασχοληθώ με το AppEngine πέρα από τα παραπάνω (και καλά το urlBorg θα έχει δισεκατομμύρια hits/sec… και μετά ξύπνησες!) είναι ότι αποτελεί μία (από άποψη development) σπαζοκεφαλιά που μετατρέπει σε προκλήσεις πράγματα που θεωρούσα βαρετά -ΟΚ, προγραμματιστική διαστροφή, το δέχομαι :-)


[1] όχι, δεν το έχω μεταφέρει ακόμη και θα χρειαστεί αρκετή δουλειά.
[2] όπου “άπειρο” ας θεωρήσουμε κάτι συγκρινόμενο ίσως με την κλίμακα που έχουν οι υπηρεσίες που προσφέρει η ίδια η Google.
[3] το περιβάλλον που προσφέρεται αυτή την στιγμή είναι περιορισμένο σε resources λέγοντας ότι είναι μόνο για development, αλλά ας δεχθούμε ότι (όπως λέει η Google) στο μέλλον θα μπορεί κάποιος να πληρώνει ανάλογα με το πόσα resources (bandwidth, cpu cycles, DB access κ.λ.) χρειάζεται.

misc — Tags: , , , , — Panayotis @ 18:14

1994. Θα είχατε απαντήσει; Well-capitalized Seattle start-up seeks Unix developers
via Paul Stamatiou

asides — Tags: , — Panayotis @ 19:53

Πολύ καλό άρθρο για τα τεχνικά χαρακτηριστικά και τους περιορισμούς του Google App Engine.

asides — Tags: , , — Panayotis @ 04:42

Google App Engine

Η Google ξεκίνησε σήμερα το πρωί (για ώρα Ελλάδας) την δοκιμαστική λειτουργία του Google App Engine. Το Google App Engine είναι ένα web hosting environment που αξιοποιεί την τεχνογνωσία της Google στο θέμα των “scalable applications” -ποιος μπορεί να αμφισβητήσει ότι ξέρουν τί χρειάζεται να γίνει για να μπορέσει μία web εφαρμογή να εξυπηρετεί εκατομμύρια χρήστες ταυτόχρονα;

Πιο αναλυτικά:

  • το περιβάλλον ανάπτυξης εφαρμογών είναι αυτή την στιγμή αποκλειστικά Python, είπαν ότι στο μέλλον θα εξυπηρετούν και άλλες γλώσσες.
  • Η αποθήκευση δεδομένων γίνεται όχι σε μία RDBMS, αλλά στο DataStore, που μπορεί να μην ακολουθεί το SQL standard αλλά γλυτώνει τον developer από το να ασχοληθεί πώς γίνεται το replication σε πολλαπλούς servers, το load ballancing κ.λ.
  • Υπάρχουν κάποιοι περιορισμοί και στην Python, π.χ. δεν μπορείτε να χρησιμοποιήσετε socets.
  • Ενδιαφέρον έχει και το γεγονός ότι μπορείτε να χρησιμοποιήσετε το Google Accounts authentication και να ορίσετε access levels με βάση αυτό. ΠΟΛΥ βολικό, αλλά γιατί όχι υποστήριξη OpenID;
  • Για την ώρα, θα δωθεί πρόσβαση μόνο στους πρώτους 10.000 developers που θα ζητήσουν. Οι λογαριασμοί αυτοί θα περιορίζονται στο ελάχιστο που είναι και δωρεάν: Every Google App Engine application can use up to 500MB of persistent storage and enough bandwidth and CPU for 5 million monthly page views. Σύντομα, αν η εφραμογή σας χρησιμοποιεί περισσότερα resources θα μπορείτε να αγοράζετε, data storage, bandwidth και CPU, αλλά δεν έχει ανακοινωθεί πώς θα γίνεται αυτό.

Η ανακοίνωση αυτή αποτελεί πολύ σημαντικό γεγονός. Όσοι έχουμε κατά καιρούς αναπτύξει μια web app που να έχει γίνει δημοφιλής, ακόμη και στην πολύ μικρή ελληνική κλίμακα, ξέρουμε ότι από κάποιο κάποιο σημείο αρχίζουν διάφορα προβλήματα που δεν είχε βάλει με το μυαλό του ο developer. Εϊναι η στιγμή που ο αριθμός χρηστών αλλάζει μερικές τάξεις μεγέθους, που τα δεδομένα γίνονται πολύ περισσότερα στην βάση, που τα requests μετριούνται σε hits/sec και όχι σε hits/hour.

Με το Google App Engine η Google παρέχει ένα περιβάλλον στο οποίο ο developer μπορεί να δημιουργήσει (δωρεάν) την εφαρμογή του, να την δοκιμάσει και αν πετύχει να έχει μεγάλη κίνηση αυτό να μην τον απασχολήσει αφού θεωρητικά η ίδια η πλατφόρμα παρέχει το scalability. Αυτά είναι καλά νέα και για όσους σκέφτονται να ξεκινήσουν μία web startup και δίσταζαν μπροστά στον “φόβο της επιτυχίας”: τί κάνεις αν η υπηρεσία που ανέπτυξες γίνει ξαφνικά πολύ δημοφιλής με αποτέλεσμα να καταρρεύσει και από την άλλη, πώς να επενδύσεις σε hosting, managed services κ.λ. όταν είσαι ακόμη στην αρχή και δεν ξέρεις αν αξίζει ή όχι; Πλέον, μπορούν να κάνουν host την υπηρεσία τους δωρεάν και θα χρειαστεί να πληρώσουν μόνο αν μεγαλώσει αρκετά -απόλυτα λογικό.

Κάποιοι βλέπουν το Google App Engine ως ανταγωνιστή των διάφορων Amazon Web Services. Σε μερικές περιπτώσεις είναι. Αλλά νομίζω ότι οι δύο προσεγγίσεις είναι αρκετά διαφορετικές. Θα έλεγα ότι το AWS είναι απείρως πιο ευέλικτο και δεν στοχεύει μόνο σε web εφαρμογές. Από την άλλη το Google App Engine είναι προσανατολισμένο στο να λύσει ένα και μοναδικό πρόβλημα, αυτό της ανάπτυξης και του hosting web app που χρειάζονται scalability και για να το λύσει βάζει όλους τους περιορισμούς που θεωρεί λογικούς. Θα χρειαστεί να περιμένουμε για να δούμε αν οι δύο να συγκλίνουν ή θα αποκλίνουν. Πάντως, δεν θα μου έμοιαζε περίεργο η Amazon να παρουσιάσει ένα πιο “high level” περιβάλλον, ανάλογο με αυτό της Google, στοχεύοντας να καλύψει όλο το φάσμα.

Διαβάστε επίσης:
- Dave Winer: Early notes on GoogleApps
- TechCrunch Labs: Our Experience Building And Launching App On Google App Engine
- TechCrunch: Google Jumps Head First Into Web Services With Google App Engine

misc — Tags: , , , , , — Panayotis @ 21:48

Το Google Apps έχει ένα νέο “προϊόν”, το Google Sites.

asides — Tags: , , — Panayotis @ 07:34

Google Social Graph API

Αυτό μου αρέσει. Αυτός είναι κατά την γνώμη μου ο σωστός τρόπος να “χτίσουμε” το social web.

Διαβάστε περισσότερα στο Google Social Graph API.

misc — Tags: , , , — Panayotis @ 11:26

Facebook, Google And Plaxo Join The DataPortability Workgroup. Στόχος του group είναι “to allow users to access their friends and media across all the applications, social networking sites and widgets that implement the design into their systems”. Σίγουρα προς την σωστή κατεύθυνση, αρκεί να δούμε αποτέλεσμα.

asides — Tags: , , — Panayotis @ 10:16

OpenID στο blogger.com? Αυτό είναι πολύ σημαντική εξέλιξη.

asides — Tags: , , — Panayotis @ 17:32

Google group chat

asides — Tags: , , — Panayotis @ 11:20

η google ξεκινάει ένα πρόγραμμα για την προώθηση του Open Source στα σχολεία.

asides — Tags: , , — Panayotis @ 11:14
Next Page »
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2008 vrypan|net|weblog | powered by WordPress with Barecity