Chris, Former Senior Database Engineer в [Etsy.com] (https://www.etsy.com/) - маркетплейс хендмейд изделий и также, Chris, приглашенный преподаватель в University of California, Berkley

https://www.linkedin.com/in/chris-bohn-091a8b1b/

«Вы можете сделать запрос, который займет 2 часа или 2 минуты, если
знать, как его оптимизировать»

Какие обязанности у Database Engineer из вашего опыта?
SQL - это декларативный язык. Существует несколько способов задать запрос о том, что хотите получить. Некоторые способы лучше других. Весь трюк построения карьеры с SQL в том, чтобы обладать знаниями, которые можно обрести только с годами. Например, вы можете сделать запрос, который займет 2 часа или 2 минуты, если знать, как его оптимизировать. Потому вам определенно надо разбираться в том, как работают запросы в используемых базах данных. Существуют разные типы баз данных, которые иногда даже работают противоположно. И это действительно сложно, когда вы работаете в среде, где необходимо использовать несколько типов одновременно. Я работаю в Etsy и наши базы данных в продакшине являются реляционными. Мы используем MySQL во всех транзакциях, во всех листингах. Это потому, что когда пользователь приложения задает запрос: «Найди мне этот объект», ответ на него можно получить очень быстро. Но если, например, нужно решить такую задачу: какой выбор любимого цвета за прошлую неделю у людей, живущих в Украине. Это уже совсем другая история. Если вы попробуете решить эту задачу, используя MySQL, мы пробудем здесь в ожидании ответа следующие десять лет. Если при этом обратиться с такой задачей к аналитической базе данных (Analytic DB), вы получите ответ через десять секунд. Поэтому мы должны извлечь данные из нашей базы данных на продакшне и перенести их в ADB. В нашей команде есть специалисты, которые разработали ETL (Extract, Transform, Load — извлечение, преобразование, загрузка - примечание редактора) инструменты для данного процесса

Какую Analytic DB вы используете?
Вероятно, наиболее известной из коммерческих будет Vertica. Vertica не зависит от инфраструктуры, поддерживает развертывание на нескольких облачных платформах (AWS, Google, Azure).

Пишите ли вы по-прежнему код?
Да, конечно. Я пишу на Python, а также на SQL для баз данных.

Что бы вы выбрали: SQL или NoSQL?
Основное, в чем необходимо разобраться — это когда использовать какую. NoSQL — нереляционная база данных на основе пар «ключ-значение», она хранит объекты. Это действительно хорошо для так называемого хранилища DAM (Digital Assets Management). Вам нужна запись, и вы можете быстро найти эту запись. Однако, на самом деле, эта база данных не является безопасной транзакцией. Ни одна транзакция не гарантирует, что через нее пройдет все. Худший случай, если транзакция будет успешна только на половину. Когда половина пути пройдена успешно, а вторая половина не состоялась, а вы об этом даже не догадываетесь. Это худшее из того, что может произойти. Давайте представим, что мы используем PayPal, и я отправляю вам деньги. И PayPal списывает деньги с моего счета, но не переводит на ваш. Это полный провал. Должна быть транзакция актива. Поэтому мы используем NoSQL в базах данных нет бизнес логики.

Какой технологический стек вы используете для бекенда?
Это PHP, также бы написали собственный ORM (Object Relation Manager).

«У нас хранится несколько бекапов каждой базы данных»

Вы когда-нибудь теряли бекапы или пользовательские данные?
Нет, мы сделали действительно хорошую работу. Но кое-где мы все же облажались. Суть в том, что существуют пользовательские данные, которые больше не используются. Эти данные никогда не удаляются, потому что слишком много работы для удаления всего этого, они просто хранятся. И проблема как раз в том, что когда случается ошибка в коде приложения, выдаются старые данные. Таким образом у нас нет ситуации (как при случае удаления данных), что может быть выдана ошибка с уведомлением: «пользовательские данные не найдены», чтобы уведомить нас о проблеме. Это пока наша недоработка. Тем не менее мы никогда не теряли данные, слишком уж много у нас дублирования. У нас хранится несколько бекапов каждой базы данных.

«Первая попытка была неудачной, поэтому мы проделали работу над ошибками и повторили попытку через неделю»

Как долго длится прогресс миграции к облачным решениям в Etsy?
Это была весна прошлого года, когда мы приняли решение. Затем мы провели более трех месяцев, рассматривая разные решения. Таким образом, мы наконец остановились на Google Cloud Platform. После чего следовало длительное планирование. И 19 августа мы решили, что готовы к переходу. Ночью сайт был отключен на четыре часа. Первая попытка была неудачной, поэтому мы проделали работу над ошибками и повторили попытку через неделю. На тот раз все сработало.

Что вы думаете о машинном обучении?
Думаю, что это интересно, но не убежден на данный момент, а не просто ли это очередной хайп. Имею в виду, что да, существуют определенные модель и методы, но существуют другие, которые также достаточно хороши в том, чтобы предоставлять релевантные прогнозы. Говорю это по той причине, что у нас в Etsy есть один из крупнейших департаментов, который работает с поисковым движком. К примеру, у Amazon есть миллионы или даже миллиарды продуктов, большинство из которых имеет позицию товарной номенклатуры. Когда вы ищете холодильник, найти его проще простого. А вот в Etsy все эти товары ручной работы, и мы уже говорим о мощности множества объектов и связи между ними. У товаров Etsy высокая мощность связи, выше, чем у Amazon, поскольку там много холодильников, а не уникальные позиции. Потому наша задача — убедиться в том, что корректный товар отображается потенциальному покупателю. Мы это осуществляем через поисковик, и сколько же работы было проделано с ним! К тому же, наши специалисты пользовались машинным обучением. И если спросите этих ребят, которые работают с машинным обучением уже не менее двух-трех лет, они до сих пор не будут удовлетворены его результатами.

«Не дайте себя увлечь технологиями вчерашнего дня»

Если бы вы могли вернуться в прошлое, какой совет вы бы дали себе 23-летнему?
Я бы сказал: «Наслаждайся своей жизнью!». Но, полагаю, то, что вас действительно интересует — профессиональный совет. Что ж, в том возрасте я как раз учился в Беркли в Калифорнии. Советом наверняка было бы изучать лучше Fortran, COBOL, и конечно же C. Если представить, что мне 23 сегодня, я бы сказал: «Не дайте себя увлечь технологиями вчерашнего дня. Держите фокус на том, что актуальнее. Берите уроки только у передовых профессоров, которые обучают новейшим технологиям. Не оглядывайтесь назад, продолжайте двигаться только вперед».

Почему стоит посещать конференции и митапы?
Посещение конференций и митапов является частью вашего профессионального развития. Если вы хотите развиваться профессионально и быть лучшим в избранной сфере, это действительно необходимо. Также там нетворкинг, а если вы еще и спикер, таким образом можете строить и продвигать личный бренд.

«Особое удовольствие приносят доклады, которые отображают то, что прохожу в данное время»

Как вы готовитесь к публичному выступлению? Как выбираете тему доклада?
Вы знаете, я обнаружил, что особое удовольствие приносят доклады, которые отображают то, что прохожу в данное время. Как уже говорил, не люблю оглядываться назад. Когда выступаю, рассказываю предысторию и обстановку в компании, потому как хочу, чтобы люди знали, почему мы пришли к тем или иным решениям. И могу заверить, что каждый может выступать на сцене, если знать, как это делать. Это не так сложно, как может казаться. Отчасти, похоже на актеров, играющих свою роль. Важно сохранять публику вовлеченной и располагать к тому, чтобы задавали вопросы. У меня есть «секретное оружие» — призы участникам, которые отвечают на мои вопросы.

Что вы спрашиваете у кандидатов во время интервью в Etsy?
О, этот процесс стал ужасен. Неделями длится процесс найма сотрудников. Раньше все было гораздо проще. Вспомнилась занимательная история моего найма. Являюсь единственным сотрудником, которого приняли на работу без собеседования и даже без того, чтобы увидеть меня. Случилось это потому, что у компании была проблема, которую не могли решить на протяжение трех месяцев. Они знали кого-то, этот кто-то знал меня, и таким образом мне поступил звонок. Выслушав проблему, дал бесплатный совет по ее решению. Спустя пару часов, мне позвонил CEO и сказал, что они хотели бы, чтобы я стал сотрудником компании. Так и получил предложение о работе. Конечно же, сейчас процесс приема на работу кардинально отличается.

«Правда в том, что иногда людям платят за принятие решений, и вовсе не обязательно, чтобы это были верные решения»

Что в разработке сегодня для Вас является самым большим вызовом?
Streaming analytics in DB(аналитика в реальном времени - примечание редактора) является для нас следующим большим вызовом. Мы работаем с Kafka для передачи данных. Но заставить все работать хорошо и эффективно может быть еще той задачкой. Также внедрение новых технологий для баз данных в своей организации может быть делом не из простых. Всегда сложно пробираться через бюрократию. Правда в том, что иногда людям платят за принятие решений, и вовсе не обязательно, чтобы это были верные решения. Но люди, которые умеют принимать решения, необходимы. Потому что большинство из нас часто оказываются в состоянии аналитического паралича, когда сложно принять решение.