Όταν ένας χρήστης ξεκινήσει να πλοηγείται σε μια ιστοσελίδα, μια σειρά από αλληλεπιδράσεις λαμβάνουν χώρα στο παρασκήνιο μεταξύ του browser και σε πολλαπλά σημεία μιας εφαρμογής web. Μερικά από τα τεχνικά μέρη που συμμετέχουν στη διαδικασία είναι η διεπαφή, το middleware, οι βάσεις δεδομένων, o εξυπηρετητής, o browser κ.α.

Το γενικότερο σύστημα που ενώνει αυτήν την αλληλουχία γεγονότων και προβάλλει ένα τελικό αποτέλεσμα ονομάζεται αρχιτεκτονική ενός web application. Καθε φορά που ένας χρήστης πληκτρολογεί ένα domain name στο browser ή ξεκινήσει μια αναζήτηση σε ένα search engine απευθείας ξεκινάει αυτή η διαδικασία.

Το τελικό αποτέλεσμα σε κάθε περίπτωση είναι να εμφανίστουν οις επιθυμητές πληροφορίες στην οθόνη, δηλαδή δεδομένα ανεξάρτητα από την τεχνολογία με την οποία έχει κατασκευαστή ένα web application ή η ιστοσελίδα. Ανεξάρτητου της γλώσσας προγραμματισμού η δομημένη αλληλουχία γεγονότων είναι πάντα ίδια, δηλαδή τα δεδομένα στέλνονται από το browser μέσω δικτύου στο web server και στη συνέχεια ανακτάτε μια απάντηση στο τερματικό όπου πραγματοποιήθηκε η αναζήτηση.

Οπότε η αρχιτεκτονική ενός web app περιλαμβάνει δύο βασικά μέρη και μπορεί να διασυνδεθεί μα άλλα πληφοριακά συστήματα μέσω web services. Σε γενικές γραμμές η μετάβαση στις πιο εξελιγμένες εφαρμογές είχε ως αποτέλεσμα στο μετασχηματισμό και το διαχωρισμό τους σε frontend και backend development με πολλάπλα frameworks όπως είναι για πάραδειγμα το ReactJS και NodeJS αντίστοιχα.

Δημοφιλή Front-End frameworks που διαθέτουν Virtual DOM όπως το ReactJS προσθέτουν μεγαλήτερη ευελιξία σε σύνθετα UI

Επιπλέον με την άνοδο της χρήσης smartphone, το mobile web είναι το πρώτο σημείο αναζήτησης και πλοήγησης στο internet, αυτό έχει ως συνέπεια το web app development να εξελιχθεί ώστε καλύψει περισσότερα απαιτήσεις και ταυτόχρονα καθιστά αναγκαίο το cross-platform development

Επιπρόσθετα οι εφαρμογές γίνονται πιο περίπλοκες οπότε οι developers που έχουν αναλάβει απαιτητικές εφαρμογές θα πρέπει να έχουν ευκολία και αρχετή τεχνογνωσία για να εργαζόνται και σε όλα τα μέρη της εφαρμογής ως fullstack web developer.

Η γενική λειτουργία σε ένα web application

Οι εφαρμογές web αποτελούνται δύο βασικά λειτουργικά μέρη, όπου το καθένα εκτελεί το λειτουργικό κώδικα ξεχωριστά και σε διαφορετικό χρόνο αλλά ταυτόχρονα συνεργάζονται ώστε να παρέχουν ένα τελικό αποτέλεσμα.

Το πρώτο μέρος περιλαμβάνει το κώδικα που εκτελείται στο browser και αρχίζει να λειτουργεί από την στιγμή που ένας χρήστης εισάγει δεδομένα στη διεπαφή - user interface. To δεύτερο μέρος είναι ο κώδικας η compiled code που εκτελείται από την πλευρά του εξυπηρετητή - server side και εκτελούνται ερωτήματα μέσω του πρωτοκόλλου HTTP.

web development τι είναι;

Είναι η διαδικασία προγραμματισμού όπου ο developer δημιουργεί μια εφαρμογή web, η οποία μπορεί να έχει απλά μόνο μια διεπαφή - user interface προσβάσιμη δια web browser για εργασίες που απαιτούν  χειρισμό δεδομένων. Επιπλέον μπορεί να περιλαμβάνει διασύνδεσείς με συστήματα άλλων πληροφοριακών συστημάτων ή με πολλαπλους clients όπως είναι τα mobile apps.  

Γενικά οι web developers χρειάζεται να αποφασίζουν ποιες από τις λειτουργίες θα εκτελεστούν στο server και ποιες λειτουργίες στο browser και πως τα δύο μέρη θα αλληλεπιδράσουν μεταξύ τους.

Τρεις μοντέρνοι τύποι αρχιτεκτονικής web application

Single-page applications (SPA)

Οι μοντέρνες εφαρμογές που περιλαμβάνουν πολλά μέρη σύνθετα στοιχεία σε μια ιστοσελίδα όπως είναι πλέγματα grids, οι λίστες δεδομένων είναι  προτιμότερο να κατασκευαστούν ως SPA. Εδώ προσφέρεται καλύτερη εμπειρία χρήση όσον αφορά πλοήγηση και αναζήτηση δεδομένων, συγκεκριμένα η εφαρμογή μόνο μια αφορά αρχικά στο browser και στη συνέχεια ανανεώνεται δυναμικά τμήματα αυτή της ιστοσελίδας αντίθετα με το συνηθισμένο τρόπο φορτώνονται συνεχώς καινουργιες σελίδες.

Μια άμεση συνέπεια είναι καλύτερο user experience, στο Single-page web ο χρήστης έχει πιο δυναμική αλληλεπίδραση, αλλά δεν είναι λύση για όλες τις περιπτώσεις ειδικότερα όπου παράγοντας SEO παίζει κεντρικό ρόλο στην τεχνική σχεδίαση της εφαρμογής και στο product design.

Microservices

Αυτός ο τύπος διαχωρίζει τις λειτουργίες ενός συστήματος σε ομάδες που τις ονομάζει μικροϋπηρεσίες. Με αυτό τον τρόπο έχουμε πολλά ανεξάρτητα μέρη όπου το καθένα είναι υπεύθυνο γύρω από μια συγκεκριμένη επιχειρηματική λειτουργία (business domain), και επικοινωνεί με τα υπόλοιπα μέσω application programming interfaces (APIs).

Η GoLang αποτελεί μια διαδεδομένη γλώσσα για microservices και data pipelines έχοντας ως βασικό χαρακτηριστικό concurrency model

Αυτό έχει ως αποτέλεσμα τη μεγαλύτερη ευελιξία για γρήγορη προσθήκη καινούργιων χαρακτηριστικών, επιπλέον επιτρέπει σε αυτές τις αυτόνομες  ομάδες λειτουργίας να κατασκευαστούν σε διαφορετικές γλώσσες προγραμματισμού και τεχνολογίες. Γενικά αυτό ο τύπος αρχιτεκτονικής λογισμικού θα μπορούσε να χαρακτηριστεί ως μια μορφή του SOA.

Serverless architecture

Είναι ένας τρόπος που επιτρέπει σε εφαρμογές να λειτουργήσουν και να εκτελέσουν διεργασίες χωρίς να υπάρχει η ανάγκη συντήρησης πληροφοριακών υποδομών ή τη χρήση συγκεκριμένων τεχνολογιων οπότε δε υπάρχει ανάγκη από system administration να παρακολουθεί την ομαλή λειτουργία υπολογιστικών πόρων στο backend.

Για παράδειγμα κάποιος μπορεί να σχεδιάσει λειτουργίες όπως για παράδειγμα ένα function στην πλατφόρμα Amazon Lambda. Σε αυτή τη περίπτωση πληρώνει μόνο για όσες φορές εκτελείται το συγκεκριμένο function.

Αφού κάναμε μια σύντομη περιγραφή της έννοιας διαχωρισμού ενός web application σε δύο βασικά μέρη client side και server side,καθώς με μια σύντομη περιγραφή μοντέρνων μορφών αρχιτεκτονικής στη συνέχεια θα δούμε τι εργαλεία υπάρχουν και αυτό στις βασικές γλώσσες προγραμματισμού καθώς και σε υπάρχοντα framework όπως είναι Python με το Django, .NET, Java enterprise development, Node.js, PHP  κτλ.

Web Frameworks και γλώσσες προγραμματισμού

Python web development

H python είναι μια γλώσσα προγραμματισμού η οποία είναι εύκολη στην εκμάθηση και ταυτόχρονα αρκετά ισχυρή για να υποστηρίξει πολύπλοκες εφαρμογές, είναι ιδιαίτερα δημοφιλής στο start-up ecosystem.

Το πιο δημοφιλές framework είναι το Django, επιπλέον υπάρχουν διαθέσιμες πολλαπλές βιβλιοθήκες λογισμικού όπου αφορούν data analysis, machine learning αυτό μάλλον επειδή είναι η αγαπημένη γλώσσα των επιστημόνων λόγω της απλότητας της. Όσον αφορά το development μπορούν να βρεθούν api wrappers για τα web services της Google, της Amazon κτλ..

.NET web application

Μια άλλη δημοφιλής πλατφόρμα ιδιαίτερα στο χώρο μικρομεσαίων επιχειρήσεων προέρχεται από την Microsoft, η οποία έχει αναπτύξει αυτό το software development framework. Συγκεκριμένα για τη περίπτωση της δημιουργίας δυναμικών ιστοσελίδων έχει asp.net core με το οποίο δίνεται έμφαση στο cross-platform development για cloud εφαρμογές.

PHP web application

Η PHP είναι μια από τις πιο δημοφιλή γλώσσες με μεγάλο πλήθος από web frameworks όπως το Laravel το Symfony και πολλά άλλα. Η συγκεκριμένη γλώσσα βρίσκεται πίσω από καθιερωμένα συστήματα διαχείρισης περιεχομένου όπως το wordpress καθώς και ηλεκτρονικού εμπορίου.

Διαθέτει μεγάλη κοινότητα developers και είναι κατάλληλη για εφαρμογές που είναι έντασης input και out data σε βάση δεδομένων, καθώς και για δημιουργία backend API σε εφαρμογές mobile.

Node.js web application

Το Node.js είναι ένα runtime environment το οποίο δίνει τη δυνατότητα στα προγράμματα javascript που λειτουργούσαν στη πλευρά του browser να εκτελεστούν ως server-side. Το κύριο χαρακτηριστικό που συναντάμε εδώ είναι το event-driven programming με χαρακτηριστικά non-blocking I/O. Αυτό σημαίνει ότι node έχει μια μονονηματική διαδικασία που πετυχαίνει non-blocking μέσω ενός event-loop.

Το Javascript με το Νode.js αποτελούν ολοκληρωμένη τεχνολογία για Full-Stack development frameworks με τις ΜΕΑΝ Stack και MERN Stack

Εφαρμογές που χτίζονται χρησιμοποιώντας το nodejs είναι για δημιουργία Api υψηλής διαθεσιμότητας και ταυτόχρονα έχουν ένταση συγχρονισμού όπως είναι τα chat όπου ανήκουν στις εφαρμογές πραγματικού χρόνου real-time applications.

Dart web application

Η γλώσσα Dart είναι μια γλώσσα που δημιουργήθηκε από την Google βελτιστοποιημένη ειδικά για τη κατασκευή mobile apps με αυτήν τη γλώσσα έχουμε φτιάξει τη δική μας εφαρμογή για τον υπολογισμό μισθού. Επιπλέον μπορεί να χρησιμοποιηθεί για τη δημιουργιά web apps με αυτήν.

Αν χρειάζεστε ειδικά features όπως ασύγχρονο προγραμματισμό async-wait για βελτιστοποίηση διεπαφών με isolate-based concurrency ίσως θα πρέπει να λάβετε υπόψη, αν κατασκευάζεται web-based εφαρμογές που σχετίζονται με την πλήρη ακεραιότητα δεδομένων όπω είναι οι εφαρμογές για μεταφορά χρημάτων.

Multi-tenant environment σε εφαρμογές cloud

Στις εφαρμογές Cloud τύπου SaaS η ακεραιότητα, η ασφάλεια και διαχωρισμός των δεδομένων από τους άλλους χρήστες της εφαρμογής είναι εξαιρετικά σημαντικό. Μια επιλογή σε αυτή την περίπτωση είναι η χρήση της αρχιτεκτονική multi-tenant όπου ο κάθε χρήστης μέσα από μια εφαρμογή έχει τη δική του βάση δεδομένων για τα δεδομένα του.

Οπότε χρειάζεται μια προχωρημένη διαχείριση από την εφαρμογή σε πολλαπλές συνδέσεις στις βάσεις. Το Salesforce από τις επιτυχημένες εφαρμογές συστήματα customer relationship management έχουν κάνει χρήση εξαρxής αυτή τη δομής salesforce multitenant architecture.

Συμπέρασμα

Σε τελική ανάλυση υπάρχει μια ποικιλία από τεχνολογίες και τρόπους για να επιτευχθεί το ίδιο αποτέλεσμα, εδώ αναφέραμε μερικές βασικές τεχνολογίες. Το να επιλέξει κάποιος την κατάλληλη θα πρέπει να εξετάσει μια σειρά από παράγοντες όπως χρόνος, το κόστος, η πρόσβαση τεχνολογικούς και ανθρώπινους πόρους σε συνδυασμό με τα ειδικά χαρακτηριστικά που απαιτούνται σε ένα project.