Техническая сторона Медузы

Эту статью написал технический директор «Медузы» Самат Галимов.

Общая архитектура проекта

Схема работы с материалом и с фотографиями

На схеме не указаны внутренние сервисы «Медузы»:

  • Фёдор, кеширует твиты (у твиттера очень жёсткое ограничение на количество запросов);
  • Oh-my-push, посылает пуши мобильным клиентам через Parse;
  • Скриншотилка, сохраняет скриншоты всех источников;
  • Stats-collector, принимает статистику чтений;
  • Twitter-watch, отображает твиты на карте;
  • El-mariachi, интерфейс к elasticsearch для поиска, который мы скоро запустим;
  • ELK stack, для логов и аналитики по ним;
  • Riemann, для мониторинга.

Почти все сервисы написаны Борисом на ruby. Stats-collector и скриншотилка написаны Димой на go и python, соответственно. Twitter-watch спрограммировал Ярослав на nodejs.

Боря и Ярослав мечтают перевести часть production-инфраструктуры на haskell. Мы ещё не решили, какую именно.

На схеме не видно интеграции с отличным сервисом Waterfall, который помогает нам делать онлайн-трансляции.

Хостимся мы в Amazon Web Services, Microsoft Azure, Digital Ocean и в Hetzner. В данный момент читательский трафик распределен так:

голубой — Microsoft Azure, коричневый — Amazon Web Services

Команда

  • Боря, программирует все приложения на ruby;
  • Ярослав, программирует фронтенд бэкенда (так мы зовем Монитор, то есть админку);
  • Антон, программирует веб-сайт и nodejs приложение, отдающее API;
  • Артемий, программирует Android-приложение;
  • Максим, программирует iOS-приложение;
  • Дима, отвечает за безопасность и отказоусточивость;
  • Самат — я, общаюсь с редакцией и разруливаю запутанные ситуации.

Рабочий процесс и инструменты

  1. Продакт (издатель) приносит идеи.
  2. Процентов 10 я сразу заворачиваю, большую часть забираю обсудить с парнями, некоторые сразу оцениваю и ставлю в план.
  3. Дизайнеры рисуют макеты, разработка и продакт их обсуждают. Процесс документируется в Basecamp. Обычно бывает пара циклов рисования до того, как начнем программировать.
Дизайны рисуются в Sketch и хранятся в Dropbox

Команда распределена в пространстве: Москва и область, Рига, Тольятти, Нижний Новгород. Выручает Skype.

Задачи и план хранятся в Trello. В мобильной разработке план понедельный.

кстати, Артемий придумал крутой способ выделять в Trello недели

В конце каждой недели мы собираем внутренний билд, который публикуем в Google Play Alpha releases и Apple iTunes Connect Testflight. Публичный релиз андроид-приложения происходит по понедельникам, в айосе — как только пройдет апрув (в ту же неделю уходит следующий билд).

Общение разработки, дизайнеров и редакции происходит в Slack.

У меня скрыты каналы, в которых нет новых сообщений. Красными отмечены сообщения, адресованные лично мне

Slack с редакцией общий, но у нас есть свои каналы dev, dev-random, dev-website, dev-backend, dev-mobile и т. п.

Про то, как мы используем Slack в «Медузе», наш издатель напишет отдельную статью.

В специальные каналы приходят уведомления от некоторых сервисов: креши от BugSnag, коммиты из Github.

отличный сервис Bugsnag для сбора крешей

Почта — Gmail for Business. Документацию мы храним в расшаренной папке Google Docs.

папка доступна всем, у кого есть почта @meduza.io

Схемы рисуем в draw.io — лучшем инструменте подобного рода. Он умеет хранить файлы в Google Docs.

очень радует их бизнес модель; то, что они обещают оставаться бесплатными

Разработка синхронизируется c 12 до 6. Кто-то начинает работать раньше, кто-то сидит до 10 вечера.

Проект запускала компания Cyber War. Они спроектировали архитектуру, набрали команду и выпустили первую версию. Дальше Cyber War нашли меня и передали команду разработки в штат Медузы. В открытом плавании мы уже месяц.