Метка: ci/cd

  • WordPress устарел, но это легко исправить

    WordPress устарел, но это легко исправить

    Я считаю, что многое в подходе WordPress безнадёжно устарело. При этом я всё ещё использую WordPress для блогов. Потому что WordPress, с которым я работаю, сильно отличается от обычного!

    Чего не хватает в WordPress?
    – Поддержку git каждый придумывает самостоятельно, потому что нет общих рекомендаций. Держать в репозитории только тему или всю папку? Что делать с плагинами? Должно ли быть ядро в репозитории? Непонятно.
    – Нет поддержки composer — нет управления зависимостями. Чтобы воспроизвести такой же сайт, нужно выписать все названия и версии плагинов, а затем устанавливать их вручную. Нет способов поставить внешнюю библиотеку. Разные плагины тянут за собой зависимости, которые могут конфликтовать друг с другом.
    – Конфигурация задаётся через файл. Нет поддержки переменных среды ENV, нет поддержки нескольких окружений. Работать с CI/CD и контейнерами практически невозможно.
    – Весь код находится в публичной папке сервера. В зависимостях WordPress много кода, который можно было бы спрятать в папку vendor ради безопасности.

    В общем, упущены все базовые вещи, которые есть в популярных фреймворках Laravel, Symfony, Next, Django, Ruby on Rails.

    Все эти упущения исправляет бесплатная сборка Bedrock от коллектива разработчиков Roots. Это тот же WordPress, но он уже больше похож на фреймворк. В нём есть git, composer, env, поддержка Docker и CI/CD. Он использует те же плагины, темы оформления и тот же базовый WordPress в качестве ядра. Изменена структура папок и метод загрузки конфигурации. Всё остальное работает точно так же.

    Я использую Bedrock уже несколько лет, он отлично себя зарекомендовал в продакшине. Обновления с локальной среды разработчика оказываются на тестовом сервере после git push. Сразу устанавливаются те же версии WP и плагинов, обновляется тема оформления, сбрасывается кэш, импортируются настройки.

    Bedrock может открыть WordPress с другой стороны для разработчиков, которые привыкли к “взрослому” миру фреймворков. Более того, у Roots есть пакет Acorn, который добавляет в WordPress пакеты из Laravel. Как тебе такое, Илон Маск Мэтт Мулленвег?

  • Почему WordPress — это хорошо

    Почему WordPress — это хорошо

    Почему WordPress — это хорошо.

    Идут баталии React vs Vue, у новичков стоит вопрос выбора Python/TypeScript/PHP/Rust/Go.

    В это же время из 200 миллионов активных сайтов 43% работают на WordPress. Нет более популярной CMS.

    На WordPress работают сайты NASA, New York Times, Techcrunch и каждый второй сайт, который вы открываете.

    WordPress как лидер рынка накопил множество претензий, большинство из которых связаны с плохой реализацией проектов на нём, а не с самой платформой. Если вы не любите WordPress, то вы просто не умеете его готовить.

    Самые частые жалобы:
    – Медленный? Посмотрите на лидеров рынка с огромной посещаемостью и настройте кэширование.
    – Взламывают? Надо было приложить небольшие усилия, настроить сервер и обновить плагины.
    – Неудобный? Большая часть удобства состоит из привычки, а не из “интуитивности”.

    WordPress действительно несколько опоздал на фестиваль современных технологий. Но догоняет всеми силами.
    Под капотом вы найдёте привычные и любимые разработчиками инструменты. React и REST API — из коробки. Консольную утилиту WP-CLI. Поддержку продвинутого кэширования с помощью Redis, memcached и php-op.
    Пара шагов чуть глубже и появится возможность использовать git, composer, s3, CI/CD, пре-процессоры и сборщики JS/CSS. А как насчёт использования blade-шаблонизатора от Laravel и классов Symfony?

    Старичок живой, весёлый и развивается, несмотря на скандалы, брюзжание и выход из моды.

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

    Если ваш сайт можно сделать с помощью WordPress — скорее всего, это будет оптимальным выбором.

  • Пройти Тест Джоэля

    Пройти Тест Джоэля

    В 2000 году Джоэль Сполски — сооснователь StackOverflow и Trello, написал список из 12 вопросов, известные как Тест Джоэля. Часто ссылаюсь на этот тест, поэтому прокомментирую эти вопросы.

    1. Используете систему контроля версий?
    Кажется, что git — уже обязательная вещь. Но до сих пор встречаются проекты без системы контроля версий.
    Для тех, кто уже использует, вопрос всё ещё актуален, но теперь звучит так: Вы действительно используете систему контроля версий? У вас есть стратегия ветвления, процедура слияния веток, понятные правила для работы с репозиторием?

    2. Сборка проекта происходит в один шаг?
    Проект должен собираться в 1 команду и она должна быть написана в readme. Если для запуска проекта требуется поставить несколько сервисов, иметь нужную версию компилятора и запущенную базу данных — стоит прописать все эти зависимости в docker-compose и запускать одной командой. После прихода виртуализации оправданий для многошаговой сборки и зависимости от среды больше нет.

    3. У вас настроен CI/CD?
    В оригинале Джоэль говорит про daily build — оперативная сборка софта каждый день. Сейчас в большинстве команд нет нужды синхронизировать код раз в день, можно делать это автоматически каждый раз, когда код попадает в репозиторий.
    Настройте автоматическую сборку и выкатку приложения на тестовый сервер.

    4. У вас же есть база багов? Правда?
    Громоздкая Джира не единственный вариант. Эксель тоже подойдёт! Если у вас есть общий зафиксированный список проблем, вы можете с ними работать и планировать их устранение.

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

    6. У вас есть план работ со сроками?
    План, который знают все и который связан с реальностью. Roadmap, этапы или просто дата, в которую надо запуститься.
    Работа ведёт себя как газ — занимает всё выделенное время. Ставьте сроки.

    7. У вас есть спецификация?
    Банально, но без ТЗ результат ХЗ. Сейчас не нужно писать исчерпывающее финальное тех задание — требования поменяются по ходу разработки. Достаточно написать концепцию, сделать прототипы, записать user story и опубликовать. Задачи тоже нужно записать и поставить в трекер.

    8. У разработчиков есть тихие рабочие места?
    Ваш разработчик всё ещё сидит в опенспейсе? Зря-зря. Скорее всего, он уже обзавёлся наушниками и пытается от вас отвернуться. Помогите ему создать изолированную среду.

    9. У разработчиков лучшая техника и инструменты?
    Быстрый комп, 2ой монитор, современный софт, быстрые серверы — стоят копейки относительно времени программиста. Планка памяти стоит как час работы разработчика. Ускоряйте их всеми доступными способами, это очень дёшево.

    10. У вас есть тестировщики?
    Если баги ищут только разработчики — значит, баги находят пользователи.
    Менеджеры и программисты проверяют, что код работает. Тестировщики проверяют, ищут где он не работает. У вас должен быть хотя бы 1 тестировщик в команде на нескольких разработчиков.

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

    12. Вы делаете usability тесты на добровольцах?
    Соберите группу для тестирования. Первые 5 случайных пользователей укажут вам на 95% проблем. Находите этих пользователей и проводите тестирование до большого релиза. Это дёшево и просто. В оригинале предлагается поймать добровольца в коридоре компании, но сейчас эра удалёнки — найдите их онлайн.

    Если вы фаундер или руководитель и у вас есть ответы “Нет” — их точно стоит обсудить с командой.

  • Self-hosted

    Много раз за последние три года блокировали разные сервисы. То сами сервисы, то доступ к ним, то оплату, то поддержку. Самая странная блокировка – запрет принимать участие в приватных репозиториях на GitHub.

    Мы пошли другим путем: находим продукты с открытым кодом и ставим на свой сервер вместо платного SaaS.

    Что мы используем в работе:
    Gitlab CE – репозитории на нашем сервере. Переезжали с Bitbucket. Используем активно CI/CD.

    Sentry – сборщик логов с запущенных приложений. Очень полезный сервис – мы видим ошибки у реальных пользователей, сгрупированные по типу и с полным стеком вызова (браузер, устройство, окружение). Система прожорливая – ест CPU и RAM.

    Grafana – Конструктор дашбордов с графиками. Мы используем для мониторинга серверов (БД Prometheus в качестве источника). Видел у коллег дашборды с продуктовыми метриками, но у нас до этого руки пока не дошли.

    Plausible – простая веб-аналитика. Достаточно, чтобы изучить посещаемость лендинга или корп сайта, посмотреть источники и конверсии.

    PostHog – мощная аналитика. Расстановка своих событий (как в метрике и ga), воронки, срезы, полная информация о визитах, возвратах и т.д. Под капотом Clickhouse, Kafka и все 33 удовольствия для работы. Как и Sentry, очень прожорливая система.

    Ollgram – tg-боты для поддержки. Очень удобно – делаем бота, указываем его контакты в канал. Бот пересылает сообщения пользователей в секретную группу, а мы общаемся от имени бота. Не связано с CRM, но для получения обратной связи или старта – то что нужно. Код open source – поставили к себе.

    Сейчас присматриваюсь к новым кандидатам
    Affine для документации вместо Miro и Notion
    Zammad – автоматизация службы поддержки. Helpdesk вместо ZenDesk/CarrotQuest
    Twenty в качестве CRM

    Мы пока не смогли заменить трекер задач с учетом времени. Попробовал Taiga (вроде все ок, но не гибко, не хватает фич). Многообещающий Plane перекосило в урезание функционала бесплатной версии. Концептуально понравился LeanTime.

    А пользуетесь ли вы self-hosted и чем?