או שהמשימה שלך קטנה, או שאתה יכול לפרק אותה למשימות קטנות יותר. ומשימה קטנה מתאימה באופן מושלם לשירות מיקרו.
עיצוב תוכנה הוא שלב חיוני בפיתוח תוכנה. גישת העיצוב יכולה להשפיע על כל הפרויקט ועל אופן הטיפול בדרישות שונות.
מפתחים השתמשו לעתים קרובות בארכיטקטורה מונוליטית, מאגדים את כל רכיבי התוכנה למודול אחד. עם זאת, גישה זו עלולה להתגלות כבלתי יעילה, במיוחד עבור יישומים גדולים יותר.
Microservices שואפים לטפל במגבלות אלו. מיקרו-שירות הוא יישום קטן ומודולרי שמבצע פונקציות ספציפיות. בניגוד ליישומים מונוליטיים, שירותי מיקרו מאפשרים פריסה ושינוי קנה מידה עצמאיים. כתוצאה מכך, הם גמישים יותר וקלים יותר לתחזוקה.
ארכיטקטורת המיקרו-שירות
ארכיטקטורת המיקרו-שירותים היא גישת עיצוב תוכנה המפרקת אפליקציה גדולה לשירותים עצמאיים, כאשר כל שירות נועד לתת מענה לדרישה עסקית ספציפית.
שירותים אלו פועלים על משאבים ייעודיים, כולל מופעי מסד נתונים נפרדים וכוח מחשוב. שלא כמו מערכות מונוליטיות, יישומי מיקרו-שירות מחוברים באופן רופף ומאפשרים גמישות רבה יותר.
במערכת מבוזרת, צמתי שרת פורסים ומפעילים יישומי מיקרו-שירות בנפרד תהליכים - תקשורת זה עם זה באמצעות פרוטוקולי תקשורת כגון HTTP או באמצעות מתווכים להודעות כמו RabbitMQ.
בעיקרו של דבר, גישה ארכיטקטונית זו מאפשרת לשירותים לשמור על עצמאותם אחד מהשני תוך הפעלה יעילה בתוך מערכת התוכנה.
במדריך זה, נדריך אותך דרך הטמעת מיקרו-שירות משתמש פשוט המנהל את נתוני המשתמש באמצעות Flask ו-PostgreSQL
הגדר מסד נתונים PostgreSQL
כדי להתחיל, התקן את PostgreSQL. אם אין לך PostgreSQL מותקן, אתה יכול לגלות כיצד להתקין PostgreSQL ב-Windows אוֹ כיצד להתקין PostgreSQL ב-macOS.
לחלופין, אתה יכול להגדיר את א מסד נתונים מרוחק של PostgreSQL למשל.
מדריך זה ישתמש בשכבה החינמית של Render כדי להגדיר מסד נתונים PostgreSQL. עקוב אחר אלה כדי להעלות מופע מסד נתונים PostgreSQL ב-Render:
- פנה אל האתר של רנדר, הירשם לחשבון והיכנס לחשבון שלך לוּחַ מַחווָנִים עמוד.
- בדף לוח המחוונים שלך, מרשימת השירותים המוצגת, בחר בשירות PostgreSQL.
- בדף הגדרות מסד הנתונים, מלא את הפרטים הנדרשים והקפד לבחור את שכבת חינם, ולבסוף לחץ צור מסד נתונים.
אתה יכול למצוא את הקוד של הפרויקט הזה בזה מאגר GitHub.
צור Flask Microservice
- במסוף שלך, צור ספרייה חדשה ושנה אליה:
mkdir flask-microservice
cd flask-microservice - לאחר מכן, התקן virtualenv, כדי ליצור סביבת פיתוח וירטואלית מבודדת.
pip להתקין virtualenv
- צור סביבה וירטואלית בפרויקט שלך:
virtualenv venv
- לבסוף, הפעל את הסביבה הוירטואלית.
# חלונות:
.\venv\Scripts\להפעיל
# יוניקס או MacOS:
מקור venv/bin/activate
התקן את החבילות הנדרשות
- ליצור חדש requirements.txt קובץ בספריית השורש והוסף את החבילות הבאות:
בקבוק
psychopg2-בינארי
sqlalchemy - לאחר מכן, התקן את החבילות.
pip install -r requirements.txt
צור שרת Flask
בספריית השורש, צור קובץ חדש: service.py, והקוד הבא:
- בצע את הייבוא הבא:
מ בקבוק יְבוּא Flask, request, jsonify
מ sqlalchemy יְבוּא create_engine, עמודה, מספר שלם, מחרוזת
מ sqlalchemy.orm יְבוּא יוצר מפגשים
מ sqlalchemy.ext.declarative יְבוּא בסיס_הצהרתי
יְבוּא psychopg2 - צור את המופע של Flask והגדר את חיבור מסד הנתונים.
העתק את כתובת אתר חיצוני של מסד נתונים בדף הגדרות מסד הנתונים של רנדר. נשתמש ב- SQLAlchemy create_engine שיטה ו Psychopg2 כדי להגדיר את חיבור מסד הנתונים. הקפד לעדכן ולהחליף את כתובת האתר של מסד הנתונים בקוד לעיל בכתובת ה-URL של מופע PostgreSQL משלך שתואמת את הפורמט שצוין לעיל. אם פורמט כתובת האתר שגוי, הקוד יזרוק שגיאה.app = Flask (__name__)
מנוע = create_engine("postgresql+psycopg2://flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.render.com/flask_service_fe0v")
- צור מודל SQLAlchemy עבור מסד הנתונים.
הקוד מגדיר מודל נתונים עבור טבלת המשתמשים. לאחר הגדרת המודל, הוא יוצר את הטבלה באמצעות ה SQLAlchemy create_all שיטה שלוקחת את מסד הנתונים אובייקט מנוע חיבור כפרמטר. לבסוף, זה יוצר מופע של יוצר הפעלות באמצעות אותו אובייקט מנוע כדי לאפשר אינטראקציות עם מסד הנתונים.Base = declarative_base()
מעמדמִשׁתַמֵשׁ(בסיס):
__שם שולחן__ = 'משתמשים'
id = Column (Integer, primary_key=נָכוֹן)
שם = עמודה (מחרוזת(50))
Base.metadata.create_all (מנוע)
הדפס("טבלה 'משתמשים' נוצרה בהצלחה.")
Session = Sessionmaker (מנוע) - לבסוף, הגדר את מסלולי ה-API עבור המיקרו-שירות.
@app.route("/api/user", methods=["POST"])
defצור משתמש():
data = request.get_json()
שם = נתונים["שֵׁם"]
לְנַסוֹת:
session = Session()
new_user = משתמש (שם=שם)
session.add (משתמש_חדש)
session.commit()
לַחֲזוֹר {"תְעוּדַת זֶהוּת": new_user.id, "שֵׁם": שם משתמש חדש, "הוֹדָעָה": f"משתמש {שֵׁם} נוצר."}, 201
מלבד יוצא מן הכלל כפי ש ה:
הדפס(f"השגיאה"{ה}' התרחש.")
לַחֲזוֹר {"שְׁגִיאָה": "אירעה שגיאה במהלך יצירת המשתמש."}, 500
@app.route("/api/user", methods=["GET"])
defקבל_כל_משתמשים():
לְנַסוֹת:
session = Session()
users = session.query (User).all()
אם משתמשים:
תוצאה = []
ל מִשׁתַמֵשׁ ב משתמשים:
result.append({"תְעוּדַת זֶהוּת": זהות המשתמש, "שֵׁם": שם משתמש})
לַחֲזוֹר jsonify (תוצאה)
אַחֵר:
לַחֲזוֹר jsonify({"שְׁגִיאָה": f"משתמשים לא נמצאו."}), 404
מלבד יוצא מן הכלל כפי ש ה:
הדפס(f"השגיאה"{ה}' התרחש.")
לַחֲזוֹר {"שְׁגִיאָה": "אירעה שגיאה בעת קבלת כל המשתמשים."}, 500
אם __שם__ == "__רָאשִׁי__":
app.run (debug=נָכוֹן, מארח="0.0.0.0")
בדוק את ה-Microservice
הקוד לעיל מדגים מיקרו-שירות פשוט של נתוני משתמש שמוסיף ומביא נתונים ממסד נתונים PostgreSQL. באופן אידיאלי, שירותי מיקרו משקפים את ארכיטקטורת REST API מכיוון שהיא מאפשרת גישה גמישה לבניית שירותי אינטרנט - ארכיטקטורה זו מתאימה היטב לדפוס העיצוב של שירותי מיקרו.
עם זאת, חשוב לציין שמיקרו-שירותים יכולים להשתמש גם בסוגים אחרים של גישות עיצוב ופרוטוקולי תקשורת, בהתאם לצרכים הספציפיים של המערכת.
כדי לבדוק את השירות, הפוך את שרת הפיתוח ופנה אל Postman כדי לבצע בקשות HTTP לנקודות הקצה שהוגדרו.
flask --הפעל שירות אפליקציה
ב-Postman, שלח בקשת POST להוספת נתוני משתמש.
מיכלי מיקרו-שירותים עם Docker
Docker מאגד יישומים והתלות שלהם בקונטיינרים. גישה זו מייעלת את הפיתוח, הפריסה והניהול של שירותי מיקרו בסביבת ייצור מכיוון שכל שירות יכול לפעול באופן עצמאי ולתקשר עם שירותים אחרים באמצעות התקשורת המוגדרת נוהל.
לפני שתתחיל, עליך להתקין תחילה את Docker על ידי ביצוע השלבים ב- אתר Docker. לאחר מכן, בנו תמונת Docker מ-Dockerfile שמכילה את ההוראות הדרושות להגדרת התלות הנדרשות להפעלת האפליקציה בקונטיינר.
- צור Dockerfile בספריית השורש של תיקיית הפרויקט שלך והוסף את ההוראות הבאות:
מ פִּיתוֹן:3.9-אלפיני
WORKDIR /app
עותק requirements.txt ./
לָרוּץ pip install -r requirements.txt
עותק. .
לַחשׂוֹף5000
CMD ["פִּיתוֹן", "./service.py"] - הפעל, הפקודה למטה כדי לבנות את תמונת Docker.
docker build-t flask-microservice .
- לבסוף, הפעל את מיכל Docker.
docker run -p 5000:5000 flask-microservice
זה יתחיל קונטיינר Docker המריץ את המיקרו-שירות Flask ותחשוף את יציאה 5000 בקונטיינר יציאה 8000 במחשב המארח, המאפשר לך לבצע בקשות HTTP מדפדפן האינטרנט שלך או Postman באמצעות כתובת אתר http://localhost: 5000.
אימוץ ארכיטקטורת Microservice
ארכיטקטורת Microservices הפכה לגישה פופולרית לפיתוח יישומי תוכנה ניתנים להרחבה ואיתן. על ידי חלוקת האפליקציה לשירותים קטנים הניתנים לפריסה עצמאית, ארכיטקטורת המיקרו-שירותים מקלה על תחזוקה וקנה מידה של המערכת.
למרות שלארכיטקטורה זו יש יתרונות פוטנציאליים, היא לא מתאימה לא לכל מקרי השימוש. בכל מקרה, הדרישות העסקיות הספציפיות של הפרויקט צריכות להשפיע בעיקר על גישת העיצוב המאומצת.