មាតិកា[លាក់][បង្ហាញ]
គំនិតនៃសេវាកម្មខ្នាតតូចបានទទួលការចាប់អារម្មណ៍យ៉ាងខ្លាំងនាពេលថ្មីៗនេះ ហើយក្រុមហ៊ុនជាច្រើនកំពុងប្រើប្រាស់វាដើម្បីកម្ចាត់ចោលនូវផ្ទាំងខាងក្រោយដ៏ធំ និង monolithic ។
ការដើរតាមផ្លូវដូចគ្នាជាមួយនឹងផ្នែកខាងមុខនៅតែជាបញ្ហាប្រឈមសម្រាប់អាជីវកម្មជាច្រើន បើទោះបីជារបៀបចែកចាយនៃការបង្កើតផ្នែកខាងម៉ាស៊ីនមេនៃកម្មវិធីគេហទំព័រមានភាពជឿជាក់ច្រើន ឬតិចទាក់ទងនឹងការស្រាវជ្រាវ និងការប្រតិបត្តិក៏ដោយ។
ដោយសារតែភាពអាស្រ័យយ៉ាងជិតស្និទ្ធរបស់វា ជាធម្មតា monolith ខាងអតិថិជនធ្វើឱ្យពិបាកក្នុងការរួមបញ្ចូលមុខងារថ្មីៗ ទទួលយកបច្ចេកវិទ្យាថ្មី និងធ្វើមាត្រដ្ឋានសមាសធាតុនីមួយៗ។
បញ្ហាប្រឈមទាំងនេះ និងបញ្ហាផ្សេងទៀតបានជំរុញឱ្យអ្នកអភិវឌ្ឍន៍ផ្នែកខាងមុខធ្វើការស៊ើបអង្កេតដោយប្រើសេវាកម្មមីក្រូ។
ជាលទ្ធផល យុទ្ធសាស្ត្រស្ថាបត្យកម្មថ្មីស្រឡាងដែលគេស្គាល់ថាជា micro frontend ត្រូវបានបង្កើតឡើងសម្រាប់បង្កើតស្រទាប់ផ្នែកខាងមុខនៃគេហទំព័រ និងកម្មវិធីផ្អែកលើគេហទំព័រ។
ពាក្យនេះត្រូវបានគេប្រើជាលើកដំបូងក្នុងឆ្នាំ ២០១៦ ហើយចាប់តាំងពីពេលនោះមក វាទទួលបានការចាប់អារម្មណ៍ជាខ្លាំងសម្រាប់បុព្វហេតុល្អ។
អត្ថបទនេះនឹងផ្តល់នូវការយល់ដឹងទូទៅអំពីអ្វីទៅជា micro frontends និងបញ្ហាដែលពួកគេដោះស្រាយ។ វាដំណើរការ ក៏ដូចជាគុណសម្បត្តិ និងគុណវិបត្តិ។
ការណែនាំអំពីស្ថាបត្យកម្មខ្នាតតូចផ្នែកខាងមុខ
វិធីសាស្រ្តសហសម័យនៃការអភិវឌ្ឍន៍ផ្នែកខាងមុខដែលហៅថាស្ថាបត្យកម្មខ្នាតតូចផ្នែកខាងមុខបែងចែក ក កម្មវិធីបណ្ដាញ ទៅជាផ្នែកតូចៗឯករាជ្យ។
សម្រាប់អ្នកប្រើប្រាស់ចុងក្រោយ ផ្នែកទាំងនេះហាក់ដូចជាឯកតាតែមួយ ទោះបីជាពួកគេត្រូវបានសាងសង់ដោយឯករាជ្យ និងបន្ទាប់មកដាក់បញ្ចូលគ្នាក៏ដោយ។
ជាមួយនឹងភាពខុសប្លែកគ្នាដែល micro frontends ទាក់ទងនឹងផ្នែកអតិថិជន មិនមែនជាផ្នែក server នៃដំណោះស្រាយលើអ៊ីនធឺណិត ហេតុផលដែលជាមូលដ្ឋាននៃពួកវាគឺដូចគ្នាបេះបិទទៅនឹង microservices ។
ការបង្កើតផលិតផលដែលមានមូលដ្ឋានលើបណ្តាញដ៏ទំនើបធ្វើឱ្យយល់បានច្រើនបំផុតនៅពេលប្រើវិធីសាស្រ្តមីក្រូ Frontend ។
Micro frontends ផ្ទុយពីផ្នែកខាងមុខធម្មតាជាង monolith អាចឱ្យក្រុមជាច្រើនធ្វើការសហការដាច់ដោយឡែកពីគ្នាលើគម្រោងកម្មវិធីផ្សេងៗ។
អ្នកសរសេរកម្មវិធីអាចបង្កើតកម្មវិធីគេហទំព័របានកាន់តែលឿន និងជាមួយនឹងទំហំ និងរក្សាបានកាន់តែច្រើនដោយប្រើការរចនាស្ថាបត្យកម្មនេះ។
ដើម្បីនិយាយឱ្យសាមញ្ញ មីក្រូផ្នែកខាងមុខនីមួយៗគឺគ្រាន់តែជាបំណែកនៃកូដសម្រាប់សមាសធាតុផ្សេងគ្នានៃគេហទំព័រ។
លក្ខណៈពិសេសទាំងនេះត្រូវបានគ្រប់គ្រងដោយក្រុមដាច់ដោយឡែក ដែលក្រុមនីមួយៗមានជំនាញក្នុងឧស្សាហកម្ម ឬគោលបំណងជាក់លាក់មួយ។
Monolithic vs Microservices vs Micro frontend architecture
គិតអំពីការផ្លាស់ទីលំនៅ។ តើវាងាយស្រួលជាងសម្រាប់អ្នកក្នុងការរៀបចំអ្វីៗគ្រប់យ៉ាងទៅក្នុងប្រអប់តូចៗមួយចំនួនដែលមានស្លាកសញ្ញាអ្នកជំនាញ ហើយផ្លាស់ប្តូរទីតាំងនីមួយៗជាលក្ខណៈបុគ្គល ឬវេចខ្ចប់បុគ្គលិកទាំងមូលទៅក្នុងប្រអប់ដ៏ធំសម្បើមមួយ ហើយដឹកជញ្ជូនវាទៅទីតាំងថ្មី?
ដំណោះស្រាយជាក់ស្តែងគឺនៅទីនោះ។
ភាពស្រដៀងគ្នានេះប្រៀបធៀបស្ថាបត្យកម្មកម្មវិធីបណ្តាញដាច់ដោយឡែកពីរគឺ monoliths និង microservices (ត្រូវបានគេស្គាល់ផងដែរថាជា micro frontends) ។
ស្ថាបត្យកម្ម Monolithic
អ្នកប្រហែលជាអាចរំលឹកឡើងវិញនូវ "ថ្ងៃចាស់" នៅពេលដែលកម្មវិធីពេញលេញត្រូវបានបង្កើតឡើងជាអង្គភាពតែមួយ និងស្អិតរមួត។ វិធីសាស្រ្តបែបនេះត្រូវបានគេហៅថា monolith ដែលជាពាក្យចាស់សម្រាប់ប្លុកថ្មធំ។
នេះធ្វើឱ្យយល់បាន។
ប្រព័ន្ធ Monolithic មានធាតុអាស្រ័យគ្នាទៅវិញទៅមក។ ដូច្នេះ ប្រសិនបើអ្នកចង់កែប្រែអ្វីមួយ ឬបន្ថែមមុខងារថ្មី វាអាចទៅរួចដែលថាប្រព័ន្ធទាំងមូលអាចនឹងខូច។
ទោះវាលែងប្រើហើយក៏នៅតែមានម្ដងម្កាល។ បាទ/ចាស យើងដឹងពីកន្សោមបច្ចុប្បន្នរបស់អ្នក។
ការបែងចែកគោលគំនិតនៃ codebase ទៅជាសមាសភាគពីរផ្សេងគ្នា - frontend (ផ្នែកខាងអតិថិជន) និង backend (server-side) - បានក្លាយជារឿងដែលមិនអាចជៀសវាងបាន ដោយសារបច្ចេកវិទ្យាថ្មីដែលត្រូវបានបង្កើតឡើង ហើយផលិតផលកម្មវិធីមានភាពស្មុគស្មាញជាង។
វិធីសាស្រ្តប្រតិបត្តិការដ៏ពេញនិយមបំផុតឥឡូវនេះគឺការបំបែកកង្វល់រវាងស្រទាប់បទបង្ហាញដែលអ្នកប្រើប្រាស់ចុងក្រោយធ្វើអន្តរកម្មជាមួយ និងអ្វីគ្រប់យ៉ាងដែលកើតឡើងនៅផ្ទៃខាងក្រោយ។
វាត្រូវការក្រុមវិស្វកម្មផ្នែកទន់ចំនួនពីរ ដោយក្រុមខាងមុខបង្កើតផ្នែកដែលមើលឃើញ និងក្រុម back-end បង្កើតសេវាកម្មគេហទំព័រ តក្កវិជ្ជាអាជីវកម្ម ការចូលប្រើទិន្នន័យ ការរួមបញ្ចូលជាដើម។
ទោះបីជាយ៉ាងណាក៏ដោយ បើទោះបីជាការបំបែកនេះក៏ដោយ ក៏យុទ្ធសាស្ត្រនេះនៅតែមានលក្ខណៈឯកកោដោយធម្មជាតិ។
ការផ្លាស់ប្តូរសំខាន់គឺថាឥឡូវនេះយើងមានប្លុកធំពីរនៃកូដ - ផ្នែកខាងមុខនិងផ្នែកខាងក្រោយ - ជំនួសឱ្យកម្មវិធីដ៏ធំសម្បើមមួយ។ ស្ថាបត្យកម្ម Monolithic មិនចាំបាច់គួរឱ្យភ័យខ្លាចទេ។ ពួកគេមានអត្ថប្រយោជន៍មួយចំនួន រួមទាំង
- ការអភិវឌ្ឍន៍ដ៏សាមញ្ញ និងរហ័សសម្រាប់កម្មវិធីតូចៗជាមួយនឹងមូលដ្ឋានកូដប្រភពតែមួយ និងការរចនាដ៏សាមញ្ញបំផុត។
- ការធ្វើតេស្ត និងការបំបាត់កំហុសគឺមានភាពសាមញ្ញណាស់ ពីព្រោះកូដទាំងអស់ស្ថិតនៅក្នុងទីតាំងតែមួយ ដែលធ្វើឱ្យវាកាន់តែងាយស្រួលសម្រាប់ក្រុមក្នុងការតាមដានលំហូរសំណើ និងកំណត់អត្តសញ្ញាណកំហុស។
- នៅដើមដំបូងនៃការអភិវឌ្ឍន៍កម្មវិធី ការចំណាយគឺថោកជាង ដោយសារតម្លៃហេដ្ឋារចនាសម្ព័ន្ធ និងការចំណាយលើការអភិវឌ្ឍន៍មិនត្រូវបានកើតឡើងរហូតដល់លក្ខណៈពិសេសថ្មីៗត្រូវបានបន្ថែម។
គុណវិបត្តិនៃយុទ្ធសាស្ត្រនេះត្រូវបានឆ្លុះបញ្ចាំងនៅក្នុង
- ភាពបត់បែននៃការដាក់កម្រិត - ក្រុមត្រូវរង់ចាំ ប្រសិនបើមានតែមួយចំនួនតូចប៉ុណ្ណោះដែលធ្វើការលើគម្រោង ហើយការដាក់ឱ្យប្រើប្រាស់ថ្មីត្រូវបានទាមទាររាល់ពេលដែលអ្នកធ្វើបច្ចុប្បន្នភាពកូដ។
- ការទទួលយកបច្ចេកវិជ្ជាថ្មីគឺជាបញ្ហាប្រឈមចាប់តាំងពីការធ្វើដូច្នេះ ចាំបាច់ត្រូវតែសរសេរឡើងវិញនូវផ្នែកសំខាន់មួយ ប្រសិនបើមិនមែនគម្រោងទាំងមូលនោះទេ។
- នៅពេលដែលចំនួនអ្នកអភិវឌ្ឍន៍កើនឡើង ប្រព័ន្ធនៃកូដបានភ្ជាប់យ៉ាងជិតស្និទ្ធ ស្មុគស្មាញ និងពិបាកក្នុងការគ្រប់គ្រង និងយល់។
- បញ្ហានៃការរៀបចំ - សមាជិកក្រុមនីមួយៗត្រូវតែប្រើកំណែដូចគ្នានៃបណ្ណាល័យ ហើយរាយការណ៍ពីការផ្លាស់ប្តូរណាមួយ ប្រសិនបើក្រុមជាច្រើនកំពុងធ្វើការលើគម្រោង monolithic ។
- ការព្រួយបារម្ភជាមួយនឹងលទ្ធភាពធ្វើមាត្រដ្ឋាន – ដោយសារធាតុផ្សំរបស់គម្រោងមានទំនាក់ទំនងគ្នាទៅវិញទៅមក ការធ្វើមាត្រដ្ឋានពួកវាដាច់ដោយឡែកបង្ហាញពីការលំបាកដែលបណ្តាលឱ្យមានពេលវេលារងចាំដ៏សំខាន់ និងការចំណាយខ្ពស់ជាង។
- តក្កវិជ្ជាស្មុគស្មាញរបស់គម្រោងអាចពិបាកសម្រាប់សមាជិកក្រុមថ្មីក្នុងការយល់ ជាពិសេសប្រសិនបើវិស្វករដែលធ្វើការដំបូងនោះលែងមានការងារធ្វើហើយ។
ការអភិវឌ្ឍន៍នៃសេវាកម្មមីក្រូ និងសាច់ញាតិជិតស្និទ្ធរបស់ពួកគេ និងផ្នែកមីក្រូមុខ បានដោះស្រាយបញ្ហាចម្បងជាមួយប្រព័ន្ធ monolithic ។
ស្ថាបត្យកម្ម Microservices
វិធីសាស្ត្រស្ថាបត្យកម្មដែលគេស្គាល់ថាជាសេវាមីក្រូ អនុញ្ញាតឱ្យបង្កើតសមាសធាតុ ឬសេវាកម្មតូចៗជាច្រើនដែលភ្ជាប់គ្នាដោយរលុង និងអាចប្រើប្រាស់បានដោយឯករាជ្យ ដែលបង្កើតជាកម្មវិធីខាងក្រោយ។
សេវាកម្មនីមួយៗមានមូលដ្ឋានកូដផ្ទាល់ខ្លួន បំពង់ CI/CD នីតិវិធី DevOps និងដំណើរការសម្រាប់ដំណើរការពួកវា។
អ្នកអាចមើលឃើញថាក្រុម backend monolithic ត្រូវបានបែងចែកទៅជាក្រុមដាច់ដោយឡែកដោយមើលរូបភាពខាងលើ។
នីមួយៗផ្តោតជាលក្ខណៈបុគ្គលលើទិដ្ឋភាពផ្សេងគ្នានៃកម្មវិធី (ដូចជាសេវាកម្មផលិតផល សេវាស្វែងរក និងសេវាបង់ប្រាក់)។
ការប្រាស្រ័យទាក់ទងគ្នារវាងសេវាកម្មកើតឡើងតាមរយៈពិធីការដែលបានបង្កើតឡើងដែលគេស្គាល់ថាជា APIs ដូចជាពិធីការ REST API ទម្ងន់ស្រាលដែលប្រើលំនាំឆ្លើយតបសំណើសមកាលកម្ម។
ជម្រើសមួយទៀតគឺត្រូវប្រើការប្រាស្រ័យទាក់ទងអសមកាលដោយប្រើកម្មវិធីដូចជា Kafka ដែលផ្តល់នូវរចនាសម្ព័ន្ធទំនាក់ទំនង និងព្រឹត្តិការណ៍ផ្សព្វផ្សាយ/ជាវ។
Microservices រួមបញ្ចូលជាមួយ frontend តាមរយៈ backend សម្រាប់សេវា frontend (BFF) ឬ API Gateway តាមរយៈបណ្តាញ។ BFF ផ្តល់នូវ API ផ្ទាល់ខ្លួនសម្រាប់អតិថិជននីមួយៗ ចំណែក API Gateways ផ្តល់ចំណុចចូលដំណើរការតែមួយសម្រាប់ការប្រមូលផ្ដុំនៃសេវាកម្មខ្នាតតូច។
ប៉ុន្តែទោះបីជាមានសមាសធាតុ backend ស្វយ័ត និងគុណសម្បត្តិទាំងអស់ដែលពួកគេផ្តល់ក៏ដោយ ផ្នែកខាងមុខនៅតែជា monolith ។
ដូច្នេះហើយ នេះគឺជាកន្លែងដែល micro frontends មានប្រយោជន៍។
ស្ថាបត្យកម្មខ្នាតតូចផ្នែកខាងមុខ
ស្រដៀងទៅនឹងសេវាមីក្រូ ដែលធាតុផ្សំដែលជាប់ទាក់ទងគ្នារលុងត្រូវបានគ្រប់គ្រងដោយក្រុមជាច្រើន ស្ថាបត្យកម្ម micro frontend អនុវត្តគំនិតទៅកម្មវិធីរុករក។
ចំណុចប្រទាក់អ្នកប្រើកម្មវិធីគេហទំព័រទាំងនេះអនុវត្តតាមរចនាសម្ព័ន្ធនេះ ដែលមានធាតុផ្សំស្វ័យភាពខ្លះ។
ក្រុមក៏ត្រូវបានបង្កើតឡើងតាមតម្រូវការរបស់អតិថិជន ឬករណីប្រើប្រាស់ជាជាងជំនាញ ឬបច្ចេកវិទ្យាពិសេស។
អាស្រ័យហេតុនេះ ក្រុមការងារបានចូលរួមក្នុងសេវាកម្មមីក្រូ និងគម្រោងខ្នាតតូច។
- កាត់ជាបន្ទះបញ្ឈរ — ដោយសារមានអ្នកអភិវឌ្ឍន៍ផ្នែកខាងមុខ អ្នកជំនាញទិន្នន័យ វិស្វករផ្នែកខាងក្រោយ វិស្វករ QA ជាដើម ដែលធ្វើការលើគម្រោងដូចគ្នានេះផងដែរ ពួកគេបង្កើតលក្ខណៈពិសេសរបស់ពួកគេពី ចំណុចប្រទាក់អ្នកប្រើ ទៅមូលដ្ឋានទិន្នន័យ; និង
- មុខងារឆ្លង - សមាជិកក្រុមនីមួយៗរួមចំណែកជំនាញរបស់ពួកគេដល់ក្រុម។
ក្រុមក៏អាចជ្រើសរើសជង់បច្ចេកវិទ្យាដែលស័ក្តិសមបំផុតក្នុងជួរអាជីវកម្មជាក់លាក់របស់ពួកគេ។
ក្រុមមួយអាចប្រើ React ដើម្បីសរសេរកម្មវិធីបំណែករបស់វា។ ក្រុមមួយទៀតបង្កើតកំណែ Angular ថ្មី។ Vue.js គឺជាឧទាហរណ៍មួយ។
Micro frontends ត្រូវបានប្រើក្នុងការភ្ជាប់ជាមួយ microservices ដែលពាក់ព័ន្ធ ដើម្បីដោះស្រាយបញ្ហាដែលក្រុមអភិវឌ្ឍន៍ជាធម្មតាមានជាមួយ monoliths ។ យុទ្ធសាស្ត្រផ្តល់អត្ថប្រយោជន៍ដូចខាងក្រោម។
- សេរីភាពខាងបច្ចេកវិទ្យា៖ វិស្វករ Frontend អាចជ្រើសរើសក្របខ័ណ្ឌ JavaScript ជំនួស បរិយាកាសដំណើរការ និងជង់បច្ចេកវិទ្យាទាំងមូល អាស្រ័យលើតម្រូវការរបស់ក្រុមហ៊ុន។ នៅលើកំពូលនៃស្ថាបត្យកម្មហួសសម័យ ក្របខ័ណ្ឌថ្មីអាចត្រូវបានអនុវត្ត។
- កម្រិតនៃភាពបត់បែនកាន់តែច្រើនគឺអាចធ្វើទៅបាន ចាប់តាំងពី micro frontend នីមួយៗមានផ្ទុកដោយខ្លួនឯង ហើយអាចត្រូវបានបង្កើត សាកល្បង ប្រើប្រាស់ និងដំឡើងកំណែដោយឡែកពីគ្នា។ ជាលទ្ធផល ប្រសិនបើក្រុមមួយកំពុងធ្វើការលើមុខងារមួយ ហើយបានជំរុញការកែកំហុស ហើយក្រុមផ្សេងទៀតត្រូវបន្ថែមមុខងារផ្ទាល់ខ្លួនរបស់ពួកគេ ពួកគេមិនចាំបាច់រង់ចាំសម្រាប់ក្រុមដំបូងដើម្បីបញ្ចប់កិច្ចការរបស់ពួកគេនោះទេ។
- ក្រុម និងប្រព័ន្ធស្វយ័ត៖ ក្រុមផលិតផលនីមួយៗ ហើយជាលទ្ធផលមុខងារនីមួយៗ អាចដំណើរការដោយពឹងផ្អែកតិចតួចលើអ្នកដទៃ ដែលអាចឱ្យវាបន្តដំណើរការបាន បើទោះបីជាមិនមានសមាសធាតុនៅក្បែរនោះក៏ដោយ។
- ច្រើន និងតូចជាង codebases៖ micro frontends នីមួយៗនឹងមាន codebase ផ្ទាល់ខ្លួន ដែលអាចគ្រប់គ្រងបាន និងតូចជាង។ មនុស្សតិចជាងមុននឹងផ្តោតលើសមាសធាតុ UI ជាក់លាក់ សម្រួលការត្រួតពិនិត្យកូដ និងកែលម្អស្ថាប័នទាំងមូល។
- ការធ្វើមាត្រដ្ឋានកម្មវិធីសាមញ្ញ៖ អត្ថប្រយោជន៍មួយទៀតនៃ micro frontends គឺសមត្ថភាពក្នុងការធ្វើមាត្រដ្ឋានលក្ខណៈនីមួយៗដោយឡែកពីគ្នា។ ផ្ទុយពី monoliths ដែលកម្មវិធីទាំងមូលត្រូវតែធ្វើមាត្រដ្ឋានរាល់ពេលដែលមុខងារថ្មីត្រូវបានបន្ថែម វាធ្វើឱ្យដំណើរការទាំងមូលមានប្រសិទ្ធភាពជាងទាំងពេលវេលា និងប្រាក់។
តើ micro frontend ដំណើរការយ៉ាងដូចម្តេច?
ដូចដែលយើងបាននិយាយពីមុន ក្រុមត្រូវបានរៀបចំបញ្ឈរនៅខាងក្នុងស្ថាបត្យកម្មខ្នាតតូចផ្នែកខាងមុខ ដែលមានន័យថាពួកគេត្រូវបានបំបែកដោយចំណេះដឹងដែន ឬគោលបំណង ហើយទទួលខុសត្រូវតាំងពីដើមដល់ចប់សម្រាប់ផលិតផលជាក់លាក់មួយ។
វាអាចមានសេវាមីក្រូផ្នែកខាងក្រោយមួយ ឬពីរ ក៏ដូចជាផ្នែកខាងមុខតូចមួយ។ លម្អិតបន្ថែមទៀត សូមពិនិត្យមើលលក្ខណៈនៃធាតុដែលមើលឃើញនេះ អន្តរកម្មជាមួយសមាសធាតុ UI ផ្សេងទៀត និងការបញ្ចូលទៅក្នុងគេហទំព័រ។
ផ្នែកខាងមុខខ្នាតតូចអាចជា
- ទំព័រទាំងមូល (ឧ. ទំព័រលម្អិតផលិតផល) ឬ
- ផ្នែកនៃទំព័រដែលអាចត្រូវបានប្រើដោយក្រុមផ្សេងទៀតដូចជា បឋមកថា បាតកថា និងរបារស្វែងរក។
អ្នកអាចបែងចែកគេហទំព័រធំមួយទៅជាប្រភេទទំព័រជាច្រើន ហើយផ្តល់ប្រភេទនីមួយៗដល់បុគ្គលិកជាក់លាក់ដើម្បីធ្វើការ។
ទោះជាយ៉ាងណាក៏ដោយ សមាសធាតុជាច្រើនកើតឡើងជាញឹកញាប់នៅលើទំព័រជាច្រើនដូចជា បឋមកថា បាតកថា ប្លុកការផ្ដល់យោបល់ជាដើម។ ឧទាហរណ៍ ប្លុកការផ្ដល់យោបល់អាចត្រូវបានរួមបញ្ចូលនៅលើទំព័រដើម ទំព័រលម្អិតផលិតផល ឬសូម្បីតែទំព័រពិនិត្យចេញ។
ជារួម ក្រុមអាចបង្កើតបំណែកដែលក្រុមផ្សេងទៀតអាចប្រើនៅលើទំព័ររបស់ពួកគេ។
ទោះយ៉ាងណាក៏ដោយ ផ្នែកខាងមុខខ្នាតតូចអាចត្រូវបានដាក់ពង្រាយដោយឡែកពីគ្នាជាគម្រោងផ្សេងគ្នា ផ្ទុយពីសមាសធាតុដែលអាចប្រើឡើងវិញបាន។
ទាំងអស់នេះស្តាប់ទៅពិតជាអស្ចារ្យ ប៉ុន្តែដើម្បីបង្កើតចំណុចប្រទាក់បង្រួបបង្រួម ទំព័រ និងបំណែកត្រូវតែបញ្ចូលគ្នា។
នេះតម្រូវឱ្យមានការរួមបញ្ចូលផ្នែកខាងមុខ ដែលអាចត្រូវបានសម្រេចតាមរយៈយុទ្ធសាស្រ្តជាច្រើន រួមទាំងការនាំផ្លូវ សមាសភាព និងការទំនាក់ទំនង (សូមមើលក្រាហ្វិកខាងលើ)។
នាំផ្លូវ
នៅពេលដែលសេវាកម្មពីទំព័រដែលគ្រប់គ្រងដោយក្រុមមួយត្រូវបានទាមទារដើម្បីចូលប្រើទំព័រដែលជាកម្មសិទ្ធិរបស់ក្រុមមួយផ្សេងទៀត ការកំណត់ផ្លូវមានប្រយោជន៍សម្រាប់ការរួមបញ្ចូលកម្រិតទំព័រ។
រាល់ micro frontend ត្រូវបានគ្រប់គ្រងជាកម្មវិធីតែមួយទំព័រ។ តំណភ្ជាប់ HTML សាមញ្ញអាចត្រូវបានប្រើដើម្បីផ្តល់ការនាំផ្លូវ។
អ្នកប្រើប្រាស់អាចបង្ខំកម្មវិធីរុករកតាមអ៊ីនធឺណិតឱ្យទាញយកការសម្គាល់គោលដៅពីម៉ាស៊ីនមេ ហើយជំនួសទំព័របច្ចុប្បន្នជាមួយនឹងទំព័រថ្មីដោយចុចលើតំណខ្ពស់។
សែលកម្មវិធីគឺជាអប្បបរមានៃ HTML, CSS, និង JavaScript ដែលផ្តល់ថាមពលដល់ UI ។ ទោះបីជាទិន្នន័យមាតិកាដែលបានស្នើសុំពីម៉ាស៊ីនមេនៅតែកំពុងរង់ចាំ អ្នកប្រើប្រាស់ទទួលបានទំព័រដែលបង្ហាញឋិតិវន្តភ្លាមៗ។ សែលកម្មវិធីកណ្តាលបម្រើជាកម្មវិធីមេសម្រាប់កម្មវិធីតែមួយទំព័រដែលបង្កើតឡើងដោយក្រុមផ្សេងៗ។
មិនថាបណ្ណាល័យ ឬក្របខ័ណ្ឌដែលកំពុងត្រូវបានប្រើប្រាស់នោះទេ ក្របខ័ណ្ឌមេតាអាចឱ្យការបញ្ចូលគ្នានៃទំព័រផ្សេងៗទៅជាតែមួយ។
ការតែងនិពន្ធ
សមាសភាពគឺជាដំណើរការនៃការរៀបចំបំណែកឱ្យសមនឹងវាទៅក្នុងចន្លោះសមស្របនៅលើទំព័រមួយ។ ក្នុងករណីភាគច្រើន ក្រុមដែលដាក់ពង្រាយទំព័រមិនទាញយកមាតិកានៃបំណែកនេះភ្លាមៗទេ។
ផ្ទុយទៅវិញ វាដាក់កន្លែងដាក់ ឬសញ្ញាសម្គាល់ ដែលបំណែកគួរតែស្ថិតនៅក្នុងការសម្គាល់។
ដោយប្រើដំណើរការផ្សំផ្សេងគ្នា ការជួបជុំចុងក្រោយត្រូវបានសម្រេច។ សមាសភាពអាចបែងចែកជាពីរប្រភេទជាមូលដ្ឋាន៖ ផ្នែកខាងម៉ាស៊ីនភ្ញៀវ និងផ្នែកខាងម៉ាស៊ីនមេ។
សមាសភាពភាគីអតិថិជន៖ កម្មវិធីរុករកតាមអ៊ីនធឺណិតត្រូវបានប្រើដើម្បីបង្កើត និងកែសម្រួលការសម្គាល់ HTML ។ micro frontend នីមួយៗមានសមត្ថភាពផ្លាស់ប្តូរ និងបង្ហាញការសម្គាល់របស់វាដាច់ដោយឡែកពីទំព័រដែលនៅសល់។
ជាឧទាហរណ៍ សមាសធាតុបណ្តាញអនុញ្ញាតឱ្យអ្នកអនុវត្តសំណង់ប្រភេទនេះ។
ផែនការគឺដើម្បីបង្វែរបំណែកនីមួយៗទៅជាសមាសធាតុបណ្ដាញដែលអាចដំឡើងដោយឯករាជ្យជាឯកសារ a.js បន្ទាប់ពីនោះកម្មវិធីអាចផ្ទុក និងបង្ហាញពួកវាក្នុងចន្លោះដែលបានកំណត់សម្រាប់ពួកវានៅក្នុងប្លង់ប្រធានបទ។
ធាតុផ្សំនៃគេហទំព័រគឺអាស្រ័យលើ HTML និង DOM API ដែលក្របខ័ណ្ឌ frontend ផ្សេងទៀតអាចប្រើប្រាស់ ក៏ដូចជាវិធីសាស្ត្រស្តង់ដារនៃការផ្ញើ និងទទួលទិន្នន័យតាមរយៈ props និង event។
សមាសភាពផ្នែកខាងម៉ាស៊ីនមេ៖ ជាមួយនឹងការរចនានេះ បំណែក UI ត្រូវបានបញ្ចូលគ្នានៅលើម៉ាស៊ីនមេ ដែលនាំឱ្យទំព័រដែលបានបង្កើតទាំងស្រុងត្រូវបានបញ្ជូនទៅផ្នែកខាងម៉ាស៊ីនភ្ញៀវ ដែលបង្កើនល្បឿននៃការផ្ទុក។
ការជួបប្រជុំគ្នាជារឿយៗត្រូវបានអនុវត្តដោយសេវាកម្មដាច់ដោយឡែកដែលស្ថិតនៅចន្លោះកម្មវិធីរុករកតាមអ៊ីនធឺណិត និងម៉ាស៊ីនមេគេហទំព័រ។ CDN គឺជាឧទាហរណ៍មួយនៃសេវាកម្ម (បណ្តាញចែកចាយមាតិកា) ។
អ្នកអាចជ្រើសរើសមួយ ឬបន្សំនៃទាំងពីរ អាស្រ័យលើតម្រូវការរបស់អ្នក។
គំរូទំនាក់ទំនងខ្នាតតូចផ្នែកខាងមុខ
ស្ថាបត្យកម្ម micro-frontend ដំណើរការបានល្អបំផុត នៅពេលដែលមានអន្តរកម្មតិចតួច ឬមិនមានរវាងសមាសធាតុផ្សេងៗ។ Micro frontends ម្តងម្កាលត្រូវការនិយាយទៅកាន់គ្នាទៅវិញទៅមក និងចែករំលែកព័ត៌មាន។ នេះគឺជាគំរូសក្តានុពលមួយចំនួនដែលអាចនាំទៅដល់នោះ។
- បុគ្គលិកគេហទំព័រ៖ បុគ្គលិកអនឡាញគឺជាយន្តការមួយដែលអនុញ្ញាតឱ្យមាតិកាគេហទំព័រដំណើរការ JavaScript នៅក្នុងផ្ទៃខាងក្រោយដោយឯករាជ្យពីស្គ្រីបផ្សេងទៀត និងដោយមិនប៉ះពាល់ដល់ល្បឿននៃទំព័រ។ API បុគ្គលិកពិសេសមួយនឹងត្រូវបានផ្តល់ជូនសម្រាប់កម្មវិធីមីក្រូនីមួយៗ។ អត្ថប្រយោជន៍នេះគឺថាការងារដែលចំណាយពេលច្រើនអាចត្រូវបានធ្វើឡើងនៅក្នុងខ្សែស្រលាយផ្សេងគ្នា ដោយអនុញ្ញាតឱ្យខ្សែ UI ដំណើរការដោយមិនចាំបាច់បន្ថយល្បឿន ឬបញ្ឈប់។
- អ្នកបញ្ចេញព្រឹត្តិការណ៍៖ ក្នុងករណីនេះ សមាសធាតុជាច្រើនទាក់ទងគ្នាទៅវិញទៅមកដោយការស្តាប់ និងធ្វើសកម្មភាពលើការផ្លាស់ប្តូររដ្ឋណាមួយនៅក្នុងសមាសធាតុដែលពួកគេត្រូវបានជាវ។ micro frontend ផ្សេងទៀតដែលបានជាវព្រឹត្តិការណ៍ជាក់លាក់នោះឆ្លើយតបនៅពេលដែល micro frontend បាញ់ព្រឹត្តិការណ៍នោះ។ ភ្នាក់ងារបញ្ចេញព្រឹត្តិការណ៍ដែលត្រូវបានណែនាំទៅក្នុង micro-frontend នីមួយៗធ្វើឱ្យមានលទ្ធភាព។
- ការហៅត្រឡប់មកវិញ និងឧបករណ៍៖ នៅក្នុងផ្នែកនេះ អ្នកកំណត់សមាសភាគមេ និងសមាសភាគកូន។ ទំនាក់ទំនងត្រូវបានរៀបចំជារចនាសម្ព័ន្ធដូចដើមឈើ។ សមាសធាតុមេប្រើប្រាស់ props ដើម្បីបញ្ជូនទិន្នន័យជាមុខងារចុះក្រោមមែកធាងសមាសភាគទៅសមាសភាគកូន។ ម្យ៉ាងវិញទៀត ក្មេងអាចដាស់តឿនមាតាបិតាប្រកបដោយប្រសិទ្ធភាពនៅពេលដែលមានអ្វីកើតឡើងនៅក្នុងស្ថានភាពរបស់ពួកគេ ដោយឆ្លើយតបទៅនឹងការហៅត្រឡប់មកវិញ។ React ប្រើមុខងារនេះ។
គុណសម្បត្តិរបស់ Micro frontend
ការអភិវឌ្ឍនៅក្នុងក្រុមស្វយ័តយ៉ាងឆាប់រហ័ស
ក្រុមឯករាជ្យអាចបង្កើតផ្នែកនីមួយៗនៃកម្មវិធីគេហទំព័រ ឬគេហទំព័រ នៅពេលប្រើវិធីសាស្ត្រមីក្រូ Frontend ។
ក្រុមនីមួយៗមានស្វ័យភាពទាំងស្រុង ដែលមានន័យថាវាទទួលបន្ទុកលើវដ្តនៃការអភិវឌ្ឍន៍សមាសធាតុទាំងមូល ចាប់ពីការបង្កើតរហូតដល់ការចេញផ្សាយ និងក្រោយការផលិត។
លើសពីនេះ វាបង្កប់ន័យថាក្រុមផ្សេងៗអាចសហការគ្នាយ៉ាងរលូនក្នុងពេលដំណាលគ្នាធ្វើការលើគម្រោងតែមួយ។
ដូច្នេះហើយ វដ្តនៃការចេញផ្សាយគឺលឿនជាងយ៉ាងសំខាន់ជាមួយនឹង monoliths ខាងមុខ។
Codebases តូចជាងនៃ Micro Frontends បុគ្គលនាំឱ្យ Cleaner Code
ផ្នែកខាងមុខរបស់ Monolithic មានមូលដ្ឋានកូដធំ និងមិនមានសណ្តាប់ធ្នាប់ ដែលកាន់តែមានភាពវឹកវរ និងពិបាកក្នុងការគ្រប់គ្រងតាមពេលវេលា។
Micro frontends ដោះស្រាយបញ្ហានេះ។ ប្រភពកូដរបស់ micro frontend នីមួយៗអាចគ្រប់គ្រងបានច្រើនជាងមុន ដោយសារវាតូចជាង សាមញ្ញជាង និងបង្រួមជាង។
ដំណោះស្រាយគេហទំព័រទាំងមូលទទួលបានអត្ថប្រយោជន៍ពីកូដស្អាតជាងជាលទ្ធផល។
ធ្វើអោយប្រសើរឡើងនូវស្ថេរភាពកម្មវិធី ដោយសារការភ្ជាប់រលុង
ដំណោះស្រាយបណ្តាញមួយអាចកម្រត្រូវបានបែងចែកទៅជាបំណែកឯករាជ្យទាំងស្រុង។ ហេតុដូច្នេះហើយ micro frontends និយាយទៅកាន់គ្នាទៅវិញទៅមក។
ទោះជាយ៉ាងណាក៏ដោយតំណភ្ជាប់នីមួយៗរវាងសមាសធាតុមានសារៈសំខាន់ទោះបីជាមានការភ្ជាប់រលុងក៏ដោយ។
ការបរាជ័យនៃសមាសភាគមួយមានផលប៉ះពាល់តិចតួចដល់ប្រតិបត្តិការនៃសមាសភាគផ្សេងទៀតទាំងអស់ ដែលផ្តល់នូវស្ថេរភាពប្រសើរឡើងនៃដំណោះស្រាយបណ្តាញ។
ការធ្វើតេស្តលក្ខណៈបុគ្គលត្រូវបានធ្វើឱ្យសាមញ្ញជាង
អត្ថប្រយោជន៍នេះបណ្តាលមកពីលក្ខណៈនៃ micro frontends ។ ផ្អែកលើការរចនាស្ថាបត្យកម្មនេះ ផ្នែកអតិថិជនរបស់ដំណោះស្រាយគេហទំព័រគឺម៉ូឌុល ហើយម៉ូឌុលនីមួយៗគឺស្វយ័ត។
ជាលទ្ធផល ការវាយតម្លៃផ្នែកតូចមួយនៃចំណុចប្រទាក់អ្នកប្រើដោយខ្លួនវាគឺមានភាពងាយស្រួលសម្រាប់ក្រុមក្នុងការធ្វើជាងការសាកល្បង monolith ដ៏ធំ។
ការកាត់បន្ថយទំហំបណ្តុំនាំទៅរកការផ្ទុកទំព័រលឿនជាងមុន
មូលហេតុចម្បងមួយក្នុងចំណោមមូលហេតុចម្បងនៃការពន្យាពេលនៃការផ្ទុកនៅក្នុងប្រព័ន្ធគេហទំព័រ monolithic ដែលសំបូរទៅដោយលក្ខណៈពិសេសគឺទំហំនៃកញ្ចប់ JavaScript ។ ម៉្យាងវិញទៀត វិធីសាស្រ្ត micro frontend ធ្វើឱ្យវាកាន់តែងាយស្រួលក្នុងការកាត់បន្ថយពេលវេលាផ្ទុកទំព័រ។
កម្មវិធីរុករកតាមអ៊ីនធឺណិតមិនចាំបាច់ទាញយកកូដដែលមិនចាំបាច់ម្តងហើយម្តងទៀតទេ ដោយសារគេហទំព័រមួយត្រូវបានបង្កើតឡើងដោយបណ្តុំតូចៗជាច្រើន។ ជាលទ្ធផល ដំណើរការទំព័រ និងពេលវេលាផ្ទុកត្រូវបានកើនឡើង។
ឯករាជ្យភាពបច្ចេកវិទ្យា
ច្រើន ក្របខ័ណ្ឌផ្នែកខាងមុខ អាចត្រូវបានប្រើប្រាស់ដោយអ្នកអភិវឌ្ឍន៍ដើម្បីបង្កើតដំណោះស្រាយលើអ៊ីនធឺណិតតែមួយជាមួយនឹងស្ថាបត្យកម្មខ្នាតតូចផ្នែកខាងមុខ។
ដោយសារធាតុផ្សំនីមួយៗមានលក្ខណៈស្វយ័ត វាអាចត្រូវបានសាងសង់ដោយប្រើបច្ចេកវិទ្យាណាមួយដែលសាកសមនឹងការងាររបស់ក្រុមល្អបំផុត។
ជាធម្មតា អ្នកសរសេរកម្មវិធីគួរតែប្រើការប្រុងប្រយ័ត្ននៅពេលជ្រើសរើសក្របខ័ណ្ឌសម្រាប់គម្រោងកម្មវិធីដែលពួកគេទទួលបន្ទុក ហើយការប្រឹក្សាជាមួយក្រុមផ្សេងទៀតនៅតែត្រូវបានណែនាំយ៉ាងខ្លាំង។
ទោះយ៉ាងណាក៏ដោយ មានឱកាសសូន្យដែលអ្នកនឹងត្រូវបង្ខំឱ្យប្រើក្របខ័ណ្ឌចាស់សម្រាប់រយៈពេលនៃអាយុកាលរបស់កម្មវិធី។
គុណវិបត្តិនៃ Micro Frontend
ការធ្វើតេស្តដំណោះស្រាយបណ្តាញស្មុគស្មាញទាំងស្រុង
ការសាកល្បងម៉ូឌុលផ្សេងៗនៃដំណោះស្រាយគេហទំព័រគឺងាយស្រួលនៅពេលដែលវាប្រើស្ថាបត្យកម្មខ្នាតតូចផ្នែកខាងមុខ។ វាខុសគ្នាពីការវាយតម្លៃកម្មវិធីគេហទំព័រទាំងមូល។
ផ្ទៀងផ្ទាត់ថាផ្នែកទាំងអស់ដំណើរការដូចបំណងមុនពេលបន្ត។ នេះអាចជាការពិបាក ដោយសារ micro frontends ដំណើរការដោយឯករាជ្យ និងមានដំណើរការចែកចាយដាច់ដោយឡែក។
ការវិនិយោគដំបូងថ្លៃ
ការអភិវឌ្ឍន៍ខ្នាតតូចជាធម្មតាទាមទារការចំណាយហិរញ្ញវត្ថុយ៉ាងច្រើន។ វាមានតម្លៃថ្លៃក្នុងការប្រមូលផ្តុំ និងរក្សាក្រុមជួរមុខជាច្រើន។
លើសពីនេះ អ្នកនឹងត្រូវការបុគ្គលិកគ្រប់គ្រងដើម្បីរៀបចំការងារ ត្រូវប្រាកដថាអ្វីៗត្រូវបានសម្របសម្រួល និងធានាការប្រាស្រ័យទាក់ទងជាក្រុមដ៏ល្អ។
ភាពស្មុគស្មាញនៃការអភិវឌ្ឍន៍ និងការដាក់ពង្រាយ
នីតិវិធីនៃការអភិវឌ្ឍន៍ និងការដាក់ពង្រាយអាចកាន់តែស្មុគស្មាញជាលទ្ធផលនៃការរចនាខ្នាតតូចផ្នែកខាងមុខ។
ជាឧទាហរណ៍ ដំណោះស្រាយមួយអាចត្រូវបានពង្រាយដោយធាតុផ្សំច្រើនពេកដោយក្រុមអភិវឌ្ឍន៍ឯករាជ្យដែលធ្វើការលើគម្រោងដូចគ្នា ដែលអាចបណ្តាលឱ្យមានបញ្ហានៅដំណាក់កាលដាក់ពង្រាយ។
ការជួបប្រជុំគ្នាត្រឹមត្រូវនៃម៉ូឌុលទាំងអស់ និងការរួមបញ្ចូលដោយរលូនរបស់ពួកគេទៅក្នុងគ្រោងការណ៍ទាំងមូលក៏មិនតែងតែសាមញ្ញដែរ។ ការងារនេះជាធម្មតាត្រូវការការយល់ដឹងឱ្យបានហ្មត់ចត់អំពីភាពអាស្រ័យទាំងអស់។
បញ្ហារក្សាភាពស៊ីសង្វាក់គ្នាក្នុងបទពិសោធន៍អ្នកប្រើប្រាស់
ការរក្សាបាននូវចំណុចប្រទាក់អ្នកប្រើជាប់លាប់គឺជាបញ្ហាប្រឈមនៅពេលដែលក្រុមធ្វើការដោយឡែកពីគ្នាលើផ្នែកជាច្រើននៃកម្មវិធី។
ដំណោះស្រាយបណ្តាញគួរតែត្រូវបានចែករំលែកដោយអ្នកអភិវឌ្ឍន៍គម្រោងទាំងអស់។ បើមិនដូច្នេះទេ វាអាចមានភាពផ្ទុយគ្នាច្រើននៅតាមផ្លូវ។
សន្និដ្ឋាន
Micro frontends ដែលជាការរចនាស្ថាបត្យកម្មសហសម័យ អាចជួយបង្កើនការអនុវត្តគម្រោងអភិវឌ្ឍន៍គេហទំព័រដែលមានមូលដ្ឋានលើសេវាខ្នាតតូចខ្នាតធំ។
វាអនុញ្ញាតឱ្យអ្នកសរសេរកម្មវិធីបែងចែកដំណោះស្រាយពេញលេញទៅជាផ្នែកដាច់ដោយឡែកដែលអាចត្រូវបានបង្កើតឡើងដោយក្រុមស្វយ័តជាច្រើន។ អត្ថប្រយោជន៍ជាច្រើនកើតឡើងពីនេះ រួមទាំងការចេញផ្សាយមុខងារលឿនជាងមុន ការធ្វើតេស្តកាន់តែងាយស្រួលនៃម៉ូឌុលនីមួយៗ និងការធ្វើឱ្យប្រសើរដោយគ្មានថ្នេរបន្ថែមទៀត។
ប៉ុន្តែមានការលំបាកខ្លះជាមួយ micro frontends ផងដែរ។
ឧទាហរណ៍ ការធ្វើតេស្តដ៏ទូលំទូលាយរបស់កម្មវិធី អាចជាបញ្ហាប្រឈម។
លើសពីនេះ ដោយសារក្រុមវិស្វករ និងអ្នកគ្រប់គ្រងជាច្រើនត្រូវការជាចាំបាច់ គម្រោងខ្នាតតូចនៅខាងមុខមានតម្លៃថ្លៃខ្ពស់។
អាស្រ័យហេតុនេះ មុននឹងឈានទៅដល់ការសម្រេចចិត្ត អ្នកត្រូវតែគិតគូរអំពីធាតុផ្សំទាំងអស់នៃករណីអាជីវកម្មរបស់អ្នក។
វ្ល៉ាឌីមៀ Čamaj
ដូចម្ដេចដែលខ្ញុំមិនយល់អំពីគោលការណ៍អ្វីដែលទំនាក់ទំនងរវាងសមាសធាតុនីមួយៗនៅលើផ្នែកខាងមុខដំណើរការ។ ខ្ញុំមិនយល់ពីរបៀបដែលអ្នកចង់ភ្ជាប់សមាសធាតុដែលត្រូវបានបង្កើតក្នុងក្របខ័ណ្ឌផ្សេងគ្នានោះទេ។ មិនមានអ្វីនៅក្នុងអត្ថបទអំពីវាទេ។ ប្រព័ន្ធនៃព្រឹត្តិការណ៍ និងអ្នកស្តាប់មើលទៅដូចជាឋាននរកនៅលើផែនដីសម្រាប់ខ្ញុំ។ តើយើងគួរស្រមៃគិតយ៉ាងណា?