Snapchat ແມ່ນເປັນທີ່ຮູ້ຈັກກັນດີໃນບັນດາ tweens ແລະໄວລຸ້ນ. ເຈົ້າອາດຈະສູງກວ່າ 25 ຖ້າເຈົ້າບໍ່ສາມາດຄິດໄດ້ວ່າມັນເຮັດວຽກແນວໃດ. Snapchat, ຫນຶ່ງໃນຄໍາຮ້ອງສະຫມັກສື່ມວນຊົນສັງຄົມທີ່ນິຍົມຫຼາຍທີ່ສຸດ, ໃຫ້ເດັກນ້ອຍແລະໄວລຸ້ນສິ່ງທີ່ພວກເຂົາຕ້ອງການ: ເປັນວິທີທີ່ງ່າຍທີ່ຈະແບ່ງປັນເຫດການທໍາມະດາໃນຂະນະທີ່ເຮັດໃຫ້ພວກເຂົາເບິ່ງຄືວ່າເຢັນ.
ບໍ່ເຫມືອນກັບເຟສບຸກແລະ Twitter, ເຊິ່ງບັນທຶກແລະເຜີຍແຜ່ທຸກສິ່ງທີ່ທ່ານເຮັດ, Snapchat ຈ້າງຂໍ້ຄວາມທີ່ຄາດວ່າຈະຫາຍໄປ (ເບິ່ງວ່າພວກມັນບໍ່ເຮັດ).
ມີຫຼາຍກ່ຽວກັບ Snapchat, ແລະຖ້າທ່ານເປັນນັກພັດທະນາ, ມັນຈະມີຫຼາຍ. ດັ່ງນັ້ນ, ຂໍ້ຄວາມນີ້ຈະໃຫ້ທ່ານເບິ່ງລະດັບສູງຂອງ Snapchat ການອອກແບບລະບົບ ແລະຄວາມເຂົ້າໃຈຫຼາຍ.
ການນໍາສະເຫນີ
Snapchat ແມ່ນຕັ້ງຢູ່ໃນສະຫະລັດ ເຄືອຂ່າຍສັງຄົມ app ທີ່ເຮັດໃຫ້ຜູ້ໃຊ້ເຊື່ອມຕໍ່ໃນທັນທີ, ແບ່ງປັນຮູບພາບ, ແລະອື່ນໆອີກ.
- ຂໍ້ຄວາມ ແລະຮູບພາບ (ຫຼື snaps) ມີກໍານົດເວລາ 24 ຊົ່ວໂມງ. ຊຸກຍູ້ໃຫ້ຄົນແບ່ງປັນເລື່ອງຂອງເຂົາເຈົ້າເປັນກຸ່ມ.
- Snap Map ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ສາມາດເຫັນໄດ້ໃນແຜນທີ່ບ່ອນທີ່ຫມູ່ເພື່ອນຂອງພວກເຂົາຢູ່.
- ຄວາມຊົງຈໍາເຕືອນຜູ້ໃຊ້ກ່ຽວກັບຮູບພາບທີ່ເຂົາເຈົ້າບັນທຶກໄວ້ຫຼືແບ່ງປັນຫນຶ່ງປີຕໍ່ມາ.
- Snapchat ເປັນທີ່ນິຍົມຫລາຍກັບຄົນລຸ້ນໜຸ່ມ, ໂດຍສະເພາະໄວລຸ້ນ. ມີ 319 ລ້ານຜູ້ໃຊ້ທີ່ໃຊ້ວຽກຢູ່ໃນ app, ແລະ 5.4 ຕື້ snaps ຖືກສົ່ງທຸກໆມື້.
ເງື່ອນໄຂການອອກແບບທີ່ສໍາຄັນ
ສະຖາປັດຕະຍະກຳ Monolithic - ຄໍາຮ້ອງສະຫມັກຊັ້ນດຽວທີ່ດໍາເນີນການເປັນເອກະລາດຂອງຄໍາຮ້ອງສະຫມັກອື່ນໆແມ່ນເປັນທີ່ຮູ້ຈັກເປັນ monolith (ສະຖາປັດຕະ monolithic). monolith ຖືກອອກແບບເພື່ອປະຕິບັດແລະຈັດການກັບກິດຈະກໍາທັງຫມົດທີ່ຕ້ອງການເພື່ອເຮັດສໍາເລັດວຽກງານ. ແອັບພລິເຄຊັນປະຕິບັດຫນ້າທັງຫມົດຕັ້ງແຕ່ເລີ່ມຕົ້ນຈົນເຖິງທ້າຍ.
ຂະ ໜາດ ນ້ອຍ - ມັນກົງກັນຂ້າມກັບ monoliths. ຂະ ໜາດ ນ້ອຍ ແມ່ນວິທີການສະຖາປັດຕະຍະກໍາທີ່ຈັດຄໍາຮ້ອງສະຫມັກເປັນການເກັບກໍາການບໍລິການ. ບໍລິການເຫຼົ່ານີ້ຖືກໃຊ້ເພື່ອຄວບຄຸມຫຼາຍດ້ານຂອງແອັບພລິເຄຊັນ. ລູກຄ້າວາງຄໍາສັ່ງ, ພະນັກງານຮັບມັນແລະສົ່ງມັນ, ແລະພໍ່ຄົວກະກຽມມັນ. ໃນຕົວຢ່າງນີ້, ແຕ່ລະອົງປະກອບເຮັດຫນ້າທີ່ເປັນເອກະລາດແລະແຍກຕ່າງຫາກຈາກອື່ນໆ; ບໍ່ມີໃຜຮູ້ຢ່າງແທ້ຈິງວ່າຄົນອື່ນກໍາລັງເຮັດຫຍັງ, ແລະບໍ່ມີໃຜສາມາດເຂົ້າເຖິງຂໍ້ມູນດຽວກັນ.
JSON: ເປັນຮູບແບບຂໍ້ຄວາມທີ່ສາມາດໃຊ້ເພື່ອສະແດງວັດຖຸ JavaScript, ຕົວອັກສອນ, ອາເຣ, ແລະຂໍ້ມູນ. ຮູບແບບທີ່ອີງໃສ່ຂໍ້ຄວາມນີ້ແມ່ນມີຈຸດປະສົງໃຫ້ງ່າຍດາຍທີ່ຈະອ່ານແລະຂຽນ, ເຊັ່ນດຽວກັນກັບຊອບແວຍ່ອຍໄດ້. JSON ຖືກໃຊ້ທົ່ວໄປເພື່ອໂອນຂໍ້ມູນ ແລະຂໍ້ມູນລະຫວ່າງເຊີບເວີ ແລະແອັບພລິເຄຊັນອອນໄລນ໌.
Orchestration: ເຕັກນິກການອັດຕະໂນມັດການດໍາເນີນງານຫຼາຍແມ່ນເປັນທີ່ຮູ້ຈັກເປັນ orchestration. ວຽກເຫຼົ່ານີ້ລວມມີລະບົບຄອມພິວເຕີ ແລະການຕັ້ງຄ່າຊອບແວ, ການປະສານງານ ແລະການບໍລິຫານ.
proxy: ຕົວແທນເຮັດໜ້າທີ່ເປັນຈຸດເຊື່ອມຕໍ່ລະຫວ່າງລູກຄ້າທີ່ຊອກຫາຊັບພະຍາກອນ ແລະເຊີບເວີທີ່ສະໜອງໃຫ້.
ຕາຫນ່າງ: ຕາໜ່າງການບໍລິການແມ່ນຮູບແບບສະຖາປັດຕະຍະກຳຊອບແວທີ່ເພີ່ມຊັ້ນຂໍ້ມູນໃສ່ຊັ້ນໂຄງສ້າງພື້ນຖານເພື່ອໃຫ້ການສື່ສານທີ່ມີລະບຽບ, ສາມາດສັງເກດໄດ້ ແລະປອດໄພລະຫວ່າງບໍລິການຜ່ານພຣັອກຊີ.
ການອອກແບບລະດັບສູງ
ບັນຫາ monolithic
SnapChat ມີຕົ້ນກຳເນີດມາຈາກ cloud-based monolith ໂດຍອີງໃສ່ Google App Engine. ຢ່າງໃດກໍຕາມ, ຍ້ອນວ່າໂຄງການເພີ່ມຂຶ້ນໃນຄວາມນິຍົມແລະໄດ້ຮັບຜູ້ໃຊ້ແລະຂໍ້ມູນຫຼາຍຂຶ້ນ, ຄວາມສາມາດໃນການຂະຫຍາຍໄດ້ກາຍເປັນບັນຫາ.
ນອກຈາກນັ້ນ, ດ້ວຍລັດສະໝີຂອງການລະເບີດອັນໃຫຍ່ຫຼວງພາຍໃນ monolith, ການລົບກວນໃນລະບົບແມ່ນເປັນໄປໄດ້ຫຼາຍກວ່າ. ຫນຶ່ງໃນບັນຫາຂອງ Snapchat ໄດ້ຖືກກໍານົດວ່າເປັນ "ຄວາມໂສກເສົ້າຂອງທົ່ວໄປ", ໃນລັກສະນະທີ່ແຂ່ງຂັນສໍາລັບການເຂົ້າເຖິງຊັບພະຍາກອນ; ຄຸນສົມບັດກຳລັງໂຫຼດໃນເວລາເປີດແອັບ, ເຊິ່ງເຮັດໃຫ້ຄຸນສົມບັດບາງຢ່າງໂຫຼດໄດ້ໄວຂຶ້ນ ແຕ່ອັນອື່ນໂຫຼດຊ້າກວ່າ.
ວິສະວະກອນຍັງໄດ້ສະແຫວງຫາການເບິ່ງເຫັນທີ່ຊັດເຈນ, ການແຍກ, ແລະການເປັນເຈົ້າຂອງອົງປະກອບຂອງພວກເຂົາຈາກຈຸດຢືນຂອງການພັດທະນາ, ເພື່ອໃຫ້ການບໍລິການມີຄວາມຍືດຫຍຸ່ນແລະມີປະສິດທິພາບ.
ການຫັນເປັນ
ໃນຂະນະທີ່ Snapchat ຂະຫຍາຍອອກໄປ, ບໍລິສັດໄດ້ຮັບຮູ້ວ່າມັນຈໍາເປັນຕ້ອງທໍາລາຍໂຄງສ້າງພື້ນຖານ monolithic ຂອງຕົນອອກເປັນຕ່ອນຂະຫນາດນ້ອຍກວ່າ, ປະສິດທິພາບຫຼາຍ. ເພື່ອສະຫນອງການ latency ຫຼຸດລົງ, ອົງການຈັດຕັ້ງໄດ້ຕັດສິນໃຈທີ່ຈະພັດທະນາການອອກແບບທີ່ອີງໃສ່ microservices.
ເພື່ອບັນລຸເປົ້າຫມາຍເຫຼົ່ານັ້ນ, Snapchat ໄດ້ເລືອກທີ່ຈະປັບປຸງຊອບແວຂອງຕົນໂດຍໃຊ້ Amazon DynamoDB, ບໍລິການຖານຂໍ້ມູນ NoSQL ທີ່ສາມາດຂະຫຍາຍໄດ້. ບໍລິສັດສາມາດຫຼຸດຜ່ອນຄວາມລ່າຊ້າປານກາງລົງ 20% ເປັນຜົນມາຈາກຄວາມພະຍາຍາມຂອງຕົນ.
ແອັບຯດັ່ງກ່າວໄດ້ຖືກຂຽນຄືນໃຫມ່ໃນແອັບພລິເຄຊັນນ້ອຍໆຈໍານວນຫລາຍໂດຍບໍລິສັດ. Snapchat ໄດ້ເລີ່ມຕົ້ນດ້ວຍຄໍາຮ້ອງສະຫມັກຈໍານວນຫລາຍ, ລວມທັງກ້ອງຖ່າຍຮູບ, ການສົນທະນາ, ຄວາມຊົງຈໍາ, ການແກ້ໄຂຮູບພາບ, ການບໍລິໂພກເນື້ອຫາ, ແລະແຜນທີ່. ເຖິງແມ່ນວ່າການລວມເອົາໂຄງການເຫຼົ່ານີ້ເຂົ້າໄປໃນ monolith ດຽວແມ່ນສະດວກສໍາລັບຜູ້ບໍລິໂພກ, ມັນກໍ່ເຮັດໃຫ້ເກີດບັນຫາດ້ານວິຊາການທີ່ຮ້າຍແຮງໃນການຮັກສາການປະຕິບັດທີ່ດີ.
ສໍາລັບການຂຽນຄືນໃຫມ່, ບໍລິສັດໄດ້ສ້າງຕັ້ງກົດລະບຽບພື້ນຖານຫຼາຍຢ່າງ. ຢ່າໂຫຼດລ່ວງໜ້າ; ແຕ່ລະຄຸນສົມບັດຄວນຈະເປັນແອັບຯຂອງຕົນເອງ, ແລະມັນຄວນຈະໄວ. Snapchat ຢຸດເຊົາການດັດແກ້ໃນຫຼາຍໆບ່ອນເພື່ອໃຫ້ສາມາດຂຽນຄືນໃຫມ່ໄດ້, ເຮັດໃຫ້ມັນເປັນວຽກງານດ້ານວິຊາການຢ່າງເຂັ້ມງວດ.
ການປະສົມປະສານຄຸນສົມບັດເພີ່ມເຕີມ
ແອັບກ້ອງຖ່າຍຮູບຂອງ Snapchat ມີເລນ, ຕົວກອງ, bitmojis, ແລະຄວາມສາມາດໃນການເພີ່ມພາບເຄື່ອນໄຫວຄວາມເປັນຈິງ, ໃນບັນດາສິ່ງອື່ນໆ. ແອັບຯສົນທະນາຂອງ Snapchat ຍັງອະນຸຍາດໃຫ້ຜູ້ໃຊ້ສາມາດເກັບຮູບພາບ, ບັນທຶກການສົນທະນາ, ເພີ່ມອີໂມຕິຄອນ ແລະອື່ນໆອີກ.
ແຜນທີ່ຂອງ Snapchat, ໃນບັນດາສິ່ງອື່ນໆ, ຊ່ວຍໃຫ້ທ່ານສາມາດຕິດຕາມຫມູ່ເພື່ອນຖ້າພວກເຂົາຕ້ອງການໃຫ້ທ່ານ. ຄວາມຊົງຈໍາ, ການແກ້ໄຂຮູບພາບແລະການບໍລິໂພກເນື້ອຫາແມ່ນແອັບຯ Snapchat ແຍກຕ່າງຫາກທີ່ມີຄວາມສາມາດພິເສດຂອງພວກເຂົາ.
ຄວາມຊົງຈໍາຊ່ວຍໃຫ້ທ່ານສາມາດເກັບຮັກສາຫຼືດັດແປງຮູບພາບຫຼືວິດີໂອສໍາລັບການນໍາໃຊ້ໃນພາຍຫລັງ, ເຊັ່ນດຽວກັນກັບການອັບໂຫລດຫຼືສົ່ງໃຫ້ເຂົາເຈົ້າ. ຜູ້ໃຊ້ຍັງສາມາດໃຊ້ການແກ້ໄຂຮູບພາບເພື່ອຕັດຮູບເງົາ, ເພີ່ມຂໍ້ຄວາມ, ເພີ່ມສະຕິກເກີ, ແລະອື່ນໆ.
ການບໍລິໂພກເນື້ອຫາພາຍນອກຂອງ Snapchat ຫມາຍເຖິງສິ່ງທີ່ມັນສະແດງໃຫ້ຜູ້ໃຊ້ໂດຍອີງໃສ່ຂອບເຂດຂອງພາລາມິເຕີ.
ຂະ ໜາດ ນ້ອຍ
ໂຄງການແມ່ນຂຶ້ນກັບ JSON ຢ່າງກວ້າງຂວາງເພື່ອດໍາເນີນການສອບຖາມເຄືອຂ່າຍໃນເວລານັ້ນ. ຢ່າງໃດກໍຕາມ, ການແຍກ JSON ແມ່ນໃຊ້ເວລາຫຼາຍແລະບໍ່ມີປະສິດທິພາບ. Snapchat ໃຊ້ API ການຈັດການເຄືອຂ່າຍສູນກາງເພື່ອປິດບັງການໃຊ້ JSON ເປັນລາຍລະອຽດການປະຕິບັດເພື່ອແກ້ໄຂບັນຫານີ້.
Microservices ແນະນໍາສິ່ງທ້າທາຍຂອງການຄຸ້ມຄອງລັດຄໍາຮ້ອງສະຫມັກ, ການສື່ສານການບໍລິການ, ແລະການຄຸ້ມຄອງຄວາມລົ້ມເຫຼວ. Snapchat ໄດ້ໃຊ້ເທກໂນໂລຍີ open-source ເຊັ່ນ Temporal ເພື່ອເອົາຊະນະຄວາມຫຍຸ້ງຍາກໃນວົງການ orchestration ເພື່ອສ້າງລະບົບທີ່ເຂັ້ມແຂງແລະເຊື່ອຖືໄດ້.
ດັ່ງນັ້ນ, ອົງການຈັດຕັ້ງໄດ້ຕັດສິນໃຈນໍາໃຊ້ຮູບແບບການອອກແບບຕາຫນ່າງການບໍລິການ. Snapchat ໃຊ້ Envoy, ເຄື່ອງມືເປີດແຫຼ່ງອື່ນທີ່ເຮັດຫນ້າທີ່ເປັນຕົວແທນ, ເພື່ອບັນລຸຮູບແບບນີ້. Envoy ຄຸ້ມຄອງການໄຫຼວຽນຂອງການຈະລາຈອນການບໍລິການຜ່ານພື້ນຖານໂຄງລ່າງ, ເຮັດໃຫ້ຜູ້ພັດທະນາເບິ່ງເຫັນຄວາມຫຍຸ້ງຍາກທີ່ອາດຈະເກີດຂື້ນ.
Snapchat ສ້າງແອັບຯພາຍໃນທີ່ເອີ້ນວ່າ Switchboard ພາຍໃນຕາຫນ່າງບໍລິການ. Switchboard ເຮັດຫນ້າທີ່ເປັນແຜງຄວບຄຸມສໍາລັບການບໍລິການຂອງ Snap, ໃຫ້ຜູ້ໃຊ້ສາມາດປ່ຽນການຈະລາຈອນ, ຈັດການຄວາມຂຶ້ນກັບການບໍລິການ (ຄຸນນະສົມບັດທີ່ອະນຸຍາດໃຫ້ບໍລິການຫນຶ່ງສາມາດຈັດການຂຶ້ນກັບສະພາບຂອງຄົນອື່ນ), ແລະພື້ນທີ່ລະບາຍນ້ໍາ.
ເພື່ອເຮັດໃຫ້ຄວາມສັບສົນຂອງການຕັ້ງຄ່າທີ່ເປັນໄປໄດ້ພາຍໃນການບໍລິການ, Switchboard ຖືກນໍາໃຊ້ແທນທີ່ຈະເປີດເຜີຍ Envoy API ທັງຫມົດ. Snap ມີເຄືອຂ່າຍພາຍໃນ ແລະພາກພື້ນທົ່ວໄປສໍາລັບການບໍລິການຈຸນລະພາກຂອງຕົນເນື່ອງຈາກຕາຫນ່າງການບໍລິການ.
ການບໍລິການພາຍໃນພາກພື້ນດຽວກັນສາມາດເຊື່ອມຕໍ່ເຊິ່ງກັນແລະກັນໂດຍບໍ່ມີການນໍາໃຊ້ອິນເຕີເນັດສາທາລະນະ, ແລະບໍ່ມີການຈະລາຈອນເຄືອຂ່າຍພາຍນອກສາມາດຕິດຕໍ່ກັບພາກສ່ວນເຄືອຂ່າຍພາຍໃນ.
ມີພຽງແຕ່ Gateways ເທົ່ານັ້ນທີ່ໄດ້ຮັບອະນຸຍາດໃຫ້ເປີດເຜີຍຕົນເອງກັບອິນເຕີເນັດສໍາລັບເຫດຜົນດ້ານຄວາມປອດໄພ. ສໍາລັບຕົວຢ່າງ, API gateways ອາດຈະເຮັດຫນ້າທີ່ເປັນປະຕູຫນ້າ, ດໍາເນີນການຮ້ອງຂໍຈາກລູກຄ້າ / ຜູ້ໃຊ້ແລະກໍານົດເສັ້ນທາງໃຫ້ເຂົາເຈົ້າພ້ອມກັບເຄືອຂ່າຍ.
ເຄືອຂ່າຍ & API Gateway
ຄໍາຖາມທັງຫມົດຈາກລູກຄ້າ Snapchat ແມ່ນຜ່ານ API Gateway. ມັນໃຊ້ຮູບພາບ Envoy ດຽວກັນແລະເຊື່ອມຕໍ່ກັບ Control Plane ດຽວກັນກັບ microservices ພາຍໃນຂອງພວກເຮົາ. ຍົນຄວບຄຸມຂອງພວກເຮົາອະນຸຍາດໃຫ້ພວກເຮົາເປີດໃຊ້ຕົວກອງ Envoy ແບບກຳນົດເອງ.
ລະບົບການກວດສອບຄວາມຖືກຕ້ອງຂອງ Snapchat, ເຊັ່ນດຽວກັນກັບການຈໍາກັດອັດຕາຂອງພວກເຮົາແລະເຕັກໂນໂລຢີການໂຫຼດ, ແມ່ນຈັດການໂດຍຕົວກອງເຫຼົ່ານີ້. Envoy ໃຊ້ Service Mesh ເພື່ອສົ່ງເສັ້ນທາງການຮ້ອງຂໍໄປຫາ microservice ທີ່ກ່ຽວຂ້ອງຫຼັງຈາກຕ່ອງໂສ້ການກັ່ນຕອງສໍາເລັດ.
ສະຫຼຸບ
API gateway ຂອງ Snapchat ສົ່ງເສັ້ນທາງການຈາລະຈອນພາຍນອກໄປຫາຫຼາຍຫນ້າທີ່ເຮັດວຽກຂອງແອັບຯ. ການຮ້ອງຂໍຂອງຜູ້ໃຊ້ເພື່ອແກ້ໄຂສະຖານະການຕັ້ງຄ່າແມ່ນຖືກຈັດການໂດຍເຄື່ອງແມ່ຂ່າຍ, ເຊິ່ງຫຼັງຈາກນັ້ນ ສະໜອງຂໍ້ມູນ ແລະຂໍ້ມູນກັບຄືນໄປບ່ອນການບໍລິການຈໍານວນຫລາຍຂອງ app.
ໂດຍລວມແລ້ວ, ການອອກແບບໃນປະຈຸບັນຂອງ Snapchat ອາດຈະຖືກປຽບທຽບກັບຫຼາຍໆໂຄງການທີ່ເຮັດວຽກຢູ່ໃນລະບົບປະຕິບັດການດຽວ, ເຊິ່ງໃນກໍລະນີນີ້ແມ່ນແອັບຯ Snapchat. ຂ້າພະເຈົ້າໄດ້ພະຍາຍາມຢ່າງຫນັກແຫນ້ນເພື່ອໃຫ້ທ່ານມີພາບລວມລະດັບສູງຂອງການອອກແບບລະບົບ Snapchat. ຂ້ອຍຫວັງວ່າເຈົ້າພົບວ່າມັນເປັນປະໂຫຍດ.
ອອກຈາກ Reply ເປັນ