ការកសាងស្ថាបត្យកម្មកម្មវិធីធន់ទ្រាំសម្រាប់កម្មវិធីដែលជំរុញដោយ AI៖ យុទ្ធសាស្ត្រសម្រាប់មាត្រដ្ឋាន និងសុវត្ថិភាព | B4N1

ការកសាងស្ថាបត្យកម្មកម្មវិធីធន់ទ្រាំសម្រាប់កម្មវិធីដែលជំរុញដោយ AI៖ យុទ្ធសាស្ត្រសម្រាប់មាត្រដ្ឋាន និងសុវត្ថិភាព

9 months ago · b4n1 Read time: 3 min

សេចក្តីផ្តើម

ការរួមបញ្ចូលនៃ Artificial Intelligence (AI) ទៅក្នុងកម្មវិធីសូហ្វវែរបានផ្លាស់ប្តូរវិធីដែលយើងចូលទៅដោះស្រាយបញ្ហា ការសម្រេចចិត្ត និងស្វ័យប្រវត្តិកម្ម។ ទោះជាយ៉ាងណាក៏ដោយ នៅពេលដែលកម្មវិធីដែលជំរុញដោយ AI កាន់តែមានភាពទំនើប ពួកគេក៏កាន់តែងាយរងគ្រោះទៅនឹងការគំរាមកំហែងដែលកំពុងកើតមានដូចជា deepfakes និង AI-driven automation ផងដែរ។ នៅក្នុងអត្ថបទនេះ យើងនឹងស្វែងយល់ពីបច្ចេកទេសកម្រិតខ្ពស់សម្រាប់ការរចនាស្ថាបត្យកម្មកម្មវិធី ដែលអាចរួមបញ្ចូលសមាសធាតុ AI ប្រកបដោយប្រសិទ្ធភាព ខណៈពេលដែលធានានូវទំហំ និងសុវត្ថិភាព។

បញ្ហាប្រឈមនៃកម្មវិធីដែលជំរុញដោយ AI

កម្មវិធីដែលជំរុញដោយ AI ត្រូវបានកំណត់លក្ខណៈដោយសមត្ថភាពរបស់ពួកគេក្នុងការរៀនពីទិន្នន័យ សម្របខ្លួនទៅនឹងស្ថានភាពថ្មី និងធ្វើការសម្រេចចិត្តដោយស្វ័យភាព។ ទោះជាយ៉ាងណាក៏ដោយ នេះក៏មានន័យថាពួកគេងាយនឹងវាយប្រហារដែលកំណត់គោលដៅទៅលើសមាសធាតុ AI របស់ពួកគេ។ បញ្ហាប្រឈមមួយចំនួនដែលទាក់ទងនឹងកម្មវិធីដែលជំរុញដោយ AI រួមមាន:

  • Deepfakes៖ វីដេអូក្លែងក្លាយដែលបង្កើតដោយ AI ការថតសំឡេង ឬរូបភាពដែលអាចត្រូវបានប្រើដើម្បីបញ្ឆោតអ្នកប្រើប្រាស់ ឬសម្របសម្រួលប្រព័ន្ធសុវត្ថិភាព។
  • ** ស្វ័យប្រវត្តិកម្មដែលជំរុញដោយ AI**៖ រូបយន្តដែលដំណើរការដោយ AI ដែលអាចស្វ័យប្រវត្តិកម្មការវាយប្រហារ រីករាលដាលមេរោគ ឬសម្របសម្រួលទិន្នន័យរសើប។
  • ការបំពុលទិន្នន័យ៖ គំរូ AI អាចត្រូវបានបណ្តុះបណ្តាលលើទិន្នន័យពុល ដែលនាំឱ្យមានលទ្ធផលលំអៀង ឬមិនត្រឹមត្រូវ។
  • ការទាញយកគំរូ៖ អ្នកវាយប្រហារអាចទាញយកព័ត៌មានរសើបចេញពីគំរូ AI ដោយធ្វើឱ្យប៉ះពាល់ដល់សុវត្ថិភាពរបស់ពួកគេ។

យុទ្ធសាស្ត្រសម្រាប់ធ្វើមាត្រដ្ឋាន

ដើម្បីបង្កើតស្ថាបត្យកម្មសូហ្វវែរដែលធន់ទ្រាំសម្រាប់កម្មវិធីដែលដំណើរការដោយ AI យើងត្រូវផ្តោតលើលទ្ធភាពធ្វើមាត្រដ្ឋាន។ ការធ្វើមាត្រដ្ឋាន សំដៅលើសមត្ថភាពរបស់ប្រព័ន្ធដើម្បីគ្រប់គ្រងបន្ទុកកើនឡើង ចរាចរ ឬទិន្នន័យដោយមិនធ្វើឱ្យខូចដល់ដំណើរការ។ ខាងក្រោមនេះជាយុទ្ធសាស្ត្រមួយចំនួនសម្រាប់ការសម្រេចបាននូវលទ្ធភាពធ្វើមាត្រដ្ឋាននៅក្នុងកម្មវិធីដែលជំរុញដោយ AI៖

1. ស្ថាបត្យកម្ម Microservices

ស្ថាបត្យកម្ម Microservices គឺជាគំរូរចនាដែលរៀបចំកម្មវិធីជាបណ្តុំនៃសេវាកម្មឯករាជ្យតូចៗ ដែលទាក់ទងគ្នាទៅវិញទៅមកដោយប្រើ APIs ។ វិធីសាស្រ្តនេះអនុញ្ញាតឱ្យមានភាពបត់បែនកាន់តែច្រើន ការធ្វើមាត្រដ្ឋាន និងការអត់ធ្មត់កំហុស។

``ពស់ថ្លាន់

ឧទាហរណ៍នៃស្ថាបត្យកម្ម microservices នៅក្នុង Python

ពីការនាំចូល flask Flask, jsonify ពី flask_sqlalchemy នាំចូល SQLAlchemy

កម្មវិធី = Flask (name) app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///example.db" db = SQLAlchemy(កម្មវិធី)

អ្នកប្រើប្រាស់ថ្នាក់ (db.Model)៖ id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False)

@app.route("/users", method=["GET"]) def get_users(): អ្នកប្រើប្រាស់ = User.query.all() ត្រឡប់ jsonify ([{"id": user.id, "name": user.name} សម្រាប់អ្នកប្រើប្រាស់ក្នុងអ្នកប្រើប្រាស់])

ប្រសិនបើ name == "main": app.run(debug=ពិត)


### 2. កុងតឺន័រ

Containerization គឺជាបច្ចេកទេសដែលវេចខ្ចប់កម្មវិធី និងភាពអាស្រ័យរបស់វាទៅក្នុងកុងតឺន័រតែមួយដែលអាចដំណើរការលើវេទិកាណាមួយ។ វិធីសាស្រ្តនេះអនុញ្ញាតឱ្យមានភាពចល័ត សមត្ថភាពធ្វើមាត្រដ្ឋាន និងសុវត្ថិភាពកាន់តែច្រើន។

``ទៅ
// ឧទាហរណ៍នៃកុងតឺន័រនៅក្នុង Go
កញ្ចប់ចម្បង

នាំចូល (
	"fmt"
	"កំណត់ហេតុ"

	"github.com/docker/docker/api/types/container"
	"github.com/docker/docker/api/types/network"
	"github.com/docker/docker/client"
)

មុខងារចម្បង () {
	cli, err := client.NewClientWithOpts(client.FromEnv)
	បើខុស !=nil {
		log.Fatal(កំហុស)
	}

	containerConfig := &container.Config{
		រូបភាព៖ "ឧទាហរណ៍/រូបភាព",
		Env៖ []string{"EXAMPLE_VAR=example"},
	}

	networkConfig := &network.NetworkingConfig{
		EndpointsConfig៖ map[string]*network.EndpointSettings{
			"example-network": {},
		},
	}

	resp, err := cli.ContainerCreate(context.Background(), containerConfig, networkConfig, nil, nil, "")
	បើខុស !=nil {
		log.Fatal(កំហុស)
	}

	fmt.Println(resp.ID)
}

3. Serverless Architecture

ស្ថាបត្យកម្ម Serverless គឺជាគំរូរចនាដែលរៀបចំរចនាសម្ព័ន្ធកម្មវិធីជាបណ្តុំនៃមុខងារដែលត្រូវបានប្រតិបត្តិតាមតម្រូវការ ដោយមិនចាំបាច់មានការផ្តល់ ឬគ្រប់គ្រងម៉ាស៊ីនមេឡើយ។ វិធីសាស្រ្តនេះអនុញ្ញាតឱ្យមានមាត្រដ្ឋានកាន់តែច្រើន ភាពបត់បែន និងប្រសិទ្ធភាពចំណាយ។

``ច្រេះ // ឧទាហរណ៍នៃស្ថាបត្យកម្ម serverless នៅក្នុង Rust ប្រើ lambda_runtime::{Context, Error}; ប្រើ serde_json::json;

#[tokio::main] async fn main() -> លទ្ធផល<(), Error> { let func = lambda_runtime::run!( handler); func(បរិបទ៖:default())).រង់ចាំ?; យល់ព្រម(()) }

async fn handler(_event: lambda_runtime::Event, _context: Context) -> Result<lambda_runtime::Result, Error> { សូមឱ្យលទ្ធផល = json!({ "លេខកូដស្ថានភាព": 200, "body": "ជំរាបសួរពី Lambda!", }); យល់ព្រម(lambda_runtime::លទ្ធផល::from(លទ្ធផល)) }


## យុទ្ធសាស្ត្រសន្តិសុខ

ដើម្បីបង្កើតស្ថាបត្យកម្មកម្មវិធីដែលធន់ទ្រាំសម្រាប់កម្មវិធីដែលដំណើរការដោយ AI យើងក៏ត្រូវផ្តោតលើសុវត្ថិភាពផងដែរ។ សុវត្ថិភាព សំដៅលើសមត្ថភាពនៃប្រព័ន្ធដើម្បីការពារខ្លួនប្រឆាំងនឹងការចូលប្រើដោយគ្មានការអនុញ្ញាត ការបំពានទិន្នន័យ ឬសកម្មភាពព្យាបាទផ្សេងទៀត។ នេះគឺជាយុទ្ធសាស្ត្រមួយចំនួនសម្រាប់ការសម្រេចបាននូវសុវត្ថិភាពនៅក្នុងកម្មវិធីដែលដំណើរការដោយ AI៖

### 1. ការអ៊ិនគ្រីបទិន្នន័យ

ការអ៊ិនគ្រីបទិន្នន័យគឺជាបច្ចេកទេសមួយដែលបំបែកទិន្នន័យដើម្បីការពារការចូលដោយគ្មានការអនុញ្ញាត។ វិធីសាស្រ្តនេះអនុញ្ញាតឱ្យមានសន្តិសុខ ភាពសម្ងាត់ និងសុចរិតភាពកាន់តែច្រើន។

``ពស់ថ្លាន់
# ឧទាហរណ៍នៃការអ៊ិនគ្រីបទិន្នន័យនៅក្នុង Python
ពី cryptography.fernet នាំចូល Fernet

key = Fernet.generate_key()
cipher_suite = Fernet(គន្លឹះ)

ទិន្នន័យ = b "ជំរាបសួរពិភពលោក!"
encrypted_data = cipher_suite.encrypt(ទិន្នន័យ)
បោះពុម្ព(ទិន្នន័យដែលបានអ៊ិនគ្រីប)

decrypted_data = cipher_suite.decrypt(encrypted_data)
បោះពុម្ព(ឌិគ្រីបទិន្នន័យ)

2. ការគ្រប់គ្រងការចូលប្រើ

ការគ្រប់គ្រងការចូលប្រើគឺជាបច្ចេកទេសដែលគ្រប់គ្រងអ្នកដែលអាចចូលប្រើទិន្នន័យរសើប ឬអនុវត្តសកម្មភាពជាក់លាក់។ វិធីសាស្រ្តនេះអនុញ្ញាតឱ្យមានសន្តិសុខ គណនេយ្យភាព និងការអនុលោមតាមច្បាប់កាន់តែច្រើន។

``ទៅ // ឧទាហរណ៍នៃការគ្រប់គ្រងការចូលប្រើក្នុង Go កញ្ចប់ចម្បង

នាំចូល ( "fmt" "កំណត់ហេតុ"

"github.com/dgrijalva/jwt-go"

)

មុខងារចម្បង () { និមិត្តសញ្ញា := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ "username": "ឧទាហរណ៍", "role": "admin", })

tokenString, err := token.SignedString([]byte("secret"))
បើខុស !=nil {
	log.Fatal(កំហុស)
}

fmt.Println(tokenString)

}


### 3. ការរកឃើញភាពមិនប្រក្រតី

ការរកឃើញភាពមិនប្រក្រតី គឺជាបច្ចេកទេសដែលកំណត់អត្តសញ្ញាណលំនាំ ឬអាកប្បកិរិយាមិនធម្មតានៅក្នុងទិន្នន័យ។ វិធីសាស្រ្តនេះអនុញ្ញាតឱ្យមានសន្តិសុខ ការរកឃើញ និងការឆ្លើយតបកាន់តែច្រើន។

``ច្រេះ
// ឧទាហរណ៍នៃការរកឃើញភាពមិនប្រក្រតីនៅក្នុង Rust
ប្រើ Rand::Rng;
ប្រើ std::collections::HashMap;

fn main() {
    អនុញ្ញាតឱ្យ mut rng = rand::thread_rng();
    let mut data = HashMap::new();

    សម្រាប់ _ ក្នុង 0..100 {
        អនុញ្ញាតឱ្យតម្លៃ = rng.gen_range(0..100);
        data.insert(តម្លៃ តម្លៃ);
    }

    អនុញ្ញាតឱ្យ mut anomalies = Vec::new();

    សម្រាប់ (កូនសោ តម្លៃ) ក្នុង data.iter() {
        ប្រសិនបើ *key> 50 && *value> 50 {
            anomalies.push(key.clone());
        }
    }

    println!("{:?}", ភាពមិនប្រក្រតី);
}

ការមើលឃើញ

នេះគឺជាឧទាហរណ៍នៃការមើលឃើញដោយប្រើប្រាស់ Chart.js ដើម្បីបង្ហាញពីការធ្វើមាត្រដ្ឋាន និងយុទ្ធសាស្រ្តសុវត្ថិភាពដែលបានពិភាក្សានៅក្នុងអត្ថបទនេះ។

{
  "type": "របារ",
  "ទិន្នន័យ"៖ {
    "labels": ["សេវាកម្មខ្នាតតូច", "ការវេចខ្ចប់", "Serverless"],
    "សំណុំទិន្នន័យ": [
      {
        "label": "ការធ្វើមាត្រដ្ឋាន",
        "ទិន្នន័យ": [10, 20, 30],
        "ពណ៌ផ្ទៃខាងក្រោយ": [
          "rgba(255, 99, 132, 0.2)",
          "rgba(54, 162, 235, 0.2)",
          "rgba(255, 206, 86, 0.2)"
        ],
        "ពណ៌ព្រំដែន": [
          "rgba(255, 99, 132, 1)",
          "rgba(54, 162, 235, 1)",
          "rgba(255, 206, 86, 1)"
        ],
        "ទទឹងព្រំដែន"៖ [១, ១, ១]
      },
      {
        "label": "សុវត្ថិភាព",
        "ទិន្នន័យ"៖ [20, 30, 40],
        "ពណ៌ផ្ទៃខាងក្រោយ": [
          "rgba(255, 99, 132, 0.2)",
          "rgba(54, 162, 235, 0.2)",
          "rgba(255, 206, 86, 0.2)"
        ],
        "ពណ៌ព្រំដែន": [
          "rgba(255, 99, 132, 1)",
          "rgba(54, 162, 235, 1)",
          "rgba(255, 206, 86, 1)"
        ],
        "ទទឹងព្រំដែន"៖ [១, ១, ១]
      }
    ]
  },
  "ជម្រើស"៖ {
    "មាត្រដ្ឋាន"៖ {
      "yAxes": [
        {
          "ធីក"៖ {
            "beginAtZero"៖ ពិត
          }
        }
      ]
    }
  }
}

ការមើលឃើញនេះបង្ហាញអំពីលទ្ធភាពធ្វើមាត្រដ្ឋាន និងអត្ថប្រយោជន៍សុវត្ថិភាពនៃយុទ្ធសាស្ត្រនីមួយៗ ជាមួយនឹងសេវាកម្មខ្នាតតូចដែលបង្ហាញពីលទ្ធភាពធ្វើមាត្រដ្ឋានខ្ពស់បំផុត និងគ្មានម៉ាស៊ីនមេដែលបង្ហាញពីសុវត្ថិភាពខ្ពស់បំផុត។

សេចក្តីសន្និដ្ឋាន

ការកសាងស្ថាបត្យកម្មសូហ្វវែរដែលធន់ទ្រាំសម្រាប់កម្មវិធីដែលជំរុញដោយ AI តម្រូវឱ្យមានការបញ្ចូលគ្នានៃយុទ្ធសាស្ត្រពង្រីក និងសុវត្ថិភាព។ ដោយផ្តោតលើស្ថាបត្យកម្មមីក្រូសេវា កុងតឺន័រ និងស្ថាបត្យកម្មគ្មានម៉ាស៊ីនមេ យើងអាចសម្រេចបាននូវភាពបត់បែននិងភាពបត់បែនកាន់តែច្រើន។ ដោយផ្តោតលើការអ៊ិនគ្រីបទិន្នន័យ ការគ្រប់គ្រងការចូលប្រើ និងការរកឃើញភាពមិនប្រក្រតី យើងអាចសម្រេចបាននូវសុវត្ថិភាព និងការការពារកាន់តែច្រើន។ តាមរយៈការរួមបញ្ចូលគ្នានៃយុទ្ធសាស្រ្តទាំងនេះ យើងអាចបង្កើតស្ថាបត្យកម្មកម្មវិធីដែលអាចធ្វើមាត្រដ្ឋានបាន និងសុវត្ថិភាព ហើយអាចរួមបញ្ចូលសមាសធាតុ AI ប្រកបដោយប្រសិទ្ធភាព ខណៈពេលដែលធានាបាននូវសុវត្ថិភាព និងសុចរិតភាពនៃកម្មវិធីរបស់យើង។

ឯកសារយោង

  • [1] "Microservices Architecture" ដោយ Martin Fowler
  • [2] "Containerization" ដោយ Docker
  • [3] "Serverless Architecture" ដោយ AWS
  • [4] "ការអ៊ិនគ្រីបទិន្នន័យ" ដោយ Cryptography
  • [5] "ការគ្រប់គ្រងការចូលប្រើ" ដោយ JWT
  • [6] "ការរកឃើញភាពមិនធម្មតា" ដោយម៉ាស៊ីនរៀន

ចំណាំ៖ អត្ថបទនេះគឺសម្រាប់គោលបំណងអប់រំតែប៉ុណ្ណោះ ហើយមិនគួរត្រូវបានចាត់ទុកថាជាមគ្គុទ្ទេសក៍ដ៏ទូលំទូលាយក្នុងការកសាងស្ថាបត្យកម្មកម្មវិធីដែលធន់ទ្រាំសម្រាប់កម្មវិធីដែលដំណើរការដោយ AI នោះទេ។


Have Questions?

Let's Talk

Contact me on LinkedIn