ภาพภายในกระบวนการพัฒนาแอพมือถือของ Facebook

ผู้เขียน: Laura McKinney
วันที่สร้าง: 4 เมษายน 2021
วันที่อัปเดต: 1 กรกฎาคม 2024
Anonim
Introduction to Mobile Application Development เทรนการพัฒนาแอปพลิเคชันบนมือถือ 1-64
วิดีโอ: Introduction to Mobile Application Development เทรนการพัฒนาแอปพลิเคชันบนมือถือ 1-64

เนื้อหา


เมื่อเร็ว ๆ นี้ฉันได้เยี่ยมชมสำนักงานใหญ่ Facebook ในกรุงลอนดอนเพื่อเรียนรู้เกี่ยวกับกระบวนการพัฒนาและดูแลแอพ Facebook มือถือ ยังมีอะไรอีกมากมายที่คุณอาจคาดไม่ถึง: แอพของ Facebook บางตัวได้รับการจัดการที่นี่อย่างครบถ้วนเช่น WhatsApp สำหรับเดสก์ท็อปและแอพทำงานเชิงธุรกิจ

สำนักงานเป็นเพียงสิ่งที่คุณคาดหวังจากภาพลักษณ์ของ Facebook แต่อาจไม่มากจนเกินไปสำหรับเครือข่ายสังคมที่มีระดับเกิน นี่คือสถานที่ที่จะทำงานอย่างจริงจัง แต่ก็มีบรรยากาศที่ทันสมัยแปลกใหม่และผ่อนคลาย พนักงานสามารถพกพาแล็ปท็อปไปทำงานได้ทุกที่ที่พวกเขาเลือกมีห้องพิมพ์สำหรับทำโปสเตอร์ (เพียงเพราะ) งานศิลปะที่ได้รับมอบหมายบนผนังหลายแห่งและเต่านินจายักษ์ - ฉันไม่เคยได้รับคำตอบว่าทำไม

โอ้และอาหารนั้นช่างเหลือเชื่อ ฉันอยู่ที่นั่นในช่วงตรุษจีนและฉันมี หลายอย่าง ท้องหมู ช่วงเวลาที่ดี.

อย่างไรก็ตามฉันไม่ได้ไปที่นั่นเพื่อเพลิดเพลินกับการตกแต่งและอาหารฉันอยู่ที่นั่นเพื่อเรียนรู้เกี่ยวกับ Facebook บนมือถือ โดยเฉพาะอย่างยิ่ง: คุณจะไปเกี่ยวกับการดูแลรักษาโครงการขนาดใหญ่และมีความทะเยอทะยานได้อย่างไร แบ็กเอนด์ Facebook ให้บริการมากกว่าสองพันล้านคนและแอพ Android เพียงอย่างเดียวเห็นรุ่นใหม่ออกมาทุกสัปดาห์


คุณจะจัดการแอพด้วยคุณสมบัติที่ท้าทายมากมายได้อย่างไร

ฉันพูดกับ Tal Kellner ผ่านระบบ TelePresence ของ Facebook Tal เป็นผู้จัดการโครงการด้านเทคนิคซึ่งรับผิดชอบดูแลทีมวิศวกรรม Release ในสำนักงานเทลอาวีฟ เธอมีความสุขมากกว่าที่จะแบ่งปันรายละเอียดที่น่ากลัว

Tal และทีมของเธออัปโหลด Facebook รุ่น Lite ไปยัง iOS เป็นครั้งแรก

สิ่งที่ฉันเรียนรู้เป็นสิ่งที่น่าดึงดูดใจทั้งจากมุมมองของนักพัฒนาและในฐานะผู้ใช้ นี่คือสิ่งที่ฉันค้นพบ

การจัดการโครงการที่ Facebook - Why Scrum> Waterfall

เมื่อดูโครงการขนาดใหญ่คุณต้องพิจารณาแนวทางการจัดการโครงการของคุณ ตัวอย่างหนึ่งที่เรียกว่าการจัดการโครงการ "น้ำตก" นี่เป็นวิธีการต่อเนื่องและเชิงเส้นที่คุณทำงานในเฟสที่เฉพาะเจาะจงเช่นการเปลี่ยนจากแนวคิดไปสู่การใช้งานจนถึงการทดสอบที่จะปล่อย

บริษัท อย่าง Facebook เลือกใช้วิธีการจัดการโครงการที่ทันสมัยกว่าที่เรียกว่า "การต่อสู้"

สิ่งสำคัญในวิธีนี้คุณจะไม่เริ่มขั้นตอนต่อไปจนกว่าขั้นตอนก่อนหน้าจะเสร็จสมบูรณ์ ระบบมีต้นกำเนิดมาจากการผลิตซึ่งบางขั้นตอนมักจะพึ่งพาขั้นตอนก่อนหน้า: คุณต้องจัดหาอิฐก่อนที่จะสร้างกำแพง!


เมื่อพูดถึงซอฟต์แวร์แนวทางนี้มีข้อ จำกัด ในกรณีที่เลวร้ายที่สุดการอัปเดตอาจใช้เวลานานกว่าจะเปิดตัวมันล้าสมัยไปแล้วเมื่อถึงเวลา Duke Nukem ทุกคนตลอดกาล?

ดังนั้น บริษัท ซอฟต์แวร์บางรายจึงเลือกใช้วิธีการที่ทันสมัยกว่าเรียกว่า "การต่อสู้" ซึ่งเป็นวิธีการที่คล่องตัว วิธีนี้จัดลำดับความสำคัญของงานที่สำคัญที่สุดและแบ่งออกเป็นชิ้นส่วนแบบแยกส่วน มันขึ้นอยู่กับการสื่อสารระหว่างแผนกภายในและแม้แต่ตัวแทนบุคคลที่ทำงานคนเดียวในมุมของรหัส

ในทางทฤษฎีผลลัพธ์คือทุกคนสามารถทำงานในสิ่งที่เร่งด่วนที่สุดสำหรับพวกเขาตลอดเวลาและส่วนอื่น ๆ ของธุรกิจทุกคนรู้ว่าพวกเขากำลังทำอะไรอยู่ มีความเป็นเจ้าของในระดับสูงสำหรับวิศวกรแต่ละคนและทุกคนต้องรับผิดชอบงานของตนเองในที่สุด สิ่งนี้ไม่เพียงทำให้ บริษัท มีความคล่องตัวมากขึ้น แต่ยังหวังว่าจะเพิ่มความพึงพอใจในสถานที่ทำงาน ไม่มีใครเป็นแค่ฟันเฟืองในเครื่อง

ทุกคนจากทุกที่ในองค์กรสามารถแนะนำแนวคิดสำหรับคุณลักษณะใหม่

ฉันประทับใจมากที่ได้ยินว่าทุกคนจากทุกที่ในองค์กรสามารถแนะนำแนวคิดสำหรับคุณลักษณะใหม่และจากนั้นทำงานต่อไปหากได้รับสิ่งต่อไป บางครั้งสิ่งนี้อาจพัฒนาเป็นแอพแยกต่างหาก! Facebook เป็นโครงการที่ร่วมมือกันมากขึ้นกว่าวิสัยทัศน์จากบนลงล่างที่บังคับใช้ไม่กี่คน (หรือหนึ่งคน) ที่มักแสดงเป็น

สิ่งนี้ทำให้ Facebook สามารถใช้วงจรการพัฒนาที่รวดเร็วอย่างมากทำให้สามารถเปิดใช้งานการอัปเดตมือถือใหม่ทุกสัปดาห์และการกระทำหลายพันรายการ (การเปลี่ยนแปลงรหัสที่เสนอ) ระหว่างนั้น หากคุณคิดว่ามันน่าประทับใจเวอร์ชันเว็บ (แบ็กเอนด์ซึ่งให้บริการแอพมือถือ) จะอัปเดตทุกๆสองถึงสามชั่วโมง!

โดยทั่วไปแล้ว Facebook นั้นให้การสนับสนุนแนวความคิดและ startups ใหม่ ๆ มันยังมีความคิดริเริ่มที่เรียกว่า LDN LAB เพื่อรองรับความคิดและธุรกิจใหม่ ๆ

การหายอดเงิน

นำมาจากสไลด์ของ Tal

แน่นอนว่ายังมีข้อ จำกัด เสมอเมื่อพูดถึงสิ่งที่ บริษัท สามารถจัดการได้ ด้วยรหัสจำนวนมากนี้จะมีที่ว่างสำหรับการปรับปรุงอยู่เสมอ แต่ต้องรอสักครู่เมื่อรุ่นนี้ถือว่า "ดีพอ"

นั่นคือจุดที่ "สามเหลี่ยมทองคำ" เข้ามาเล่น จุดสามจุดของสามเหลี่ยมนี้แสดงถึงคุณสมบัติคุณภาพและเวลา ทุก บริษัท มีทางเลือกให้ทำที่นี่: เมื่อถึงเวลาที่จะเกิดวิกฤติคุณจัดลำดับความสำคัญของฟีเจอร์ใหม่โดยเสียค่าใช้จ่ายในการใช้เวลานานกว่าเล็กน้อยหรือไม่? คุณอนุญาตให้บั๊กที่มีอยู่เล็กน้อยหลุดผ่านเน็ตได้หรือไม่ถ้านั่นหมายความว่าคุณสามารถเพิ่มคุณสมบัติเพิ่มเติมได้หรือไม่? เมื่อคุณไม่สามารถทำทุกอย่างได้คุณจะต้องจัดลำดับความสำคัญ

ที่ Facebook ลำดับความสำคัญคือคุณภาพและเวลา หากการอัปเดตอยู่ด้านหลังหน้าต่างที่กำหนดคุณลักษณะอาจถูกส่งคืน แทนที่จะเป็นมุมที่ถูกตัดหรือการอัพเดทล่าช้า

การควบคุมเวอร์ชันและการเปลี่ยนแปลงการเล่นปาหี่

สำหรับการจัดการการอัปเดตและการเปลี่ยนแปลงรหัสเหล่านี้ Facebook ใช้ Mercurial เวอร์ชันดัดแปลงของตนเอง นั่นคือแทนที่จะใช้ Git ที่ใช้กันอย่างแพร่หลายซึ่งเห็นได้ชัดว่าไม่ได้มีขนาดเท่ากันกับวัตถุประสงค์ของ บริษัท Phabricator นั้นเทียบเท่ากับ GitHub และใช้ปลั๊กอินจำนวนมากเพื่อช่วยปรับปรุงขั้นตอนการทำงานและบางครั้งก็ทำให้สนุกยิ่งขึ้น (Facebook ชอบ memes ของมัน)

สำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ Mercurial ก็เหมือนกับ Git เป็นระบบควบคุมเวอร์ชัน ช่วยให้ผู้คนจำนวนมากทำงานกับซอฟต์แวร์ชิ้นเดียวและสามารถทำการเปลี่ยนแปลงและแก้ไขได้โดยไม่ทำให้รุ่นแอปหลักที่เป็นอันตรายนั้นเรียกว่า“ สาขาหลัก” เครื่องมือเหล่านี้ช่วยป้องกันความขัดแย้งของรหัสและอนุญาตให้ทำการทดลอง เฉพาะเมื่อการเปลี่ยนแปลงได้รับการอนุมัติอย่างละเอียดในสาขาการทดสอบจะมีการมอบให้กับผู้ควบคุม

ลองนึกภาพว่าโปรแกรมเมอร์ที่ยากจนบางคนทำผิดพลาดที่ทำลายรหัสทั้งหมดและมีเพียงเวอร์ชั่นเดียว! นั่นจะเป็นวันที่เลวร้ายสำหรับทุกคน

เครื่องมืออย่าง Mercurial ทำให้สามารถใช้วิธีการต่อสู้ได้อย่างง่ายดายช่วยให้ทุกคนทำงานกับคุณสมบัติและข้อบกพร่องพร้อมกันก่อนที่จะรวมเข้าด้วยกันในหม้อขนาดใหญ่

หนึ่งครั้งต่อสัปดาห์ผู้สมัครจะถูกตัดออกจากต้นแบบและสิ่งนี้จะผ่านขั้นตอนการทดสอบ ผู้เขียนโค้ดที่ใช้เวลาตลอดทั้งสัปดาห์ในการแก้ไขข้อผิดพลาดหรือฟีเจอร์ใหม่จะมาถึงจุดนี้แล้วหวังว่างานของพวกเขาจะทำให้เกิดการอัปเดตใหม่

การแก้ไขในนาทีสุดท้ายหรือการเปลี่ยนแปลงที่เกิดขึ้นโดยสมาชิกในทีมจะต้องมีการ "เลือกเชอร์รี่" เพื่อรวมไว้ในสาขาใหม่โดยผู้ที่อยู่ในความดูแล มีรายงานว่าพวกเขารู้จักใช้สินบนในรูปแบบของช็อคโกแลตและแอลกอฮอล์ที่มอบให้ผู้มีอำนาจตัดสินใจ

ในการรวบรวม Facebook ใช้เครื่องมืออื่นที่เรียกว่า Buck เครื่องมือบิลด์เดียวนี้สามารถสร้างทุกอย่างเมื่อมาถึงการบรรจุแอพ ไม่จำเป็นต้องมีตัวเลือกอื่นเช่น Gradle หรือ Ant เมื่อกำหนดเป้าหมายตามแพลตฟอร์มที่แตกต่างกัน

จับข้อบกพร่องในเวลา

เมื่อทุกคนทำงานในสิ่งที่แตกต่างกันและมีการอัปเดตมากมายอยู่เป็นประจำจึงเป็นเรื่องสำคัญอย่างยิ่งที่ บริษัท ต่างๆต้องมั่นใจว่าซอฟต์แวร์ของตนทำงานได้ดีและไม่มีข้อบกพร่องร้ายแรง ส่วนใหญ่แล้ว Facebook มีประวัติที่ดีในการดำเนินการต่างๆ

ด้วยเหตุนี้ทีมจึงแบ่งการทดสอบซอฟต์แวร์ออกเป็นระดับที่เรียกว่า C1, C2 และ C3

C1 เป็นการทดสอบภายในและพนักงานทุกคนจะใช้เวอร์ชั่นนั้น ในช่วง C2 รุ่นจะมีจำนวนถึงร้อยละ 2 ของสาธารณะทั่วไปและ C3 เป็นการผลิต หากพบสิ่งที่ร้ายแรงอย่างแท้จริงพนักงานทุกคนจะสามารถเข้าถึงปุ่มหยุดฉุกเฉินเพื่อนำการผลิตหยุดชะงักการบด

อาสาสมัครที่ก้าวไปข้างหน้าเพื่อรักษาระดับที่ก้าวหน้าโดยใช้ชื่อ "ต้นไม้ติดดิน" (เพราะกิ่งก้านสาขา) และทำสิ่งนี้ให้อยู่เหนืองานปกติของพวกเขา

บนมือถือระดับที่คล้ายกันเรียกว่าอัลฟ่าเบต้าและแยง อัลฟ่าหมายถึงการทดสอบภายในซึ่งพนักงานทุกคนจะทำงาน กระบวนการของ บริษัท ที่ใช้ผลิตภัณฑ์ของตัวเองในลักษณะนี้เรียกว่า "dogfooding" - จาก "การกินอาหารสุนัขของคุณเอง"

ผู้ทดสอบยังมีเครื่องมือพิเศษและน่าสนใจสำหรับการรายงานบั๊กอย่างรวดเร็ว หนึ่งคือ "Rageshake" ที่เพียงแค่เขย่าอุปกรณ์ด้วยความไม่พอใจก็จะเปิดใช้งานรายงานข้อผิดพลาดเช่นเดียวกับ Google Maps

ผู้ทดสอบยังมีเครื่องมือพิเศษและน่าสนใจสำหรับการรายงานบั๊กอย่างรวดเร็ว

ระหว่างอัลฟา - ซึ่งหมายถึงการทดสอบภายในใด ๆ - Facebook ยังใช้การทดสอบอัตโนมัติเพื่อเรียกใช้แอพ ตัวอย่างเช่นชิ้นส่วนของซอฟต์แวร์ที่ได้มาเมื่อเร็ว ๆ นี้ที่เรียกว่า“ Sapienz” นั้นใช้งานได้โดยคลิกที่ปุ่มทุกปุ่มและใช้คุณลักษณะทุกอย่างในการโจมตีแบบสุ่มจนกว่าจะเกิดการชน จากนั้นบันทึกการติดตามสแต็กบันทึกการดำเนินการและรายงานกลับ

แอปรุ่นเบต้า (รุ่นที่ทดสอบโดยบุคคลทั่วไป) ต้องผ่านส่วนย่อยขนาดเล็ก (ประมาณ 2 เปอร์เซ็นต์) ของสาธารณะทั่วไป ตัวอย่างข้อมูลขนาดเล็กนี้จะได้รับการอัปเดตล่วงหน้าโดยแสดงความคิดเห็นตามจริงใน Facebook หากทุกอย่างดูดีการอัปเดตออกไปสู่ประชากรทั้งหมดและกระบวนการเริ่มต้นใหม่

เครื่องมืออันทรงพลังสำหรับระบบอัตโนมัติและการคูณแรง

เพื่อให้กระบวนการทั้งหมดนี้เป็นไปอย่างรวดเร็วและราบรื่นที่สุดเท่าที่จะเป็นไปได้ Facebook จึงใช้เครื่องมือต่าง ๆ จำนวนมาก เราได้เห็นแล้วว่า บริษัท ใช้ Phabricator และ Sapienz อย่างไร แต่มีเครื่องมือและปลั๊กอินอื่น ๆ สำหรับขั้นตอนอื่น ๆ

เครื่องมือที่ชื่อว่า Picknic รวบรวมคำขอดึงทั้งหมด (การเปลี่ยนแปลงที่พนักงานทำไว้) ในที่เดียวเพื่อการตรวจสอบที่รวดเร็วและง่ายดาย

เมื่อการทดสอบเกิดข้อผิดพลาดบอทที่เรียกว่า Nagbot จะแจ้งผู้ที่รับผิดชอบและค่อย ๆ ยั่วยุให้ทำงานจนเสร็จ การใช้ AI พื้นฐานเพื่อจัดการกระบวนการนี้ไม่เพียง แต่ช่วยให้มั่นใจว่างานจะเสร็จ แต่ยังช่วยให้ผู้จัดการหลีกเลี่ยงการเป็น“ คนเลว” ด้วยการจู้จี้อย่างต่อเนื่อง!

เมื่อการทดสอบส่งข้อผิดพลาดให้คนแก้ไขบอทที่เรียกว่า Nagbot จะแจ้งผู้ที่รับผิดชอบและค่อย ๆ นำพวกเขาไปทำงานให้เสร็จ

Crashbot เป็นบอตอีกตัวหนึ่งที่รับผิดชอบในการรายงานข้อผิดพลาดเหล่านั้นเมื่อเกิดขึ้นและเป็นที่นิยมในการวัดจาก Google Console เพราะมันรายงานแบบเรียลไทม์ Crashbot จะตั้งค่าสถานะปัญหาเมื่อปัญหาเกินกว่า“ เกณฑ์การชนที่ยอมรับได้” ซึ่งอาจเกิดจากจำนวนคนที่พบข้อผิดพลาดหรือจำนวนครั้งที่ผู้ใช้รายหนึ่งพบข้อผิดพลาดเดียวกัน ไม่ว่าจะด้วยวิธีใด Facebook จะมีเมตริกแสดงจำนวนผู้ใช้ที่น่าเศร้า

สำหรับการสื่อสารภายใน Facebook ใช้สิ่งที่เรียกว่า Workplace นี่เป็นเวอร์ชันของ Facebook ที่มีประสิทธิภาพสำหรับธุรกิจซึ่งเป็นวิธีที่มีประโยชน์ในการรับข้อมูลเกี่ยวกับสมาชิกในทีมและสื่อสารกับผู้นั่งที่อยู่ฝั่งตรงข้ามของสำนักงานได้อย่างรวดเร็ว Facebook ยังขายซอฟต์แวร์นี้ให้กับบุคคลที่สาม

แน่นอนว่า Facebook จะไม่เสียเวลาในการอัปโหลดแอปแต่ละเวอร์ชันใหม่ไปยัง Play Store, App Store, Amazon และส่วนที่เหลือทั้งหมด นอกจากนี้ยังมีแอพที่เรียกว่า Mobile Push Train

ปิดความคิด

การรักษาแอพเช่น Facebook ให้ทันสมัยเป็นเรื่องใหญ่และ บริษัท ยังคงต้องโน้มน้าวให้ผู้ใช้ติดตั้งการอัปเดตเหล่านั้น นี่เป็นเรื่องยากโดยเฉพาะในประเทศที่ไม่รับประกันการเชื่อมต่อ ในแคนาดามีผู้ใช้เพียงหนึ่งเปอร์เซ็นต์เท่านั้นที่ยังคงใช้งาน Facebook เวอร์ชั่นมากกว่าหนึ่งปี ในเอธิโอเปียจำนวนนั้นใกล้เคียงกับร้อยละ 50!

ทีมงานที่ Facebook ทำงานอย่างหนักและใช้เครื่องมือและกระบวนการมากมายเพื่อให้ทุกอย่างคล่องตัวที่สุด ในตอนท้ายของวันทีมพัฒนามีเป้าหมายที่จะปฏิบัติตามหลักการห้าข้อ:

  • รักษาความสะอาดหลัก
  • มีทีมเดียวที่มีความเชี่ยวชาญด้านวิศวกรรมการปล่อย
  • เผยแพร่ตรงเวลาบ่อยครั้ง
  • ผลิตภัณฑ์ Dogfood
  • ใจดีต่อผู้ใช้

ฟังดูง่าย แต่อย่างที่คุณเห็นมันเกี่ยวข้องกับจานหมุนจำนวนมาก แม้แต่การดูแลรักษาเครื่องมือทั้งหมดที่ใช้ในกระบวนการก็เป็นโครงการในตัวเอง!

สำหรับส่วนนี้ Facebook ยังคงรักษาบรรยากาศที่เป็นมิตรและอบอุ่นใจไว้ที่สำนักงานในลอนดอน ทีมแลกเปลี่ยน GIF และมส์ผ่านปลั๊กอินพวกเขาตั้งชื่อห้องตาม "สิ่งที่อังกฤษเกลียด" และเชกสเปียร์เล่นและพวกเขาภูมิใจในงานของพวกเขามาก ที่ Facebook พวกเขาทำงานหนักและเล่นหนักและดูเหมือนว่าส่วนใหญ่แล้วระบบจะทำงาน

ครั้งต่อไปที่มีการอัปเดตใหม่สำหรับหนึ่งในแอพขนาดใหญ่ของคุณขอให้นึกถึงงานและองค์กรทั้งหมดที่ใช้เพื่อไปที่นั่น

Bugdroid แคระโดยการเติบโตของ Androidมันทำงานให้กับผู้บริโภคด้วย - หุ่นยนต์สีเขียวที่ถ่อมตัวกลายเป็นที่ชื่นชอบโดยไม่ตั้งใจ Google เปิดแหล่งที่มาของการออกแบบดังนั้นผู้คนและ บริษัท ทั่วโลก - แม้แต่สวนสนุ...

หูฟัง MW65 มีน้ำหนักเพียง 250 กรัมและมีการผสานรวมกับ Google Aitantวันนี้ Mater & Dynamic บริษัท เครื่องเสียงระดับพรีเมี่ยมเปิดตัวหูฟังขจัดเสียงรบกวนตัวแรก: MW65 หูฟังแบบครอบหูมีคุณสมบัติผสานรวมกั...

แนะนำให้คุณ