Είτε η εργασία σας είναι μικρή είτε μπορείτε να τη χωρίσετε σε μικρότερες εργασίες. Και μια μικρή εργασία ταιριάζει απόλυτα σε μια microservice.

Ο σχεδιασμός λογισμικού είναι μια ουσιαστική φάση στην ανάπτυξη λογισμικού. Η σχεδιαστική προσέγγιση μπορεί να επηρεάσει ολόκληρο το έργο και τον τρόπο με τον οποίο χειρίζεστε διαφορετικές απαιτήσεις.

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

Οι μικροϋπηρεσίες στοχεύουν στην αντιμετώπιση αυτών των περιορισμών. Μια microservice είναι μια μικρή, αρθρωτή εφαρμογή που εκτελεί συγκεκριμένες λειτουργίες. Σε αντίθεση με τις μονολιθικές εφαρμογές, οι μικροϋπηρεσίες επιτρέπουν την ανεξάρτητη ανάπτυξη και κλιμάκωση. Ως αποτέλεσμα, είναι πιο ευέλικτα και ευκολότερα στη συντήρηση.

Η Αρχιτεκτονική Microservice

Η αρχιτεκτονική microservice είναι μια προσέγγιση σχεδιασμού λογισμικού που αναλύει μια μεγάλη εφαρμογή σε ανεξάρτητες υπηρεσίες, με κάθε υπηρεσία να έχει σχεδιαστεί για να ανταποκρίνεται σε μια συγκεκριμένη επιχειρηματική απαίτηση.

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

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

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

Σε αυτό το σεμινάριο, θα σας καθοδηγήσουμε στην εφαρμογή μιας απλής μικρουπηρεσίας χρήστη που διαχειρίζεται δεδομένα χρήστη χρησιμοποιώντας το Flask και το PostgreSQL

Ρυθμίστε μια βάση δεδομένων PostgreSQL

Για να ξεκινήσετε, εγκαταστήστε το PostgreSQL. Εάν δεν έχετε εγκαταστήσει το PostgreSQL, μπορείτε να το μάθετε πώς να εγκαταστήσετε το PostgreSQL στα Windows ή πώς να εγκαταστήσετε το PostgreSQL στο macOS.

Εναλλακτικά, μπορείτε να διαμορφώσετε ένα απομακρυσμένη βάση δεδομένων PostgreSQL παράδειγμα.

Αυτός ο οδηγός θα χρησιμοποιήσει το δωρεάν επίπεδο του Render για να δημιουργήσει μια βάση δεδομένων PostgreSQL. Ακολουθήστε τα παρακάτω για να περιστρέψετε μια παρουσία βάσης δεδομένων PostgreSQL στο Render:

  1. Κατευθυνθείτε προς Ο ιστότοπος του Render, εγγραφείτε για έναν λογαριασμό και συνδεθείτε στον λογαριασμό σας ταμπλό σελίδα.
  2. Στη σελίδα του πίνακα εργαλείων σας, από τη λίστα των υπηρεσιών που εμφανίζεται, επιλέξτε την υπηρεσία PostgreSQL.
  3. Στη σελίδα ρυθμίσεων βάσης δεδομένων, συμπληρώστε τα απαιτούμενα στοιχεία και φροντίστε να επιλέξετε το ελεύθερη βαθμίδακαι τέλος κάντε κλικ Δημιουργία βάσης δεδομένων.

Μπορείτε να βρείτε τον κωδικό αυτού του έργου σε αυτό Αποθετήριο GitHub.

Δημιουργήστε ένα Flask Microservice

  1. Στο τερματικό σας, δημιουργήστε έναν νέο κατάλογο και αλλάξτε σε αυτόν:
    mkdir flask-microservice
    cd flask-microservice
  2. Στη συνέχεια, εγκαταστήστε virtualenv, για τη δημιουργία ενός απομονωμένου εικονικού περιβάλλοντος ανάπτυξης.
    pip εγκατάσταση virtualenv
  3. Δημιουργήστε ένα εικονικό περιβάλλον στο έργο σας:
    virtualenv venv
  4. Τέλος, ενεργοποιήστε το εικονικό περιβάλλον.
    # Windows: 
    .\venv\Scripts\ενεργοποίηση
    # Unix ή MacOS:
    πηγή venv/bin/activate

Εγκαταστήστε τα απαιτούμενα πακέτα

  1. Δημιούργησε ένα νέο απαιτήσεις.txt αρχείο στον ριζικό κατάλογο και προσθέστε αυτά τα πακέτα:
    φλάσκα
    psycopg2-δυαδικό
    sqlalchemy
  2. Στη συνέχεια, εγκαταστήστε τα πακέτα.
    pip install -r απαιτήσεις.txt

Δημιουργήστε έναν διακομιστή Flask

Στον ριζικό κατάλογο, δημιουργήστε ένα νέο αρχείο: service.pyκαι τον ακόλουθο κώδικα:

  1. Κάντε τις ακόλουθες εισαγωγές:
    από φλάσκα εισαγωγή Flask, request, jsonify
    από sqlalchemy εισαγωγή create_engine, Column, Integer, String
    από sqlalchemy.orm εισαγωγή συνεδριακός
    από sqlalchemy.ext.declarative εισαγωγή δηλωτική_βάση
    εισαγωγή psycopg2
  2. Δημιουργήστε την παρουσία Flask και διαμορφώστε τη σύνδεση της βάσης δεδομένων.
    app = Flask (__name__)

    κινητήρας = δημιουργία_μηχανής("postgresql+psycopg2://flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon_render.postgreask")

    Αντιγράψτε το εξωτερική διεύθυνση URL βάσης δεδομένων στη σελίδα ρυθμίσεων της βάσης δεδομένων του Render. Θα χρησιμοποιήσουμε το SQLAlchemy create_engine μέθοδος και Psycopg2 για να διαμορφώσετε τη σύνδεση της βάσης δεδομένων. Φροντίστε να ενημερώσετε και να αντικαταστήσετε τη διεύθυνση URL της βάσης δεδομένων στον παραπάνω κώδικα με τη διεύθυνση URL της δικής σας παρουσίας PostgreSQL που ταιριάζει με τη μορφή που καθορίζεται παραπάνω. Εάν η μορφή URL είναι λανθασμένη, ο κώδικας θα προκαλέσει σφάλμα.
  3. Δημιουργήστε ένα μοντέλο SQLAlchemy για τη βάση δεδομένων.
    Βάση = declarative_base()
    τάξηΧρήστης(Βάση):
    __όνομα πίνακα__ = 'χρήστες'
    id = Στήλη (Ακέραιος, πρωτεύον_κλειδί=Αληθής)
    όνομα = Στήλη (Συμβολοσειρά(50))
    Base.metadata.create_all (μηχανή)
    Τυπώνω("Ο πίνακας "χρήστες" δημιουργήθηκε με επιτυχία.")
    Session = sessionmaker (μηχανή)
    Ο κώδικας ορίζει ένα μοντέλο δεδομένων για τον πίνακα των χρηστών. Αφού ορίσει το μοντέλο, δημιουργεί τον πίνακα χρησιμοποιώντας το SQLAlchemy create_all μέθοδο που παίρνει τη βάση δεδομένων αντικείμενο σύνδεσης του κινητήρα ως παράμετρος. Τέλος, δημιουργεί ένα παράδειγμα του δημιουργός συνεδριών χρησιμοποιώντας το ίδιο αντικείμενο μηχανής για να ενεργοποιηθούν οι αλληλεπιδράσεις με τη βάση δεδομένων.
  4. Τέλος, ορίστε τις διαδρομές API για την microservice.
    @app.route("/api/user", metoda=["POST"])
    defcreate_user():
    data = request.get_json()
    όνομα = δεδομένα["όνομα"]
    δοκιμάστε:
    συνεδρία = Session()
    new_user = Χρήστης (όνομα=όνομα)
    session.add (new_user)
    session.commit()
    ΕΠΙΣΤΡΟΦΗ {"ταυτότητα": new_user.id, "όνομα": νέο όνομα χρήστη, "μήνυμα": στ" Χρήστης {όνομα} δημιουργήθηκε."}, 201
    εκτός Εξαίρεση όπως και μι:
    Τυπώνω(στ"Το λάθος"{μι}"συνέβη.")
    ΕΠΙΣΤΡΟΦΗ {"λάθος": "Παρουσιάστηκε σφάλμα κατά τη δημιουργία του χρήστη."}, 500
    @app.route("/api/user", metoda=["GET"])
    defget_all_users():
    δοκιμάστε:
    συνεδρία = Session()
    χρήστες = session.query (User).all()
    αν χρήστες:
    αποτέλεσμα = []
    Για χρήστης σε χρήστες:
    result.append({"ταυτότητα": ταυτότητα χρήστη, "όνομα": user.name})
    ΕΠΙΣΤΡΟΦΗ jsonify (αποτέλεσμα)
    αλλού:
    ΕΠΙΣΤΡΟΦΗ jsonify({"λάθος": f"Οι χρήστες δεν βρέθηκαν."}), 404
    εκτός Εξαίρεση όπως και μι:
    Τυπώνω(στ"Το λάθος"{μι}"συνέβη.")
    ΕΠΙΣΤΡΟΦΗ {"λάθος": "Παρουσιάστηκε σφάλμα κατά τη λήψη όλων των χρηστών."}, 500
    αν __όνομα__ == "__κύριος__":
    app.run (debug=Αληθής, οικοδεσπότης="0.0.0.0")

Δοκιμάστε το Microservice

Ο παραπάνω κώδικας δείχνει μια απλή μικρουπηρεσία δεδομένων χρήστη που προσθέτει και ανακτά δεδομένα από μια βάση δεδομένων PostgreSQL. Στην ιδανική περίπτωση, οι μικροϋπηρεσίες αντικατοπτρίζουν το Αρχιτεκτονική REST API δεδομένου ότι επιτρέπει μια ευέλικτη προσέγγιση για τη δημιουργία υπηρεσιών Ιστού—αυτή η αρχιτεκτονική ταιριάζει καλά με το σχέδιο σχεδιασμού των μικροϋπηρεσιών.

Ωστόσο, είναι σημαντικό να σημειωθεί ότι οι μικροϋπηρεσίες μπορούν να χρησιμοποιήσουν και άλλους τύπους προσεγγίσεων σχεδιασμού και πρωτοκόλλων επικοινωνίας, ανάλογα με τις συγκεκριμένες ανάγκες του συστήματος.

Για να δοκιμάσετε την υπηρεσία, γυρίστε τον διακομιστή ανάπτυξης και κατευθυνθείτε στον Postman για να υποβάλετε αιτήματα HTTP στα καθορισμένα τελικά σημεία.

flask --app εκτέλεση υπηρεσίας

Στο Postman, κάντε ένα αίτημα POST για να προσθέσετε δεδομένα χρήστη.

Containering Microservices With Docker

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

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

  1. Δημιουργήστε ένα Dockerfile στον ριζικό κατάλογο του φακέλου του έργου σας και προσθέστε αυτές τις οδηγίες:
    ΑΠΟ Πύθων:3.9-αλπικός
    ΔΙΕΥΘΥΝΤΗΣ ΕΡΓΑΣΙΑΣ /app
    ΑΝΤΙΓΡΑΦΟ απαιτήσεις.txt ./
    ΤΡΕΞΙΜΟ pip install -r απαιτήσεις.txt
    ΑΝΤΙΓΡΑΦΟ. .
    ΕΚΘΕΣΕΙ5000
    CMD ["Πύθων", "./service.py"]
  2. Εκτελέστε την παρακάτω εντολή για να δημιουργήσετε την εικόνα Docker.
     docker build -t flask-microservice .
  3. Τέλος, εκτελέστε το κοντέινερ Docker.
    docker run -p 5000:5000 flask-microservice

Αυτό θα ξεκινήσει ένα κοντέινερ Docker που εκτελεί τη μικρουπηρεσία Flask και θα εκθέσει τη θύρα 5000 στο κοντέινερ σε θύρα 8000 στον κεντρικό υπολογιστή, επιτρέποντάς σας να κάνετε αιτήματα HTTP από το πρόγραμμα περιήγησής σας στον ιστό ή τον Ταχυδρόμο χρησιμοποιώντας το URL http://localhost: 5000.

Υιοθέτηση της Αρχιτεκτονικής Microservice

Η αρχιτεκτονική των Microservices έχει γίνει μια δημοφιλής προσέγγιση για την ανάπτυξη επεκτάσιμων και ισχυρών εφαρμογών λογισμικού. Διαχωρίζοντας την εφαρμογή σε μικρές, ανεξάρτητα αναπτυσσόμενες υπηρεσίες, η αρχιτεκτονική των microservices διευκολύνει τη συντήρηση και την κλιμάκωση του συστήματος.

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