ຂ້າພະເຈົ້າເປັນ Stanislav Yablonskiy, Developer Server Lead ໃນ Pixonic (MY.GAMES). ແລະໃນມື້ນີ້, ພວກເຮົາຈະ discuss microservices. Microservices ແມ່ນການປິ່ນປົວຂອງການພັດທະນາຄອມພິວເຕີ (ລວມທັງການພັດທະນາ backend) ໃນຂະນະທີ່ຄຸນນະສົມບັດແມ່ນກໍານົດໄວ້ໃນ components ຂະຫນາດນ້ອຍທີ່ສຸດທີ່ສາມາດເຮັດວຽກຮ່ວມກັນ. ແຕ່ລະ component ນີ້ມີ API ຂອງຕົນເອງ. ມັນສາມາດມີຂໍ້ມູນຂໍ້ມູນຂອງຕົນເອງແລະສາມາດໄດ້ຮັບການພິຈາລະນາໃນພາສາໂຄງການຂອງຕົນເອງ. Microservices ແມ່ນທີ່ຍິ່ງໃຫຍ່ໃນມື້ນີ້, ແຕ່ການນໍາໃຊ້ຂອງເຂົາເຈົ້າໄດ້ນໍາສະເຫນີ overhead ຂະຫນາດໃຫຍ່ໃນຂະນະທີ່ເຄືອຂ່າຍ, ການເກັບຮັກສາ, ແລະ CPU. ການສື່ຫຍໍ້ຂອງຂອງພວກເຮົາແມ່ນການຄົ້ນຄວ້າແລະການຄົ້ນຄວ້າທີ່ກ່ຽວຂ້ອງກັບຜູ້ຊ່ຽວຊານຂອງພວກເຮົາ. ການຂົນສົ່ງສະດວກສະບາຍແມ່ນອາຍຸແລະມີຄ່າໃຊ້ຈ່າຍ, ໃນຂະນະທີ່ຜົນປະໂຫຍດຫຼັງຈາກນັ້ນຄ້າຍຄືກັບຜົນປະໂຫຍດຫຼັງຈາກນັ້ນຫຼັງຈາກນັ້ນຫຼັງຈາກນັ້ນຫຼັງຈາກນັ້ນຫຼັງຈາກນັ້ນຫຼັງຈາກນັ້ນຫຼັງຈາກນັ້ນຫຼັງຈາກນັ້ນຫຼັງຈາກນັ້ນ. ນໍາ ເວັບ ໄຊ ທ ໌ ອອນ ໄລ ນ ໌ ວັນ ທີ ການ ສ້າງ ຕັ້ງ ສະ ເພາະ ສໍາ ລັບ lovers ສັດ ລ້ຽງ. ບໍ່ ວ່າ ຈະ ເປັນ ທ່ານ ກໍາ ລັງ ຊອກ ຫາ ຄູ່ ຮ່ວມ ງານ ຂອງ ຊີ ວິດ, buddy ສໍາ ລັບ ສັດ ລ້ຽງ ຫຼື ພຽງ ແຕ່ ຜູ້ ໃດ ຜູ້ ຫນຶ່ງ ຂອງ ທ່ານ ທີ່ ຈະ ວາງ ສາຍ ອອກ ກັບ, ທີ່ ນີ້ ທ່ານ ຈະ ສາ ມາດ ຊອກ ຫາ ໄດ້ ຜູ້ ທີ່ ທ່ານ ກໍາ ລັງ ຊອກ ຫາ ສໍາ ລັບ - pet lovers ຄື ຕົວ ທ່ານ ເອງ. ຊື່ຫຍໍ້ຂອງ : Microservices ດາວໂຫລດ Debug Overhead ການຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງ ຖ້າຫາກວ່າທ່ານຕ້ອງການສະພາບແວດລ້ອມພິເສດທີ່ບໍ່ພຽງແຕ່ການບໍລິການທີ່ໄດ້ຮັບການປັບປຸງແມ່ນເຮັດວຽກ, ແຕ່ຍັງທັງຫມົດຂອງການປັບປຸງຂອງຕົນ (ບໍລິການອື່ນໆ, ບັດຂໍ້ມູນ, ລະບົບ, ແລະອື່ນໆ). ການນໍາໃຊ້ HTTP Overhead HTTP protocol ມີຂະຫນາດໃຫຍ່ຂອງຄຸນນະສົມບັດທີ່ສ້າງຕັ້ງຂຶ້ນ. ມັນສະຫນັບສະຫນູນການຝຶກອົບຮົມທີ່ແຕກຕ່າງກັນ, ວິທີການກໍານົດຄຸນນະສົມບັດ, ລະຫັດການຕອບສະຫນັບສະຫນູນ, ແລະໄດ້ຮັບການສະຫນັບສະຫນູນໂດຍການບໍລິການທີ່ຖືກນໍາໃຊ້ຢ່າງກວ້າງຂວາງຈໍານວນຫຼາຍ (ລວມທັງ proxy). ແຕ່ມັນບໍ່ແມ່ນງ່າຍ – ມັນອະນຸຍາດໃຫ້ທຸກບໍລິການເພື່ອນໍາໃຊ້ຂະຫນາດໃຫຍ່ຂອງລະຫັດທີ່ບໍ່ມີປະສິດທິພາບຢ່າງກວ້າງຂວາງເພື່ອທົດສອບແລະຜະລິດເສັ້ນທາງ, headers, ແລະອື່ນໆ. ລະຫັດ QR ການ serialization ສໍາລັບການສື່ສານເຄືອຂ່າຍແລະ deserialization ໃນເວລາທີ່ໄດ້ຮັບຂໍ້ມູນແມ່ນຈໍາເປັນ. ການນໍາໃຊ້ protobuf ສໍາລັບການປ່ຽນແປງຂໍ້ມູນ, ທ່ານຕ້ອງ: ການສ້າງ Objects ການປ່ຽນແປງຂອງເຂົາເຈົ້າ ຫຼັງຈາກການນໍາໃຊ້ຫຼັງຈາກນັ້ນ. ນີ້ສ້າງການເຮັດວຽກເພີ່ມເຕີມຫຼາຍສໍາລັບການກັ່ນຕອງອາຍແກັສຫຼື Dynamic Memory Manager. ອຸດສາຫະກໍາ Network Overhead ການຂົນສົ່ງຂໍ້ມູນໃນໄລຍະເຄືອຂ່າຍເພີ່ມເວລາການຕອບສະຫນອງການບໍລິການ. ມັນເພີ່ມການບໍລິການຂອງມາດຕະຖານແລະການບໍລິການ CPU, ເຊັ່ນດຽວກັນກັບ microservices ທີ່ເຮັດວຽກຢູ່ໃນຕົວແທນเดียวกัน. ຄວາມຄິດເຫັນທີ່ Overhead ການຂົນສົ່ງແລະໄດ້ຮັບການບັນທຶກຕ້ອງການການປົກປັກຮັກສາອຸປະກອນຂໍ້ມູນເພີ່ມເຕີມ, ການນໍາໃຊ້ເສັ້ນຜ່າສູນກາງແລະ synchronization ຂອງພວກເຂົາ. ທັງຫມົດອຸປະກອນທີ່ແຕກຕ່າງກັນ, ລວມທັງຫນຶ່ງທີ່ໃຊ້ເວລາໃນບັນທຶກ, ເຮັດໃຫ້ການນໍາໃຊ້ຂະຫນາດໃຫຍ່ຂອງຄວາມມາດຕະຖານພຽງແຕ່ໂດຍມີ. ລະຫັດ QR ການສື່ສານ inter-process ແລະ inter-containers ນີ້ທັງຫມົດຄຸນນະສົມບັດການຄອມພິວເຕີ. ລະຫັດ QR ການທົດແທນປົກກະຕິແມ່ນບໍ່ສາມາດໃນເວລາທີ່ການປະຕິບັດໄດ້ກວມເອົາ microservices ຫຼາຍ. ການທົດແທນການຈັດສົ່ງແມ່ນງ່າຍຫຼາຍແລະຕ້ອງການການຕັດສິນໃຈທີ່ເຫມາະສົມ - ເຊັ່ນດຽວກັນກັບການຕັດສິນໃຈ. ນີ້ເພີ່ມຄ່າໃຊ້ຈ່າຍເວລາທັງສອງສໍາລັບການພັດທະນາແລະປະຕິບັດການນີ້. ຊື່ຫຍໍ້ຂອງ : Network Disk Overhead containers microservice ແມ່ນປົກກະຕິເຮັດໃນ disks network-mounted. This increases latency, reduces performance (IOPS), and makes it unpredictable. ຊື່ຫຍໍ້ຂອງ : Project Borders Overhead ການອອກແບບແລະການພັດທະນາຂອງ microservices ເຮັດໃຫ້ຄວາມສົນໃຈໃນການພັດທະນາແລະ refactoring ໂຄງການ. ມັນບໍ່ໄດ້ຢ່າງງ່າຍດາຍທີ່ຈະປ່ຽນພື້ນຖານຂອງການບໍລິການ. You can’t just move code from one service to another. You can’t just rename or delete something. You cannot simply move code from one service to another. ນີ້ແມ່ນປົກກະຕິຕ້ອງ: ຂະຫນາດໃຫຍ່ຂອງເວລາແລະປະສົບການ, ດາວໂຫລດ API ແລະການຂົນສົ່ງທີ່ເຫມາະສົມກ່ອນທີ່ functionality ສາມາດຖືກຂົນສົ່ງລະຫວ່າງການບໍລິການ. ນອກເຫນືອໄປຈາກນີ້, ຖ້າຫາກວ່າທ່ານຕ້ອງການການປັບປຸງຫຼືປ່ຽນແປງໂທລະສັບມືຖື, ທ່ານຈະຕ້ອງເຮັດວຽກໃນທຸກໂຄງການ, ບໍ່ພຽງແຕ່ຫນຶ່ງ. ອຸດສາຫະກໍາ Overhead You can’t just “do microservices.” You’ll need infrastructure – no, INFRASTRUCTURE: containers (ລວມທັງລວມທັງຄອມພິວເຕີຂອງຄອມພິວເຕີໄດ້) ປະເພດ Kubernetes ການບໍລິການ cloud, ຊື່ຫຍໍ້ຂອງ : RabbitMQ, Kafka ເຄື່ອງມື sync ການຄຸ້ມຄອງ (Zookeeper, Etcd, Consul) ແລະອື່ນໆ. ທັງຫມົດນີ້ຕ້ອງການພະລັງງານຂະຫນາດໃຫຍ່ຈາກເຄື່ອງແລະຄົນ. ຊື່ຫຍໍ້ຂອງ : Independent Deploy Overhead ການສະຫນັບສະຫນູນການຕິດຕັ້ງອຸປະກອນອຸປະກອນອຸປະກອນອຸປະກອນອຸປະກອນ ການບໍລິການຂອງພວກເຮົາມີຄວາມສາມາດໃນການຕິດຕັ້ງ separately, ທຸກຄົນຕ້ອງມີທໍ່ CI / CD ຂອງຕົນເອງ, ແລະພາກສ່ວນທີ່ເຫມາະສົມທີ່ສຸດ - API versioning. ການບໍລິການຂອງພວກເຮົາມີຄວາມຕ້ອງການທີ່ຈະສະຫນັບສະຫນູນການອອກແບບ API ຫຼາຍໃນຂະນະດຽວກັນແລະຜູ້ຕິດຕໍ່ຈະຈໍາເປັນຕ້ອງຊອກຫາການອອກແບບນີ້ແລະປັບປຸງການໂທລະສັບຂອງເຂົາເຈົ້າໃນເວລາທີ່ໃຊ້ເວລາ. ການຈັດສົ່ງ Ball of Mud ພວກເຮົາ ກໍາ ລັງເຮົາມີຄວາມເປັນສ່ວນຕົວຢ່າງສໍາລັບການບໍລິການລູກຄ້າຂອງພວກເຮົາ. ພວກເຮົາ ກໍາ ລັງເຮົາມີຄວາມເປັນສ່ວນຕົວຢ່າງສໍາລັບການບໍລິການລູກຄ້າຂອງພວກເຮົາມີຄວາມເປັນສ່ວນຕົວຂອງພວກເຮົາ. Monolith ແມ່ນແທ້ຈິງທີ່ຄ້າຍຄືກັນ? ໂມງ Monoliths Monoliths modular ສາມາດຊ່ວຍໃຫ້ທ່ານຕັດສິນໃຈຫຼາຍທີ່ສຸດຂອງ microservice overhead - ໃນຂະນະທີ່ຍັງສະຫນອງການຕັດສິນໃຈທີ່ສາມາດນໍາໃຊ້ຫຼັງຈາກນັ້ນຫຼັງຈາກນັ້ນ. ວິທີການນີ້ປະກອບດ້ວຍການຂຽນຄໍາຮ້ອງສະຫມັກ (ລວມທັງ backend) ໃນຖານະເປັນບໍລິການຫນຶ່ງທີ່ແຕກຕ່າງກັນໃນ modules ອື່ນໆທີ່ມີ: ການຄາດຄະເນດິນດີຕ້ອນຮັບ ລະຫັດ QR ນີ້ເຮັດໃຫ້ມັນສາມາດໃຫ້ເຂົາເຈົ້າໃຫ້ເປັນບໍລິການ, ຖ້າຫາກວ່າ scaling ມີຄວາມຕ້ອງການ. ຂໍຂອບໃຈວ່າທ່ານສາມາດເຮັດສິ່ງນີ້? ຜົນປະໂຫຍດຈໍານວນຫຼາຍທີ່ອະນຸຍາດໃຫ້ການຄຸ້ມຄອງ microservice ສາມາດໄດ້ຮັບໃນ monolith: Modularity ສາມາດໄດ້ຮັບການນໍາໃຊ້ທີ່ມີຄຸນນະສົມບັດດ້ານ: Classes, namespaces, Projects ແລະ assemblies; ບັດຂໍ້ມູນຫຼາຍ – ສາມາດ, ຖ້າຫາກວ່າທ່ານກໍາລັງຈໍາເປັນຕ້ອງ ປະເພດຕ່າງໆຂອງມະນຸດ – ມັນຍັງສາມາດ, ເຊັ່ນດຽວກັນ, ການເຊື່ອມຕໍ່ C / C++ / C# / Java ກັບມະນຸດ scripting ເຊັ່ນ JavaScript, Python, ຫຼື Erlang ສໍາລັບການພັດທະນາລະດັບສູງສຸດ; Interop – ການສະຫນັບສະຫນູນຫຼາຍກ່ວາການໂທ C / C ++ ຈາກ Java, C #, Python, JavaScript, ຫຼື Erlang; ລະຫັດ QR ທີ່ຖືກເຂົ້າລະຫັດໂດຍໃຊ້ການເຂົ້າລະຫັດ QR ແລະໃນເວລາທີ່ທ່ານຕ້ອງການທີ່ຈະ debug — one keypress, ແລະການນໍາໃຊ້ທັງຫມົດແມ່ນຢູ່ໃນປັດຈຸບັນ. ຊື່ຫຍໍ້ຂອງ : Frameworks Actor Frameworks ສາມາດຊ່ວຍໃຫ້ທ່ານສ້າງ microservices - ບໍ່ມີ microservices. ການສອບເສັງທັງຫມົດຖືກກໍານົດໄວ້ໃນລະດັບ (ສະຖາບັນ) ທີ່ຈະສື່ສານພຽງແຕ່ໂດຍຜ່ານ bus message (ລະດັບ). ຜູ້ຊ່ຽວຊານນີ້ສາມາດ: ມີການນໍາໃຊ້ໃນໄລຍະການຫນຶ່ງ, ຫຼື ໄດ້ຮັບການຈັດການໃນໄລຍະການຫຼາຍ. ວິທີການນີ້, ທ່ານໄດ້ຮັບມາດຕະຖານການໂຄງການ microservice, ແຕ່ຫຼາຍທີ່ສຸດອຸດສາຫະກໍາແມ່ນການປິ່ນປົວໂດຍ framework ໄດ້. Conclusion ພາສາລາວ ການຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງຄຸ້ມຄອງ ຄວາມຕ້ອງການຂອງໂຄງການ, ຄຸນນະສົມບັດທີ່ໃຊ້, ທີມງານຄວາມຊ່ຽວຊານ Microservices ແມ່ນບໍ່ມີແຜ່ນ silver. They are useful for huge projects and teams — but the monolith is not obsolete and is not technical debt by default. ສິ່ງທີ່ສໍາຄັນທີ່ສຸດແມ່ນເຫມາະສົມລະຫວ່າງຄວາມງ່າຍດາຍແລະຄວາມງ່າຍດາຍ, ການຂະຫຍາຍຕົວແລະການປົກປັກຮັກສາ - ດັ່ງນັ້ນລະບົບທີ່ທ່ານສ້າງແມ່ນປະສິດທິພາບແລະປະສິດທິພາບ.