ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

ផ្នែកទី 1៖ គេហទំព័រ/Android

ការកត់សម្គាល់: អត្ថបទនេះគឺជាការបកប្រែជាភាសារុស្សីនៃអត្ថបទដើម "ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ "ការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ។" ទោះយ៉ាងណាក៏ដោយ រូបភាព តំណភ្ជាប់ សម្រង់ និងពាក្យទាំងអស់ត្រូវបានរក្សាទុកជាភាសាដើម ដើម្បីជៀសវាងការបំភ្លៃអត្ថន័យនៅពេលបកប្រែជាភាសារុស្សី។ ខ្ញុំសូមជូនពរឱ្យអ្នករីករាយក្នុងការសិក្សា!

ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

បច្ចុប្បន្ននេះ ឯកទេស DevOps គឺជាផ្នែកមួយនៃតម្រូវការបំផុតនៅក្នុងឧស្សាហកម្ម IT ។ ប្រសិនបើអ្នកបើកគេហទំព័រស្វែងរកការងារពេញនិយម ហើយត្រងតាមប្រាក់ខែ អ្នកនឹងឃើញថាការងារដែលទាក់ទងនឹង DevOps ស្ថិតនៅកំពូលនៃបញ្ជី។ ទោះជាយ៉ាងណាក៏ដោយ វាជារឿងសំខាន់ដែលត្រូវយល់ថា នេះសំដៅលើមុខតំណែង 'ជាន់ខ្ពស់' ដែលមានន័យថាបេក្ខជនមានជំនាញខ្ពស់ ចំណេះដឹងផ្នែកបច្ចេកវិទ្យា និងឧបករណ៍។ នេះក៏ភ្ជាប់មកជាមួយនូវទំនួលខុសត្រូវខ្ពស់ដែលទាក់ទងនឹងប្រតិបត្តិការផលិតកម្មដែលមិនមានការរំខាន។ ទោះយ៉ាងណាក៏ដោយ យើងចាប់ផ្តើមភ្លេចថា DevOps ជាអ្វី។ ដំបូង​ឡើយ វា​មិន​មែន​ជា​បុគ្គល ឬ​នាយកដ្ឋាន​ណាមួយ​ជាក់លាក់​ទេ។ ប្រសិនបើយើងស្វែងរកនិយមន័យនៃពាក្យនេះ យើងនឹងរកឃើញនាមដ៏ស្រស់ស្អាត និងត្រឹមត្រូវជាច្រើនដូចជា វិធីសាស្រ្ត ការអនុវត្ត ទស្សនវិជ្ជា វប្បធម៌ ក្រុមនៃគោលគំនិតជាដើម។

ជំនាញរបស់ខ្ញុំគឺជាវិស្វករស្វ័យប្រវត្តិកម្មសាកល្បង (វិស្វករស្វ័យប្រវត្តិកម្ម QA) ប៉ុន្តែខ្ញុំជឿថាវាមិនគួរត្រូវបានភ្ជាប់ជាមួយតែការសរសេរការធ្វើតេស្តស្វ័យប្រវត្តិ ឬបង្កើតស្ថាបត្យកម្មក្របខ័ណ្ឌសាកល្បងនោះទេ។ នៅឆ្នាំ 2020 ចំណេះដឹងអំពីហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មក៏ចាំបាច់ផងដែរ។ នេះអនុញ្ញាតឱ្យអ្នករៀបចំដំណើរការស្វ័យប្រវត្តិកម្មដោយខ្លួនឯង ចាប់ពីការធ្វើតេស្តដែលកំពុងដំណើរការ រហូតដល់ការផ្តល់លទ្ធផលដល់ភាគីពាក់ព័ន្ធទាំងអស់ ស្របតាមគោលដៅរបស់អ្នក។ ជាលទ្ធផល ជំនាញ DevOps គឺជាកត្តាចាំបាច់ដើម្បីបំពេញការងារ។ ហើយទាំងអស់នេះល្អ ប៉ុន្តែជាអកុសល មានបញ្ហា (spoiler៖ អត្ថបទនេះព្យាយាមសម្រួលបញ្ហានេះ) ចំណុចនោះគឺថា DevOps គឺពិបាក។ ហើយនេះគឺជាក់ស្តែង ដោយសារតែក្រុមហ៊ុននឹងមិនចំណាយច្រើនសម្រាប់អ្វីមួយដែលងាយស្រួលធ្វើ... នៅក្នុងពិភព DevOps មានឧបករណ៍ លក្ខខណ្ឌ និងការអនុវត្តមួយចំនួនធំដែលចាំបាច់ត្រូវធ្វើជាម្ចាស់។ នេះគឺជាការលំបាកជាពិសេសនៅដើមដំបូងនៃអាជីពនិងអាស្រ័យលើបទពិសោធន៍បច្ចេកទេសបង្គរ។

ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ
ប្រភព: http://maximelanciauxbi.blogspot.com/2017/04/devops-tools.html

នៅទីនេះ យើងប្រហែលជានឹងបញ្ចប់ជាមួយនឹងផ្នែកណែនាំ ហើយផ្តោតលើគោលបំណងនៃអត្ថបទនេះ។ 

តើអត្ថបទនេះនិយាយអំពីអ្វី?

នៅក្នុងអត្ថបទនេះ ខ្ញុំនឹងចែករំលែកបទពិសោធន៍របស់ខ្ញុំក្នុងការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បង។ មានប្រភពព័ត៌មានជាច្រើននៅលើអ៊ីនធឺណិតអំពីឧបករណ៍ផ្សេងៗ និងរបៀបប្រើប្រាស់ពួកវា ប៉ុន្តែខ្ញុំចង់មើលពួកវាសុទ្ធសាធនៅក្នុងបរិបទនៃស្វ័យប្រវត្តិកម្ម។ ខ្ញុំជឿថាវិស្វករស្វ័យប្រវត្តិកម្មជាច្រើនស្គាល់ស្ថានភាពនៅពេលដែលគ្មាននរណាម្នាក់លើកលែងតែអ្នកដំណើរការការធ្វើតេស្តដែលបានអភិវឌ្ឍ ឬយកចិត្តទុកដាក់ក្នុងការថែរក្សាពួកគេ។ ជាលទ្ធផល ការធ្វើតេស្តក្លាយជាហួសសម័យ ហើយអ្នកត្រូវចំណាយពេលធ្វើបច្ចុប្បន្នភាពពួកគេ។ ជាថ្មីម្តងទៀត នៅពេលចាប់ផ្តើមអាជីព នេះអាចជាកិច្ចការដ៏លំបាកមួយ៖ ការសម្រេចចិត្តប្រកបដោយប្រាជ្ញាថាឧបករណ៍ណាដែលអាចជួយលុបបំបាត់បញ្ហាដែលបានផ្តល់ឱ្យ របៀបជ្រើសរើស កំណត់រចនាសម្ព័ន្ធ និងថែទាំពួកគេ។ អ្នកសាកល្បងខ្លះងាកទៅរក DevOps (មនុស្ស) ដើម្បីទទួលបានជំនួយ ហើយសូមនិយាយដោយស្មោះត្រង់ វិធីសាស្រ្តនេះដំណើរការ។ ក្នុងករណីជាច្រើន វាអាចជាជម្រើសតែមួយគត់ ដោយសារយើងមិនមានលទ្ធភាពមើលឃើញចំពោះភាពអាស្រ័យទាំងអស់។ ប៉ុន្តែដូចដែលយើងដឹងហើយថា DevOps គឺជាបុរសដែលមមាញឹកខ្លាំង ព្រោះពួកគេត្រូវគិតអំពីហេដ្ឋារចនាសម្ព័ន្ធរបស់ក្រុមហ៊ុនទាំងមូល ការដាក់ពង្រាយ ការត្រួតពិនិត្យ សេវាមីក្រូ និងការងារស្រដៀងគ្នាផ្សេងទៀត អាស្រ័យលើអង្គការ/ក្រុម។ ដូចករណីធម្មតា ស្វ័យប្រវត្តិកម្មមិនមែនជាអាទិភាពទេ។ ក្នុង​ករណី​បែប​នេះ យើង​ត្រូវ​តែ​ព្យាយាម​ធ្វើ​អ្វីៗ​គ្រប់​យ៉ាង​ដែល​អាច​ធ្វើ​ទៅ​បាន​ពី​ដើម​ដល់​ចប់។ នេះនឹងកាត់បន្ថយភាពអាស្រ័យ បង្កើនល្បឿនការងារ បង្កើនជំនាញរបស់យើង និងអនុញ្ញាតឱ្យយើងមើលឃើញរូបភាពកាន់តែធំនៃអ្វីដែលកំពុងកើតឡើង។

អត្ថបទបង្ហាញពីឧបករណ៍ដែលពេញនិយម និងពេញនិយមបំផុត ហើយបង្ហាញពីរបៀបប្រើប្រាស់ពួកវា ដើម្បីកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មមួយជំហានម្តងៗ។ ក្រុមនីមួយៗត្រូវបានតំណាងដោយឧបករណ៍ដែលត្រូវបានសាកល្បងតាមរយៈបទពិសោធន៍ផ្ទាល់ខ្លួន។ ប៉ុន្តែនោះមិនមានន័យថាអ្នកត្រូវប្រើរបស់ដូចគ្នានោះទេ។ ឧបករណ៍ខ្លួនឯងមិនសំខាន់ទេវាលេចឡើងហើយលែងប្រើ។ ភារកិច្ចផ្នែកវិស្វកម្មរបស់យើងគឺត្រូវយល់ពីគោលការណ៍ជាមូលដ្ឋាន៖ ហេតុអ្វីបានជាយើងត្រូវការឧបករណ៍ក្រុមនេះ និងបញ្ហាការងារអ្វីខ្លះដែលយើងអាចដោះស្រាយជាមួយនឹងជំនួយរបស់ពួកគេ។ នោះហើយជាមូលហេតុដែលនៅចុងបញ្ចប់នៃផ្នែកនីមួយៗ ខ្ញុំទុកតំណភ្ជាប់ទៅកាន់ឧបករណ៍ស្រដៀងគ្នា ដែលអាចត្រូវបានប្រើប្រាស់នៅក្នុងស្ថាប័នរបស់អ្នក។

អ្វីដែលមិនមាននៅក្នុងអត្ថបទនេះ។

ខ្ញុំនិយាយម្តងទៀតថាអត្ថបទមិននិយាយអំពីឧបករណ៍ជាក់លាក់ទេ ដូច្នេះវានឹងមិនមានការបញ្ចូលកូដពីឯកសារ និងការពិពណ៌នាអំពីពាក្យបញ្ជាជាក់លាក់នោះទេ។ ប៉ុន្តែនៅចុងបញ្ចប់នៃផ្នែកនីមួយៗ ខ្ញុំទុកតំណភ្ជាប់សម្រាប់ការសិក្សាលម្អិត។

នេះត្រូវបានធ្វើដោយសារតែ: 

  • សម្ភារៈនេះគឺមានភាពងាយស្រួលក្នុងការស្វែងរកក្នុងប្រភពផ្សេងៗ (ឯកសារ សៀវភៅ វគ្គវីដេអូ);
  • ប្រសិនបើយើងចាប់ផ្តើមកាន់តែស៊ីជម្រៅ យើងនឹងត្រូវសរសេរ 10, 20, 30 ផ្នែកនៃអត្ថបទនេះ (ខណៈពេលដែលផែនការមាន 2-3);
  • ខ្ញុំគ្រាន់តែមិនចង់ខ្ជះខ្ជាយពេលវេលារបស់អ្នកទេ ព្រោះអ្នកប្រហែលជាចង់ប្រើឧបករណ៍ផ្សេងទៀតដើម្បីសម្រេចគោលដៅដូចគ្នា។

អនុវត្ត

ខ្ញុំពិតជាចង់ឱ្យសម្ភារៈនេះមានប្រយោជន៍សម្រាប់អ្នកអានគ្រប់រូប ហើយមិនមែនគ្រាន់តែអានហើយភ្លេចនោះទេ។ នៅក្នុងការសិក្សាណាមួយ ការអនុវត្តគឺជាធាតុផ្សំដ៏សំខាន់បំផុត។ សម្រាប់រឿងនេះខ្ញុំបានរៀបចំ ឃ្លាំង GitHub ជាមួយនឹងការណែនាំជាជំហាន ៗ អំពីរបៀបធ្វើអ្វីគ្រប់យ៉ាងពីទទេ. វាក៏មានកិច្ចការផ្ទះកំពុងរង់ចាំអ្នកផងដែរ ដើម្បីប្រាកដថាអ្នកមិនចម្លងបន្ទាត់នៃពាក្យបញ្ជាដែលអ្នកកំពុងប្រតិបត្តិដោយមិនដឹងខ្លួន។

ផែនការ

ជំហាន
បច្ចេកវិទ្យា
ឧបករណ៍

1
ការ​រត់​ក្នុង​ស្រុក (រៀបចំ​ការ​ធ្វើ​តេ​ស្ត​សាកល្បង​គេហទំព័រ / ប្រព័ន្ធ​ប្រតិបត្តិការ Android និង​រត់​វា​ក្នុង​ស្រុក​) 
Node.js, Selenium, Appium

2
ប្រព័ន្ធគ្រប់គ្រងកំណែ 
Git

3
ការវេចខ្ចប់
Docker, Selenium grid, Selenoid (Web, Android)

4
CI/CD
Gitlab CI

5
វេទិកាពពក
ក្រុមហ៊ុនGoogle Cloud Platform

6
Orchestration
Kubernetes

7
ហេដ្ឋារចនាសម្ព័ន្ធជាកូដ (IaC)
Terraform, Ansible

រចនាសម្ព័ន្ធនៃផ្នែកនីមួយៗ

ដើម្បីរក្សាការនិទានឱ្យច្បាស់លាស់ ផ្នែកនីមួយៗត្រូវបានពិពណ៌នាដោយយោងតាមគ្រោងខាងក្រោម៖

  • ការពិពណ៌នាសង្ខេបនៃបច្ចេកវិទ្យា,
  • តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម
  • រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ,
  • តំណភ្ជាប់ទៅការសិក្សា,
  • ឧបករណ៍ស្រដៀងគ្នា។

1. ដំណើរការការធ្វើតេស្តក្នុងស្រុក

ការពិពណ៌នាសង្ខេបនៃបច្ចេកវិទ្យា

នេះគ្រាន់តែជាជំហានរៀបចំដើម្បីដំណើរការការធ្វើតេស្តសាកល្បងក្នុងស្រុក និងផ្ទៀងផ្ទាត់ថាពួកគេឆ្លងកាត់។ នៅក្នុងផ្នែកជាក់ស្តែង Node.js ត្រូវបានប្រើ ប៉ុន្តែភាសាសរសេរកម្មវិធី និងវេទិកាក៏មិនសំខាន់ដែរ ហើយអ្នកអាចប្រើភាសាដែលប្រើនៅក្នុងក្រុមហ៊ុនរបស់អ្នក។ 

ទោះយ៉ាងណាក៏ដោយ ជាឧបករណ៍ស្វ័យប្រវត្តិ ខ្ញុំសូមណែនាំឱ្យប្រើ Selenium WebDriver សម្រាប់វេទិកាបណ្តាញ និង Appium សម្រាប់ប្រព័ន្ធប្រតិបត្តិការ Android រៀងៗខ្លួន ចាប់តាំងពីជំហានបន្ទាប់ យើងនឹងប្រើរូបភាព Docker ដែលត្រូវបានកែសម្រួលដើម្បីធ្វើការជាពិសេសជាមួយឧបករណ៍ទាំងនេះ។ ជាងនេះទៅទៀត សំដៅលើតម្រូវការការងារ ឧបករណ៍ទាំងនេះគឺជាតម្រូវការបំផុតនៅក្នុងទីផ្សារ។

ដូចដែលអ្នកប្រហែលជាបានកត់សម្គាល់ យើងគ្រាន់តែពិចារណាលើការសាកល្បងលើបណ្តាញ និង Android ប៉ុណ្ណោះ។ ជាអកុសល iOS គឺជារឿងខុសគ្នាទាំងស្រុង (សូមអរគុណ Apple) ។ ខ្ញុំមានគម្រោងបង្ហាញដំណោះស្រាយ និងការអនុវត្តទាក់ទងនឹង IOS នៅក្នុងផ្នែកនាពេលខាងមុខ។

តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម

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

រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ

ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

តំណភ្ជាប់ដើម្បីរុករក

ឧបករណ៍ស្រដៀងគ្នា

  • ភាសាសរសេរកម្មវិធីណាមួយដែលអ្នកចូលចិត្តដោយភ្ជាប់ជាមួយការធ្វើតេស្ត Selenium/Appium;
  • ការធ្វើតេស្តណាមួយ;
  • អ្នករត់ការសាកល្បងណាមួយ។

2. ប្រព័ន្ធគ្រប់គ្រងកំណែ (Git)

ការពិពណ៌នាសង្ខេបនៃបច្ចេកវិទ្យា

វានឹងមិនមែនជាការលាតត្រដាងដ៏ធំចំពោះនរណាម្នាក់ទេ ប្រសិនបើខ្ញុំនិយាយថា ការគ្រប់គ្រងកំណែគឺជាផ្នែកដ៏សំខាន់បំផុតនៃការអភិវឌ្ឍន៍ ទាំងនៅក្នុងក្រុម និងបុគ្គល។ ដោយផ្អែកលើប្រភពផ្សេងៗ វាមានសុវត្ថិភាពក្នុងការនិយាយថា Git គឺជាអ្នកតំណាងដ៏ពេញនិយមបំផុត។ ប្រព័ន្ធគ្រប់គ្រងកំណែផ្ដល់នូវអត្ថប្រយោជន៍ជាច្រើនដូចជា ការចែករំលែកកូដ ការរក្សាទុកកំណែ ការស្ដារទៅកាន់សាខាពីមុន ការត្រួតពិនិត្យប្រវត្តិគម្រោង និងការបម្រុងទុក។ យើងនឹងមិនពិភាក្សាលម្អិតអំពីចំណុចនីមួយៗនោះទេ ព្រោះខ្ញុំប្រាកដថាអ្នកធ្លាប់ស្គាល់វា និងប្រើប្រាស់វាក្នុងការងារប្រចាំថ្ងៃរបស់អ្នក។ ប៉ុន្តែប្រសិនបើភ្លាមៗនោះ ខ្ញុំសូមណែនាំឱ្យផ្អាកអានអត្ថបទនេះ ហើយបំពេញចន្លោះនេះឱ្យបានឆាប់តាមដែលអាចធ្វើទៅបាន។

តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម

ហើយនៅទីនេះអ្នកអាចសួរសំណួរសមហេតុផលមួយ: "ហេតុអ្វីបានជាគាត់ប្រាប់យើងអំពី Git? អ្នក​រាល់​គ្នា​ដឹង​រឿង​នេះ ហើយ​ប្រើ​វា​ទាំង​សម្រាប់​កូដ​អភិវឌ្ឍន៍ និង​សម្រាប់​កូដ​តេស្ត​ស្វ័យ​ប្រវត្តិ។ អ្នកពិតជាត្រឹមត្រូវ ប៉ុន្តែនៅក្នុងអត្ថបទនេះ យើងកំពុងនិយាយអំពីហេដ្ឋារចនាសម្ព័ន្ធ ហើយផ្នែកនេះដើរតួជាការមើលជាមុនសម្រាប់ផ្នែកទី 7៖ "ហេដ្ឋារចនាសម្ព័ន្ធជាកូដ (IaC)"។ សម្រាប់យើង នេះមានន័យថាហេដ្ឋារចនាសម្ព័ន្ធទាំងមូល រួមទាំងការធ្វើតេស្តត្រូវបានពិពណ៌នាក្នុងទម្រង់ជាកូដ ដូច្នេះយើងក៏អាចអនុវត្តប្រព័ន្ធកំណែលើវា និងទទួលបានអត្ថប្រយោជន៍ស្រដៀងគ្នាដូចជាកូដសម្រាប់ការអភិវឌ្ឍន៍ និងស្វ័យប្រវត្តិកម្ម។

យើងនឹងពិនិត្យមើល IaC ឱ្យកាន់តែលម្អិតនៅក្នុងជំហានទី 7 ប៉ុន្តែសូម្បីតែឥឡូវនេះ អ្នកអាចចាប់ផ្តើមប្រើ Git ក្នុងស្រុកដោយបង្កើតឃ្លាំងមូលដ្ឋាន។ រូបភាពធំនឹងត្រូវបានពង្រីកនៅពេលដែលយើងបន្ថែមឃ្លាំងពីចម្ងាយទៅហេដ្ឋារចនាសម្ព័ន្ធ។

រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ

ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

តំណភ្ជាប់ដើម្បីរុករក

ឧបករណ៍ស្រដៀងគ្នា

3. កុងតឺន័រ (Docker)

ការពិពណ៌នាសង្ខេបនៃបច្ចេកវិទ្យា

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

ដំណាក់កាលបន្ទាប់នៃការវិវត្តន៍គឺម៉ាស៊ីននិម្មិត (VMs) ដែលដោះស្រាយបញ្ហានៃការខ្ជះខ្ជាយលុយលើធនធានដែលមិនប្រើ។ បច្ចេកវិទ្យានេះធ្វើឱ្យវាអាចដំណើរការកម្មវិធីដោយឯករាជ្យពីគ្នាទៅវិញទៅមកនៅក្នុងម៉ាស៊ីនមេតែមួយ ដោយបែងចែកកន្លែងទំនេរទាំងស្រុង។ ប៉ុន្តែជាអកុសលបច្ចេកវិទ្យាណាមួយមានគុណវិបត្តិរបស់វា។ ការដំណើរការ VM ទាមទារប្រព័ន្ធប្រតិបត្តិការពេញលេញ ដែលស៊ីស៊ីភីយូ RAM ទំហំផ្ទុក និងអាស្រ័យលើប្រព័ន្ធប្រតិបត្តិការ ថ្លៃអាជ្ញាប័ណ្ណចាំបាច់ត្រូវយកមកពិចារណា។ កត្តាទាំងនេះប៉ះពាល់ដល់ល្បឿនផ្ទុក និងធ្វើឱ្យការចល័តពិបាក។

ហើយឥឡូវនេះយើងមកដល់កុងតឺន័រ។ ជាថ្មីម្តងទៀត បច្ចេកវិទ្យានេះដោះស្រាយបញ្ហាពីមុន ដោយសារកុងតឺន័រមិនប្រើប្រព័ន្ធប្រតិបត្តិការពេញលេញ ដែលធ្វើឲ្យមានធនធានច្រើន និងផ្តល់ដំណោះស្រាយលឿន និងអាចបត់បែនបានសម្រាប់ការចល័ត។

ជាការពិតណាស់ បច្ចេកវិទ្យាកុងតឺន័រមិនមានអ្វីថ្មីទេ ហើយត្រូវបានណែនាំជាលើកដំបូងនៅចុងទសវត្សរ៍ទី 70 ។ នៅសម័យនោះ ការស្រាវជ្រាវ ការអភិវឌ្ឍន៍ និងការព្យាយាមជាច្រើនត្រូវបានអនុវត្ត។ ប៉ុន្តែវាគឺជា Docker ដែលបានសម្របបច្ចេកវិជ្ជានេះ និងធ្វើឱ្យវាងាយស្រួលដល់មហាជន។ សព្វថ្ងៃនេះ នៅពេលដែលយើងនិយាយអំពីកុងតឺន័រ ក្នុងករណីភាគច្រើនយើងមានន័យថា Docker ។ នៅពេលយើងនិយាយអំពី Docker containers យើងមានន័យថា Linux containers។ យើងអាចប្រើប្រព័ន្ធ Windows និង macOS ដើម្បីដំណើរការកុងតឺន័រ ប៉ុន្តែវាជាការសំខាន់ណាស់ដែលត្រូវយល់ថាក្នុងករណីនេះស្រទាប់បន្ថែមនឹងលេចឡើង។ ឧទាហរណ៍ Docker នៅលើ Mac ដំណើរការកុងតឺន័រដោយស្ងៀមស្ងាត់នៅខាងក្នុង Linux VM ទម្ងន់ស្រាល។ យើងនឹងត្រលប់ទៅប្រធានបទនេះវិញ នៅពេលយើងពិភាក្សាអំពីការដំណើរការកម្មវិធីត្រាប់តាម Android នៅខាងក្នុងធុង ដូច្នេះនៅទីនេះមានចំនុចសំខាន់ដែលចាំបាច់ត្រូវពិភាក្សាលម្អិតបន្ថែមទៀត។

តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម

យើងបានរកឃើញថាកុងតឺន័រ និង Docker គឺត្រជាក់។ សូមក្រឡេកមើលរឿងនេះនៅក្នុងបរិបទនៃស្វ័យប្រវត្តិកម្ម ព្រោះគ្រប់ឧបករណ៍ ឬបច្ចេកវិទ្យាទាំងអស់ត្រូវដោះស្រាយបញ្ហា។ អនុញ្ញាតឱ្យយើងគូសបញ្ជាក់បញ្ហាជាក់ស្តែងនៃការធ្វើតេស្តស្វ័យប្រវត្តិកម្មនៅក្នុងបរិបទនៃការធ្វើតេស្ត UI៖

  • មួយចំនួនធំនៃភាពអាស្រ័យនៅពេលដំឡើង Selenium និងជាពិសេស Appium;
  • បញ្ហានៃភាពឆបគ្នារវាងកំណែនៃកម្មវិធីរុករក, ក្លែងធ្វើ និងកម្មវិធីបញ្ជា;
  • កង្វះកន្លែងដាច់ដោយឡែកសម្រាប់កម្មវិធីរុករក/ក្លែងធ្វើ ដែលមានសារៈសំខាន់ជាពិសេសសម្រាប់ការដំណើរការស្របគ្នា។
  • ពិបាកក្នុងការគ្រប់គ្រង និងថែទាំ ប្រសិនបើអ្នកត្រូវការដំណើរការកម្មវិធីរុករក 10, 50, 100 ឬសូម្បីតែ 1000 ក្នុងពេលតែមួយ។

ប៉ុន្តែចាប់តាំងពី Selenium គឺជាឧបករណ៍ស្វ័យប្រវត្តិកម្មដ៏ពេញនិយមបំផុត ហើយ Docker គឺជាឧបករណ៍ផ្ទុកដ៏ពេញនិយមបំផុតនោះ វាមិនគួរមានការភ្ញាក់ផ្អើលទេដែលនរណាម្នាក់បានព្យាយាមបញ្ចូលគ្នានូវពួកវាដើម្បីបង្កើតឧបករណ៍ដ៏មានឥទ្ធិពលមួយដើម្បីដោះស្រាយបញ្ហាដែលបានរៀបរាប់ខាងលើ។ ចូរយើងពិចារណាដំណោះស្រាយបែបនេះឱ្យបានលម្អិតបន្ថែមទៀត។ 

ក្រឡាចត្រង្គសេលេញ៉ូមនៅក្នុង docker

ឧបករណ៍នេះគឺជាការពេញនិយមបំផុតនៅក្នុងពិភព Selenium សម្រាប់ដំណើរការកម្មវិធីរុករកតាមអ៊ីនធឺណិតជាច្រើននៅលើម៉ាស៊ីនជាច្រើន និងគ្រប់គ្រងពួកវាពីមជ្ឈមណ្ឌលកណ្តាល។ ដើម្បីចាប់ផ្តើម អ្នកត្រូវចុះឈ្មោះយ៉ាងហោចណាស់ 2 ផ្នែក៖ Hub និង Node(s)។ Hub គឺជាថ្នាំងកណ្តាលដែលទទួលសំណើទាំងអស់ពីការធ្វើតេស្ត ហើយចែកចាយវាទៅកាន់ Nodes ដែលសមស្រប។ សម្រាប់ Node នីមួយៗ យើងអាចកំណត់រចនាសម្ព័ន្ធជាក់លាក់មួយ ជាឧទាហរណ៍ ដោយបញ្ជាក់ browser ដែលចង់បាន និងកំណែរបស់វា។ ទោះយ៉ាងណាក៏ដោយ យើងនៅតែត្រូវថែរក្សាកម្មវិធីរុករកដែលឆបគ្នាដោយខ្លួនឯង ហើយដំឡើងពួកវានៅលើ Nodes ដែលចង់បាន។ សម្រាប់ហេតុផលនេះ ក្រឡាចត្រង្គ Selenium មិនត្រូវបានប្រើក្នុងទម្រង់សុទ្ធរបស់វាទេ លើកលែងតែពេលដែលយើងត្រូវធ្វើការជាមួយកម្មវិធីរុករកតាមអ៊ីនធឺណិតដែលមិនអាចដំឡើងនៅលើ Linux OS ។ សម្រាប់ករណីផ្សេងទៀតទាំងអស់ ដំណោះស្រាយដែលអាចបត់បែនបាន និងត្រឹមត្រូវគឺត្រូវប្រើរូបភាព Docker ដើម្បីដំណើរការ Selenium grid Hub និង Nodes ។ វិធីសាស្រ្តនេះជួយសម្រួលការគ្រប់គ្រងថ្នាំងយ៉ាងខ្លាំង ដោយសារយើងអាចជ្រើសរើសរូបភាពដែលយើងត្រូវការជាមួយនឹងកំណែដែលត្រូវគ្នានៃកម្មវិធីរុករក និងកម្មវិធីបញ្ជាដែលបានដំឡើងរួចហើយ។

ទោះបីជាមានការពិនិត្យអវិជ្ជមានអំពីស្ថេរភាព ជាពិសេសនៅពេលដំណើរការ Nodes មួយចំនួនធំស្របគ្នាក៏ដោយ Selenium grid នៅតែជាឧបករណ៍ពេញនិយមបំផុតសម្រាប់ដំណើរការការធ្វើតេស្ត Selenium ស្របគ្នា។ វាជាការសំខាន់ក្នុងការកត់សម្គាល់ថាការកែលម្អ និងការកែប្រែផ្សេងៗនៃឧបករណ៍នេះកំពុងលេចឡើងឥតឈប់ឈរនៅក្នុងប្រភពបើកចំហ ដែលប្រយុទ្ធប្រឆាំងនឹងការស្ទះផ្សេងៗ។

Selenoid សម្រាប់គេហទំព័រ

ឧបករណ៍នេះគឺជារបកគំហើញនៅក្នុងពិភពនៃ Selenium ព្រោះវាដំណើរការភ្លាមៗចេញពីប្រអប់ ហើយបានធ្វើឱ្យជីវិតរបស់វិស្វករស្វ័យប្រវត្តិកម្មជាច្រើនកាន់តែងាយស្រួល។ ជាដំបូង នេះមិនមែនជាការកែប្រែមួយផ្សេងទៀតនៃក្រឡាចត្រង្គ Selenium នោះទេ។ ផ្ទុយទៅវិញ អ្នកអភិវឌ្ឍន៍បានបង្កើតកំណែថ្មីទាំងស្រុងនៃ Selenium Hub នៅក្នុង Golang ដែលរួមបញ្ចូលគ្នាជាមួយរូបភាព Docker ស្រាលសម្រាប់កម្មវិធីរុករកផ្សេងៗ បានផ្តល់កម្លាំងរុញច្រានដល់ការអភិវឌ្ឍន៍នៃការធ្វើតេស្តស្វ័យប្រវត្តិកម្ម។ លើសពីនេះទៅទៀតក្នុងករណី Selenium Grid យើងត្រូវកំណត់កម្មវិធីរុករកដែលត្រូវការទាំងអស់ និងកំណែរបស់វាជាមុន ដែលមិនមែនជាបញ្ហានៅពេលធ្វើការជាមួយកម្មវិធីរុករកតែមួយទេ។ ប៉ុន្តែនៅពេលនិយាយអំពីកម្មវិធីរុករកដែលគាំទ្រច្រើន Selenoid គឺជាដំណោះស្រាយលេខមួយដោយសារមុខងារ 'កម្មវិធីរុករកតាមតម្រូវការ' របស់វា។ អ្វីទាំងអស់ដែលយើងត្រូវការគឺត្រូវទាញយករូបភាពចាំបាច់ជាមួយកម្មវិធីរុករកតាមអ៊ីនធឺណិតជាមុន ហើយធ្វើបច្ចុប្បន្នភាពឯកសារកំណត់រចនាសម្ព័ន្ធដែល Selenoid ធ្វើអន្តរកម្ម។ បន្ទាប់ពី Selenoid ទទួលបានសំណើពីការធ្វើតេស្ត វានឹងបើកដំណើរការកុងតឺន័រដែលចង់បានដោយស្វ័យប្រវត្តិជាមួយនឹងកម្មវិធីរុករកតាមអ៊ីនធឺណិតដែលចង់បាន។ នៅពេលដែលការសាកល្បងបានបញ្ចប់ Selenoid នឹងចូលនិវត្តន៍នូវកុងតឺន័រ ដោយហេតុនេះការបង្កើនធនធានសម្រាប់សំណើនាពេលអនាគត។ វិធីសាស្រ្តនេះលុបបំបាត់ទាំងស្រុងនូវបញ្ហាល្បីនៃ 'ការរិចរិលថ្នាំង' ដែលយើងជួបប្រទះជាញឹកញាប់នៅក្នុងក្រឡាចត្រង្គ Selenium ។

ប៉ុន្តែ អាឡា សេលេណូយនៅតែមិនមែនជាគ្រាប់កាំភ្លើងទេ។ យើងទទួលបានមុខងារ 'កម្មវិធីរុករកតាមតម្រូវការ' ប៉ុន្តែមុខងារ 'ធនធានតាមតម្រូវការ' នៅតែមិនមាន។ ដើម្បីប្រើ Selenoid យើងត្រូវដាក់ពង្រាយវានៅលើផ្នែករឹង ឬនៅលើ VM ដែលមានន័យថាយើងត្រូវដឹងជាមុនថាតើធនធានប៉ុន្មានដែលត្រូវបែងចែក។ ខ្ញុំគិតថានេះមិនមែនជាបញ្ហាសម្រាប់គម្រោងតូចៗដែលដំណើរការ 10, 20 ឬសូម្បីតែ 30 browsers ស្របគ្នា។ ប៉ុន្តែចុះយ៉ាងណាបើយើងត្រូវការ 100, 500, 1000 ឬច្រើនជាងនេះ? វាគ្មានន័យទេក្នុងការថែរក្សា និងចំណាយសម្រាប់ធនធានជាច្រើនគ្រប់ពេលវេលា។ នៅក្នុងផ្នែកទី 5 និង 6 នៃអត្ថបទនេះ យើងនឹងពិភាក្សាអំពីដំណោះស្រាយដែលអនុញ្ញាតឱ្យអ្នកធ្វើមាត្រដ្ឋាន ដោយហេតុនេះកាត់បន្ថយការចំណាយរបស់ក្រុមហ៊ុនយ៉ាងច្រើន។

Selenoid សម្រាប់ប្រព័ន្ធប្រតិបត្តិការ Android

បន្ទាប់ពីជោគជ័យនៃ Selenoid ជាឧបករណ៍ស្វ័យប្រវត្តិកម្មគេហទំព័រ មនុស្សចង់បានអ្វីដែលស្រដៀងគ្នាសម្រាប់ប្រព័ន្ធប្រតិបត្តិការ Android ។ ហើយវាបានកើតឡើង - Selenoid ត្រូវបានចេញផ្សាយជាមួយនឹងការគាំទ្រប្រព័ន្ធប្រតិបត្តិការ Android ។ តាមទស្សនៈអ្នកប្រើប្រាស់កម្រិតខ្ពស់ គោលការណ៍នៃប្រតិបត្តិការគឺស្រដៀងគ្នាទៅនឹងស្វ័យប្រវត្តិកម្មគេហទំព័រ។ ភាពខុសគ្នាតែមួយគត់គឺថាជំនួសឱ្យធុងផ្ទុកកម្មវិធីរុករក Selenoid ដំណើរការធុងត្រាប់តាមប្រព័ន្ធប្រតិបត្តិការ Android ។ តាមគំនិតរបស់ខ្ញុំ បច្ចុប្បន្ននេះគឺជាឧបករណ៍ឥតគិតថ្លៃដ៏មានឥទ្ធិពលបំផុតសម្រាប់ដំណើរការការធ្វើតេស្ត Android ស្របគ្នា។

ខ្ញុំពិតជាមិនចង់និយាយអំពីទិដ្ឋភាពអវិជ្ជមាននៃឧបករណ៍នេះទេ ព្រោះខ្ញុំពិតជាចូលចិត្តវា។ ប៉ុន្តែនៅតែមានគុណវិបត្តិដូចគ្នាដែលអនុវត្តចំពោះស្វ័យប្រវត្តិកម្មគេហទំព័រ និងត្រូវបានផ្សារភ្ជាប់ជាមួយនឹងការធ្វើមាត្រដ្ឋាន។ បន្ថែមពីលើនេះ យើងត្រូវនិយាយអំពីដែនកំណត់មួយទៀតដែលអាចកើតមានជាការភ្ញាក់ផ្អើល ប្រសិនបើយើងកំពុងដំឡើងឧបករណ៍នេះជាលើកដំបូង។ ដើម្បីដំណើរការរូបភាព Android យើងត្រូវការម៉ាស៊ីនរូបវន្ត ឬ VM ដែលមានការគាំទ្រនិម្មិតដែលបានដាក់។ នៅក្នុងការណែនាំអំពីវិធី ខ្ញុំបង្ហាញពីរបៀបបើកវានៅលើ Linux VM។ ទោះយ៉ាងណាក៏ដោយ ប្រសិនបើអ្នកជាអ្នកប្រើប្រាស់ macOS ហើយចង់ដាក់ពង្រាយ Selenoid ក្នុងស្រុក នោះវានឹងមិនអាចដំណើរការការធ្វើតេស្ត Android បានទេ។ ប៉ុន្តែអ្នកតែងតែអាចដំណើរការ Linux VM ក្នុងស្រុកជាមួយនឹង 'nested virtualisation' ដែលបានកំណត់រចនាសម្ព័ន្ធ និងដាក់ពង្រាយ Selenoid នៅខាងក្នុង។

រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ

នៅក្នុងបរិបទនៃអត្ថបទនេះ យើងនឹងបន្ថែមឧបករណ៍ចំនួន 2 ដើម្បីបង្ហាញពីហេដ្ឋារចនាសម្ព័ន្ធ។ ទាំងនេះគឺជាក្រឡាចត្រង្គ Selenium សម្រាប់ការធ្វើតេស្តគេហទំព័រ និង Selenoid សម្រាប់ការធ្វើតេស្ត Android ។ នៅក្នុងការបង្រៀន GitHub ខ្ញុំក៏នឹងបង្ហាញអ្នកពីរបៀបប្រើ Selenoid ដើម្បីដំណើរការតេស្តគេហទំព័រផងដែរ។ 

ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

តំណភ្ជាប់ដើម្បីរុករក

ឧបករណ៍ស្រដៀងគ្នា

  • មានឧបករណ៍ផ្ទុកផ្សេងទៀត ប៉ុន្តែ Docker គឺពេញនិយមបំផុត។ ប្រសិនបើអ្នកចង់សាកល្បងអ្វីផ្សេងទៀត សូមចងចាំថាឧបករណ៍ដែលយើងបានគ្របដណ្តប់សម្រាប់ការដំណើរការការធ្វើតេស្ត Selenium ស្របគ្នានឹងមិនដំណើរការក្រៅប្រអប់នោះទេ។  
  • ដូចដែលបាននិយាយរួចមកហើយ មានការកែប្រែជាច្រើននៃក្រឡាចត្រង្គ Selenium ឧទាហរណ៍។ ហ្សាលេញ៉ូម.

៤.CI/CD

ការពិពណ៌នាសង្ខេបនៃបច្ចេកវិទ្យា

ការអនុវត្តនៃការធ្វើសមាហរណកម្មជាបន្តគឺពិតជាពេញនិយមក្នុងការអភិវឌ្ឍន៍ ហើយមានលក្ខណៈដូចគ្នាជាមួយនឹងប្រព័ន្ធគ្រប់គ្រងកំណែ។ ទោះ​បី​ជា​បែប​នេះ​ក្ដី ខ្ញុំ​មាន​អារម្មណ៍​ថា​មាន​ការ​ច្របូកច្របល់​នៅ​ក្នុង​វាក្យស័ព្ទ។ នៅក្នុងកថាខណ្ឌនេះ ខ្ញុំចង់រៀបរាប់អំពីការកែប្រែចំនួន 3 នៃបច្ចេកវិទ្យានេះ តាមទស្សនៈរបស់ខ្ញុំ។ នៅលើអ៊ីនធឺណិត អ្នកនឹងឃើញអត្ថបទជាច្រើនដែលមានការបកស្រាយខុសៗគ្នា ហើយវាជារឿងធម្មតាទេ ប្រសិនបើគំនិតរបស់អ្នកខុសគ្នា។ អ្វីដែលសំខាន់បំផុតនោះគឺថាអ្នកនៅលើទំព័រដូចគ្នាជាមួយមិត្តរួមការងាររបស់អ្នក។

ដូច្នេះ មាន 3 លក្ខខណ្ឌ៖ CI - Continuous Integration, CD - Continuous Delivery និងម្តងទៀត CD - Continuous Deployment។ (ខាងក្រោមនេះខ្ញុំនឹងប្រើពាក្យទាំងនេះជាភាសាអង់គ្លេស) ការកែប្រែនីមួយៗបន្ថែមជំហានបន្ថែមមួយចំនួនទៅបំពង់អភិវឌ្ឍន៍របស់អ្នក។ ប៉ុន្តែពាក្យ បន្ត (បន្ត) គឺជារឿងសំខាន់បំផុត។ នៅក្នុងបរិបទនេះ យើងមានន័យថា អ្វីមួយដែលកើតឡើងពីដើមដល់ចប់ ដោយគ្មានការរំខាន ឬអន្តរាគមន៍ដោយដៃ។ សូមក្រឡេកមើល CI & CD និង CD នៅក្នុងបរិបទនេះ។

  • ការរួមបញ្ចូលជាបន្តបន្ទាប់ នេះគឺជាជំហានដំបូងនៃការវិវត្តន៍។ បន្ទាប់​ពី​ដាក់​បញ្ចូល​លេខ​កូដ​ថ្មី​ទៅ​ម៉ាស៊ីន​មេ យើង​រំពឹង​ថា​នឹង​ទទួល​បាន​មតិ​កែលម្អ​រហ័ស​ថា​ការ​ផ្លាស់​ប្តូរ​របស់​យើង​មិន​អី​ទេ។ ជាធម្មតា CI រួមបញ្ចូលការដំណើរការឧបករណ៍វិភាគកូដឋិតិវន្ត និងការធ្វើតេស្ត API ឯកតា/ខាងក្នុង។ វាអនុញ្ញាតឱ្យយើងទទួលបានព័ត៌មានអំពីកូដរបស់យើងក្នុងរយៈពេលពីរបីវិនាទី/នាទី។
  • ការដឹកជញ្ជូនបន្ត គឺជាជំហានកម្រិតខ្ពស់ជាងនេះ ដែលយើងដំណើរការការធ្វើតេស្តរួមបញ្ចូល/UI។ ទោះយ៉ាងណាក៏ដោយ នៅដំណាក់កាលនេះ យើងមិនទទួលបានលទ្ធផលលឿនដូច CI នោះទេ។ ទីមួយ ប្រភេទនៃការធ្វើតេស្តទាំងនេះត្រូវចំណាយពេលយូរដើម្បីបញ្ចប់។ ទីពីរ មុននឹងបើកដំណើរការ យើងត្រូវដាក់ពង្រាយការផ្លាស់ប្តូររបស់យើងចំពោះបរិយាកាសសាកល្បង/ដំណាក់កាល។ ជាងនេះទៅទៀត ប្រសិនបើយើងកំពុងនិយាយអំពីការអភិវឌ្ឍន៍ទូរស័ព្ទ នោះជំហានបន្ថែមមួយនឹងលេចឡើងដើម្បីបង្កើតការស្ថាបនាកម្មវិធីរបស់យើង។
  • ការដាក់ពង្រាយជាបន្តបន្ទាប់ សន្មតថាយើងចេញផ្សាយការផ្លាស់ប្តូររបស់យើងដោយស្វ័យប្រវត្តិចំពោះផលិតកម្មប្រសិនបើការធ្វើតេស្តទទួលយកទាំងអស់ត្រូវបានឆ្លងកាត់នៅក្នុងដំណាក់កាលមុន។ បន្ថែមពីលើនេះ បន្ទាប់ពីដំណាក់កាលចេញផ្សាយ អ្នកអាចកំណត់រចនាសម្ព័ន្ធដំណាក់កាលផ្សេងៗ ដូចជាការដំណើរការការធ្វើតេស្តផ្សែងលើការផលិត និងការប្រមូលរង្វាស់ចំណាប់អារម្មណ៍។ ការដាក់ឱ្យប្រើប្រាស់ជាបន្តគឺអាចធ្វើទៅបានតែជាមួយនឹងការគ្របដណ្តប់ល្អដោយការធ្វើតេស្តស្វ័យប្រវត្តិប៉ុណ្ណោះ។ ប្រសិនបើការអន្តរាគមន៍ដោយដៃណាមួយត្រូវបានទាមទារ រួមទាំងការធ្វើតេស្ត នោះវាលែងមានទៀតហើយ ជាបន្ត (បន្ត) ។ បន្ទាប់មកយើងអាចនិយាយបានថាបំពង់បង្ហូរប្រេងរបស់យើងអនុលោមតាមការអនុវត្តនៃការដឹកជញ្ជូនបន្ត។

តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម

នៅក្នុងផ្នែកនេះ ខ្ញុំគួរតែបញ្ជាក់ឱ្យច្បាស់ថា នៅពេលយើងនិយាយអំពីការធ្វើតេស្ត UI ពីចុងដល់ចប់ វាមានន័យថាយើងគួរតែប្រើប្រាស់ការផ្លាស់ប្តូររបស់យើង និងសេវាកម្មដែលពាក់ព័ន្ធដើម្បីសាកល្បងបរិស្ថាន។ សមាហរណកម្មបន្ត - ដំណើរការមិនអាចអនុវត្តបានសម្រាប់កិច្ចការនេះទេ ហើយយើងត្រូវតែយកចិត្តទុកដាក់ក្នុងការអនុវត្តយ៉ាងហោចណាស់ការអនុវត្តការចែកចាយបន្ត។ ការដាក់ឱ្យប្រើប្រាស់ជាបន្តបន្ទាប់ក៏សមហេតុផលផងដែរនៅក្នុងបរិបទនៃការធ្វើតេស្ត UI ប្រសិនបើយើងនឹងដំណើរការពួកវានៅក្នុងផលិតកម្ម។

ហើយមុននឹងយើងមើលរូបភាពនៃការផ្លាស់ប្តូរស្ថាបត្យកម្ម ខ្ញុំចង់និយាយពាក្យពីរបីអំពី GitLab CI ។ មិនដូចឧបករណ៍ CI/CD ផ្សេងទៀត GitLab ផ្តល់នូវឃ្លាំងពីចម្ងាយ និងមុខងារបន្ថែមជាច្រើនទៀត។ ដូច្នេះ GitLab គឺច្រើនជាង CI ។ វារួមបញ្ចូលការគ្រប់គ្រងកូដប្រភព ការគ្រប់គ្រងរហ័សរហួន បំពង់ CI/CD ឧបករណ៍កត់ត្រា និងការប្រមូលម៉ែត្រចេញពីប្រអប់។ ស្ថាបត្យកម្ម GitLab មាន Gitlab CI/CD និង GitLab Runner ។ នេះគឺជាការពិពណ៌នាខ្លីៗពីគេហទំព័រផ្លូវការ៖

Gitlab CI/CD គឺជាកម្មវិធីគេហទំព័រដែលមាន API ដែលរក្សាទុកស្ថានភាពរបស់វានៅក្នុងមូលដ្ឋានទិន្នន័យ គ្រប់គ្រងគម្រោង/សាងសង់ និងផ្តល់នូវចំណុចប្រទាក់អ្នកប្រើប្រាស់។ GitLab Runner គឺជាកម្មវិធីដែលដំណើរការបង្កើត។ វាអាចត្រូវបានដាក់ពង្រាយដោយឡែកពីគ្នា និងដំណើរការជាមួយ GitLab CI/CD តាមរយៈ API ។ សម្រាប់ការធ្វើតេស្តដែលកំពុងដំណើរការ អ្នកត្រូវការទាំង Gitlab instance និង Runner ។

រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ

ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

តំណភ្ជាប់ដើម្បីរុករក

ឧបករណ៍ស្រដៀងគ្នា

5. វេទិកាពពក

ការពិពណ៌នាសង្ខេបនៃបច្ចេកវិទ្យា

នៅក្នុងផ្នែកនេះ យើងនឹងនិយាយអំពីនិន្នាការដ៏ពេញនិយមមួយហៅថា 'ពពកសាធារណៈ' ។ ទោះបីជាមានអត្ថប្រយោជន៍ដ៏ធំសម្បើមដែលបច្ចេកវិទ្យានិម្មិតនិម្មិត និងកុងតឺន័រដែលបានពិពណ៌នាខាងលើផ្តល់ឱ្យក៏ដោយ យើងនៅតែត្រូវការធនធានកុំព្យូទ័រ។ ក្រុមហ៊ុនទិញម៉ាស៊ីនមេថ្លៃៗ ឬជួលមជ្ឈមណ្ឌលទិន្នន័យ ប៉ុន្តែក្នុងករណីនេះ ចាំបាច់ត្រូវធ្វើការគណនា (ជួនកាលមិនប្រាកដនិយម) នៃចំនួនធនធានដែលយើងនឹងត្រូវការ ថាតើយើងនឹងប្រើវា 24/7 និងសម្រាប់គោលបំណងអ្វី។ ឧទាហរណ៍ ការផលិតត្រូវការម៉ាស៊ីនមេដែលដំណើរការ XNUMX/XNUMX ប៉ុន្តែតើយើងត្រូវការធនធានស្រដៀងគ្នាសម្រាប់ការធ្វើតេស្តក្រៅម៉ោងធ្វើការដែរឬទេ? វាក៏អាស្រ័យលើប្រភេទនៃការធ្វើតេស្តដែលកំពុងត្រូវបានអនុវត្ត។ ឧទាហរណ៍​មួយ​នឹង​ជា​ការ​ធ្វើតេស្ត​បន្ទុក/ស្ត្រេស ដែល​យើង​គ្រោង​នឹង​ដំណើរការ​ក្នុង​អំឡុង​ពេល​មិន​ធ្វើការ​ដើម្បី​ទទួល​បាន​លទ្ធផល​នៅ​ថ្ងៃ​បន្ទាប់។ ប៉ុន្តែប្រាកដណាស់ ភាពអាចរកបាននៃម៉ាស៊ីនមេ XNUMX/XNUMX គឺមិនត្រូវបានទាមទារសម្រាប់ការធ្វើតេស្តដោយស្វ័យប្រវត្តិពីចុងដល់ចប់ និងជាពិសេសមិនមែនសម្រាប់បរិយាកាសសាកល្បងដោយដៃនោះទេ។ សម្រាប់ស្ថានភាពបែបនេះ វាជាការល្អក្នុងការទទួលបានធនធានច្រើនតាមតម្រូវការតាមតម្រូវការ ប្រើប្រាស់វា និងបញ្ឈប់ការបង់ប្រាក់នៅពេលដែលពួកគេលែងត្រូវការ។ ជាងនេះទៅទៀត វាជាការប្រសើរណាស់ក្នុងការទទួលពួកវាភ្លាមៗដោយការចុចកណ្ដុរពីរបី ឬដំណើរការស្គ្រីបពីរបី។ នេះគឺជាអ្វីដែលពពកសាធារណៈត្រូវបានប្រើសម្រាប់។ តោះមើលនិយមន័យ៖

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

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

តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម

តើយើងត្រូវការធនធានជាក់លាក់អ្វីខ្លះសម្រាប់ការធ្វើតេស្ត UI ពីចុងដល់ចប់? ជាទូទៅទាំងនេះគឺជាម៉ាស៊ីននិម្មិត ឬចង្កោម (យើងនឹងនិយាយអំពី Kubernetes នៅផ្នែកបន្ទាប់) សម្រាប់ដំណើរការកម្មវិធីរុករកតាមអ៊ីនធឺណិត និងកម្មវិធីត្រាប់តាម។ កម្មវិធីរុករកតាមអ៊ីនធឺណិត និងកម្មវិធីត្រាប់តាមកាន់តែច្រើនដែលយើងចង់ដំណើរការក្នុងពេលតែមួយ ស៊ីភីយូ និងអង្គចងចាំកាន់តែច្រើនដែលត្រូវការ ហើយយើងត្រូវចំណាយប្រាក់កាន់តែច្រើន។ ដូច្នេះ ពពកសាធារណៈនៅក្នុងបរិបទនៃការធ្វើតេស្តស្វ័យប្រវត្តិកម្មអនុញ្ញាតឱ្យយើងដំណើរការកម្មវិធីមួយចំនួនធំ (100, 200, 1000...) នៃកម្មវិធីរុករក/កម្មវិធីត្រាប់តាមតាមតម្រូវការ ទទួលបានលទ្ធផលតេស្តឱ្យបានលឿនតាមដែលអាចធ្វើបាន និងបញ្ឈប់ការបង់ប្រាក់សម្រាប់ធនធានដែលពឹងផ្អែកខ្លាំងពេក។ អំណាច។ 

អ្នកផ្តល់សេវាពពកពេញនិយមបំផុតគឺ Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP) ។ ការណែនាំអំពីវិធីផ្តល់ឧទាហរណ៍អំពីរបៀបប្រើ GCP ប៉ុន្តែជាទូទៅវាមិនមានបញ្ហាអ្វីដែលអ្នកប្រើសម្រាប់កិច្ចការស្វ័យប្រវត្តិកម្មនោះទេ។ ពួកគេទាំងអស់ផ្តល់នូវមុខងារប្រហាក់ប្រហែលគ្នា។ ជាធម្មតា ដើម្បីជ្រើសរើសអ្នកផ្តល់សេវា ការគ្រប់គ្រងផ្តោតលើហេដ្ឋារចនាសម្ព័ន្ធ និងតម្រូវការអាជីវកម្មទាំងមូលរបស់ក្រុមហ៊ុន ដែលលើសពីវិសាលភាពនៃអត្ថបទនេះ។ សម្រាប់វិស្វករស្វ័យប្រវត្តិកម្ម វានឹងកាន់តែគួរឱ្យចាប់អារម្មណ៍ក្នុងការប្រៀបធៀបការប្រើប្រាស់អ្នកផ្តល់សេវាពពកជាមួយនឹងការប្រើប្រាស់វេទិកាពពកជាពិសេសសម្រាប់គោលបំណងសាកល្បង ដូចជា Sauce Labs, BrowserStack, BitBar ជាដើម។ ដូច្នេះ​សូម​ធ្វើ​វា​ផង! តាមគំនិតរបស់ខ្ញុំ Sauce Labs គឺជាកសិដ្ឋានសាកល្បងពពកដ៏ល្បីល្បាញបំផុត ដែលនេះជាមូលហេតុដែលខ្ញុំបានប្រើវាសម្រាប់ការប្រៀបធៀប។ 

GCP vs Sauce Labs សម្រាប់គោលបំណងស្វ័យប្រវត្តិកម្ម៖

សូមស្រមៃថាយើងត្រូវដំណើរការការធ្វើតេស្តគេហទំព័រចំនួន 8 និងការធ្វើតេស្ត Android 8 ក្នុងពេលដំណាលគ្នា។ សម្រាប់បញ្ហានេះយើងនឹងប្រើ GCP និងដំណើរការម៉ាស៊ីននិម្មិត 2 ជាមួយ Selenoid ។ នៅលើទីមួយយើងនឹងលើកធុងចំនួន 8 ជាមួយនឹងកម្មវិធីរុករក។ នៅលើទីពីរមាន 8 ធុងដែលមានកម្មវិធីត្រាប់តាម។ តោះមើលតម្លៃទាំងអស់គ្នា៖  

ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ
ដើម្បីដំណើរការកុងតឺន័រមួយជាមួយ Chrome យើងត្រូវការ n1-ស្តង់ដារ-1 ឡាន។ ក្នុងករណី Android វានឹងក្លាយជា n1-ស្តង់ដារ-4 សម្រាប់កម្មវិធីត្រាប់តាមមួយ។ តាមការពិត វិធីដែលអាចបត់បែនបាន និងថោកជាងគឺកំណត់តម្លៃអ្នកប្រើប្រាស់ជាក់លាក់សម្រាប់ CPU/Memory ប៉ុន្តែនៅពេលនេះវាមិនសំខាន់សម្រាប់ការប្រៀបធៀបជាមួយ Sauce Labs ទេ។

ហើយនេះគឺជាពន្ធសម្រាប់ការប្រើប្រាស់ Sauce Labs៖

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

ធនធានដែលត្រូវការ
ប្រចាំខែ
ម៉ោង​ធ្វើការ(៨ព្រឹក-៨យប់)
ម៉ោង​ធ្វើការ+ ទុកមុនបាន។

GCP សម្រាប់គេហទំព័រ
n1-ស្តង់ដារ-1 x 8 = n1-ស្តង់ដារ-8
$194.18
23 ថ្ងៃ * 12 ម៉ោង * 0.38 = 104.88 ដុល្លារ 
23 ថ្ងៃ * 12 ម៉ោង * 0.08 = 22.08 ដុល្លារ

Sauce Labs សម្រាប់គេហទំព័រ
ការធ្វើតេស្តប៉ារ៉ាឡែល Virtual Cloud8
$1.559
-
-

GCP សម្រាប់ Android
n1-standard-4 x 8: n1-standard-16
$776.72
23 ថ្ងៃ * 12 ម៉ោង * 1.52 = 419.52 ដុល្លារ 
23 ថ្ងៃ * 12 ម៉ោង * 0.32 = 88.32 ដុល្លារ

Sauce Labs សម្រាប់ Android
ការធ្វើតេស្តប៉ារ៉ាឡែល Cloud 8 ឧបករណ៍ពិត
$1.999
-
-

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

VM ដែលអាចទទួលយកបានជាមុន គឺជាឧទាហរណ៍មួយដែលអ្នកអាចបង្កើត និងដំណើរការបានក្នុងតម្លៃទាបជាងករណីធម្មតា។ ទោះយ៉ាងណាក៏ដោយ Compute Engine អាចនឹងបញ្ចប់ (ទុកជាមុន) ករណីទាំងនេះ ប្រសិនបើវាទាមទារសិទ្ធិចូលប្រើធនធានទាំងនោះសម្រាប់កិច្ចការផ្សេងទៀត។ ករណីដែលអាចមើលជាមុនបានគឺលើសសមត្ថភាពម៉ាស៊ីនគណនា ដូច្នេះភាពអាចរកបានរបស់វាប្រែប្រួលទៅតាមការប្រើប្រាស់។

ប្រសិនបើកម្មវិធីរបស់អ្នកមានការអត់ឱនចំពោះកំហុស ហើយអាចទប់ទល់នឹងការកក់ទុកមុនដែលអាចកើតមាន នោះឧទាហរណ៍ដែលអាចទទួលយកបានអាចកាត់បន្ថយការចំណាយលើ Compute Engine របស់អ្នកយ៉ាងខ្លាំង។ ជាឧទាហរណ៍ ការងារដំណើរការជាបាច់អាចដំណើរការលើករណីដែលអាចទទួលយកបាន។ ប្រសិនបើករណីទាំងនោះបញ្ចប់កំឡុងពេលដំណើរការ ការងារនឹងយឺត ប៉ុន្តែមិនបញ្ឈប់ទាំងស្រុងនោះទេ។ ករណីដែលអាចទទួលយកបាន បំពេញកិច្ចការដំណើរការជាបាច់របស់អ្នកដោយមិនចាំបាច់ដាក់បន្ទុកការងារបន្ថែមលើករណីដែលមានស្រាប់របស់អ្នក ហើយដោយមិនតម្រូវឱ្យអ្នកបង់ថ្លៃពេញសម្រាប់ករណីធម្មតាបន្ថែម។

ហើយវានៅតែមិនទាន់ចប់! តាមពិតទៅ ខ្ញុំប្រាកដក្នុងចិត្តថា គ្មាននរណាម្នាក់ធ្វើតេស្តរយៈពេល 12 ម៉ោងដោយគ្មានការសម្រាកនោះទេ។ ហើយប្រសិនបើដូច្នេះមែននោះ អ្នកអាចចាប់ផ្តើម និងបញ្ឈប់ម៉ាស៊ីននិម្មិតដោយស្វ័យប្រវត្តិ នៅពេលដែលពួកគេមិនត្រូវការ។ ពេលវេលាប្រើប្រាស់ជាក់ស្តែងអាចត្រូវបានកាត់បន្ថយមកត្រឹម 6 ម៉ោងក្នុងមួយថ្ងៃ។ បន្ទាប់មកការទូទាត់នៅក្នុងបរិបទនៃកិច្ចការរបស់យើងនឹងថយចុះមកត្រឹម 11 ដុល្លារក្នុងមួយខែសម្រាប់ 8 កម្មវិធីរុករក។ តើនេះមិនអស្ចារ្យទេ? ប៉ុន្តែជាមួយនឹងម៉ាស៊ីនដែលទុកមុន យើងត្រូវប្រុងប្រយ័ត្ន និងរៀបចំសម្រាប់ការរំខាន និងអស្ថិរភាព ទោះបីជាស្ថានភាពទាំងនេះអាចត្រូវបានផ្តល់ជូន និងដោះស្រាយនៅក្នុងកម្មវិធីក៏ដោយ។ វាមានតម្លៃវា!

ប៉ុន្តែមិនមែនខ្ញុំនិយាយថា 'កុំប្រើ cloud test farms' ទេ។ ពួកគេមានគុណសម្បត្តិមួយចំនួន។ ជាដំបូង នេះមិនមែនគ្រាន់តែជាម៉ាស៊ីននិម្មិតប៉ុណ្ណោះទេ ប៉ុន្តែជាដំណោះស្រាយស្វ័យប្រវត្តិកម្មសាកល្បងពេញលេញជាមួយនឹងសំណុំមុខងារចេញពីប្រអប់៖ ការចូលប្រើពីចម្ងាយ កំណត់ហេតុ ការថតអេក្រង់ ការថតវីដេអូ កម្មវិធីរុករកតាមអ៊ីនធឺណិតផ្សេងៗ និងឧបករណ៍ចល័តជាក់ស្តែង។ នៅក្នុងស្ថានភាពជាច្រើន នេះអាចជាជម្រើសឡូយដ៏សំខាន់មួយ។ វេទិកាសាកល្បងមានប្រយោជន៍ជាពិសេសសម្រាប់ប្រព័ន្ធស្វ័យប្រវត្តិកម្ម IOS នៅពេលដែលពពកសាធារណៈអាចផ្តល់ជូនតែប្រព័ន្ធលីនុច/វីនដូប៉ុណ្ណោះ។ ប៉ុន្តែយើងនឹងនិយាយអំពី iOS នៅក្នុងអត្ថបទខាងក្រោម។ ខ្ញុំសូមផ្តល់អនុសាសន៍ឱ្យមើលស្ថានភាព និងចាប់ផ្តើមពីភារកិច្ចជានិច្ច៖ ក្នុងករណីខ្លះវាមានតម្លៃថោក និងមានប្រសិទ្ធភាពជាងមុនក្នុងការប្រើប្រាស់ពពកសាធារណៈ ហើយនៅក្នុងកម្មវិធីផ្សេងទៀត វេទិកាសាកល្បងពិតជាមានតម្លៃចំណាយ។

រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ

ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

តំណភ្ជាប់ដើម្បីរុករក

ឧបករណ៍ស្រដៀងគ្នា៖

6. វង់ភ្លេង

ការពិពណ៌នាសង្ខេបនៃបច្ចេកវិទ្យា

ខ្ញុំមានដំណឹងល្អ - យើងជិតដល់ចុងបញ្ចប់នៃអត្ថបទហើយ! នៅពេលនេះ ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មរបស់យើងមានការធ្វើតេស្តលើបណ្តាញ និងប្រព័ន្ធប្រតិបត្តិការ Android ដែលយើងដំណើរការតាមរយៈ GitLab CI ស្របគ្នា ដោយប្រើឧបករណ៍ដែលបើកដោយ Docker៖ Selenium grid និង Selenoid ។ លើសពីនេះទៅទៀត យើងប្រើម៉ាស៊ីននិម្មិតដែលបានបង្កើតតាមរយៈ GCP ដើម្បីបង្ហោះកុងតឺន័រជាមួយកម្មវិធីរុករក និងកម្មវិធីត្រាប់តាម។ ដើម្បីកាត់បន្ថយការចំណាយ យើងចាប់ផ្តើមម៉ាស៊ីននិម្មិតទាំងនេះតែតាមតម្រូវការ ហើយបញ្ឈប់វានៅពេលដែលការធ្វើតេស្តមិនត្រូវបានអនុវត្ត។ តើមានអ្វីផ្សេងទៀតដែលអាចកែលម្អហេដ្ឋារចនាសម្ព័ន្ធរបស់យើង? ចម្លើយគឺបាទ! ជួបជាមួយ Kubernetes (K8s)!

ជាដំបូង សូមមើលពីរបៀបដែលពាក្យ orchestration, cluster, និង Kubernetes មានទំនាក់ទំនងគ្នាទៅវិញទៅមក។ នៅកម្រិតខ្ពស់ វង់ភ្លេងគឺជាប្រព័ន្ធដែលដាក់ពង្រាយ និងគ្រប់គ្រងកម្មវិធី។ សម្រាប់ស្វ័យប្រវត្តិកម្មសាកល្បង កម្មវិធីដែលមានផ្ទុកបែបនេះគឺ Selenium grid និង Selenoid ។ Docker និង K8s បំពេញគ្នាទៅវិញទៅមក។ ទីមួយ​គឺ​ប្រើ​សម្រាប់​ការ​ដាក់​ពង្រាយ​កម្មវិធី ទីពីរ​សម្រាប់​ការ​រៀបចំ​វង់ភ្លេង។ នៅក្នុងវេន K8s គឺជាចង្កោម។ ភារកិច្ចរបស់ចង្កោមគឺត្រូវប្រើ VMs ជា Nodes ដែលអនុញ្ញាតឱ្យអ្នកដំឡើងមុខងារ កម្មវិធី និងសេវាកម្មផ្សេងៗនៅក្នុងម៉ាស៊ីនមេតែមួយ (ចង្កោម)។ ប្រសិនបើ Nodes ណាមួយបរាជ័យ នោះ Nodes ផ្សេងទៀតនឹងយកឡើង ដែលធានានូវប្រតិបត្តិការគ្មានការរំខាននៃកម្មវិធីរបស់យើង។ បន្ថែមពីលើនេះ K8s មានមុខងារសំខាន់ៗទាក់ទងនឹងការធ្វើមាត្រដ្ឋាន ដោយសារយើងទទួលបានបរិមាណដ៏ល្អប្រសើរនៃធនធានដោយស្វ័យប្រវត្តិដោយផ្អែកលើការផ្ទុក និងកំណត់ដែនកំណត់។

ជាការពិត ការដាក់ឱ្យប្រើប្រាស់ Kubernetes ដោយដៃពីដំបូង មិនមែនជាកិច្ចការតូចតាចទាល់តែសោះ។ ខ្ញុំ​នឹង​ទុក​តំណ​មួយ​ទៅ​ការណែនាំ​អំពី​របៀប​ដ៏​ល្បី "Kubernetes The Hard Way" ហើយ​ប្រសិន​បើ​អ្នក​ចាប់​អារម្មណ៍ អ្នក​អាច​អនុវត្ត​វា​បាន។ ប៉ុន្តែជាសំណាងល្អ មានវិធីសាស្រ្ត និងឧបករណ៍ជំនួស។ មធ្យោបាយងាយស្រួលបំផុតគឺប្រើ Google Kubernetes Engine (GKE) នៅក្នុង GCP ដែលនឹងអនុញ្ញាតឱ្យអ្នកទទួលបានចង្កោមដែលត្រៀមរួចជាស្រេចដោយចុចពីរបីដង។ ខ្ញុំសូមផ្តល់អនុសាសន៍ឱ្យប្រើវិធីសាស្រ្តនេះដើម្បីចាប់ផ្តើមរៀនព្រោះវានឹងអនុញ្ញាតឱ្យអ្នកផ្តោតលើការរៀនពីរបៀបប្រើ K8s សម្រាប់ភារកិច្ចរបស់អ្នកជំនួសឱ្យការរៀនពីរបៀបដែលសមាសធាតុខាងក្នុងគួរតែត្រូវបានរួមបញ្ចូលជាមួយគ្នា។ 

តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម

សូមក្រឡេកមើលមុខងារសំខាន់ៗមួយចំនួនដែល K8s ផ្តល់ជូន៖

  • ការដាក់ពង្រាយកម្មវិធី៖ ដោយប្រើចង្កោមពហុថ្នាំងជំនួសឱ្យ VMs;
  • ការធ្វើមាត្រដ្ឋានថាមវន្ត៖ កាត់បន្ថយថ្លៃដើមនៃធនធានដែលប្រើតែតាមតម្រូវការ។
  • ការព្យាបាលដោយខ្លួនឯង: ការងើបឡើងវិញដោយស្វ័យប្រវត្តិនៃ pods (ជាលទ្ធផលនៃធុងត្រូវបានស្ដារឡើងវិញផងដែរ);
  • ការចាប់ផ្តើមនៃការអាប់ដេត និងការត្រលប់មកវិញនៃការផ្លាស់ប្តូរដោយគ្មានពេលវេលារងចាំ៖ ការធ្វើបច្ចុប្បន្នភាពឧបករណ៍ កម្មវិធីរុករកតាមអ៊ីនធឺណិត និងកម្មវិធីត្រាប់តាមមិនរំខានដល់ការងាររបស់អ្នកប្រើប្រាស់បច្ចុប្បន្នទេ

ប៉ុន្តែ K8s នៅតែមិនមែនជាគ្រាប់កាំភ្លើង។ ដើម្បីស្វែងយល់ពីគុណសម្បត្តិ និងដែនកំណត់ទាំងអស់នៅក្នុងបរិបទនៃឧបករណ៍ដែលយើងកំពុងពិចារណា (ក្រឡាចត្រង្គ Selenium, Selenoid) យើងនឹងពិភាក្សាដោយសង្ខេបអំពីរចនាសម្ព័ន្ធរបស់ K8s ។ Cluster មាន Nodes ពីរប្រភេទ៖ Master Nodes និង Workers Nodes ។ Master Nodes ទទួលខុសត្រូវចំពោះការគ្រប់គ្រង ការដាក់ពង្រាយ និងការសម្រេចចិត្តលើកាលវិភាគ។ ថ្នាំងកម្មករគឺជាកន្លែងដែលកម្មវិធីត្រូវបានដាក់ឱ្យដំណើរការ។ ថ្នាំងក៏មានបរិយាកាសពេលដំណើរការកុងតឺន័រផងដែរ។ ក្នុងករណីរបស់យើង នេះគឺជា Docker ដែលទទួលខុសត្រូវចំពោះប្រតិបត្តិការទាក់ទងនឹងកុងតឺន័រ។ ប៉ុន្តែក៏មានដំណោះស្រាយជំនួសផងដែរឧទាហរណ៍ កុងតឺន័រ. វាជាការសំខាន់ណាស់ដែលត្រូវយល់ថាការធ្វើមាត្រដ្ឋាន ឬការព្យាបាលដោយខ្លួនឯងមិនអនុវត្តដោយផ្ទាល់ចំពោះធុងនោះទេ។ នេះត្រូវបានអនុវត្តដោយការបន្ថែម/បន្ថយចំនួនផត ដែលនៅក្នុងវេនមានធុង (ជាធម្មតាមួយធុងក្នុងមួយផត ប៉ុន្តែអាស្រ័យលើកិច្ចការអាចមានច្រើនជាងនេះ)។ ឋានានុក្រម​កម្រិត​ខ្ពស់​មាន​ថ្នាំង​កម្មករ ដែល​នៅ​ក្នុង​នោះ​មាន​ផត ដែល​នៅ​ក្នុង​ធុង​ត្រូវ​បាន​លើក។

មុខងារធ្វើមាត្រដ្ឋានគឺជាគន្លឹះ ហើយអាចត្រូវបានអនុវត្តទៅលើថ្នាំងទាំងពីរនៅក្នុងក្រុមថ្នាំងចង្កោម និងផតនៅក្នុងថ្នាំងមួយ។ មាន 2 ប្រភេទនៃការធ្វើមាត្រដ្ឋានដែលអនុវត្តទាំងថ្នាំង និងផត។ ប្រភេទទីមួយគឺផ្ដេក - ការធ្វើមាត្រដ្ឋានកើតឡើងដោយការបង្កើនចំនួនថ្នាំង/ផត។ ប្រភេទនេះគឺល្អជាង។ ប្រភេទទីពីរគឺតាមបែបបញ្ឈរ។ ការធ្វើមាត្រដ្ឋានត្រូវបានអនុវត្តដោយការបង្កើនទំហំនៃថ្នាំង/ផត មិនមែនចំនួនរបស់វាទេ។

ឥឡូវនេះសូមមើលឧបករណ៍របស់យើងនៅក្នុងបរិបទនៃលក្ខខណ្ឌខាងលើ។

ក្រឡាចត្រង្គសេលេញ៉ូម

ដូចដែលបានរៀបរាប់ខាងលើ ក្រឡាចត្រង្គ Selenium គឺជាឧបករណ៍ដ៏ពេញនិយមមួយ ហើយវាគ្មានអ្វីចម្លែកទេដែលវាត្រូវបានផ្ទុក។ ដូច្នេះហើយ វាមិនមែនជារឿងចម្លែកទេដែលក្រឡាចត្រង្គ Selenium អាចត្រូវបានដាក់ពង្រាយនៅក្នុង K8s ។ ឧទាហរណ៍នៃវិធីធ្វើនេះអាចត្រូវបានរកឃើញនៅក្នុងឃ្លាំង K8s ផ្លូវការ។ ដូចធម្មតា ខ្ញុំភ្ជាប់តំណភ្ជាប់នៅចុងបញ្ចប់នៃផ្នែក។ លើសពីនេះ ការណែនាំអំពីវិធីធ្វើនេះបង្ហាញពីរបៀបធ្វើវានៅក្នុង Terraform ។ វាក៏មានការណែនាំអំពីរបៀបធ្វើមាត្រដ្ឋានចំនួន pods ដែលមានធុង browser ផងដែរ។ ប៉ុន្តែមុខងារធ្វើមាត្រដ្ឋានដោយស្វ័យប្រវត្តិនៅក្នុងបរិបទនៃ K8s នៅតែមិនមែនជាកិច្ចការជាក់ស្តែងទាំងស្រុងនោះទេ។ នៅពេលខ្ញុំចាប់ផ្តើមសិក្សា ខ្ញុំមិនបានរកឃើញការណែនាំ ឬអនុសាសន៍ជាក់ស្តែងណាមួយឡើយ។ បន្ទាប់ពីការសិក្សា និងការពិសោធន៍ជាច្រើនដោយមានការគាំទ្រពីក្រុម DevOps យើងបានជ្រើសរើសវិធីសាស្រ្តនៃការបង្កើនកុងតឺន័រជាមួយនឹងកម្មវិធីរុករកតាមអ៊ីនធឺណិតចាំបាច់នៅក្នុងផតឃែរមួយ ដែលមានទីតាំងនៅខាងក្នុងថ្នាំងកម្មករមួយ។ វិធីសាស្រ្តនេះអនុញ្ញាតឱ្យយើងអនុវត្តយុទ្ធសាស្រ្តនៃការធ្វើមាត្រដ្ឋានផ្ដេកនៃថ្នាំងដោយបង្កើនចំនួនរបស់ពួកគេ។ ខ្ញុំសង្ឃឹមថាវានឹងផ្លាស់ប្តូរនាពេលអនាគត ហើយយើងនឹងឃើញការពិពណ៌នាកាន់តែច្រើនឡើងអំពីវិធីសាស្រ្តកាន់តែប្រសើរ និងដំណោះស្រាយដែលត្រៀមរួចជាស្រេច ជាពិសេសបន្ទាប់ពីការចេញផ្សាយ Selenium grid 4 ជាមួយនឹងស្ថាបត្យកម្មខាងក្នុងដែលបានផ្លាស់ប្តូរ។

សេលេណូយ:

ការដាក់ពង្រាយ Selenoid នៅក្នុង K8s បច្ចុប្បន្នគឺជាការខកចិត្តដ៏ធំបំផុត។ ពួកគេមិនត្រូវគ្នាទេ។ តាមទ្រឹស្តី យើងអាចលើកកុងតឺន័រ Selenoid នៅខាងក្នុងផត ប៉ុន្តែនៅពេលដែល Selenoid ចាប់ផ្តើមបើកដំណើរការកុងតឺន័រជាមួយកម្មវិធីរុករក ពួកវានឹងនៅតែនៅខាងក្នុងផតដដែល។ នេះធ្វើឱ្យការធ្វើមាត្រដ្ឋានមិនអាចទៅរួច ហើយជាលទ្ធផល ការងាររបស់ Selenoid នៅក្នុងចង្កោមនឹងមិនខុសពីការងារនៅក្នុងម៉ាស៊ីននិម្មិតនោះទេ។ ចុង​បញ្ចប់​នៃ​រឿង។

ព្រះច័ន្ទ:

ដោយដឹងពីភាពជាប់គាំងនេះនៅពេលធ្វើការជាមួយ Selenoid អ្នកអភិវឌ្ឍន៍បានបញ្ចេញឧបករណ៍ដ៏មានឥទ្ធិពលមួយដែលមានឈ្មោះថា Moon ។ ឧបករណ៍នេះត្រូវបានរចនាឡើងដំបូងដើម្បីដំណើរការជាមួយ Kubernetes ហើយជាលទ្ធផល មុខងារធ្វើមាត្រដ្ឋានដោយស្វ័យប្រវត្តិអាច និងគួរត្រូវបានប្រើប្រាស់។ ជាងនេះទៅទៀត ខ្ញុំចង់និយាយថា នៅពេលនេះ តែមួយគត់ ឧបករណ៍នៅក្នុងពិភពសេលេញ៉ូមដែលមានការគាំទ្រចង្កោម K8s ដើមចេញពីប្រអប់ (លែងមានទៀតហើយ សូមមើលឧបករណ៍បន្ទាប់ ) លក្ខណៈសំខាន់ៗរបស់ Moon ដែលផ្តល់ការគាំទ្រនេះគឺ៖ 

គ្មានរដ្ឋទាំងស្រុង។ Selenoid រក្សាទុកនៅក្នុងព័ត៌មានអង្គចងចាំអំពីវគ្គនៃកម្មវិធីរុករកដែលកំពុងដំណើរការបច្ចុប្បន្ន។ ប្រសិនបើសម្រាប់ហេតុផលមួយចំនួនដំណើរការរបស់វាគាំង — បន្ទាប់មកវគ្គដែលកំពុងដំណើរការទាំងអស់ត្រូវបានបាត់បង់។ ផ្ទុយ​ទៅ​វិញ ព្រះច័ន្ទ​មិន​មាន​ស្ថានភាព​ខាងក្នុង​ទេ ហើយ​អាច​ចម្លង​តាម​មជ្ឈមណ្ឌល​ទិន្នន័យ។ វគ្គកម្មវិធីរុករកតាមអ៊ីនធឺណិតនៅតែរស់រវើក បើទោះជាការចម្លងមួយ ឬច្រើនធ្លាក់ចុះក៏ដោយ។

ដូច្នេះ Moon គឺជាដំណោះស្រាយដ៏ល្អមួយ ប៉ុន្តែមានបញ្ហាមួយគឺវាមិនឥតគិតថ្លៃទេ។ តម្លៃអាស្រ័យលើចំនួនវគ្គ។ អ្នកអាចដំណើរការតែវគ្គ 0-4 ដោយឥតគិតថ្លៃ ដែលមិនមានប្រយោជន៍ជាពិសេស។ ប៉ុន្តែចាប់ផ្តើមពីវគ្គទីប្រាំ អ្នកនឹងត្រូវចំណាយ 5 ដុល្លារសម្រាប់នីមួយៗ។ ស្ថានភាពអាចខុសគ្នាពីក្រុមហ៊ុនមួយទៅក្រុមហ៊ុនមួយ ប៉ុន្តែក្នុងករណីរបស់យើង ការប្រើប្រាស់ Moon គឺគ្មានន័យទេ។ ដូចដែលខ្ញុំបានពិពណ៌នាខាងលើ យើងអាចដំណើរការ VMs ជាមួយ Selenium Grid តាមតម្រូវការ ឬបង្កើនចំនួន Nodes នៅក្នុងចង្កោម។ សម្រាប់ប្រហែលមួយបំពង់ យើងបើកដំណើរការកម្មវិធីរុករក 500 ហើយបញ្ឈប់ធនធានទាំងអស់បន្ទាប់ពីការធ្វើតេស្តត្រូវបានបញ្ចប់។ ប្រសិនបើយើងប្រើ Moon យើងនឹងត្រូវបង់បន្ថែម 500 x 5 = $2500 ក្នុងមួយខែ មិនថាយើងដំណើរការតេស្តញឹកញាប់ប៉ុណ្ណានោះទេ។ ជាថ្មីម្តងទៀតខ្ញុំមិននិយាយថាកុំប្រើ Moon ។ សម្រាប់កិច្ចការរបស់អ្នក នេះអាចជាដំណោះស្រាយដែលមិនអាចខ្វះបាន ឧទាហរណ៍ ប្រសិនបើអ្នកមានគម្រោង/ក្រុមជាច្រើននៅក្នុងស្ថាប័នរបស់អ្នក ហើយអ្នកត្រូវការចង្កោមទូទៅដ៏ធំមួយសម្រាប់មនុស្សគ្រប់គ្នា។ ដូចរាល់ដង ខ្ញុំទុកតំណមួយនៅចុងបញ្ចប់ ហើយណែនាំអោយធ្វើការគណនាចាំបាច់ទាំងអស់ក្នុងបរិបទនៃកិច្ចការរបស់អ្នក។

Callisto: (យកចិត្តទុកដាក់! នេះ​មិន​មាន​នៅ​ក្នុង​អត្ថបទ​ដើម​ទេ ហើយ​មាន​តែ​ក្នុង​ការ​បក​ប្រែ​ជា​ភាសា​រុស្សី​ប៉ុណ្ណោះ។)

ដូចដែលខ្ញុំបាននិយាយ សេលេញ៉ូមគឺជាឧបករណ៍ដ៏ពេញនិយមមួយ ហើយវិស័យព័ត៌មានវិទ្យាកំពុងអភិវឌ្ឍយ៉ាងឆាប់រហ័ស។ ខណៈពេលដែលខ្ញុំកំពុងធ្វើការលើការបកប្រែ ឧបករណ៍ដ៏ជោគជ័យថ្មីមួយដែលមានឈ្មោះថា Callisto បានបង្ហាញខ្លួននៅលើគេហទំព័រ (ជំរាបសួរ Cypress និងថ្នាំសម្លាប់ Selenium ផ្សេងទៀត)។ វាដំណើរការដើមជាមួយ K8s និងអនុញ្ញាតឱ្យអ្នកដំណើរការធុង Selenoid នៅក្នុងផតដែលចែកចាយនៅទូទាំង Nodes ។ អ្វីគ្រប់យ៉ាងដំណើរការភ្លាមៗចេញពីប្រអប់ រួមទាំងការពង្រីកដោយស្វ័យប្រវត្តិ។ អស្ចារ្យ ប៉ុន្តែត្រូវការសាកល្បង។ ខ្ញុំ​បាន​គ្រប់គ្រង​ការ​ដាក់​ពង្រាយ​ឧបករណ៍​នេះ​រួច​ហើយ និង​ដំណើរការ​ការ​ពិសោធន៍​ជា​ច្រើន។ ប៉ុន្តែវាលឿនពេកក្នុងការធ្វើការសន្និដ្ឋាន បន្ទាប់ពីទទួលបានលទ្ធផលក្នុងរយៈចម្ងាយឆ្ងាយ ប្រហែលជាខ្ញុំនឹងធ្វើការពិនិត្យឡើងវិញនៅក្នុងអត្ថបទនាពេលអនាគត។ សម្រាប់ពេលនេះ ខ្ញុំទុកតែតំណភ្ជាប់សម្រាប់ការស្រាវជ្រាវឯករាជ្យប៉ុណ្ណោះ។  

រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ

ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

តំណភ្ជាប់ដើម្បីរុករក

ឧបករណ៍ស្រដៀងគ្នា

7. ហេដ្ឋារចនាសម្ព័ន្ធជាកូដ (IaC)

ការពិពណ៌នាសង្ខេបនៃបច្ចេកវិទ្យា

ហើយឥឡូវនេះយើងមកដល់ផ្នែកចុងក្រោយ។ ជាធម្មតា បច្ចេកវិទ្យានេះ និងកិច្ចការដែលពាក់ព័ន្ធមិនមែនជាការទទួលខុសត្រូវរបស់វិស្វករស្វ័យប្រវត្តិកម្មនោះទេ។ ហើយមានហេតុផលសម្រាប់រឿងនេះ។ ទីមួយ នៅក្នុងអង្គការជាច្រើន បញ្ហាហេដ្ឋារចនាសម្ព័ន្ធស្ថិតនៅក្រោមការគ្រប់គ្រងរបស់នាយកដ្ឋាន DevOps ហើយក្រុមអភិវឌ្ឍន៍ពិតជាមិនខ្វល់អំពីអ្វីដែលធ្វើឱ្យបំពង់បង្ហូរប្រេងដំណើរការ និងរបៀបដែលអ្វីៗគ្រប់យ៉ាងដែលភ្ជាប់ជាមួយវាត្រូវតែត្រូវបានគាំទ្រ។ ទីពីរ ចូរនិយាយដោយស្មោះត្រង់ ការអនុវត្តនៃហេដ្ឋារចនាសម្ព័ន្ធជាកូដ (IaC) នៅតែមិនត្រូវបានអនុម័តនៅក្នុងក្រុមហ៊ុនជាច្រើន។ ប៉ុន្តែវាពិតជាបានក្លាយទៅជានិន្នាការដ៏ពេញនិយមមួយ ហើយវាមានសារៈសំខាន់ក្នុងការព្យាយាមចូលរួមក្នុងដំណើរការ វិធីសាស្រ្ត និងឧបករណ៍ដែលពាក់ព័ន្ធជាមួយវា។ ឬយ៉ាងហោចណាស់រក្សាឱ្យទាន់សម័យ។

ចូរចាប់ផ្តើមជាមួយនឹងការលើកទឹកចិត្តសម្រាប់ការប្រើប្រាស់វិធីសាស្រ្តនេះ។ យើងបានពិភាក្សារួចហើយថា ដើម្បីដំណើរការការធ្វើតេស្តនៅក្នុង GitlabCI យើងនឹងត្រូវការធនធានយ៉ាងតិចបំផុតដើម្បីដំណើរការ Gitlab Runner ។ ហើយដើម្បីដំណើរការកុងតឺន័រជាមួយកម្មវិធីរុករក/កម្មវិធីត្រាប់តាម យើងត្រូវកក់ VM ឬចង្កោម។ បន្ថែមពីលើធនធានសាកល្បង យើងត្រូវការបរិមាណដ៏ច្រើននៃសមត្ថភាពដើម្បីគាំទ្រការអភិវឌ្ឍន៍ ដំណាក់កាល បរិយាកាសផលិតកម្ម ដែលរួមបញ្ចូលផងដែរនូវមូលដ្ឋានទិន្នន័យ កាលវិភាគស្វ័យប្រវត្តិ ការកំណត់រចនាសម្ព័ន្ធបណ្តាញ ឧបករណ៍ផ្ទុកតុល្យភាព សិទ្ធិអ្នកប្រើប្រាស់ និងអ្វីៗផ្សេងទៀត។ បញ្ហា​សំខាន់​គឺ​ការ​ខិតខំ​ប្រឹងប្រែង​ដើម្បី​គាំទ្រ​វា​ទាំងអស់​។ មានវិធីជាច្រើនដែលយើងអាចធ្វើការផ្លាស់ប្តូរ និងបញ្ចេញបច្ចុប្បន្នភាព។ ឧទាហរណ៍ ក្នុងបរិបទនៃ GCP យើងអាចប្រើកុងសូល UI នៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិត ហើយអនុវត្តសកម្មភាពទាំងអស់ដោយចុចប៊ូតុង។ ជម្រើសមួយគឺត្រូវប្រើការហៅ API ដើម្បីធ្វើអន្តរកម្មជាមួយអង្គភាពពពក ឬប្រើឧបករណ៍ប្រើប្រាស់បន្ទាត់ពាក្យបញ្ជា gcloud ដើម្បីអនុវត្តឧបាយកលដែលចង់បាន។ ប៉ុន្តែជាមួយនឹងចំនួនដ៏ធំនៃអង្គភាព និងធាតុហេដ្ឋារចនាសម្ព័ន្ធផ្សេងៗគ្នា វាក្លាយជាការលំបាក ឬសូម្បីតែមិនអាចអនុវត្តប្រតិបត្តិការទាំងអស់ដោយដៃ។ ជាងនេះទៅទៀត សកម្មភាពដោយដៃទាំងអស់នេះគឺមិនអាចគ្រប់គ្រងបាន។ យើងមិនអាចបញ្ជូនពួកវាទៅពិនិត្យមុនពេលប្រតិបត្តិ ប្រើប្រព័ន្ធគ្រប់គ្រងកំណែ និងត្រលប់មកវិញយ៉ាងឆាប់រហ័សនូវការផ្លាស់ប្តូរដែលនាំឱ្យមានឧបទ្ទវហេតុនោះទេ។ ដើម្បីដោះស្រាយបញ្ហាបែបនេះ វិស្វករបានបង្កើត និងបង្កើតស្គ្រីប bash/shell ដោយស្វ័យប្រវត្តិ ដែលវាមិនប្រសើរជាងវិធីសាស្ត្រមុនៗនោះទេ ព្រោះវាមិនងាយស្រួលប៉ុន្មានក្នុងការអាន យល់ ថែរក្សា និងកែប្រែក្នុងរចនាប័ទ្មនីតិវិធីបានរហ័ស។

នៅក្នុងអត្ថបទនេះ និងរបៀបណែនាំ ខ្ញុំប្រើឧបករណ៍ 2 ដែលទាក់ទងនឹងការអនុវត្ត IaC ។ ទាំងនេះគឺជា Terraform និង Ansible ។ មនុស្សមួយចំនួនជឿថា វាមិនសមហេតុផលទេក្នុងការប្រើប្រាស់វាក្នុងពេលតែមួយ ព្រោះមុខងាររបស់ពួកគេគឺស្រដៀងគ្នា ហើយពួកវាអាចផ្លាស់ប្តូរបាន។ ប៉ុន្តែការពិតគឺថាដំបូងពួកគេត្រូវបានផ្តល់ភារកិច្ចខុសគ្នាទាំងស្រុង។ ហើយការពិតដែលថាឧបករណ៍ទាំងនេះគួរតែបំពេញគ្នាទៅវិញទៅមកត្រូវបានបញ្ជាក់នៅក្នុងបទបង្ហាញរួមគ្នាដោយអ្នកអភិវឌ្ឍន៍តំណាងឱ្យ HashiCorp និង RedHat ។ ភាពខុសគ្នានៃគំនិតគឺថា Terraform គឺជាឧបករណ៍ផ្តល់សម្រាប់គ្រប់គ្រងម៉ាស៊ីនមេដោយខ្លួនឯង។ ខណៈពេលដែល Ansible គឺជាឧបករណ៍គ្រប់គ្រងការកំណត់រចនាសម្ព័ន្ធដែលមានភារកិច្ចក្នុងការដំឡើង កំណត់រចនាសម្ព័ន្ធ និងគ្រប់គ្រងកម្មវិធីនៅលើម៉ាស៊ីនមេទាំងនេះ។

លក្ខណៈសម្គាល់សំខាន់មួយទៀតនៃឧបករណ៍ទាំងនេះគឺរចនាប័ទ្មសរសេរកូដ។ មិនដូច bash និង Ansible ទេ Terraform ប្រើរចនាប័ទ្មប្រកាសដោយផ្អែកលើការពិពណ៌នាអំពីស្ថានភាពបញ្ចប់ដែលចង់បានដើម្បីសម្រេចបានជាលទ្ធផលនៃការប្រតិបត្តិ។ ឧទាហរណ៍ ប្រសិនបើយើងនឹងបង្កើត VM ចំនួន 10 ហើយអនុវត្តការផ្លាស់ប្តូរតាមរយៈ Terraform នោះយើងនឹងទទួលបាន 10 VM ។ ប្រសិនបើយើងដំណើរការស្គ្រីបម្តងទៀត គ្មានអ្វីនឹងកើតឡើងទេ ដោយសារយើងមាន VM 10 រួចហើយ ហើយ Terraform ដឹងពីរឿងនេះ ព្រោះវារក្សាទុកស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធនៅក្នុងឯកសាររដ្ឋ។ ប៉ុន្តែ Ansible ប្រើវិធីសាស្រ្តនីតិវិធី ហើយប្រសិនបើអ្នកស្នើឱ្យវាបង្កើត 10 VMs នោះនៅពេលបើកដំណើរការដំបូងយើងនឹងទទួលបាន 10 VMs ដែលស្រដៀងនឹង Terraform ។ ប៉ុន្តែបន្ទាប់ពីចាប់ផ្តើមឡើងវិញយើងនឹងមាន 20 VMs រួចហើយ។ នេះគឺជាភាពខុសគ្នាដ៏សំខាន់។ នៅក្នុងរចនាប័ទ្មនីតិវិធី យើងមិនរក្សាទុកស្ថានភាពបច្ចុប្បន្នទេ ហើយគ្រាន់តែពិពណ៌នាអំពីលំដាប់នៃជំហានដែលត្រូវតែអនុវត្ត។ ជាការពិតណាស់ យើងអាចដោះស្រាយស្ថានការណ៍ផ្សេងៗ បន្ថែមការត្រួតពិនិត្យជាច្រើនសម្រាប់អត្ថិភាពនៃធនធាន និងស្ថានភាពបច្ចុប្បន្ន ប៉ុន្តែវាគ្មានចំណុចណាក្នុងការខ្ជះខ្ជាយពេលវេលារបស់យើង និងខិតខំប្រឹងប្រែងក្នុងការគ្រប់គ្រងតក្កវិជ្ជានេះទេ។ លើសពីនេះទៀត នេះបង្កើនហានិភ័យនៃការធ្វើខុស។ 

សរុបសេចក្តីទាំងអស់ខាងលើ យើងអាចសន្និដ្ឋានបានថា Terraform និង declarative notation គឺជាឧបករណ៍ដែលសមរម្យជាងសម្រាប់ការផ្តល់ម៉ាស៊ីនមេ។ ប៉ុន្តែវាជាការប្រសើរក្នុងការផ្ទេរការងារនៃការគ្រប់គ្រងការកំណត់រចនាសម្ព័ន្ធទៅ Ansible ។ ជាមួយនឹងវិធីនេះ សូមមើលករណីប្រើប្រាស់នៅក្នុងបរិបទនៃស្វ័យប្រវត្តិកម្ម។

តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម

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

នេះគឺជាឧទាហរណ៍មួយចំនួននៃការប្រើប្រាស់ Terraform និង Ansible នៅក្នុងបរិបទនៃការធ្វើតេស្តស្វ័យប្រវត្តិកម្ម និងឧបករណ៍ដែលយើងបានពិភាក្សាពីមុន៖

1. ពិពណ៌នាអំពីលក្ខណៈ និងប៉ារ៉ាម៉ែត្រចាំបាច់នៃ VMs និងចង្កោមដោយប្រើ Terraform ។

2. ដោយប្រើ Ansible សូមដំឡើងឧបករណ៍ចាំបាច់សម្រាប់ការធ្វើតេស្ត៖ docker, Selenoid, Selenium Grid ហើយទាញយកកំណែដែលត្រូវការនៃ browsers/emulators។

3. ដោយប្រើ Terraform សូមពណ៌នាអំពីលក្ខណៈរបស់ VM ដែល GitLab Runner នឹងត្រូវបានបើកដំណើរការ។

4. ដំឡើង GitLab Runner និងឧបករណ៍ភ្ជាប់មកជាមួយចាំបាច់ដោយប្រើ Ansible កំណត់ការកំណត់ និងការកំណត់។

រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ

ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

តំណភ្ជាប់ដើម្បីរុករក៖

ឧបករណ៍ស្រដៀងគ្នា

សរុបមក!

ជំហាន
បច្ចេកវិទ្យា
ឧបករណ៍
តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម

1
ការរត់ក្នុងស្រុក
Node.js, Selenium, Appium

  • ឧបករណ៍ពេញនិយមបំផុតសម្រាប់គេហទំព័រ និងទូរស័ព្ទ
  • គាំទ្រភាសា និងវេទិកាជាច្រើន (រួមទាំង Node.js)

2
ប្រព័ន្ធគ្រប់គ្រងកំណែ 
Git

  • អត្ថប្រយោជន៍ស្រដៀងគ្នាជាមួយកូដអភិវឌ្ឍន៍

3
ការវេចខ្ចប់
Docker, Selenium grid, Selenoid (Web, Android)

  • កំពុងដំណើរការការធ្វើតេស្តស្របគ្នា។
  • បរិស្ថានដាច់ស្រយាល។
  • ការធ្វើឱ្យប្រសើរកំណែសាមញ្ញ និងអាចបត់បែនបាន។
  • ថាមវន្តបញ្ឈប់ធនធានដែលមិនប្រើ
  • ងាយស្រួលតំឡើង

4
CI/CD
Gitlab CI

  • សាកល្បងផ្នែកនៃបំពង់
  • មតិប្រតិកម្មរហ័ស
  • ភាពមើលឃើញសម្រាប់ក្រុមហ៊ុន/ក្រុមទាំងមូល

5
វេទិកាពពក
ក្រុមហ៊ុនGoogle Cloud Platform

  • ធនធានតាមតម្រូវការ (យើងបង់តែនៅពេលចាំបាច់)
  • ងាយស្រួលក្នុងការគ្រប់គ្រង និងធ្វើបច្ចុប្បន្នភាព
  • ភាពមើលឃើញ និងការគ្រប់គ្រងធនធានទាំងអស់។

6
Orchestration
Kubernetes
នៅក្នុងបរិបទនៃធុងដែលមានកម្មវិធីរុករក / កម្មវិធីត្រាប់តាមនៅខាងក្នុងផតៈ

  • ធ្វើមាត្រដ្ឋាន / ធ្វើមាត្រដ្ឋានដោយស្វ័យប្រវត្តិ
  • ការព្យាបាលដោយខ្លួនឯង។
  • ការអាប់ដេត និងការវិលត្រឡប់មកវិញដោយគ្មានការរំខាន

7
ហេដ្ឋារចនាសម្ព័ន្ធជាកូដ (IaC)
Terraform, Ansible

  • អត្ថប្រយោជន៍ស្រដៀងគ្នាជាមួយហេដ្ឋារចនាសម្ព័ន្ធអភិវឌ្ឍន៍
  • អត្ថប្រយោជន៍ទាំងអស់នៃកំណែកូដ
  • ងាយស្រួលក្នុងការផ្លាស់ប្តូរ និងថែទាំ
  • ដោយស្វ័យប្រវត្តិយ៉ាងពេញលេញ

ដ្យាក្រាមផែនទីគំនិត៖ ការវិវត្តន៍នៃហេដ្ឋារចនាសម្ព័ន្ធ

ជំហានទី 1: ក្នុងស្រុក
ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

ជំហានទី 2: VCS
ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

ជំហានទី 3: ការវេចខ្ចប់ 
ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

ជំហានទី 4: CI/CD 
ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

ជំហានទី 5: វេទិកាពពក
ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

ជំហានទី ៦៖ វង់ភ្លេង
ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

ជំហានទី 7: IaC
ឧបករណ៍ DevOps មិនត្រឹមតែសម្រាប់ DevOps ប៉ុណ្ណោះទេ។ ដំណើរការនៃការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បងពីទទេ

តើមានអ្វីជាបន្ទាប់?

ដូច្នេះនេះគឺជាចុងបញ្ចប់នៃអត្ថបទ។ ប៉ុន្តែសរុបសេចក្តីមក ខ្ញុំចង់បង្កើតកិច្ចព្រមព្រៀងមួយចំនួនជាមួយអ្នក។

ពីខាងអ្នក។
ដូចដែលខ្ញុំបាននិយាយនៅដើមដំបូងខ្ញុំចង់ឱ្យអត្ថបទមានប្រយោជន៍និងជួយអ្នកឱ្យអនុវត្តចំណេះដឹងដែលទទួលបានក្នុងការងារជាក់ស្តែង។ ខ្ញុំបន្ថែមម្តងទៀត ភ្ជាប់ទៅការណែនាំជាក់ស្តែង.

ប៉ុន្តែទោះបីជាបន្ទាប់ពីនោះក៏ដោយ កុំឈប់ អនុវត្ត សិក្សាតំណភ្ជាប់ដែលពាក់ព័ន្ធ និងសៀវភៅ ស្វែងយល់ពីរបៀបដែលវាដំណើរការនៅក្នុងក្រុមហ៊ុនរបស់អ្នក ស្វែងរកកន្លែងដែលអាចត្រូវបានកែលម្អ និងចូលរួមក្នុងវា។ សំណាងល្អ!

ពីខាងខ្ញុំ

ពីចំណងជើងអ្នកអាចមើលឃើញថានេះគ្រាន់តែជាផ្នែកដំបូងប៉ុណ្ណោះ។ ទោះបីជាការពិតដែលថាវាមានទំហំធំណាស់ក៏ដោយក៏ប្រធានបទសំខាន់ៗនៅតែមិនគ្របដណ្តប់នៅទីនេះ។ នៅក្នុងផ្នែកទីពីរ ខ្ញុំមានគម្រោងមើលហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មក្នុងបរិបទនៃ IOS។ ដោយសារការរឹតបន្តឹងរបស់ក្រុមហ៊ុន Apple លើការដំណើរការកម្មវិធីក្លែងធ្វើ iOS តែនៅលើប្រព័ន្ធ macOS ដំណោះស្រាយរបស់យើងត្រូវបានរួមតូច។ ឧទាហរណ៍ យើងមិនអាចប្រើ Docker ដើម្បីដំណើរការម៉ាស៊ីនក្លែងធ្វើ ឬពពកសាធារណៈ ដើម្បីដំណើរការម៉ាស៊ីននិម្មិតបានទេ។ ប៉ុន្តែនេះមិនមានន័យថាមិនមានជម្រើសផ្សេងទៀតទេ។ ខ្ញុំនឹងព្យាយាមធ្វើឱ្យអ្នកទាន់សម័យជាមួយនឹងដំណោះស្រាយកម្រិតខ្ពស់ និងឧបករណ៍ទំនើបៗ!

ម្យ៉ាងវិញទៀត ខ្ញុំមិនបាននិយាយអំពីប្រធានបទធំៗដែលទាក់ទងនឹងការត្រួតពិនិត្យនោះទេ។ នៅក្នុងផ្នែកទី 3 ខ្ញុំនឹងពិនិត្យមើលឧបករណ៍ត្រួតពិនិត្យហេដ្ឋារចនាសម្ព័ន្ធដ៏ពេញនិយមបំផុត និងអ្វីដែលទិន្នន័យ និងម៉ែត្រដែលត្រូវពិចារណា។

ជា​ចុងក្រោយ។ នៅពេលអនាគត ខ្ញុំមានគម្រោងនឹងចេញវគ្គវីដេអូស្តីពីការកសាងហេដ្ឋារចនាសម្ព័ន្ធសាកល្បង និងឧបករណ៍ពេញនិយម។ បច្ចុប្បន្ននេះ មានវគ្គសិក្សា និងការបង្រៀនមួយចំនួននៅលើ DevOps នៅលើអ៊ីនធឺណិត ប៉ុន្តែសម្ភារៈទាំងអស់ត្រូវបានបង្ហាញនៅក្នុងបរិបទនៃការអភិវឌ្ឍន៍ មិនមែនការធ្វើតេស្តស្វ័យប្រវត្តិកម្មនោះទេ។ នៅលើបញ្ហានេះ ខ្ញុំពិតជាត្រូវការមតិកែលម្អថាតើវគ្គសិក្សាបែបនេះនឹងគួរឱ្យចាប់អារម្មណ៍ និងមានតម្លៃសម្រាប់សហគមន៍អ្នកសាកល្បង និងវិស្វករស្វ័យប្រវត្តិកម្មដែរឬទេ។ សូម​អរគុណ​ជាមុន!

ប្រភព: www.habr.com

បន្ថែមមតិយោបល់