ΕΡΓΑΣΙΑ (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών) Τίτλος: Εφαρμογή Διαδικτύου Υλοποίησης Storage Cloud Ζητούμενο: Να αναπτυχθεί web εφαρμογή storage cloud, με χρήση της αρχιτεκτονικής εξυπηρετητή-πελάτη (client-server), η οποία θα επιτρέπει τα εξής: 1. Λειτουργία δημιουργίας ιδιωτικού χώρου αποθήκευσης πελατών upload) α. ανέβασμα αρχείων σε ιδιωτικό χώρο για κάθε πελάτη του cloud (file β. δυνατότητα αύξησης του ιδιωτικού χώρου πελάτη με επιπλέον κόστος γ. δημιουργία καταλόγων για την αρχειοθέτηση των αρχείων δ. διαγραφή αρχείων από τον ιδιωτικό χώρο πελατών 2. Λειτουργία διανομής περιεχομένου (content distribution) σε χρήστες α. δυνατότητα δημοσίευσης περιεχομένου (public content) σε χρήστες του cloud β. δυνατότητα αγοράς περιεχόμενου από χρήστες του cloud (ηλεκτρονικό καλάθι)
Ανάλυση απαιτήσεων της εφαρμογής Η εφαρμογή αφορά στην υλοποίηση ενός storage cloud. Οι χρήστες του cloud διακρίνονται στους πελάτες ή προχωρημένους χρήστες (advanced users) και στους απλούς χρήστες. Οι πελάτες έχουν την δυνατότητα να αγοράσουν έναν ιδιωτικό χώρο αποθήκευσης των αρχείων τους. Στον χώρο αυτό μπορούν να ανεβάσουν όσα αρχεία θέλουν μέχρι το όριο του χώρου αποθήκευσής τους. Επίσης έχουν την δυνατότητα να καθορίσουν ένα ή περισσότερα αρχεία ως δημόσια (public). Τα αρχεία αυτά μπορούν να τα προσπελάσουν (download) οι απλοί χρήστες του cloud. Κάποια από αυτά μπορούν να είναι δωρεάν ενώ για κάποια άλλα μπορεί να υπάρχει χρέωση. Τα χρήματα από την χρέωση αποδίδονται στους αντίστοιχους πελάτες του cloud. Με αυτό τον τρόπο οι πελάτες του storage cloud μπορούν να διανείμουν το περιεχόμενο που έχουν ανεβάσει εξασφαλίζοντας κέρδος. Το τμήμα πελάτη (client) της εφαρμογής Ο χρήστης της εφαρμογής θα πρέπει να μπορεί να χρησιμοποιήσει έναν φυλλομετρητή (web browser) όπου δίνοντας την διεύθυνση (url) του ιστότοπου (web site) στον οποίο τρέχει η εφαρμογή αυτή θα τον καλωσορίζει και θα του δίνει τις εξής δυνατότητες: Καθεστώς πελάτη Η εφαρμογή του δίνει την δυνατότητα αρχικά να εγγραφεί ως πελάτης του cloud δίνοντας τα στοιχεία του και επιπλέον ένα username και password. Στην συνέχεια, κάθε φορά που θα θελήσει να εκτελέσει κάποια ενέργεια ως πελάτης της εφαρμογής θα πρέπει να έχει εισάγει αυτό το username και password στην αρχή κάθε session. Ο πελάτης θα μπορεί να αγοράσει αρχικά ένα ιδιωτικό χώρο για την αποθήκευση των αρχείων του. Η εφαρμογή θα πρέπει να χρεώνει τον πελάτη κλιμακωτά ανάλογα με τον χώρο αποθήκευσης που επιλέγει, π.χ. μέχρι 10 GB μία τιμή, από 11 GB έως 100 GB μία μεγαλύτερη τιμή και από εκεί και πάνω την μέγιστη τιμή. Για την χρέωση, ο πελάτης θα πρέπει να παρέχει στοιχεία της πιστωτικής του κάρτας.
Στον ιδιωτικό του χώρο αποθήκευσης ο κάθε πελάτης θα έχει την δυνατότητα να ανεβάσει (upload) όσα αρχεία θέλει. Επίσης θα μπορεί να δημιουργήσει όσους καταλόγους (directories) θέλει και θα δίνεται η δυνατότητα της αυτόματης αποθήκευσης ενός αρχείου σε κατάλογο ανάλογα με την επέκταση του αρχείου, π.χ. όλα τα mp3 αρχεία στον κατάλογο MP3. Αν ο πελάτης χρειαστεί περισσότερο χώρο αποθήκευσης θα πρέπει να του δίνεται η δυνατότητα αγοράς π.χ. χρέωση ανά 1 GB επιπλέον χώρου. Η εφαρμογή θα παρέχει επιπλέον χώρο αποθήκευσης ως bonus (δωρεάν) π.χ. 1 MB επιπλέον χώρου για κάθε 1 ημέρα παραμονής ως πελάτης του cloud. Η εφαρμογή θα πρέπει να δίνει στον πελάτη ανά πάσα στιγμή την δυνατότητα να δει την εικόνα του ιδιωτικού του χώρου αποθήκευσης και πιο συγκεκριμένα τους καταλόγους που έχει δημιουργήσει, τα αρχεία που έχει ανεβάσει σε κάθε κατάλογο, τον αρχικό χώρο αποθήκευσης που αγόρασε, τον ελεύθερο χώρο που έχει παραμείνει καθώς και τον bonus χώρο που του έχει δοθεί από την εφαρμογή μέχρι αυτή την στιγμή. Επίσης, θα πρέπει να τον παροτρύνει να αγοράσει επιπλέον χώρο έγκαιρα όταν πλησιάζει στο όριο του παρόντος χώρου αποθήκευσης. Τέλος, η εφαρμογή θα πρέπει να δίνει στον πελάτη την δυνατότητα της διανομής (distribution) του περιεχομένου που έχει ανεβάσει στον χώρο αποθήκευσής του σε άλλους χρήστες του cloud. Ο πελάτης θα μπορεί να καθορίσει αν ένα αρχείο είναι ιδιωτικό (private) ή επιτρέπεται η προσπέλασή του (download) από τους χρήστες του cloud. Στην τελευταία περίπτωση, ο πελάτης θα μπορεί να καθορίσει εάν η πρόσβαση σε αυτό είναι δωρεάν (free) ή γίνεται επί πληρωμή. Σε αυτή την περίπτωση η εφαρμογή θα χρεώνει επιπλέον τον πελάτη ανάλογα με το χώρο αποθήκευσης που χρησιμοποιεί κάτω από αυτό το καθεστώς και τον χρόνο αυτής της χρήσης. Για παράδειγμα, ένας πελάτης έχει αγοράσει χώρο 10 GB όπου χρησιμοποιεί τα 8 GB ως ιδιωτικό χώρο αποθήκευσης και τα υπόλοιπα 2 GB ως χώρο προσπελάσιμο από άλλους χρήστες. Η εφαρμογή μπορεί να τον χρεώνει για τα 2 GB ανά ημέρα χρήσης επιπλέον της χρέωσης για τα 10 GB που είχε πληρώσει αρχικά. Επίσης, ο πελάτης θα μπορεί να καθορίσει το κόστος προσπέλασης (download) από τους χρήστες του cloud για κάθε αρχείο του που δεν είναι δωρεάν. Η εφαρμογή θα πρέπει επίσης να του παρέχει μία εικόνα για τα αρχεία που είναι διαθέσιμα στον χώρο αποθήκευσής του
προς διανομή, το ποσό που έχει εισπράξει συνολικά καθώς και για κάθε αρχείο αν είναι δωρεάν ή επί πληρωμή και πόσες φορές έχει προσπελασθεί (download). Καθεστώς χρήστη Η εφαρμογή θα πρέπει να δίνει στους απλούς χρήστες την δυνατότητα περιήγησης στο storage cloud. Οι χρήστες του cloud δεν χρειάζεται να εγγραφούν στην εφαρμογή. Θα μπορούν να έχουν μία εικόνα για το περιεχόμενο του cloud. Επίσης θα μπορούν να δουν ποια από αυτά τα αρχεία είναι δωρεάν και ποια επί πληρωμή καθώς και το κόστος του κάθε αρχείου. Επίσης θα μπορούν να δουν πόσο δημοφιλές είναι κάθε αρχείο (rate of popularity) ανάλογα με το πόσες φορές έχει προσπελασθεί (file download). Ο χρήστης της εφαρμογής θα πρέπει να έχει την δυνατότητα να ψάξει το περιεχόμενο του storage cloud χρησιμοποιώντας λέξεις κλειδιά. Σε αυτή την περίπτωση η εφαρμογή θα πρέπει να του εμφανίσει τα κατάλληλα αρχεία, π.χ. όλα τα mpeg video αρχεία. Για κάθε χρήστη θα μπορεί να δημιουργηθεί ένα ηλεκτρονικό καλάθι αγορών το οποίο θα παραμένει ενεργό όσο υπάρχει το αντίστοιχο session, στο οποίο ο χρήστης θα μπορεί να προσθέτει τα αρχεία που θέλει να κατεβάσει. Εννοείται ότι για τα δωρεάν αρχεία δεν θα υπάρχει καμία χρέωση. Για τα υπόλοιπα αρχεία ο χρήστης θα πρέπει να οδηγείται σε μία σελίδα όπου θα δίνει τα στοιχεία της πιστωτικής του κάρτας για να πραγματοποιηθεί η χρέωση. Το session θα τερματίζεται με αυτή την ενέργεια (αγορά) είτε όταν ο χρήστης κλείσει τον browser.
Το τμήμα εξυπηρετητή (server) της εφαρμογής Ο εξυπηρετητής (web server) θα πρέπει να μπορεί να εκτελέσει τα ακόλουθα: Θα πρέπει να καταχωρεί σε βάση δεδομένων τα στοιχεία των πελατών του storage cloud. Θα πρέπει να υλοποιεί τον μηχανισμό πιστοποίησης πελατών μέσω του ζευγαριού username/password. Θα πρέπει να υλοποιεί τον ιδιωτικό χώρο αποθήκευσης κάθε πελάτη ο οποίος θα αποτελείται από τον χώρο αποθήκευσης, τον bonus επιπλέον χώρο αποθήκευσης, τους καταλόγους και τα αρχεία που είναι αποθηκευμένα σε καθένα από αυτούς. Σε περίπτωση που κάποια αρχεία είναι προς διανομή στους χρήστες του cloud θα πρέπει να υλοποιεί τον μηχανισμό χρέωσης προς τον αντίστοιχο πελάτη για αυτή την χρήση του χώρου αποθήκευσής του. Θα πρέπει να διατηρεί ηλεκτρονικό καλάθι αγορών για κάθε χρήστη του cloud ο οποίος βρίσκεται μέσα στην εφαρμογή (κατά την διάρκεια ενός session) και να υλοποιεί τον μηχανισμό χρέωσης του χρήστη σε περίπτωση αγοράς και απόδοσης των χρημάτων στους αντίστοιχους πελάτες. Κατά την αναζήτηση αρχείων με λέξεις κλειδιά, θα πρέπει τα κριτήρια αναζήτησης να μετατρέπονται σε κατάλληλες ερωτήσεις (queries) στη βάση δεδομένων. Αν το αποτέλεσμα είναι επιτυχές, ο εξυπηρετητής θα ετοιμάζει κατάλληλη απάντηση [ιστοσελίδα με τα αρχεία που βρέθηκαν στην βάση και την κατάλληλη εικόνα για κάθε αρχείο (δωρεάν, ποσό πληρωμής για κάθε download, rate of popularity)] και θα την στέλνει στον χρήστη. Σε περίπτωση αποτυχίας, θα στέλνει κατάλληλο μήνυμα στο χρήστη. Η βάση δεδομένων θα πρέπει να ακολουθεί το σχεσιακό μοντέλο. Πρέπει να σημειωθεί εδώ ότι ΔΕΝ ΕΙΝΑΙ ΑΠΑΡΑΙΤΗΤΟ να υλοποιηθεί πραγματικός μηχανισμός δημιουργίας και upload ή download πραγματικών αρχείων. Η εικόνα του ιδιωτικού χώρου αποθήκευσης ενός πελάτη (αρχικός χώρος, κατάλογοι, bonus χώρος, αρχεία) μπορεί να είναι ουσιαστικά ένας
αριθμός από records σε έναν ή περισσότερους πίνακες της βάσης δεδομένων. Τα αρχεία μπορούν να αντιπροσωπεύονται από ένα όνομα και έναν αριθμό που δηλώνει τον χώρο που καταλαμβάνουν. Θα πρέπει να τονιστεί ότι η σχεδίαση και η υλοποίηση της εφαρμογής έχει μεγάλο βαθμό ελευθερίας, από την παρουσίαση (σχεδίαση των ιστοσελίδων) και την σχεδίαση της βάσης δεδομένων μέχρι την υλοποίηση ενός πραγματικού storage cloud με πραγματικά αρχεία στον server αν το θελήσετε, ώστε αυτή να πλησιάσει μία πλήρη επαγγελματική web εφαρμογή storage cloud. Σκοπός της παραπάνω εκφώνησης είναι να δώσει κατευθυντήριες γραμμές και όχι να περιορίσει την εφαρμογή σε στενά όρια απαιτήσεων και δυνατοτήτων. Όρια της εφαρμογής είναι ουσιαστικά η φαντασία του καθενός. Τα εργαλεία και το περιβάλλον ανάπτυξης της εφαρμογής είναι αυτά που θα διδαχθούν στο μάθημα. Καλή Επιτυχία!