ផ្នែកទី 1៖ គេហទំព័រ/Android
ការកត់សម្គាល់: អត្ថបទនេះគឺជាការបកប្រែជាភាសារុស្សីនៃអត្ថបទដើម
បច្ចុប្បន្ននេះ ឯកទេស DevOps គឺជាផ្នែកមួយនៃតម្រូវការបំផុតនៅក្នុងឧស្សាហកម្ម IT ។ ប្រសិនបើអ្នកបើកគេហទំព័រស្វែងរកការងារពេញនិយម ហើយត្រងតាមប្រាក់ខែ អ្នកនឹងឃើញថាការងារដែលទាក់ទងនឹង DevOps ស្ថិតនៅកំពូលនៃបញ្ជី។ ទោះជាយ៉ាងណាក៏ដោយ វាជារឿងសំខាន់ដែលត្រូវយល់ថា នេះសំដៅលើមុខតំណែង 'ជាន់ខ្ពស់' ដែលមានន័យថាបេក្ខជនមានជំនាញខ្ពស់ ចំណេះដឹងផ្នែកបច្ចេកវិទ្យា និងឧបករណ៍។ នេះក៏ភ្ជាប់មកជាមួយនូវទំនួលខុសត្រូវខ្ពស់ដែលទាក់ទងនឹងប្រតិបត្តិការផលិតកម្មដែលមិនមានការរំខាន។ ទោះយ៉ាងណាក៏ដោយ យើងចាប់ផ្តើមភ្លេចថា DevOps ជាអ្វី។ ដំបូងឡើយ វាមិនមែនជាបុគ្គល ឬនាយកដ្ឋានណាមួយជាក់លាក់ទេ។ ប្រសិនបើយើងស្វែងរកនិយមន័យនៃពាក្យនេះ យើងនឹងរកឃើញនាមដ៏ស្រស់ស្អាត និងត្រឹមត្រូវជាច្រើនដូចជា វិធីសាស្រ្ត ការអនុវត្ត ទស្សនវិជ្ជា វប្បធម៌ ក្រុមនៃគោលគំនិតជាដើម។
ជំនាញរបស់ខ្ញុំគឺជាវិស្វករស្វ័យប្រវត្តិកម្មសាកល្បង (វិស្វករស្វ័យប្រវត្តិកម្ម QA) ប៉ុន្តែខ្ញុំជឿថាវាមិនគួរត្រូវបានភ្ជាប់ជាមួយតែការសរសេរការធ្វើតេស្តស្វ័យប្រវត្តិ ឬបង្កើតស្ថាបត្យកម្មក្របខ័ណ្ឌសាកល្បងនោះទេ។ នៅឆ្នាំ 2020 ចំណេះដឹងអំពីហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មក៏ចាំបាច់ផងដែរ។ នេះអនុញ្ញាតឱ្យអ្នករៀបចំដំណើរការស្វ័យប្រវត្តិកម្មដោយខ្លួនឯង ចាប់ពីការធ្វើតេស្តដែលកំពុងដំណើរការ រហូតដល់ការផ្តល់លទ្ធផលដល់ភាគីពាក់ព័ន្ធទាំងអស់ ស្របតាមគោលដៅរបស់អ្នក។ ជាលទ្ធផល ជំនាញ DevOps គឺជាកត្តាចាំបាច់ដើម្បីបំពេញការងារ។ ហើយទាំងអស់នេះល្អ ប៉ុន្តែជាអកុសល មានបញ្ហា (spoiler៖ អត្ថបទនេះព្យាយាមសម្រួលបញ្ហានេះ) ចំណុចនោះគឺថា DevOps គឺពិបាក។ ហើយនេះគឺជាក់ស្តែង ដោយសារតែក្រុមហ៊ុននឹងមិនចំណាយច្រើនសម្រាប់អ្វីមួយដែលងាយស្រួលធ្វើ... នៅក្នុងពិភព DevOps មានឧបករណ៍ លក្ខខណ្ឌ និងការអនុវត្តមួយចំនួនធំដែលចាំបាច់ត្រូវធ្វើជាម្ចាស់។ នេះគឺជាការលំបាកជាពិសេសនៅដើមដំបូងនៃអាជីពនិងអាស្រ័យលើបទពិសោធន៍បច្ចេកទេសបង្គរ។
ប្រភព:
នៅទីនេះ យើងប្រហែលជានឹងបញ្ចប់ជាមួយនឹងផ្នែកណែនាំ ហើយផ្តោតលើគោលបំណងនៃអត្ថបទនេះ។
តើអត្ថបទនេះនិយាយអំពីអ្វី?
នៅក្នុងអត្ថបទនេះ ខ្ញុំនឹងចែករំលែកបទពិសោធន៍របស់ខ្ញុំក្នុងការកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មសាកល្បង។ មានប្រភពព័ត៌មានជាច្រើននៅលើអ៊ីនធឺណិតអំពីឧបករណ៍ផ្សេងៗ និងរបៀបប្រើប្រាស់ពួកវា ប៉ុន្តែខ្ញុំចង់មើលពួកវាសុទ្ធសាធនៅក្នុងបរិបទនៃស្វ័យប្រវត្តិកម្ម។ ខ្ញុំជឿថាវិស្វករស្វ័យប្រវត្តិកម្មជាច្រើនស្គាល់ស្ថានភាពនៅពេលដែលគ្មាននរណាម្នាក់លើកលែងតែអ្នកដំណើរការការធ្វើតេស្តដែលបានអភិវឌ្ឍ ឬយកចិត្តទុកដាក់ក្នុងការថែរក្សាពួកគេ។ ជាលទ្ធផល ការធ្វើតេស្តក្លាយជាហួសសម័យ ហើយអ្នកត្រូវចំណាយពេលធ្វើបច្ចុប្បន្នភាពពួកគេ។ ជាថ្មីម្តងទៀត នៅពេលចាប់ផ្តើមអាជីព នេះអាចជាកិច្ចការដ៏លំបាកមួយ៖ ការសម្រេចចិត្តប្រកបដោយប្រាជ្ញាថាឧបករណ៍ណាដែលអាចជួយលុបបំបាត់បញ្ហាដែលបានផ្តល់ឱ្យ របៀបជ្រើសរើស កំណត់រចនាសម្ព័ន្ធ និងថែទាំពួកគេ។ អ្នកសាកល្បងខ្លះងាកទៅរក DevOps (មនុស្ស) ដើម្បីទទួលបានជំនួយ ហើយសូមនិយាយដោយស្មោះត្រង់ វិធីសាស្រ្តនេះដំណើរការ។ ក្នុងករណីជាច្រើន វាអាចជាជម្រើសតែមួយគត់ ដោយសារយើងមិនមានលទ្ធភាពមើលឃើញចំពោះភាពអាស្រ័យទាំងអស់។ ប៉ុន្តែដូចដែលយើងដឹងហើយថា DevOps គឺជាបុរសដែលមមាញឹកខ្លាំង ព្រោះពួកគេត្រូវគិតអំពីហេដ្ឋារចនាសម្ព័ន្ធរបស់ក្រុមហ៊ុនទាំងមូល ការដាក់ពង្រាយ ការត្រួតពិនិត្យ សេវាមីក្រូ និងការងារស្រដៀងគ្នាផ្សេងទៀត អាស្រ័យលើអង្គការ/ក្រុម។ ដូចករណីធម្មតា ស្វ័យប្រវត្តិកម្មមិនមែនជាអាទិភាពទេ។ ក្នុងករណីបែបនេះ យើងត្រូវតែព្យាយាមធ្វើអ្វីៗគ្រប់យ៉ាងដែលអាចធ្វើទៅបានពីដើមដល់ចប់។ នេះនឹងកាត់បន្ថយភាពអាស្រ័យ បង្កើនល្បឿនការងារ បង្កើនជំនាញរបស់យើង និងអនុញ្ញាតឱ្យយើងមើលឃើញរូបភាពកាន់តែធំនៃអ្វីដែលកំពុងកើតឡើង។
អត្ថបទបង្ហាញពីឧបករណ៍ដែលពេញនិយម និងពេញនិយមបំផុត ហើយបង្ហាញពីរបៀបប្រើប្រាស់ពួកវា ដើម្បីកសាងហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មមួយជំហានម្តងៗ។ ក្រុមនីមួយៗត្រូវបានតំណាងដោយឧបករណ៍ដែលត្រូវបានសាកល្បងតាមរយៈបទពិសោធន៍ផ្ទាល់ខ្លួន។ ប៉ុន្តែនោះមិនមានន័យថាអ្នកត្រូវប្រើរបស់ដូចគ្នានោះទេ។ ឧបករណ៍ខ្លួនឯងមិនសំខាន់ទេវាលេចឡើងហើយលែងប្រើ។ ភារកិច្ចផ្នែកវិស្វកម្មរបស់យើងគឺត្រូវយល់ពីគោលការណ៍ជាមូលដ្ឋាន៖ ហេតុអ្វីបានជាយើងត្រូវការឧបករណ៍ក្រុមនេះ និងបញ្ហាការងារអ្វីខ្លះដែលយើងអាចដោះស្រាយជាមួយនឹងជំនួយរបស់ពួកគេ។ នោះហើយជាមូលហេតុដែលនៅចុងបញ្ចប់នៃផ្នែកនីមួយៗ ខ្ញុំទុកតំណភ្ជាប់ទៅកាន់ឧបករណ៍ស្រដៀងគ្នា ដែលអាចត្រូវបានប្រើប្រាស់នៅក្នុងស្ថាប័នរបស់អ្នក។
អ្វីដែលមិនមាននៅក្នុងអត្ថបទនេះ។
ខ្ញុំនិយាយម្តងទៀតថាអត្ថបទមិននិយាយអំពីឧបករណ៍ជាក់លាក់ទេ ដូច្នេះវានឹងមិនមានការបញ្ចូលកូដពីឯកសារ និងការពិពណ៌នាអំពីពាក្យបញ្ជាជាក់លាក់នោះទេ។ ប៉ុន្តែនៅចុងបញ្ចប់នៃផ្នែកនីមួយៗ ខ្ញុំទុកតំណភ្ជាប់សម្រាប់ការសិក្សាលម្អិត។
នេះត្រូវបានធ្វើដោយសារតែ:
- សម្ភារៈនេះគឺមានភាពងាយស្រួលក្នុងការស្វែងរកក្នុងប្រភពផ្សេងៗ (ឯកសារ សៀវភៅ វគ្គវីដេអូ);
- ប្រសិនបើយើងចាប់ផ្តើមកាន់តែស៊ីជម្រៅ យើងនឹងត្រូវសរសេរ 10, 20, 30 ផ្នែកនៃអត្ថបទនេះ (ខណៈពេលដែលផែនការមាន 2-3);
- ខ្ញុំគ្រាន់តែមិនចង់ខ្ជះខ្ជាយពេលវេលារបស់អ្នកទេ ព្រោះអ្នកប្រហែលជាចង់ប្រើឧបករណ៍ផ្សេងទៀតដើម្បីសម្រេចគោលដៅដូចគ្នា។
អនុវត្ត
ខ្ញុំពិតជាចង់ឱ្យសម្ភារៈនេះមានប្រយោជន៍សម្រាប់អ្នកអានគ្រប់រូប ហើយមិនមែនគ្រាន់តែអានហើយភ្លេចនោះទេ។ នៅក្នុងការសិក្សាណាមួយ ការអនុវត្តគឺជាធាតុផ្សំដ៏សំខាន់បំផុត។ សម្រាប់រឿងនេះខ្ញុំបានរៀបចំ
ផែនការ
ជំហាន
បច្ចេកវិទ្យា
ឧបករណ៍
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 នៅក្នុងផ្នែកនាពេលខាងមុខ។
តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម
តាមទស្សនៈវិស័យហេដ្ឋារចនាសម្ព័ន្ធ ការដំណើរការក្នុងស្រុកមិនផ្តល់តម្លៃណាមួយឡើយ។ អ្នកគ្រាន់តែពិនិត្យមើលថាការធ្វើតេស្តដំណើរការនៅលើម៉ាស៊ីនមូលដ្ឋាននៅក្នុងកម្មវិធីរុករកក្នុងស្រុក និងម៉ាស៊ីនក្លែងធ្វើ។ ប៉ុន្តែក្នុងករណីណាក៏ដោយនេះគឺជាចំណុចចាប់ផ្តើមចាំបាច់។
រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ
តំណភ្ជាប់ដើម្បីរុករក
ឧបករណ៍ស្រដៀងគ្នា
- ភាសាសរសេរកម្មវិធីណាមួយដែលអ្នកចូលចិត្តដោយភ្ជាប់ជាមួយការធ្វើតេស្ត Selenium/Appium;
- ការធ្វើតេស្តណាមួយ;
- អ្នករត់ការសាកល្បងណាមួយ។
2. ប្រព័ន្ធគ្រប់គ្រងកំណែ (Git)
ការពិពណ៌នាសង្ខេបនៃបច្ចេកវិទ្យា
វានឹងមិនមែនជាការលាតត្រដាងដ៏ធំចំពោះនរណាម្នាក់ទេ ប្រសិនបើខ្ញុំនិយាយថា ការគ្រប់គ្រងកំណែគឺជាផ្នែកដ៏សំខាន់បំផុតនៃការអភិវឌ្ឍន៍ ទាំងនៅក្នុងក្រុម និងបុគ្គល។ ដោយផ្អែកលើប្រភពផ្សេងៗ វាមានសុវត្ថិភាពក្នុងការនិយាយថា Git គឺជាអ្នកតំណាងដ៏ពេញនិយមបំផុត។ ប្រព័ន្ធគ្រប់គ្រងកំណែផ្ដល់នូវអត្ថប្រយោជន៍ជាច្រើនដូចជា ការចែករំលែកកូដ ការរក្សាទុកកំណែ ការស្ដារទៅកាន់សាខាពីមុន ការត្រួតពិនិត្យប្រវត្តិគម្រោង និងការបម្រុងទុក។ យើងនឹងមិនពិភាក្សាលម្អិតអំពីចំណុចនីមួយៗនោះទេ ព្រោះខ្ញុំប្រាកដថាអ្នកធ្លាប់ស្គាល់វា និងប្រើប្រាស់វាក្នុងការងារប្រចាំថ្ងៃរបស់អ្នក។ ប៉ុន្តែប្រសិនបើភ្លាមៗនោះ ខ្ញុំសូមណែនាំឱ្យផ្អាកអានអត្ថបទនេះ ហើយបំពេញចន្លោះនេះឱ្យបានឆាប់តាមដែលអាចធ្វើទៅបាន។
តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម
ហើយនៅទីនេះអ្នកអាចសួរសំណួរសមហេតុផលមួយ: "ហេតុអ្វីបានជាគាត់ប្រាប់យើងអំពី Git? អ្នករាល់គ្នាដឹងរឿងនេះ ហើយប្រើវាទាំងសម្រាប់កូដអភិវឌ្ឍន៍ និងសម្រាប់កូដតេស្តស្វ័យប្រវត្តិ។ អ្នកពិតជាត្រឹមត្រូវ ប៉ុន្តែនៅក្នុងអត្ថបទនេះ យើងកំពុងនិយាយអំពីហេដ្ឋារចនាសម្ព័ន្ធ ហើយផ្នែកនេះដើរតួជាការមើលជាមុនសម្រាប់ផ្នែកទី 7៖ "ហេដ្ឋារចនាសម្ព័ន្ធជាកូដ (IaC)"។ សម្រាប់យើង នេះមានន័យថាហេដ្ឋារចនាសម្ព័ន្ធទាំងមូល រួមទាំងការធ្វើតេស្តត្រូវបានពិពណ៌នាក្នុងទម្រង់ជាកូដ ដូច្នេះយើងក៏អាចអនុវត្តប្រព័ន្ធកំណែលើវា និងទទួលបានអត្ថប្រយោជន៍ស្រដៀងគ្នាដូចជាកូដសម្រាប់ការអភិវឌ្ឍន៍ និងស្វ័យប្រវត្តិកម្ម។
យើងនឹងពិនិត្យមើល IaC ឱ្យកាន់តែលម្អិតនៅក្នុងជំហានទី 7 ប៉ុន្តែសូម្បីតែឥឡូវនេះ អ្នកអាចចាប់ផ្តើមប្រើ Git ក្នុងស្រុកដោយបង្កើតឃ្លាំងមូលដ្ឋាន។ រូបភាពធំនឹងត្រូវបានពង្រីកនៅពេលដែលយើងបន្ថែមឃ្លាំងពីចម្ងាយទៅហេដ្ឋារចនាសម្ព័ន្ធ។
រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ
តំណភ្ជាប់ដើម្បីរុករក
ឧបករណ៍ស្រដៀងគ្នា
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 ដើម្បីដំណើរការតេស្តគេហទំព័រផងដែរ។
តំណភ្ជាប់ដើម្បីរុករក
Docker: តើធុងគឺជាអ្វី Docker៖ ចាប់ផ្តើម 5 ជម្មើសជំនួសកុងតឺន័រទៅ Docker សេលេញ៉ូមក្រឡាចត្រង្គ សេលេញ៉ូម docker សេលេណូយ Selenoid Github ការដំឡើង KVM សម្រាប់កម្មវិធីត្រាប់តាម Android សៀវភៅ Docker Deep Dive
ឧបករណ៍ស្រដៀងគ្នា
- មានឧបករណ៍ផ្ទុកផ្សេងទៀត ប៉ុន្តែ 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 ។
រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ
តំណភ្ជាប់ដើម្បីរុករក
ឧបករណ៍ស្រដៀងគ្នា
Jenkins ក្រុមធីស៊ីធី។ លោក Travis - និងអ្នកផ្សេងទៀតជាច្រើន។
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 ធុងដែលមានកម្មវិធីត្រាប់តាម។ តោះមើលតម្លៃទាំងអស់គ្នា៖
ដើម្បីដំណើរការកុងតឺន័រមួយជាមួយ Chrome យើងត្រូវការ n1-ស្តង់ដារ-1 ឡាន។ ក្នុងករណី Android វានឹងក្លាយជា n1-ស្តង់ដារ-4 សម្រាប់កម្មវិធីត្រាប់តាមមួយ។ តាមការពិត វិធីដែលអាចបត់បែនបាន និងថោកជាងគឺកំណត់តម្លៃអ្នកប្រើប្រាស់ជាក់លាក់សម្រាប់ CPU/Memory ប៉ុន្តែនៅពេលនេះវាមិនសំខាន់សម្រាប់ការប្រៀបធៀបជាមួយ Sauce Labs ទេ។
ហើយនេះគឺជាពន្ធសម្រាប់ការប្រើប្រាស់ Sauce Labs៖
ខ្ញុំជឿថាអ្នកបានកត់សម្គាល់ភាពខុសគ្នារួចហើយ ប៉ុន្តែខ្ញុំនឹងនៅតែផ្តល់តារាងជាមួយនឹងការគណនាសម្រាប់កិច្ចការរបស់យើង៖
ធនធានដែលត្រូវការ
ប្រចាំខែ
ម៉ោងធ្វើការ(៨ព្រឹក-៨យប់)
ម៉ោងធ្វើការ+ ទុកមុនបាន។
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 នៅក្នុងអត្ថបទខាងក្រោម។ ខ្ញុំសូមផ្តល់អនុសាសន៍ឱ្យមើលស្ថានភាព និងចាប់ផ្តើមពីភារកិច្ចជានិច្ច៖ ក្នុងករណីខ្លះវាមានតម្លៃថោក និងមានប្រសិទ្ធភាពជាងមុនក្នុងការប្រើប្រាស់ពពកសាធារណៈ ហើយនៅក្នុងកម្មវិធីផ្សេងទៀត វេទិកាសាកល្បងពិតជាមានតម្លៃចំណាយ។
រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ
តំណភ្ជាប់ដើម្បីរុករក
ឧបករណ៍ស្រដៀងគ្នា៖
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 ។ អ្វីគ្រប់យ៉ាងដំណើរការភ្លាមៗចេញពីប្រអប់ រួមទាំងការពង្រីកដោយស្វ័យប្រវត្តិ។ អស្ចារ្យ ប៉ុន្តែត្រូវការសាកល្បង។ ខ្ញុំបានគ្រប់គ្រងការដាក់ពង្រាយឧបករណ៍នេះរួចហើយ និងដំណើរការការពិសោធន៍ជាច្រើន។ ប៉ុន្តែវាលឿនពេកក្នុងការធ្វើការសន្និដ្ឋាន បន្ទាប់ពីទទួលបានលទ្ធផលក្នុងរយៈចម្ងាយឆ្ងាយ ប្រហែលជាខ្ញុំនឹងធ្វើការពិនិត្យឡើងវិញនៅក្នុងអត្ថបទនាពេលអនាគត។ សម្រាប់ពេលនេះ ខ្ញុំទុកតែតំណភ្ជាប់សម្រាប់ការស្រាវជ្រាវឯករាជ្យប៉ុណ្ណោះ។
រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ
តំណភ្ជាប់ដើម្បីរុករក
Kubernetes៖ ការដំឡើង Kubernetes៖ វិធីពិបាក Kubernetes៖ សេលេញ៉ូម GCP: ម៉ាស៊ីន Kubernetes ព្រះច័ន្ទ សៀវភៅ Kubernetes ចែកចាយស្វ័យប្រវត្តិកម្មដោយប្រើ Kubernetes ក្រឡាចត្រង្គ Selenium ៤ Callisto GitHub Wrike TechClub (Callisto)
ឧបករណ៍ស្រដៀងគ្នា
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 កំណត់ការកំណត់ និងការកំណត់។
រូបភាពនៃស្ថានភាពបច្ចុប្បន្ននៃហេដ្ឋារចនាសម្ព័ន្ធ
តំណភ្ជាប់ដើម្បីរុករក៖
Terraform Ansible Ansible និង Terraform កាន់តែប្រសើរជាមួយគ្នា មគ្គុទ្ទេសក៍ដ៏ទូលំទូលាយសម្រាប់ Terraform ហេតុអ្វីបានជាយើងប្រើ Terraform ហើយមិនមែន Chef, Puppet, Ansible, SaltStack ឬ CloudFormation GCP: IaC
ឧបករណ៍ស្រដៀងគ្នា
សរុបមក!
ជំហាន
បច្ចេកវិទ្យា
ឧបករណ៍
តម្លៃសម្រាប់ហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្ម
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: ក្នុងស្រុក
ជំហានទី 2: VCS
ជំហានទី 3: ការវេចខ្ចប់
ជំហានទី 4: CI/CD
ជំហានទី 5: វេទិកាពពក
ជំហានទី ៦៖ វង់ភ្លេង
ជំហានទី 7: IaC
តើមានអ្វីជាបន្ទាប់?
ដូច្នេះនេះគឺជាចុងបញ្ចប់នៃអត្ថបទ។ ប៉ុន្តែសរុបសេចក្តីមក ខ្ញុំចង់បង្កើតកិច្ចព្រមព្រៀងមួយចំនួនជាមួយអ្នក។
ពីខាងអ្នក។
ដូចដែលខ្ញុំបាននិយាយនៅដើមដំបូងខ្ញុំចង់ឱ្យអត្ថបទមានប្រយោជន៍និងជួយអ្នកឱ្យអនុវត្តចំណេះដឹងដែលទទួលបានក្នុងការងារជាក់ស្តែង។ ខ្ញុំបន្ថែមម្តងទៀត
ប៉ុន្តែទោះបីជាបន្ទាប់ពីនោះក៏ដោយ កុំឈប់ អនុវត្ត សិក្សាតំណភ្ជាប់ដែលពាក់ព័ន្ធ និងសៀវភៅ ស្វែងយល់ពីរបៀបដែលវាដំណើរការនៅក្នុងក្រុមហ៊ុនរបស់អ្នក ស្វែងរកកន្លែងដែលអាចត្រូវបានកែលម្អ និងចូលរួមក្នុងវា។ សំណាងល្អ!
ពីខាងខ្ញុំ
ពីចំណងជើងអ្នកអាចមើលឃើញថានេះគ្រាន់តែជាផ្នែកដំបូងប៉ុណ្ណោះ។ ទោះបីជាការពិតដែលថាវាមានទំហំធំណាស់ក៏ដោយក៏ប្រធានបទសំខាន់ៗនៅតែមិនគ្របដណ្តប់នៅទីនេះ។ នៅក្នុងផ្នែកទីពីរ ខ្ញុំមានគម្រោងមើលហេដ្ឋារចនាសម្ព័ន្ធស្វ័យប្រវត្តិកម្មក្នុងបរិបទនៃ IOS។ ដោយសារការរឹតបន្តឹងរបស់ក្រុមហ៊ុន Apple លើការដំណើរការកម្មវិធីក្លែងធ្វើ iOS តែនៅលើប្រព័ន្ធ macOS ដំណោះស្រាយរបស់យើងត្រូវបានរួមតូច។ ឧទាហរណ៍ យើងមិនអាចប្រើ Docker ដើម្បីដំណើរការម៉ាស៊ីនក្លែងធ្វើ ឬពពកសាធារណៈ ដើម្បីដំណើរការម៉ាស៊ីននិម្មិតបានទេ។ ប៉ុន្តែនេះមិនមានន័យថាមិនមានជម្រើសផ្សេងទៀតទេ។ ខ្ញុំនឹងព្យាយាមធ្វើឱ្យអ្នកទាន់សម័យជាមួយនឹងដំណោះស្រាយកម្រិតខ្ពស់ និងឧបករណ៍ទំនើបៗ!
ម្យ៉ាងវិញទៀត ខ្ញុំមិនបាននិយាយអំពីប្រធានបទធំៗដែលទាក់ទងនឹងការត្រួតពិនិត្យនោះទេ។ នៅក្នុងផ្នែកទី 3 ខ្ញុំនឹងពិនិត្យមើលឧបករណ៍ត្រួតពិនិត្យហេដ្ឋារចនាសម្ព័ន្ធដ៏ពេញនិយមបំផុត និងអ្វីដែលទិន្នន័យ និងម៉ែត្រដែលត្រូវពិចារណា។
ជាចុងក្រោយ។ នៅពេលអនាគត ខ្ញុំមានគម្រោងនឹងចេញវគ្គវីដេអូស្តីពីការកសាងហេដ្ឋារចនាសម្ព័ន្ធសាកល្បង និងឧបករណ៍ពេញនិយម។ បច្ចុប្បន្ននេះ មានវគ្គសិក្សា និងការបង្រៀនមួយចំនួននៅលើ DevOps នៅលើអ៊ីនធឺណិត ប៉ុន្តែសម្ភារៈទាំងអស់ត្រូវបានបង្ហាញនៅក្នុងបរិបទនៃការអភិវឌ្ឍន៍ មិនមែនការធ្វើតេស្តស្វ័យប្រវត្តិកម្មនោះទេ។ នៅលើបញ្ហានេះ ខ្ញុំពិតជាត្រូវការមតិកែលម្អថាតើវគ្គសិក្សាបែបនេះនឹងគួរឱ្យចាប់អារម្មណ៍ និងមានតម្លៃសម្រាប់សហគមន៍អ្នកសាកល្បង និងវិស្វករស្វ័យប្រវត្តិកម្មដែរឬទេ។ សូមអរគុណជាមុន!
ប្រភព: www.habr.com