Интервю с директора по разработване на инженерни инструменти Ашиш Кумар
Интервю с директора по разработване на инженерни инструменти Ашиш Кумар
Инструментите са въпрос на живот и смърт за Google. Ашиш Кумар е лицето, което отговаря за разработването на инструментите. Той отговаря за целия куфар от вътрешни инструменти на Google: от IDE, в която разработчиците пишат, до системите за преглед на кода, от инструменти за изграждане, контрол на изходния код и статичен анализ до общата тестова инфраструктура – той отговаря за всичко. Дори екипите на Selenium и WebDriver докладват на Ashish.
Свързахме се с Ашиш, за да научим повече за тази част от Google.
- Областта на автоматизацията в Google изглежда като нещо магическо, до голяма степен благодарение на GTAC, а вие сте човекът зад всичко това. Разкрийте завесата на мистерията за нас, какви възможности предоставя вашият инструментариум за инженерите на Google?
Ашиш: Екипът за инженерни инструменти, както се наричаме, е отговорен за създаването на 90% от инструментите, които разработчиците на Google използват ежедневно, когато пишат, създават и пускат качествени приложения. Ще покрием последните 10%, когато можем да поддържаме всички екипи с отворен код.
Google е уникален с това, че поставя голям акцент върху изграждането на мощна и мащабируема инфраструктура за разработчици. Външните хора обикновено са запознати с технологиите MapReduce и BigTable, които нашите разработчици използват през цялото време. Но нашата вътрешна инфраструктура за развитие също е голяма част от нашата работа.
— Можете ли да бъдете по-конкретни?
Ашиш: Добре, поискахте го! Комплектът инструменти включва:
—Инструменти за работа с изходния код. Те улесняват създаването на работни пространства, натискането на промени в кода и следването на указанията. Тези инструментиви помагат да видите стотици милиони редове код и предоставят удобно търсене за предотвратяване на дублиране. Те правят възможно индексирането и преработването в облака.
—Инструменти за разработка. Това са IDE добавки, които адаптират инструментите към кода на Google и ги свързват с нашите облачни услуги. Тези инструменти ви помагат бързо и ефективно да прегледате кода си, като използвате вградени сигнали по време на преглед на кода.
- Изграждане на инфраструктура. Тази система ни позволява да разпределим сглобяването на многоезичен код в десетки хиляди процесори, използвайки такива количества памет и дисково пространство, каквито дори не мога да си представя! Системата за изграждане работи както за интерактивна, така и за автоматизирана употреба. Той генерира резултати за секунди, когато същата работа иначе би отнела часове.
- Тествайте инфраструктурата. Това е масивна непрекъсната интеграция. Това означава да изпълнявате милиони тестови пакети всеки ден за всеки ангажимент на разработчици. Нашата цел е да предоставим незабавна (или почти незабавна) обратна връзка за всеки разработчик. Има и друга страна на това: трябва да мащабирате уеб тестването. За да се тестват продуктите на Google, всеки ден се стартират стотици хиляди браузърни сесии с различни комбинации от браузъри и платформи.
—Инструменти за локализация. Тяхната задача е постоянно да превеждат низовете, специално избрани от разработчиците, така че локализираните версии на нашите продукти да бъдат пуснати едновременно с английските версии.
—Метрики, графики и отчети. Става въпрос за управление на грешки във всички продукти на Google, събиране и съхраняване на показатели за разработка, тестване и пускане. Нашата работа е да предоставяме обратна връзка на екипите, за да могат те да подобрят своитеработа.
—Значи вие работите едновременно на всички фронтове. За да бъдете толкова успешни, трябва да сте добавили много иновации към работния си процес. Как успявате да поддържате баланс между новите разработки и основната работа? В крайна сметка вашият екип не е толкова голям.
Ашиш: Просто е, ние не се опитваме да поемем цялата работа. Ние сме централизиран отдел за разработване на инженерни инструменти. Екипите често разработват персонализирани инструменти, за да отговарят на техните нужди. Ако даден инструмент се използва от други екипи, ние преценяваме дали той може да бъде включен в общ набор от инструменти за всички служители на Google. Или се случва моите инженери сами да предложат нещо страхотно. Опитваме се да подкрепяме всички инициативи, но, разбира се, имаме собствени критерии за избор на инструменти, преди да ги направим централизирани. Първият критерий е, че инструментът трябва потенциално да има значително влияние върху производителността, вторият е, че трябва да бъде полезен за голям брой разработчици на Google. В края на краищата ние работим с общи инструменти, нашето поле за игра са инструменти за широка аудитория, които са полезни за мнозина. Ако инструментът е полезен само за един екип, той самият се занимава с него.
Някои проекти за инструменти не са самодостатъчни, така че е трудно да се измери тяхното въздействие, но всички те трябва да осигурят осезаем тласък на производителността на Google.
— Имаше ли идея, която ви се стори неуспешна, но доведе до успех?
Ашиш: Да! Широкомащабна непрекъсната интеграция. Изглеждаше непостижимо, защото изискваше огромна работа. Тогава имахме хиляди машини, изпълняващи непрекъснати интеграционни цикли за всеки проект. Някой предложи да се създаде инфраструктура, която да направи товапроцесът е централизиран за целия Google. Такава инфраструктура ще проверява системите за управление на кода за промени, ще съхранява в паметта огромна графика на многоезични зависимости на тези промени и след това автоматично ще изгражда и изпълнява необходимите тестове. Мнозина бяха скептични относно проекта, тъй като идеята беше твърде мащабна и нашите сървъри не можеха да издържат. Аз също бях сред скептиците: решението изискваше огромно количество ресурси. Но малко по малко нашите инженери преодоляха технически трудности, докато успеят: системата е готова и работи. Всъщност това е схемата на нашата работа с проекти: започваме с малко и при доказана практическа полза и потенциал се разгръщаме докрай.
—Има ли инструмент, който обещаваше да бъде успешен, но се провали?
Ашиш: Да отново! Дистанционно програмиране на двойки. Google има много разпределени екипи. Много екипи използват програмиране по двойки и други гъвкави методи за развитие. Често се случва да работите върху код, който е написан от човек от друг офис и ако имате въпроси, тогава има забавяне, което се отразява на производителността.
— Какъв е вашият съвет към компания, която иска да изгради непрекъснат процес на автоматизация? С какви инструменти да започна?