Facebook의 모바일 앱 개발 프로세스에 대한 내부 모습

작가: Laura McKinney
창조 날짜: 4 4 월 2021
업데이트 날짜: 1 칠월 2024
Anonim
Myanmar Movies-Mayar Pyaw Top Ta Nya-Kyaw Ye Aung, Soe Myat Nandar
동영상: Myanmar Movies-Mayar Pyaw Top Ta Nya-Kyaw Ye Aung, Soe Myat Nandar

콘텐츠


최근 런던의 Facebook 본사를 방문하여 모바일 Facebook 앱을 개발하고 유지 관리하는 프로세스에 대해 알아 보았습니다. Facebook의 WhatsApp (예 : 데스크톱 용 WhatsApp) 및 비즈니스 중심의 Workplace 앱과 같이 Facebook의 일부 앱은 여기에서 완전히 처리됩니다.

사무실은 Facebook의 이미지에서 기대할 수 있지만 소셜 네트워크 수준의 초과는 아닙니다. 이곳은 진지한 작업이 이루어지는 곳이지만, 유행적이고 기발하고 편안한 분위기가 있습니다. 직원들은 원하는 곳 어디에서나 노트북을 가지고 다니면서 포스터를 만들 수있는 인쇄실, 여러 벽에 의뢰 한 작품, 거대한 닌자 거북이 등을 만들 수 있습니다. 그 이유에 대한 답을 얻지 못했습니다.

아, 그리고 음식은 믿어지지 않는다. 나는 설날에 거기 있었고 배수 돼지 배. 좋은 시간.

그러나 나는 장식과 요리를 즐기기 위해 거기에 없었으며 모바일에서 Facebook에 대해 배우기 위해 거기에있었습니다. 보다 구체적으로, 지구상에서이 크고 야심 찬 프로젝트를 유지하는 방법은 무엇입니까? Facebook 백엔드는 20 억 명이 넘는 사람들에게 서비스를 제공하며, Android 앱에서만 매주 새로운 버전이 출시됩니다.

야심 찬 수많은 기능으로 앱을 관리하는 방법

Facebook의 자체 텔레프레즌스 시스템을 통해 Tal Kellner와 대화했습니다. Tal은 텔 아비브 엔지니어링 사무소에있는 릴리스 엔지니어링 팀을 담당하는 기술 프로그램 관리자입니다. 그녀는 엉뚱한 세부 사항을 공유하게되어 기뻤습니다.


탈과 그녀의 팀은 라이트 버전의 Facebook을 iOS에 처음으로 업로드했습니다.

내가 배운 것은 개발자의 관점과 사용자 모두에게 꽤 매력적이었습니다. 여기 내가 찾은 것이 있습니다.

Facebook의 프로젝트 관리 – 왜 스크럼> 폭포

큰 프로젝트를 볼 때는 프로젝트 관리 접근 방식을 고려해야합니다. 이러한 예를 "폭포"프로젝트 관리라고합니다. 이는 아이디어 단계에서 구현 단계, 테스트 단계, 릴리스 단계와 같이 특정 단계에서 차례로 작업하는 순차적이고 선형적인 접근 방식입니다.

Facebook과 같은 회사는 대신 "scrum"이라는 프로젝트 관리에 대한보다 현대적인 접근 방식을 선택합니다

결정적으로이 방법에서는 이전 단계가 완료 될 때까지 다음 단계를 시작하지 않습니다. 이 시스템은 특정 단계가 종종 이전 단계에 의존하는 제조에서 시작됩니다. 벽을 만들기 전에 벽돌을 소싱해야합니다!

소프트웨어와 관련하여이 접근 방식은 제한적입니다. 최악의 경우 업데이트가 롤아웃하는 데 시간이 오래 걸릴 수 있으며, 업데이트가 도착하면 더 이상 사용되지 않습니다. 듀크 뉴켐 영원히 누구?

따라서 일부 소프트웨어 회사는 민첩한 방법론 인“스크럼”이라는보다 현대적인 접근 방식을 대신 사용합니다. 이 방법은 가장 중요한 작업의 우선 순위를 정하고 모듈 식 덩어리로 나눕니다. 내부 부서와 심지어 자신의 코드 구석에서 혼자 일하는 개별 에이전트 간의 통신에 의존합니다.

이론적으로 그 결과 모든 사람이 항상 가장 시급한 작업을 수행 할 수 있고 비즈니스의 다른 모든 부분에서 자신이하는 일을 알 수있게됩니다. 각 엔지니어는 높은 수준의 소유권을 가지고 있으며 모든 사람은 자신의 작업에 대해 궁극적으로 책임을집니다. 이를 통해 회사를보다 민첩하게 만들뿐만 아니라 작업장 만족도를 높일 수 있습니다. 기계에 장부 만있는 사람은 없습니다.


조직 내 어디에서나 누구나 새로운 기능에 대한 아이디어를 제안 할 수 있습니다.

조직 내 어느 곳에서나 누구나 새로운 기능에 대한 아이디어를 제안 할 수 있다는 소식에 매우 감명 받았습니다. 때때로 이것은 심지어 자체 앱으로 발전 할 수도 있습니다! Facebook은 종종 묘사되는 소수의 사람들 (또는 한 사람)의 하향식 비전보다 훨씬 협력적인 프로젝트입니다.

이를 통해 Facebook은 매우 빠른 개발주기를 구현하여 매주 새로운 모바일 업데이트와 그 사이에 수천 개의 커밋 (제안 된 코드 변경)을 가능하게합니다. 인상적이라고 생각되면 웹 버전 (백엔드가 모바일 앱도 제공함)이 2-3 시간마다 한 번씩 업데이트됩니다.

Facebook은 일반적으로 새로운 아이디어와 신생 기업을 지원합니다. 새로운 아이디어와 비즈니스를 지원하는 LDN LAB이라는 이니셔티브도 있습니다.

균형 찾기

탈 자신의 슬라이드에서 가져온

물론, 회사가 처리 할 수있는 것에 관해서는 여전히 한계가 있습니다. 이 코드가 많으면 항상 개선의 여지가 있지만 버전이“충분히 좋은”것으로 여겨 질 때가 왔습니다.

"골든 트라이앵글"이 시작됩니다. 이 삼각형의 세 점은 특징, 품질 및 시간을 나타냅니다. 모든 회사는 여기에서 선택할 수 있습니다. 위기 시간이 오면 조금 더 오래 걸리면서 새로운 기능의 우선 순위를 정합니까? 더 많은 기능을 추가 할 수 있다면 사소한 기존 버그가 네트를 통해 미끄러지도록 허용합니까? 모든 것을 할 수 없으면 우선 순위를 정해야합니다.

Facebook의 우선 순위는 품질과 시간입니다. 업데이트가 할당 된 창 뒤로 떨어지면 기능이 취소 될 수 있습니다. 모서리가 잘 리거나 업데이트가 지연되는 대신

버전 관리 및 저글링 변경

이러한 업데이트 및 코드 변경 사항을 처리하기 위해 Facebook은 자체 수정 된 버전의 Mercurial을 사용합니다. 그것은 회사의 목적에 맞게 확장되지 않은 매우 널리 사용되는 Git 대신입니다. Phabricator는 GitHub와 동일하며 많은 플러그인을 사용하여 작업 흐름을 능률화하고 때로는 더 재미있게 만듭니다 (Facebook은 밈을 좋아합니다).

프로그래머가 아닌 사람들에게는 Git과 같은 Mercurial이 버전 관리 시스템입니다. 이를 통해 많은 사람들이 단일 소프트웨어에서 작업 할 수 있으며 "마스터 브랜치"라고하는 기본 앱 버전을 손상시키지 않으면 서 변경 및 수정을 수행 할 수 있습니다. 이러한 도구는 코드 충돌을 방지하고 실험 할 수 있도록 도와줍니다. 테스트 지점에서 변경이 완전히 승인 된 후에 만 ​​마스터에 적용됩니다.

가난한 프로그래머가 오타를 만들어 전체 코드를 깨뜨 렸고 버전이 하나만 있다고 상상해보십시오! 그것은 모두에게 나쁜 날이 될 것입니다.

Mercurial과 같은 도구를 사용하면 비교적 쉽게 스크럼 접근 방식을 구현할 수 있으므로 모든 사람이 하나의 큰 냄비에 통합하기 전에 특정 기능과 버그에 대해 동시에 작업 할 수 있습니다.

일주일에 한 번 릴리스 후보가 마스터에서 제외되고 테스트 단계를 거칩니다. 일주일 내내 버그 수정 또는 새로운 기능에 대해 작업 한 코더는이 시점에서 자신의 작업이 새로운 업데이트가되기를 바라면서 손가락을 be 것입니다.

팀 구성원의 마지막 순간 수정 또는 변경 사항은 담당자가 새 지점에 포함시키기 위해 "체리 피킹"을 요구합니다. 보고에 따르면, 그들은 의사 결정자들에게 선물 한 초콜릿과 주류 형태의 뇌물을 사용하는 것으로 알려져 있습니다.

컴파일하기 위해 Facebook은 Buck이라는 다른 도구를 사용합니다. 이 단일 빌드 도구는 앱을 패키징 할 때 무엇이든 만들 수 있습니다. 다른 플랫폼을 타겟팅 할 때 Gradle 또는 Ant와 같은 별도의 옵션이 필요하지 않습니다.

적시에 버그 잡기

모든 사람이 서로 다른 작업을하고 정기적으로 많은 업데이트를 진행함에 따라 회사에서 소프트웨어가 작동하고 심각한 버그가 없는지 확인하는 것이 매우 중요합니다. 대부분의 경우 Facebook은 작업을 계속 유지 한 기록이 꽤 있습니다.

이를 위해 팀은 소프트웨어 테스트를 C1, C2 및 C3이라는 계층으로 나눕니다.

C1은 내부 테스트이며 모든 직원이 해당 버전을 실행합니다. C2 동안 버전은 일반 대중의 2 %를 거치며 C3은 프로덕션입니다. 진지한 것이 발견되면 모든 직원이 비상 정지 버튼에 액세스하여 생산을 분쇄 중단으로 가져올 수 있습니다.

계층을 계속 진행하기 위해 자신을 제시 한 자원 봉사자들은“나무 포옹”(지점 때문에)이라는 이름으로 진행하고이를 정기적 인 작업 위에서 수행합니다.

모바일에서는 비슷한 계층을 알파, 베타 및 자극이라고합니다. 알파는 모든 직원이 실행할 내부 테스트를 의미합니다. 이런 방식으로 자체 제품을 사용하는 모든 회사의 프로세스를 "개밥을 먹는 것"에서 "개밥"이라고합니다.

테스터는 또한 버그를 신속하게보고 할 수있는 독특하고 흥미로운 도구를 보유하고 있습니다. 하나는“Rageshake”입니다. 여기서 장치를 좌절에 빠뜨리면 Google지도와 같은 버그 보고서가 활성화됩니다.

테스터는 또한 버그를 신속하게보고 할 수있는 독특하고 흥미로운 도구를 가지고 있습니다.

내부 테스트를 효과적으로 지칭하는 알파 기간 동안 Facebook은 자동 테스트를 사용하여 앱을 실행합니다. 예를 들어, 최근에 구입 한 "Sapienz"라는 소프트웨어는 기본적으로 모든 버튼을 클릭하고 충돌이 발생할 때까지 무작위 공격으로 모든 기능을 사용하여 작동합니다. 그런 다음 스택 추적을 기록하고 작업을 기록한 후 다시보고합니다.

베타 앱 (일반인이 테스트 한 버전)은 일반인의 작은 하위 섹션 (~ 2 %)을 거칩니다. 이 작은 스 니펫은 Facebook에 실제 피드백을 제공하여 미리 업데이트를받습니다. 모든 것이 좋아 보인다면, 전체 인구에 대한 업데이트가 진행되고 프로세스가 새로 시작됩니다.

자동화 및 힘 곱셈을위한 강력한 도구

이 전체 프로세스를 가능한 한 빠르고 원활하게 유지하기 위해 Facebook은 다양한 도구를 사용합니다. 우리는 이미 회사가 Phabricator와 Sapienz를 어떻게 사용하는지 보았지만 다른 단계를위한 다른 도구와 플러그인이 있습니다.

Picknic이라는 도구는 모든 풀 요청 (직원이 변경 한 사항)을 한 곳에 모아 신속하고 쉽게 검토 할 수 있도록합니다.

테스트에서 오류가 발생하면 Nagbot이라는 봇이 담당 직원에게 알리고 작업을 완수하도록 부드럽게 자극합니다. 기본적인 AI를 사용하여이 프로세스를 처리하면 작업이 완료 될뿐만 아니라 지속적으로 잔소리를 통해 관리자가 "나쁜 사람"이되는 것을 피할 수 있습니다!

테스트를 통해 누군가가 고칠 수있는 오류가 발생하면 Nagbot이라는 봇이 담당 직원에게 알리고 작업을 완수하도록 부드럽게 자극합니다.

크래시 봇은 오류 발생시이를보고하는 또 다른 봇이며 실시간으로보고한다는 점에서 Google 콘솔의 측정 항목보다 선호됩니다. 문제가 "허용 가능한 충돌 임계 값"을 초과하면 Crashbot이 문제를 표시합니다. 이는 오류가 발생한 사람의 수 또는 단일 사용자가 동일한 오류를 겪은 횟수 때문일 수 있습니다. 어느 쪽이든 Facebook에는 슬픈 사용자 수를 보여주는 메트릭이 있습니다.

내부 커뮤니케이션을 위해 Facebook은 Workplace라는 것을 사용합니다. 이것은 사실상 비즈니스 용 Facebook 버전으로, 팀 구성원에 대한 정보를 얻고 유용한 사무실의 다른쪽에있는 사람들과 신속하게 통신 할 수있는 유용한 방법을 제공합니다. Facebook은이 소프트웨어를 타사에 판매합니다.

물론 Facebook은 각각의 새로운 버전의 앱을 Play 스토어, App Store, Amazon 및 기타 모든 버전에 업로드하는 데 시간을 낭비하지 않습니다. 모바일 푸시 트레인이라는 앱도 있습니다.

결산 생각

Facebook과 같은 앱을 최신 상태로 유지하는 것은 엄청난 일이며, 회사는 여전히 사용자가 실제로 이러한 업데이트를 설치하도록 설득해야합니다. 연결이 보장되지 않는 국가에서는 특히 어렵습니다. 캐나다에서는 1 % 이상의 사용자 만이 1 년 이상 Facebook 버전을 운영하고 있습니다. 에티오피아에서는 그 수가 50 %에 가깝습니다!

Facebook 팀은 분명히 열심히 일하고 많은 도구와 프로세스를 사용하여 모든 것을 최대한 간소화합니다. 하루가 끝나면 개발 팀은 다섯 가지 규칙을 준수합니다.

  • 마스터를 깨끗하게 유지하십시오.
  • 릴리스 엔지니어링에 전문성을 갖춘 한 팀이 있습니다.
  • 정시에 출시하십시오.
  • Dogfood 제품.
  • 사용자에게 친절하십시오.

간단하게 들리지만 보시다시피 회전판이 많이 있습니다. 프로세스에 사용 된 모든 도구를 유지 관리하는 것 자체가 프로젝트입니다!

Facebook의 경우 런던 사무실에서 친근하고 가벼운 분위기를 유지합니다. 팀은 플러그인을 통해 GIF와 밈을 교환하고“영국의 증오”와 셰익스피어 말장난을 기반으로 방 이름을 지정하며 작업에 많은 자부심을 느낍니다. Facebook에서는 열심히 일하고 열심히 일하며 대부분의 경우 시스템이 작동하는 것 같습니다.

다음에 더 큰 앱 중 하나를위한 새로운 업데이트가 출시되면이를 위해 필요한 모든 작업과 조직에 대한 생각을 아끼지 마십시오.

애리조나에있는 야생 동물 세계 동물원, 수족관 및 사파리 파크로의 여성 여행은 포로 재규어가 CB 뉴스). 여자는 스마트 폰으로 셀카를 찍기 위해 동물과 더 가까워지기 위해 콘크리트 장벽 위로 올라갔습니다.의료 응답자에 따르면 그 여성은 팔이“매우 나쁜 모양”인 병원에 입원했다고한다. 그러나 그녀는 일련의 스티치로 곧 풀려났다....

데이터를 아직 백업하지 않은 경우 Zoolz Cloud Backup에 가입하는 것이 가장 좋습니다. 이 프로모션 기간 동안 일회성 결제를하면 1 년간 보호.하드 드라이브가 고장날 수 있습니다. 물리적 저장 장치가 분실되거나 도난 당할 수 있습니다. 그러나 일단 무언가를 맡기면 Zoolz 안전한 클라우드 스토리지, 기술적 묵시록 등을 막고 어떤 장치에서든 필...

꼭 봐야 해