ការបង្រៀនអំពីការបង្កើតកម្មវិធីនៅលើ Amazon Web Services (AWS)

ការបង្រៀនអំពីការបង្កើតកម្មវិធីនៅលើ Amazon Web Services (AWS)

Amazon Web Services (AWS) គឺជាវេទិកាកុំព្យូទ័រលើពពកដ៏ពេញនិយមបំផុតមួយរបស់ពិភពលោក។ ជាមួយ AWS អ្នកអាចបង្កើត និងដំណើរការកម្មវិធីដោយមិនចាំបាច់ទិញម៉ាស៊ីនមេរូបវន្ត ការរៀបចំទំហំម៉ាស៊ីនមេ ឬការថែរក្សាហេដ្ឋារចនាសម្ព័ន្ធផ្ទាល់ខ្លួនរបស់អ្នកឡើយ។ អត្ថបទនេះនឹងណែនាំអ្នកអំពីការបង្កើតកម្មវិធីសាមញ្ញមួយនៅលើ AWS ដោយប្រើវិធីសាស្រ្តទូទៅមួយ៖ ការដាក់ពង្រាយ កម្មវិធីគេហទំព័រ ដោយប្រើសេវាកម្មគណនា (EC2) មូលដ្ឋានទិន្នន័យដែលបានគ្រប់គ្រង (RDS) ជាជម្រើសមួយ និងការផ្ទុក និងដែនប្រសិនបើចាំបាច់។ ខណៈពេលដែលឧទាហរណ៍ខាងក្រោមនេះគឺទូទៅ អ្នកអាចអនុវត្តវាចំពោះកម្មវិធីជាច្រើនប្រភេទ។

-

១. ការរៀបចំដំបូង៖ គណនី និងគោលគំនិតជាមូលដ្ឋាន

មុនពេលអ្នកចាប់ផ្តើម ត្រូវប្រាកដថាអ្នកមានគណនី AWS។ សេវាកម្ម AWS ជាច្រើនផ្តល់ជូន Free Tier (ឥតគិតថ្លៃក្នុងដែនកំណត់ជាក់លាក់) ដែលល្អឥតខ្ចោះសម្រាប់ការអនុវត្ត។

គោលគំនិតសំខាន់ៗមួយចំនួនដែលអ្នកត្រូវយល់៖

– តំបន់៖ ទីតាំងមជ្ឈមណ្ឌលទិន្នន័យ AWS (ឧទាហរណ៍៖ Singapore/ap-southeast-1)។ ជ្រើសរើសតំបន់ដែលនៅជិតបំផុតសម្រាប់ភាពយឺតយ៉ាវទាប។
– IAM (ការគ្រប់គ្រងអត្តសញ្ញាណ និងការចូលប្រើ)៖ ប្រព័ន្ធគ្រប់គ្រងការចូលប្រើ។ ការអនុវត្តល្អបំផុត៖ កុំប្រើគណនី root សម្រាប់ការងារប្រចាំថ្ងៃ។
– VPC (Virtual Private Cloud)៖ បណ្តាញនិម្មិតមួយដែលសេវាកម្មរបស់អ្នកដំណើរការ។
– ក្រុមសុវត្ថិភាព៖ “ជញ្ជាំងភ្លើង” ដើម្បីគ្រប់គ្រងការចូល/ចេញចូលពីម៉ាស៊ីនមេ។

តាមរយៈការយល់ដឹងអំពីរឿងទាំងបួននេះ វានឹងកាន់តែងាយស្រួលសម្រាប់អ្នកក្នុងការរុករកមូលដ្ឋានគ្រឹះនៃ AWS។

-

2. បង្កើតអ្នកប្រើប្រាស់ IAM និងគណនីដែលមានសុវត្ថិភាព

សុវត្ថិភាពតែងតែជាអាទិភាពលេខមួយរបស់យើង។ ចូលទៅក្នុង AWS Console ជា root បន្ទាប់មក៖

1. បើកសេវាកម្ម IAM។
២. បង្កើតអ្នកប្រើប្រាស់ថ្មី (ឧ. `admin-dev`) ហើយធីកប្រអប់ Provide user access to the AWS Management Console។
៣. ផ្តល់ការអនុញ្ញាត៖ សម្រាប់ការអនុវត្ត អ្នកអាចប្រើ AdministratorAccess (ទោះបីជានៅក្នុងគម្រោងពិតប្រាកដវាគួរតែមានកម្រិតជាងនេះក៏ដោយ)។
៤. បើកមុខងារ MFA (ការផ្ទៀងផ្ទាត់ពហុកត្តា) ដើម្បីបង្កើនសុវត្ថិភាព។

នៅពេលរួចរាល់ សូមចាកចេញពី root ហើយចូលដោយប្រើអ្នកប្រើប្រាស់ IAM ដែលទើបបង្កើតថ្មី។

-

៣. កំណត់ស្ថាបត្យកម្មកម្មវិធី

សម្រាប់ការបង្រៀននេះ យើងនឹងបង្កើតស្ថាបត្យកម្មសាមញ្ញមួយ៖

– EC2 : ដំណើរការកម្មវិធីគេហទំព័រ (ឧ. Node.js/Express, Python Flask ឬ PHP)។
– RDS ជាជម្រើស៖ គ្រប់គ្រងមូលដ្ឋានទិន្នន័យ MySQL/PostgreSQL ដូច្នេះទិន្នន័យត្រូវបានរក្សាទុកយ៉ាងស្អាត។
– S3 (ស្រេចចិត្ត): រក្សាទុកឯកសារឋិតិវន្តដូចជារូបភាព ឯកសារ ឬការបម្រុងទុក។
– ផ្លូវលេខ ៥៣ (ស្រេចចិត្ត): គ្រប់គ្រងដែន។
– CloudWatch៖ ការត្រួតពិនិត្យជាមូលដ្ឋាន។

ប្រសិនបើអ្នកទើបតែចាប់ផ្តើម សូមផ្តោតលើ EC2 ដើម្បីដំណើរការកម្មវិធីរបស់អ្នកជាមុនសិន។

-

៤. បង្កើតម៉ាស៊ីនបម្រើ EC2

ក) បង្កើតឧទាហរណ៍មួយ
១. ចូលទៅក្នុងសេវាកម្ម EC2។
2. ចុច បើកដំណើរការ Instance ។
៣. ជ្រើសរើសប្រព័ន្ធប្រតិបត្តិការ ឧទាហរណ៍ Ubuntu Server 22.04 LTS។
៤. ជ្រើសរើសប្រភេទ instance៖ សម្រាប់ Free Tier សូមប្រើ `t2.micro` ឬ `t3.micro` (អាស្រ័យលើភាពអាចរកបាន)។
៥. បង្កើត ឬជ្រើសរើសគូសោ (ឧ. `aws-key.pem`)។ រក្សាឯកសារ `.pem` ឲ្យមានសុវត្ថិភាព ព្រោះវានឹងត្រូវបានប្រើសម្រាប់ SSH។

ខ) ការកំណត់រចនាសម្ព័ន្ធបណ្តាញ និងជញ្ជាំងភ្លើង
– ត្រូវប្រាកដថា instance ស្ថិតនៅក្នុង VPC លំនាំដើម (សម្រាប់តែការអនុវត្តប៉ុណ្ណោះ)។
– កំណត់ក្រុមសុវត្ថិភាព៖
– ច្រក 22 (SSH) តែប៉ុណ្ណោះពី IP របស់អ្នក (ឧ. `My IP`)
– ច្រក 80 (HTTP) នៃ `0.0.0.0/0` (សាធារណៈ)
– ច្រក 443 (HTTPS) ពី `0.0.0.0/0` ប្រសិនបើប្រើ SSL នៅពេលក្រោយ

ចំណាំ៖ ការបើក SSH ជាសាធារណៈមានហានិភ័យ។ ត្រូវដាក់កម្រិតអាសយដ្ឋាន IP ជានិច្ច។

ចុច Launch ហើយរង់ចាំឱ្យ instance ដំណើរការ។

-

៥. ចូលទៅកាន់ម៉ាស៊ីនបម្រើតាមរយៈ SSH

នៅលើ Windows អ្នកអាចប្រើ WSL ឬ PuTTY។ នៅលើ macOS/Linux អ្នកអាចធ្វើវាដោយផ្ទាល់ពី terminal។

១. ផ្លាស់ប្តូរលេខកូដអនុញ្ញាត៖
“`បាស
chmod 400 aws-key.pem
“ `
2. SSH ទៅកាន់ម៉ាស៊ីនមេ (ប្រើ Public IPv4 ពី EC2)៖
“`បាស
ssh -i aws-key.pem ubuntu@PUBLIC_IP
“ `

ប្រសិនបើទទួលបានជោគជ័យ អ្នកស្ថិតនៅលើម៉ាស៊ីនមេ AWS Ubuntu។

-

៦. ដំឡើងម៉ាស៊ីនបម្រើបណ្ដាញ និងកម្មវិធី Runtime

នេះជាឧទាហរណ៍សម្រាប់កម្មវិធី Node.js ព្រោះវាត្រូវបានគេប្រើប្រាស់យ៉ាងទូលំទូលាយសម្រាប់គេហទំព័រទំនើប។

ក) ធ្វើបច្ចុប្បន្នភាព និងដំឡើង dependencies
“`បាស
ធ្វើឱ្យទាន់សម័យ sudo apt និង & ធ្វើឱ្យប្រសើរឡើង audo apt -y
sudo apt ដំឡើង -y curl git
“ `

ខ) ដំឡើង Node.js (កំណែ LTS)
“`បាស
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install-y nodejs
node - v
npm -v
“ `

-

៧. បង្កើតកម្មវិធីសាមញ្ញមួយ

បង្កើតថតឯកសារគម្រោង៖

“`បាស
mkdir myapp និង cd myapp
npm init -y
npm ដំឡើងរហ័ស
“ `

បង្កើតឯកសារ `index.js`៖

«`js
const express = ត្រូវការ ("express");
const app = express();

app.get(“/”, (តម្រូវការ, res) => {
res.send(“សួស្តី! កម្មវិធីរបស់អ្នកកំពុងដំណើរការលើ AWS EC2។”);
});

app.listen(3000, () => console.log(“ម៉ាស៊ីនបម្រើកំពុងដំណើរការលើច្រក 3000”));
“ `

ដំណើរការកម្មវិធី៖

“`បាស
សន្ទស្សន៍ណូត.js
“ `

សាកល្បងចូលប្រើពីកម្មវិធីរុករកតាមអ៊ីនធឺណិត៖
– `http://PUBLIC_IP:3000`

ទោះយ៉ាងណាក៏ដោយ ច្រក 3000 បច្ចុប្បន្នមិនទាន់បើកនៅក្នុងក្រុមសុវត្ថិភាពនៅឡើយទេ។ អ្នកអាច៖
១) បើកច្រក ៣០០០ នៅក្នុងក្រុមសុវត្ថិភាព ឬ
2) ប្រើប្រូកស៊ីបញ្ច្រាស (ត្រូវបានណែនាំច្រើនជាង) ដើម្បីឱ្យកម្មវិធីនៅតែស្ថិតនៅលើច្រកខាងក្នុង ប៉ុន្តែអាចចូលប្រើបានតាមរយៈច្រក 80/443។

-

៨. ការប្រើប្រាស់ Nginx ជា Reverse Proxy (ចូលប្រើតាមរយៈច្រក 80)

ដំឡើង Nginx៖
“`បាស
sudo apt ដំឡើង -y nginx
sudo systemctl បើក nginx
sudo systemctl start nginx
“ `

កំណត់រចនាសម្ព័ន្ធ Nginx៖
“`បាស
sudo nano /etc/nginx/sites-available/myapp
“ `

ខ្លឹមសារនៃការកំណត់រចនាសម្ព័ន្ធ៖
"`nginx
server {
listen 80;
ឈ្មោះម៉ាស៊ីនបម្រើ _;

ទីតាំង / {
proxy_pass http://127.0.0.1:3000;
ប្រូកស៊ី_http_កំណែ 1.1;
proxy_set_header ធ្វើឱ្យប្រសើរឡើង $http_upgrade;
ការតភ្ជាប់ proxy_set_header 'ធ្វើឱ្យប្រសើរឡើង';
proxy_set_header ម៉ាស៊ីន $host;
ប្រូកស៊ី_ឃ្លាំងសម្ងាត់_ផ្លូវវាង $http_ធ្វើឱ្យប្រសើរឡើង;
}
}
“ `

បើកការកំណត់រចនាសម្ព័ន្ធ៖
“`បាស
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl ផ្ទុក nginx ឡើងវិញ
“ `

ឥឡូវនេះចូលប្រើ៖
– `http://PUBLIC_IP/`

កម្មវិធីនេះដំណើរការលើច្រក 3000 ប៉ុន្តែសាធារណជនចូលប្រើវាតាមរយៈច្រក 80។

-

៩. ដំណើរការកម្មវិធីជាប់លាប់ជាមួយ PM2

ដើម្បីការពារកម្មវិធីពីការគាំងនៅពេល SSH ត្រូវបានផ្តាច់ សូមប្រើ PM2៖

“`បាស
sudo npm ដំឡើង -g pm2
pm2 ចាប់ផ្តើម index.js –ឈ្មោះ myapp
pm2 រក្សាទុក
ការចាប់ផ្តើម pm2
“ `

ពាក្យបញ្ជា `pm2 startup` នឹងផ្តល់ការណែនាំបន្ថែម។ ដំណើរការពាក្យបញ្ជាដែលបានបង្ហាញ ដើម្បីឱ្យកម្មវិធីដំណើរការដោយស្វ័យប្រវត្តិ នៅពេលដែលម៉ាស៊ីនមេចាប់ផ្តើមឡើងវិញ។

-

១០. (ស្រេចចិត្ត) ការបន្ថែមមូលដ្ឋានទិន្នន័យជាមួយ RDS

ប្រសិនបើកម្មវិធីរបស់អ្នកតម្រូវឱ្យមានមូលដ្ឋានទិន្នន័យ RDS ធ្វើឱ្យវាងាយស្រួល ពីព្រោះ AWS គ្រប់គ្រងការបម្រុងទុក ការបំណះ និងការធ្វើមាត្រដ្ឋាន។

ជំហានខ្លីៗ៖
១. បើកសេវាកម្ម RDS → បង្កើតមូលដ្ឋានទិន្នន័យ។
2. ជ្រើសរើស MySQL ឬ PostgreSQL (ច្បាប់ Free Tier មាននៅលើការកំណត់រចនាសម្ព័ន្ធជាក់លាក់)។
៣. កំណត់ឈ្មោះអ្នកប្រើប្រាស់/ពាក្យសម្ងាត់។
៤. ត្រូវប្រាកដថា RDS instance ស្ថិតនៅក្នុង VPC ដូចគ្នានឹង EC2។
៥. កំណត់ក្រុមសុវត្ថិភាព RDS ឱ្យទទួលយកតែការតភ្ជាប់ពីក្រុមសុវត្ថិភាព EC2 (មិនមែនពីសាធារណជនទេ)។

នៅពេលដែលមូលដ្ឋានទិន្នន័យដំណើរការ សូមចាប់យកចំណុចបញ្ចប់ RDS ហើយភ្ជាប់ទៅវាពីកម្មវិធីរបស់អ្នកដោយប្រើកម្មវិធីបញ្ជាមូលដ្ឋានទិន្នន័យ។

-

១១. (ស្រេចចិត្ត) បើកដំណើរការ HTTPS ជាមួយវិញ្ញាបនបត្រ SSL

សម្រាប់ការផលិត HTTPS គឺចាំបាច់។ វិធីសាស្ត្រធម្មតា៖
– ប្រើប្រាស់​ដូមេន (ឧ. ពី​ផ្លូវ​លេខ 53 ឬ​អ្នកចុះបញ្ជី​ផ្សេងទៀត)។
– ដំឡើង SSL តាមរយៈ Let's Encrypt (Certbot) នៅលើ EC2។

សរុបមក៖
“`បាស
sudo apt ដំឡើង -y certbot python3-certbot-nginx
sudo certbot –nginx
“ `

សូមអនុវត្តតាមអ្នកជំនួយការដើម្បីជ្រើសរើសដែន និងបើកការបញ្ជូនបន្ត HTTPS។

-

១២. ការត្រួតពិនិត្យ និងការចំណាយ

AWS ផ្តល់ជូន CloudWatch ដើម្បីមើលរង្វាស់ដូចជា CPU បណ្តាញ និងកំណត់ហេតុជាក់លាក់។ អ្នកក៏នឹងចង់តាមដានការចំណាយរបស់អ្នកដើម្បីជៀសវាងការខកខានផងដែរ។

គន្លឹះសំខាន់ៗ៖
– បើក​សំឡេង​រោទិ៍​សម្រាប់​ការ​គិត​ប្រាក់​នៅ​ក្នុង CloudWatch (ឧ. សំឡេង​រោទិ៍​ប្រសិន​បើ​ការ​គិត​ប្រាក់​លើស​ពី $5)។
- បិទឧបករណ៍នៅពេលមិនប្រើប្រាស់។
– លុប​ធនធាន​ដែល​មិន​ប្រើ (ឧបករណ៍​រក្សា​លំនឹង​បន្ទុក, EBS, Elastic IP, Snapshots) ព្រោះ​វា​អាច​នៅ​តែ​ត្រូវ​ចំណាយ។

-

Penutup

សូមអបអរសាទរ! អ្នកបានរៀនមូលដ្ឋានគ្រឹះនៃការបង្កើតកម្មវិធីនៅលើ AWS ដោយប្រើ EC2 ការដំណើរការ កម្មវិធីគេហទំព័រ ការដំឡើងប្រូកស៊ីបញ្ច្រាស Nginx និងការធ្វើឱ្យវាដំណើរការជានិច្ចជាមួយ PM2។ អ្នកក៏ទទួលបានទិដ្ឋភាពទូទៅនៃសេវាកម្មបន្ថែមដូចជា RDS សម្រាប់មូលដ្ឋានទិន្នន័យ S3 សម្រាប់ការផ្ទុក និងវិញ្ញាបនបត្រ HTTPS សម្រាប់សុវត្ថិភាពផងដែរ។

ប្រសិនបើអ្នកចង់ឡើងកម្រិត ជំហានបន្ទាប់ជាធម្មតាគឺ៖
– ការដាក់ពង្រាយដោយស្វ័យប្រវត្តិជាមួយ CI/CD (GitHub Actions + SSH ឬ AWS CodeDeploy)
– ការប្រើប្រាស់កុងតឺន័រជាមួយ Docker និងការរៀបចំដូចជា ECS ឬ EKS
– ការប្រើប្រាស់ស្ថាបត្យកម្មគ្មានម៉ាស៊ីនមេជាមួយ Lambda + API Gateway។

ប្រសិនបើអ្នកចង់ សូមបញ្ជាក់ប្រភេទកម្មវិធីដែលអ្នកកំពុងបង្កើត (Node.js, Laravel, Django, React ។ល។) និងគោលបំណងដែលបានគ្រោងទុករបស់វា (ការបង្ហាញ ការផលិត ទ្រង់ទ្រាយធំ)។ ខ្ញុំអាចប្ដូរតាមបំណងនូវការបង្រៀនជាមួយនឹងជំហានជាក់លាក់បន្ថែមទៀត។

សូម​បញ្ចេញ​មតិ