Θα μπορούσα να πω ότι μιλάω για την Αμερικάνικη πραγματικότητα, όπου η Verizon δίνει χαμηλότερες ταχύτητες DSL με μεγαλύτερο κόστος από την Ελλάδα, η AT&T δίνει χειρότερο σήμα ή καθόλου και δεν την νοιάζει λόγω μονοπωλίων. Μπορεί να ακούς για οπτικές ίνες, δεν ακούς όμως πόσο *λίγοι* μπορούν να τις αγοράσουν (λόγω διαθεσιμότητας και τιμής). Τον τελευταίο χρόνο γίνεται μεγάλη φασαρία για το θέμα, καθώς είναι εμπόδιο στη συγχώνευση Verizon και Comcast. Η Verizon πάντως ισχυρίζεται ότι κανείς δεν χρειάζεται πάνω από 10Mbps τέλος πάντων, οπότε γιατί διαμαρτύρεστε!
Ή θα μπορούσα να σε ρωτήσω τί προτιμάς, το Sublime Text τοπικά ή κάποιο text editor σε κάποιο site? Excel με PivotTable και απευθείας σύνδεση στη βάση ή Google Sheet που δεν δέχεται καμμία σύνδεση? GitHub for Windows ή το GitHub site (ουπς, αυτό δεν μπορεί καν να δει τα τοπικά repos). Kindle τοπικό ή Kindle Cloud? Visual Studio ή κάποιο web editor? To παλιό TweetDeck που μπορούσε να κρατήσει όλα τα tweets και να τα ψάξει, ή το καινούριο web app το οποίο σου επιτρέπει να ψάξεις μόνο όσα γουστάρει η εταιρεία? Ή φαντάσου να είσαι marketer ο οποίος θέλει να τραβάει real-time tweets για να βλέπει trends, και να τα αποθηκεύει για επεξεργασία μετά - **χωρίς** να πρέπει να ζητήσει deployment κάποιου server από το IT του.
Αν έχεις ασχοληθεί μόνο με public facing web sites λογικό είναι να μην δίνεις μεγάλη σημασία σε θέματα που αντιμετωπίζουν άλλες κατηγορίες εφαρμογών. Για παράδειγμα, αμφιβάλλω αν το Spotify χρησιμοποιεί Javascript για τα λογιστικά του, ή για Business intelligence. Το θέμα δεν είναι αν μπορεί να γίνει κάτι, αλλά πόσο δύσκολο είναι να γίνει και πόσο γρήγορα μπορεί να τελειώσει. Η HTML 5 μπορεί να σου δίνει λίγη τοπική αποθήκευση, αλλά είναι πολύ πιο δύσκολο να τη χρησιμοποιήσεις από το να γράψεις απλά στο σκληρό. Άσε που απλά δεν υπάρχουν οι τρόποι επεξεργασίας που σου δίνει μία βάση (ακόμα και SQLite) ή κάποιο format ειδικό για τη δουλειά σου.
Όσο για το δίκτυο δεν είναι μόνο η ταχύτητα αλλά (κυρίως) το latency. Το latency που υπάρχει σε ένα cloud environment όπως το Amazon ή το Azure είναι τέτοιο που η σύνδεση μεταξύ web server και database μπορεί να αποτύχει ή να καθυστερήσει απλά και μόνο από αυτό. Ενώ σε εφαρμογές που δουλεύουν σε εσωτερικό δίκτυο σπάνια σκέφτεσαι το retry, σε cloud environment είναι καθημερινή ανάγκη. Πού να μιλήσουμε λοιπόν για το latency μεταξύ browser και web server, είναι τόσο μεγάλο που πρέπει να αλλάξεις εντελώς την εφαρμογή. Το LinkedIn έχει πρόβλημα επειδή το API του είναι πολύ φλύαρο. Κάτι τέτοιο θα ήταν απλά αδιάφορο σε μία desktop εφαρμογή.
Το json δεν έλυσε το πρόβλημα του όγκου των δεδομένων - δεν φτιάχτηκε ποτέ γι αυτό. Ίσα-ίσα, το πρόβλημα υπάρχει γι αυτό και υπάρχουν τα BSON και το protobuf και το response compression. Request compression δεν υπάρχει, οπότε αν θέλεις να κάνεις ένα μεγάλο request, περιμένεις. Αν θέλεις να συγκρίνεις όγκους δεδομένων, θα πρέπει να τους συγκρίνεις με ένα binary πρωτόκολλο - τα οποία επιδέχονται και request και response compression.
Για σκέψου μία χρηματιστηριακή εφαρμογή, όπου έρχονται συνέχεια events, τα οποία πρέπει να παρουσιαστούν στην οθόνη πολλών ατόμων, να γίνει μία ανάλυση και να ανανεωθούν γραφήματα. Ναι, υπάρχουν frameworks που δίνουν κάτι σαν το data binding του WPF, υπάρχουν web sockets για να στείλεις τα events στις εφαρμογές, αλλά τίποτε από αυτά δεν είναι τόσο εύκολο και γρήγορο όσο να το κάνεις σε μία εφαρμογή στο μηχάνημα του broker.
Περιπτώσεις που η Javascript δεν παίζει καθόλου - οτιδήποτε θέλει CPU, ή έστω περίπλοκη επεξεργασία. Ακόμα και να φτιάξεις thumbnails από φωτογραφίες είναι απαγορευτικό, πόσο μάλλον επεξεργασία, ή number crunching. Σε μία desktop εφαρμογή όμως μπορείς να εκτελέσεις ένα Parallel.Sum και να χρησιμοποιήσεις όλα τα cores πανεύκολα.
UI Latency - μία οποιαδήποτε εφαρμογή data entry έχει πρόβλημα αν υπάρχει καθυστέρηση 500ms - οι χρήστες θα αρχίσουν να γκρινιάζουν. Ναι, τα SPAs κάνουν καλύτερη δουλειά σε αυτό τον τομέα, αλλά μία desktop εφαρμογή δεν το είχε αυτό το πρόβλημα έτσι κι αλλιώς.
Μπορώ να γράψω πολλά ακόμα, αλλά η ουσία είναι ότι υπάρχουν πολλές ανάγκες και είδη εφαρμογών, όπως και πολλοί περιορισμοί. Αν ασχολείσαι με μόνο μία κατηγορία είναι εύκολο να ξεχάσεις ότι υπάρχουν και οι άλλες, ή να νομίζεις ότι έχουν πεθάνει.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos