Imgur начал свою деятельность в 2009 году как хостинг изображений, и за эти годы мы стали популярными хостами изображений для многих сайтов в Интернете. Мы сделали это так хорошо, что нас сравнили с электричеством Интернета.

Электричество - это то, что нужно каждому для комфортного проживания в своем доме. Чаще всего мы принимаем это как должное и используем, не задумываясь. Когда люди видят в Интернете новейшие вирусные гифки и мемы, они используют Imgur и даже не думают об этом. - Аманда Додж

Но за несколько коротких лет Imgur превратился из хоста изображений. Сегодня Imgur - это сообщество авторов изображений - место, куда люди приходят, чтобы открывать, делиться и наслаждаться потрясающими изображениями в Интернете. Это сообщество вокруг изображений - это то место, где представлены наши самые интересные инженерные задачи. Давайте посмотрим на некоторые проблемы, которые мы пытаемся решить.

Масштаб

Imgur работает в огромных масштабах. Мы являемся одним из самых посещаемых веб-сайтов в мире, с 150 миллионами активных пользователей в месяц, которые генерируют более 60 миллиардов просмотров изображений каждый месяц. Наш код должен быть максимально эффективным, чтобы сократить время загрузки и расходы на сервер. Мы хотим сделать Imgur пуленепробиваемым. Мы хотим, чтобы он был отказоустойчивым и масштабируемым.

Мы делаем это с помощью множества инициатив, в том числе: проектирование с учетом сбоев, создание избыточности и восстановление после сбоев, а также постепенное снижение производительности в форме «большого красного переключателя».

Данные и аналитика

Лучший способ улучшить нашу платформу - это понять ее. Мы уже регистрируем множество показателей и каждый день добавляем новые. Мы только прикоснулись к тому, что мы можем узнать из этих данных и как они могут изменить наши решения о продуктах. Мы проводим A / B-тесты, чтобы экспериментировать и проверять новые продукты. В дальнейшем мы хотим иметь возможность ответить на любой вопрос, который может у нас возникнуть, с помощью интуиции и данных.

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

Рекомендации

Мы всегда отлично отображали на Imgur лучшее из лучшего контента. Мы разработали алгоритмы, определяющие, какое изображение будет привлекательным в мире. У нас есть оценка виральности для того, какие изображения популярны в эту самую секунду.

Однако как определить, какие изображения будут интересны одному конкретному человеку? Как сбалансировать предпочтение новизны и содержания? Как мы показываем различные сообщения, которые интересны пользователю, не слишком сужая объем контента? В конце концов, есть предел тому, сколько картинок кошек кто-то может просмотреть подряд… или есть? И, наконец, как получить все данные, чтобы знать об этом?

Мобильный

Мы думаем, что у Imgur очень большой потенциал для мобильных устройств. Листать галерею в автобусе - идеальный вариант использования. Изображения можно использовать так быстро, что они идеально подходят для работы в дороге.

Мы постоянно дорабатываем наши приложения для iPhone и Android. Мы стремимся к тому, чтобы они предоставляли цельный и красивый интерфейс для обработки изображений. Мобильные устройства ставят перед нами сложные задачи: предварительная загрузка, чтобы не было долгого ожидания, обработка сжатия изображений разумным способом для экономии полосы пропускания, плавное переключение при отказе, когда устройство отключено, быстрая и гладкая анимация, отображение произвольно вложенных комментариев эффективным способом , и т.д.

Создание контента

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

Технологии

У нас потрясающий стек, и он постоянно улучшается. Мы используем php в большинстве наших веб-приложений. Мы используем несколько хранилищ данных: MySQL, HBase, Redis, elasticsearch и memcached. Мы пишем модульный javascript на стороне клиента, используя React. Nginx - это наш обратный прокси, а HaProxy поддерживает наши балансировщики нагрузки.

Мы начинаем использовать Go для многих наших внутренних сервисов: Incus, наша служба обмена сообщениями в реальном времени, поддерживает все подключения к веб-сокетам и мобильные push-уведомления для нашей платформы. Нижняя челюсть обеспечивает подмножество нашей генерации миниатюр. У нас есть сервис Go, который конвертирует гифки в различные видеоформаты.

Мы используем hadoop, storm, flume и kafka для нашего аналитического конвейера и обработки в реальном времени.

Все это построено на AWS.

Команда

В нашей команде инженеров работают умные и скромные люди; люди, которые вместе учатся, поддерживают друг друга и вместе веселятся.

Если вам интересно присоединиться к нашей команде и помочь нам решить эти проблемы, напишите мне на [email protected] или оформляйте заказ http://imgur.com/jobs