2pdf.com — платформа для работы с PDF-файлами

клиент
Вебпрактик
Отрасль
Технологии
Услуги
Создание и запуск сервиса на международный рынок
Технологии
Node.js, NestJS, RabbitMQ, SSR, React, SPA, Microservice, CodeceptJS, Kubernetes, Helm

2PDF

Это собственный сервис компании для работы с PDF, который позволяет делать все необходимые операции с PDF-файлами в несколько кликов. Запустились в марте 2020 года. На момент запуска сервис позволяет конвертировать PDF в 65 форматов и переводить из 94 различных форматов.

Цели

Наша главная цель — сделать лучшую мировую платформу для работы с PDF-файлами.
Запустить 21 микросервис для работы с PDF-файлами с ежемесячным охватом минимум в 10 000 000 человек.

Задачи

  • 1.Создать высоконагруженный сервис, который выдержит больше 10 000 000 посетителей в месяц.
  • 2.Выйти в ТОП-10 поисковых запросов в самой конкурентной тематике, чтобы получить трафик, который распределяется между лидерами на первой странице в поисковой выдаче.
  • 3.Создать для различных взаимодействий пользователей с PDF-файлами в одном месте более 20 микросервисов, которые не предоставляют другие сервисы и приложения.

Сложности

01. Сложный технологический стек

02. Автоматическое тестирование

03. Высокая нагрузка

Топовые сайты в этой категории имеют 35 000 000 посещений в месяц. Создание такого сервиса — достаточно сложное технологическое решение, где нужно сразу закладывать архитектурные решения. Нам понадобились десятки серверов — для frontend одни, для backend другие, для принятия файлов — третьи. А еще нельзя обойтись без сервера приложения, которое производит преобразование в файлах.

04. Суперконкурентная тематика в SEO

Например, фразу «word to pdf» пользователи вводят в поисковую строку более 400 000 раз в месяц. По этой фразе выдается несколько тысяч специально оптимизированных страниц, но практически весь трафик получают только первые 10. Наша задача — попасть в эту десятку по сотням высокочастотных и супер конкурентным запросам.

05. Сложности с локальной разработкой

С внедрением Kubernetes мы начали ставить Minikube на машины разработчикам и поняли, что упираемся в память рабочих машин. Тогда нам пришлось докупить более 16 гигов на каждую рабочую машину. Поднимать тестовые стеки в облаке было более дорогим решением, а решение через альтернативную конфигурацию с помощью docker-compose давал нам проблемы разности окружений. Но мы хотели максимально близкую к рабочей площадке копию и в итоге перешли на более легковесный аналог Minikube на локальных машинах и реализовали механизм создания отдельных площадок под каждую фичу в облаке на прерываемых машинах.
Топовые сайты в этой категории имеют 35 000 000 посещений в месяц. Создание такого сервиса — достаточно сложное технологическое решение, где нужно сразу закладывать архитектурные решения. Нам понадобились десятки серверов — для фронтенда одни, для бэкенда другие, для принятия файлов — третьи. А еще нельзя обойтись без сервера приложения, которое производит преобразование в файлах.
Например, фразу «word to pdf» пользователи вводят в поисковую строку более 400 000 раз в месяц. По этой фразе выдается несколько тысяч специально оптимизированных страниц, но практически весь трафик получают только первые 10. Наша задача — попасть в эту десятку по сотням высокочастотных и супер конкурентным запросам.

Процесс

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

Заложили в архитектуру MVP особенности, которые позволят нам выдерживать огромные нагрузки и быть гибкими для масштабирования. Кластер построили на Kubernetes, сборка проходила на Gitlab CI и поставлялась в собранных Docker-контейнерах. В разрабатываемом сервисе много асинхронности, и мы выбрали стек Node.js, а конкретно — NestJS + TypeScript, так как Express слишком примитивен, и наш опыт показывает, что он слабо подходит для сложных продуктов. Мы нарезали архитектуру на микросервисы для удобного масштабирования и разделения ответственности. Frontend стал независимым микросервисом. Сервис пользователей вынесли в отдельный блок, вспоминая о проблемах с канареечным тестированием и тарифами.

Приложение сделали на React и сразу заложили SSR, для которого решили не использовать NextJS, а реализовать рендеринг самостоятельно. Так как продукт за несколько месяцев запускала одна команда, мы выбрали подход с монорепозиторием. В качестве сервера очередей мы поставили RabbitMQ, кеш храним в Redis, а в качестве БД выбрали привычную MySQL.

Основной источник трафика в нише с PDF — это поисковые системы. В такой суперконкурентной тематике недостаточно просто сделать качественный, быстрый сервис и правильно оптимизировать его под поисковых системы. Таких попыток сотни, но трафик достается только 10 лучшим. Ключевое значение при выводе в ТОП-10 поисковой выдачи Google имеет линкбилдинг. Именно количество и качество внешних ссылок на ресурс определяет, кто будет иметь много трафика, а кто не будет иметь ничего. Мы понимали это и для продвижения собственных сервисов разработали отдельный продукт Linkbuilder.AI. С помощью нейронных сетей он позволяет анализировать выдачу поисковых систем и находить в ней качественных и недорогих доноров для покупки ссылок. Сервис позволяет экономить до 70% ресурсов на линкбилдинг, быстро догонять и обходить конкурентов в поисковой выдаче.
Опыт работы onlineconvertfree.com и продуманная архитектура, заложенная на этапе проектирования проекта, позволяет нам постепенно запускать новые сервисы. Изначально мы не пытались сделать все сервисы и только потом запустить проект. Это стало бы стратегической ошибкой. Мы запускаем сервисы постепенно, с соответствии с приоритетом по их популярности и тогда у агентства есть свободные ресурсы для инвестиции их в собственный продукт.

Результаты

Конвертация PDF

Первым сервисом, который мы запустили, был сервис конвертации различных форматов в PDF и наоборот. На старте мы поддерживали более 50 форматов конвертации и почти 300 направлений. В будущем планируем стать площадкой, которая поддерживает максимальное количество возможных преобразований по примеру работы с сервисом onlineconvertfree.com.

Распознавание PDF

Большой и важной задачей для нас является сервис распознавания текстов. Мы предоставили пользователям возможность преобразовывать онлайн отсканированные документы или фотографии в файлы Word, Excel и другие текстовые форматы. Для работы мы используем несколько специализированных библиотек, чтобы определить, какое из внедренных решений лучше применить в конкретном случае. Сегодня решение поддерживает 6 языков. И мы планируем постепенно увеличивать их количество.

Объединение PDF

Одна из самых популярных задач, с которой сталкиваются наши пользователи — это необходимость пакетного объединения разных PDF-файлов в один. Мы реализовали простой и удобный интерфейс, который позволяет это сделать в несколько кликов. А также дали возможность пользователям просто менять порядок документов в конечном PDF-файле.

Команда

Вебпрактик

Александр Букуров
владелец продукта
Сергей Аверкиев
backend-разработчик
Константин Кулишов
старший DevOps-инженер
Виктория Кривко
SEO-специалист
Иван Поддубный
технический директор
Петр Кленкин
backend-разработчик
Роман Ципленков
DevOps-инженер
Александр Сидоров
старший аналитик
Алексей Кореньков
руководитель группы backend-разработки
Сергей Буланов
младший backend-разработчик
Вадим Шапошников
руководитель SEO-команды
Николай Цай
старший веб-дизайнер
Александр Забанов
старший backend-разработчик
Павел Воробьев
frontend-разработчик
Мария Лапиева
старший frontend-разработчик
Александр Рахманин
старший SEO-специалист
Алина Климец
контент-менеджер
Собственный продукт
Следующий проект
Создание и запуск платформы linkbuilder.ai
linkbuilder.ai
Сервис для автоматизированного линкбилдинга, который упрощает и ускоряет процесс нарощения ссылочной массы сайта