برنامه نویسی

POC: معماری سه لایه در AWS با RDS، Flask Microservice و PHP Frontend

در چشم انداز دیجیتال پر سرعت امروزی، ساخت معماری های مقیاس پذیر و کارآمد برای توسعه موفقیت آمیز برنامه بسیار مهم است. یکی از این رویکردها، معماری سه لایه است که یک برنامه کاربردی را به سه لایه مجزا تقسیم می کند: لایه ارائه، لایه برنامه و لایه ذخیره داده. هر لایه وظایف خاص خود را دارد که باعث ارتقای ماژولار بودن، انعطاف پذیری و سهولت نگهداری می شود. در این پست وبلاگ، ما به ایجاد یک اثبات مفهوم (POC) برای پیاده سازی معماری سه لایه در خدمات وب آمازون (AWS) با استفاده از خدمات کلیدی مانند Amazon RDS، Flask Microservice و PHP frontend خواهیم پرداخت.

طراحی سطح بالا

سفر با راه اندازی پایگاه داده AWS RDS آغاز می شود، جایی که ما یک پایگاه داده MySQL برای ذخیره اطلاعات کارمندان ایجاد خواهیم کرد. سپس از یک نمونه EC2 به این پایگاه داده متصل می شویم تا با داده ها تعامل داشته باشیم و کوئری های SQL را اجرا کنیم. در مرحله بعد، ما یک برنامه پایتون برای خواندن داده ها از پایگاه داده RDS ایجاد می کنیم و از اتصال یکپارچه بین باطن خود و پایگاه داده اطمینان حاصل می کنیم.

قلب معماری ما در Flask Microservice نهفته است که به عنوان لایه کاربردی عمل خواهد کرد. ما یک API RESTful را با Flask توسعه خواهیم داد، که ارتباط بین frontend و backend را امکان پذیر می کند. Flask Microservice داده های کارکنان را از پایگاه داده RDS بازیابی کرده و در قالب JSON ساختاریافته ارائه می کند.

در سمت جلو، ما یک سرور PHP را در یک نمونه EC2 دیگر برای ایجاد یک صفحه وب ساده راه اندازی می کنیم. با استفاده از PHP، ما با Flask Microservice برای بازیابی اطلاعات کارمندان و نمایش آن ها در صفحه وب ارتباط برقرار می کنیم. این نشان‌دهنده تعامل یکپارچه بین قسمت جلویی و باطن است و قدرت معماری سه لایه را برجسته می‌کند.

مرحله 1: راه اندازی پایگاه داده در AWS RDS

وارد کنسول AWS خود شوید و به RDS بروید.

یک پایگاه داده جدید ایجاد کنید و “ایزی ایجاد” را انتخاب کنید.
موتور MySQL را برای سادگی انتخاب کنید.
تنظیمات پایگاه داده را پیکربندی کنید:
شناسه نمونه DB: [masked]نام کاربری اصلی: [masked]گذرواژه اصلی: [masked]

توجه: به خاطر داشته باشید که برخی از نمونه های RDS ممکن است آدرس IP عمومی نداشته باشند و فقط منابع داخل VPC می توانند به آنها دسترسی داشته باشند.

مرحله 2: از یک نمونه EC2 به پایگاه داده RDS متصل شوید

برای تعامل با پایگاه داده RDS از یک نمونه EC2، کلاینت MySQL را نصب کرده و اتصال را برقرار کنید:

sudo yum install -y mysql-community-client --nogpgcheck
mysql --version
mysql -h [masked] -u [masked] -p [masked]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 3: پایگاه داده و جدول POC را ایجاد کنید

اکنون، بیایید پایگاه داده و جدولی را برای ذخیره اطلاعات کارکنان ایجاد کنیم:

CREATE DATABASE pocdb;
USE pocdb;

CREATE TABLE employee (
    employee_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL
);

INSERT INTO employee (name) VALUES ('John Doe'), ('Jane Smith');

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 4: ساخت یک برنامه پایتون برای خواندن داده ها از RDS

یک برنامه پایتون در نمونه EC2 برای خواندن داده ها از پایگاه داده RDS ایجاد کنید:

import mysql.connector

def read_employee_data():
    # RDS database connection details (masked)
    host = "[masked]"
    user = "[masked]"
    password = "[masked]"
    database = "pocdb"

    try:
        # Establish a connection to the MySQL database
        connection = mysql.connector.connect(
            host=host,
            user=user,
            password=password,
            database=database
        )

        if connection.is_connected():
            print("Connected to the database.")
            cursor = connection.cursor()

            # Define the SQL query to retrieve all data from the employee table
            sql_query = "SELECT * FROM employee"

            # Execute the query
            cursor.execute(sql_query)

            # Fetch all rows from the result set
            rows = cursor.fetchall()

            # Process the result set and print the data
            for row in rows:
                employee_id = row[0]
                name = row[1]
                print(f"Employee ID: {employee_id}, Name: {name}")

            # Close the cursor and connection
            cursor.close()
            connection.close()
        else:
            print("Database connection failed.")

    except mysql.connector.Error as e:
        print(f"Error connecting to the database: {e}")

if __name__ == "__main__":
    read_employee_data()

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

لطفاً برنامه را آزمایش کنید تا مطمئن شوید که بازیابی داده ها از پایگاه داده در حالت مستقل به درستی کار می کند.

مرحله 5: ایجاد Flask Microservice در نمونه EC2

Flask را روی نمونه EC2 نصب کنید و یک میکروسرویس Flask را برای بازیابی اطلاعات کارمندان از پایگاه داده RDS راه اندازی کنید:

pip install Flask

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

from flask import Flask, jsonify
import mysql.connector

app = Flask(__name__)

@app.route('/employees', methods=['GET'])
def get_employees():
    # RDS database connection details (masked)
    host = "[masked]"
    user = "[masked]"
    password = "[masked]"
    database = "pocdb"

    try:
        # Establish a connection to the MySQL database
        connection = mysql.connector.connect(
            host=host,
            user=user,
            password=password,
            database=database
        )

        if connection.is_connected():
            cursor = connection.cursor()

            # Define the SQL query to retrieve all data from the employee table
            sql_query = "SELECT * FROM employee"

            # Execute the query
            cursor.execute(sql_query)

            # Fetch all rows from the result set
            rows = cursor.fetchall()

            # Close the cursor and connection
            cursor.close()
            connection.close()

            # Process the result set and build a list of employees
            employees = []
            for row in rows:
                employee_id = row[0]
                name = row[1]
                employee_data = {"employee_id": employee_id, "name": name}
                employees.append(employee_data)

            # Return the list of employees as JSON response
            return jsonify(employees)
        else:
            return "Database connection failed.", 500

    except mysql.connector.Error as e:
        return f"Error connecting to the database: {e}", 500

if __name__ == "__main__":
    app.run(host="172.31.95.155", port=5000)

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 6: تست Microservice فلاسک

میکروسرویس Flask را روی نمونه EC2 راه اندازی کنید و عملکرد آن را آزمایش کنید:

python3 Microservice.py

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

curl http://[Masked]:5000/employees

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 7: راه اندازی Frontend PHP Server

در یک نمونه EC2 دیگر، PHP را نصب کنید و یک اسکریپت ساده PHP را پیکربندی کنید:

sudo yum update
sudo yum install php
sudo service httpd start
sudo mv hello.php /var/www/html/
sudo chown apache:apache /var/www/html/hello.php

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

hello.php:

<?php echo 'Hello, World!'; ?>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

*مرحله 8: تست PHP Frontend
*

با دسترسی به فایل PHP، فرانت PHP را تست کنید:

http://[masked]/hello.php

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 9: استفاده از PHP برای بازیابی داده ها از Flask Microservice

اسکریپت PHP را برای بازیابی اطلاعات کارکنان از میکروسرویس Flask تغییر دهید:

<?php
// Replace the API endpoint with the correct URL of your microservice
$apiUrl="http://[Masked]:5000/employees";

// Make an HTTP GET request to the API endpoint
$response = file_get_contents($apiUrl);

// Check if the response is valid
if ($response === false) {
    echo "Error fetching data from the microservice.";
} else {
    // Decode the JSON response into an associative array
    $data = json_decode($response, true);

    // Check if the JSON decoding was successful
    if ($data === null) {
        echo "Error decoding JSON data from the microservice.";
    } else {
        // Loop through the data and display the employee information
        echo "<h1>Employee List</h1>";
        echo "<ul>";
        foreach ($data as $employee) {
            echo "<li>Employee ID: " . $employee['employee_id'] . ", Name: " . $employee['name'] . "</li>";
        }
        echo "</ul>";
    }
}
?>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 10: تست نهایی و نتیجه گیری

دوباره به اسکریپت PHP دسترسی پیدا کنید تا داده های بازیابی شده کارکنان را از میکروسرویس Flask ببینید.

این پست وبلاگ اجرای یک معماری سه لایه در AWS را به نمایش گذاشت که ترکیبی از Amazon RDS، Flask Microservice و PHP frontend است. با جدا کردن برنامه به لایه های مجزا، معماری ماژولار بودن، مقیاس پذیری و قابلیت نگهداری را ارائه می دهد. پایگاه داده RDS اطلاعات کارمندان را ذخیره می کرد، Flask Microservice به عنوان لایه برنامه عمل می کرد و PHP برای نمایش داده ها در یک صفحه وب با backend تعامل داشت. ادغام یکپارچه بین این لایه ها پتانسیل معماری سه لایه را در ساخت برنامه های کاربردی قوی و مقیاس پذیر نشان می دهد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا