Một cái nhìn sâu sắc về quá trình phát triển ứng dụng di động của Facebook

Tác Giả: Laura McKinney
Ngày Sáng TạO: 4 Lang L: none (month-011) 2021
CậP NhậT Ngày Tháng: 1 Tháng BảY 2024
Anonim
Một cái nhìn sâu sắc về quá trình phát triển ứng dụng di động của Facebook - ỨNg DụNg
Một cái nhìn sâu sắc về quá trình phát triển ứng dụng di động của Facebook - ỨNg DụNg

NộI Dung


Gần đây, tôi đã ghé thăm Trụ sở Facebook ở London để tìm hiểu về quá trình phát triển và duy trì ứng dụng Facebook trên thiết bị di động của mình. Nhiều thứ diễn ra ở đây hơn bạn có thể nhận ra: một số ứng dụng Facebook của Google được xử lý toàn bộ ở đây, như WhatsApp cho máy tính để bàn và ứng dụng Workplace hướng đến doanh nghiệp.

Các văn phòng chỉ là những gì bạn mong đợi từ hình ảnh Facebook Facebook, mặc dù có lẽ không hoàn toàn vượt quá mức Mạng xã hội. Đây là một nơi mà công việc nghiêm túc được thực hiện, nhưng dù sao cũng có một bầu không khí thời thượng, kỳ quặc và thoải mái. Nhân viên có thể mang máy tính xách tay đi làm bất cứ nơi nào họ chọn, có một phòng in để làm áp phích (chỉ vì), đặt tác phẩm nghệ thuật trên một số bức tường và Ninja Rùa khổng lồ - Tôi không bao giờ có câu trả lời về lý do.


Oh, và thức ăn là không thể tin được. Tôi đã ở đó trong dịp tết và tôi đã có nhiều thịt lợn bụng. Thời gian tốt.

Tuy nhiên, tôi đã ở đó để thưởng thức trang trí và ẩm thực, tôi đã ở đó để tìm hiểu về Facebook trên di động. Cụ thể hơn: làm thế nào trên Trái đất bạn thậm chí đi về việc duy trì một dự án lớn và đầy tham vọng này? Phần cuối của Facebook phục vụ hơn hai tỷ người và chỉ riêng ứng dụng Android đã thấy một phiên bản mới được phát hành mỗi tuần.

Làm thế nào để bạn quản lý một ứng dụng có số lượng tính năng đầy tham vọng như vậy

Tôi đã nói chuyện với Tal Kellner thông qua hệ thống từ xa riêng của Facebook. Tal là một người quản lý chương trình kỹ thuật, phụ trách Nhóm Kỹ thuật phát hành có trụ sở tại văn phòng kỹ thuật Tel Aviv. Cô hạnh phúc hơn khi chia sẻ những chi tiết nghiệt ngã.


Tal và nhóm của cô lần đầu tiên tải lên phiên bản Facebook Lite của họ lên iOS

Những gì tôi học được là khá hấp dẫn cả từ góc độ nhà phát triển và người dùng. Đây là những gì tôi tìm ra.

Quản lý dự án tại Facebook - Why Scrum> Waterfall

Khi xem xét bất kỳ dự án lớn nào, bạn cần xem xét phương pháp quản lý dự án của mình. Một ví dụ như vậy được gọi là quản lý dự án thác nước thác. Đây là một cách tiếp cận tuần tự và tuyến tính, trong đó bạn lần lượt làm việc trên một giai đoạn cụ thể, như đi từ ý tưởng đến thực hiện đến thử nghiệm để phát hành.

thay vào đó, các công ty như Facebook lựa chọn cách tiếp cận hiện đại hơn để quản lý dự án có tên là sc scrum

Điều quan trọng, trong phương pháp này, bạn không bắt đầu giai đoạn tiếp theo cho đến khi giai đoạn trước hoàn thành. Hệ thống bắt nguồn từ sản xuất, trong đó các giai đoạn nhất định thường dựa vào giai đoạn trước: bạn cần tìm nguồn gạch trước khi bạn có thể xây tường!

Khi nói đến phần mềm, phương pháp này là hạn chế. Trong trường hợp xấu nhất, một bản cập nhật có thể mất quá nhiều thời gian để tung ra, nó đã lỗi thời bởi thời gian nó đến. Công tước Nukem Mãi mãi là ai?

Do đó, một số công ty phần mềm lựa chọn thay thế cho một cách tiếp cận hiện đại hơn có tên là scrum, là một phương pháp nhanh. Phương pháp này ưu tiên công việc quan trọng nhất và chia nó thành các phần mô-đun. Nó dựa vào giao tiếp giữa các bộ phận nội bộ và thậm chí các tác nhân riêng lẻ làm việc một mình trên các góc mã riêng của họ.

Về lý thuyết, kết quả là tất cả mọi người đều có thể làm việc với những gì mà bức xúc nhất đối với họ mọi lúc, và mọi bộ phận khác của doanh nghiệp đều biết họ đang làm gì. Có một mức độ sở hữu cao cho mỗi kỹ sư và mọi người cuối cùng phải chịu trách nhiệm về công việc của mình. Điều này không chỉ làm cho công ty trở nên nhanh nhẹn hơn mà còn hy vọng làm tăng sự hài lòng tại nơi làm việc. Không ai chỉ là một cái răng cưa trong máy.

bất cứ ai từ bất cứ nơi nào trong tổ chức đều có thể đề xuất ý tưởng cho một tính năng mới

Tôi đã rất ấn tượng khi biết rằng bất kỳ ai từ bất kỳ nơi nào trong tổ chức đều có thể đề xuất ý tưởng cho một tính năng mới, và sau đó sẽ làm việc với điều đó nếu được tiếp tục. Đôi khi điều này thậm chí có thể phát triển thành ứng dụng riêng của nó! Facebook là một dự án hợp tác nhiều hơn là tầm nhìn thực thi từ trên xuống của một vài người (hoặc một người) mà nó thường được miêu tả là.

Điều này cho phép Facebook thực hiện chu kỳ phát triển cực kỳ nhanh chóng, cho phép cập nhật di động mới mỗi tuần và hàng ngàn cam kết (thay đổi mã được đề xuất) giữa thời điểm đó. Nếu bạn nghĩ rằng, rất ấn tượng, phiên bản web (phần phụ trợ cũng phục vụ ứng dụng di động) sẽ cập nhật hai đến ba giờ một lần!

Facebook nói chung rất ủng hộ những ý tưởng và khởi nghiệp mới. Nó thậm chí còn có một sáng kiến ​​gọi là LDN LAB dành cho việc hỗ trợ các ý tưởng và doanh nghiệp mới.

Tìm sự cân bằng

Lấy từ các slide của Tal Tal

Tất nhiên, vẫn luôn luôn có một giới hạn khi nói đến những gì một công ty có thể xử lý. Với nhiều mã này, luôn có chỗ để cải tiến, nhưng phải đến lúc phiên bản được coi là đủ tốt.

Đó là nơi mà tam giác vàng hoàng kim xông vào chơi. Tam giác này ba điểm đại diện cho các tính năng, chất lượng và thời gian. Mỗi công ty có một sự lựa chọn để thực hiện ở đây: khi đến thời điểm khủng hoảng, bạn có ưu tiên các tính năng mới với chi phí mất nhiều thời gian hơn không? Bạn có cho phép một lỗi nhỏ hiện có lọt qua mạng nếu điều đó có nghĩa là bạn có thể thêm nhiều tính năng hơn không? Khi bạn có thể làm tất cả mọi thứ, bạn buộc phải ưu tiên.

Tại Facebook, các ưu tiên là chất lượng và thời gian. Nếu một bản cập nhật nằm phía sau cửa sổ được phân bổ, một tính năng có thể sẽ bị đẩy lùi; thay vì một góc bị cắt hoặc cập nhật bị trì hoãn.

Kiểm soát phiên bản và thay đổi tung hứng

Để xử lý các cập nhật này và thay đổi mã, Facebook sử dụng phiên bản Mercurial được sửa đổi của riêng mình. Đó là thay vì Git được sử dụng rất rộng rãi, rõ ràng là quy mô không phù hợp với mục đích của công ty. Photypeator tương đương với GitHub và sử dụng rất nhiều plugin để giúp hợp lý hóa quy trình làm việc và đôi khi chỉ để làm mọi thứ vui hơn một chút (rõ ràng Facebook thích memes của nó).

Đối với những người không lập trình ngoài kia, Mercurial, như Git, là một hệ thống kiểm soát phiên bản. Nó cho phép số lượng lớn người làm việc trên một phần mềm duy nhất và thực hiện các thay đổi và sửa lỗi mà không gây nguy hiểm cho phiên bản ứng dụng chính, được gọi là nhánh chính của chủ đề. Các công cụ này giúp ngăn ngừa xung đột mã và cho phép thử nghiệm. Chỉ khi một thay đổi đã được phê duyệt kỹ lưỡng trên một nhánh thử nghiệm thì nó sẽ được cam kết với chủ.

Hãy tưởng tượng nếu một số lập trình viên nghèo đã tạo ra một lỗi đánh máy phá vỡ toàn bộ mã và chỉ có một phiên bản! Đó sẽ là một ngày tồi tệ cho tất cả mọi người.

Các công cụ như Mercurial cho phép thực hiện phương pháp scrum một cách dễ dàng, cho phép mọi người làm việc trên các tính năng và lỗi cụ thể đồng thời trước khi hợp nhất tất cả lại với nhau trong một nồi lớn.

Mỗi tuần một lần, một ứng cử viên phát hành sẽ bị cắt khỏi chủ và điều này sau đó sẽ trải qua giai đoạn thử nghiệm. Các lập trình viên đã dành cả tuần để sửa lỗi hoặc các tính năng mới vào thời điểm này sẽ vượt qua các ngón tay của họ với hy vọng công việc của họ đưa nó vào bản cập nhật mới.

Bất kỳ bản sửa lỗi hoặc thay đổi nào vào phút cuối được thực hiện bởi các thành viên trong nhóm sẽ yêu cầu trở thành người anh đào được chọn để đưa vào chi nhánh mới bởi những người phụ trách. Được biết, họ đã được biết là sử dụng tiền hối lộ dưới dạng sôcôla và rượu tặng cho những người ra quyết định.

Để biên dịch, Facebook sử dụng một công cụ khác có tên Buck. Công cụ xây dựng duy nhất này có thể xây dựng bất cứ điều gì khi đóng gói ứng dụng. Không có nhu cầu cho các tùy chọn riêng biệt như Gradle hoặc Ant khi nhắm mục tiêu các nền tảng khác nhau.

Bắt bọ kịp thời

Với tất cả mọi người làm việc trên những thứ khác nhau và rất nhiều bản cập nhật được phát hành một cách thường xuyên, điều rất quan trọng là các công ty phải đảm bảo phần mềm của họ hoạt động và không có lỗi nghiêm trọng nào. Đối với hầu hết các phần, Facebook có một hồ sơ theo dõi khá tốt về việc giữ cho mọi thứ hoạt động.

Cuối cùng, nhóm chia thử nghiệm phần mềm thành các tầng, được gọi là C1, C2 và C3.

C1 là thử nghiệm nội bộ và tất cả nhân viên sẽ chạy phiên bản đó. Trong thời gian C2, phiên bản chạy qua 2 phần trăm công chúng nói chung và C3 là sản xuất. Nếu một cái gì đó thực sự nghiêm trọng được tìm thấy, mọi nhân viên sẽ có thể truy cập vào nút dừng khẩn cấp để khiến việc sản xuất bị đình trệ.

Các tình nguyện viên luôn cố gắng để giữ cho các tầng tiến lên với cái tên là cây huggers cây (vì các nhánh), và làm điều này trên đầu công việc thường xuyên của họ.

Trên thiết bị di động, các tầng tương tự được gọi là alpha, beta và prod. Alpha có nghĩa là một bài kiểm tra nội bộ, mà tất cả nhân viên sẽ chạy. Quá trình của bất kỳ công ty nào sử dụng các sản phẩm của riêng mình theo cách này được gọi là ăn thịt chó ăn thịt - từ ăn thức ăn cho chó của riêng bạn.

Người kiểm tra cũng có một số công cụ độc đáo và thú vị để họ nhanh chóng báo cáo lỗi. Một trong số đó là Rageshake, một nơi đơn giản là lắc thiết bị trong sự thất vọng sẽ kích hoạt báo cáo lỗi, như với Google Maps.

Người kiểm tra cũng có một số công cụ độc đáo và thú vị để họ nhanh chóng báo cáo lỗi

Trong giai đoạn alpha - có hiệu quả đề cập đến bất kỳ thử nghiệm nội bộ nào - Facebook cũng sử dụng thử nghiệm tự động để chạy ứng dụng. Ví dụ, một phần mềm được mua gần đây có tên là Sap Sapienz về cơ bản hoạt động bằng cách nhấp vào từng nút và sử dụng mọi tính năng trong một cuộc tấn công ngẫu nhiên cho đến khi nó gây ra sự cố. Sau đó, nó ghi lại dấu vết ngăn xếp, ghi lại hành động và báo cáo lại.

Ứng dụng beta (phiên bản được thử nghiệm bởi công chúng) trải qua một tiểu mục nhỏ (~ 2 phần trăm) của công chúng. Đoạn mã nhỏ này sẽ nhận được bản cập nhật trước thời hạn, cung cấp cho Facebook phản hồi trong thế giới thực. Nếu mọi thứ có vẻ tốt, bản cập nhật sẽ được đưa ra cho toàn bộ người dân và quá trình bắt đầu lại.

Công cụ mạnh mẽ để tự động hóa và nhân lực

Để giữ cho toàn bộ quá trình này nhanh chóng và trơn tru nhất có thể, Facebook sử dụng một số lượng lớn các công cụ khác nhau. Chúng tôi đã thấy cách công ty sử dụng Photypeator và Sapienz, nhưng nó có các công cụ và plugin khác cho các giai đoạn khác.

Một công cụ có tên Picknic tập hợp tất cả các yêu cầu kéo (những thay đổi mà nhân viên đã thực hiện) ở một nơi để xem xét nhanh chóng và dễ dàng.

Khi kiểm tra đưa ra một lỗi, một bot có tên Nagbot thông báo cho những người có trách nhiệm và nhẹ nhàng thúc đẩy họ hoàn thành công việc. Sử dụng một AI thô sơ để xử lý quá trình này không chỉ đảm bảo công việc được hoàn thành, mà còn cho phép người quản lý tránh bị kẻ xấu của Hồi giáo bằng cách liên tục cằn nhằn!

Khi kiểm tra đưa ra lỗi để ai đó sửa, một bot có tên Nagbot thông báo cho những người có trách nhiệm và nhẹ nhàng thúc đẩy họ hoàn thành công việc

Crashbot là một bot khác chịu trách nhiệm báo cáo các lỗi đó khi chúng xảy ra và thích hợp hơn với các số liệu từ Google Console, trong đó nó báo cáo theo thời gian thực. Crashbot sẽ gắn cờ một vấn đề một khi các sự cố vượt quá ngưỡng sự cố chấp nhận được. Đây có thể là do số lượng người gặp phải lỗi hoặc số lần một người dùng gặp phải lỗi tương tự. Dù bằng cách nào, Facebook cũng sẽ có một số liệu cho thấy số lượng người dùng buồn.

Để liên lạc nội bộ, Facebook sử dụng một thứ gọi là Nơi làm việc. Đây thực sự là một phiên bản Facebook dành cho các doanh nghiệp, cung cấp một cách hữu ích để có được thông tin về các thành viên của nhóm và liên lạc nhanh chóng với những người ngồi ở phía bên kia của văn phòng ngổn ngang. Facebook cũng bán phần mềm này cho các bên thứ ba.

Tất nhiên, Facebook sẽ không lãng phí thời gian để tải từng phiên bản ứng dụng mới của mình lên Play Store, App Store, Amazon và tất cả các phần còn lại. Ngoài ra còn có một ứng dụng cho cái gọi là Mobile Push Train.

Bớt tư tưởng

Giữ cho một ứng dụng như Facebook được cập nhật là một công việc to lớn và công ty vẫn cần thuyết phục người dùng thực sự cài đặt các bản cập nhật đó. Điều này đặc biệt khó khăn ở các quốc gia nơi kết nối không được đảm bảo. Tại Canada, chỉ một phần trăm người dùng vẫn chạy phiên bản Facebook hơn một năm tuổi. Ở Ethiopia, con số đó gần hơn tới 50%!

Nhóm tại Facebook rõ ràng làm việc rất chăm chỉ và sử dụng rất nhiều công cụ và quy trình để giữ mọi thứ hợp lý nhất có thể. Vào cuối ngày, nhóm phát triển nhằm tuân thủ năm nguyên tắc cầm quyền:

  • Giữ cho chủ sạch sẽ.
  • Có một đội ngũ có chuyên môn về kỹ thuật phát hành.
  • Phát hành đúng giờ thường xuyên.
  • Sản phẩm thức ăn cho chó.
  • Hãy tử tế với người dùng.

Nghe có vẻ đơn giản, nhưng như bạn có thể thấy nó liên quan đến rất nhiều đĩa quay. Ngay cả việc duy trì tất cả các công cụ được sử dụng trong quá trình là một dự án!

Về phần mình, Facebook duy trì bầu không khí thân thiện và nhẹ nhàng tại văn phòng ở London. Nhóm nghiên cứu trao đổi GIF và meme thông qua các plugin, họ đặt tên cho các phòng dựa trên những thứ mà người Anh ghét ghét và chơi chữ Shakespearean, và họ rất tự hào về công việc của mình. Tại Facebook, họ làm việc chăm chỉ và chơi hết mình và dường như phần lớn hệ thống hoạt động.

Lần tới, một bản cập nhật mới được tung ra cho một trong những ứng dụng lớn hơn của bạn, hãy dành một suy nghĩ cho tất cả các công việc và tổ chức cần có để có được nó ở đó.

Acer vừa công bố hai chiếc Chromebook 12 inch đầu tiên của mình: Chromebook 512 và Chromebook pin 512.Bắt đầu với Chromebook 512, thiết bị có màn hình IP 12 inch với...

Mua laptop chơi game giá rẻ năm 2019

Lewis Jackson

Tháng BảY 2024

Máy tính xách tay chơi game tuyệt vời don don phải đắt tiền. Cho dù bạn có ngân ách eo hẹp hay bạn chỉ có thể chịu đựng hàng ngàn đô la, có ...

ĐọC Sách NhiềU NhấT