7 важных факторов PHP-приложения

7 важных факторов PHP-приложения

Инженеры платформы Heroku (https://www.heroku.com/) на основе собственного опыта создали методологию (https://12factor.net/ru/) для разработки SaaS-приложений.

Эта методология учитывает три важных аспекта:
— расширяемость — развитие кодовой базы и функционала;
— сопровождаемость и возможность командной работы над проектом;
— масштабируемость.

12 факторов приложения стали шаблоном для многих разработчиков и Ops-инженеров, а мы постарались адаптировать самые важные из них для приложений на PHP.

Кодовая база (https://12factor.net/ru/codebase). Забота о коде начинается с принципов его версионирования и хранения. Используйте Git Flow или его адаптацию с учетом специфики работы ваших команд.

Зависимости (https://12factor.net/ru/dependencies). Используйте менеджер зависимостей Composer (https://getcomposer.org/) и его основные операции install и update для манипуляций c composer.json (https://getcomposer.org/doc/04-schema.md) и composer.lock.

Конфигурация (https://12factor.net/ru/config). Предпочтительным методом обработки конфигурации является использование переменных среды. Для работы с ними мы применяем компонент symfony/dotenv (https://github.com/symfony/dotenv).

Параллелизм (https://12factor.net/ru/concurrency). Выполняйте процессы в фоне, тем самым снижая время отклика при взаимодействии с вашим сервисом. Выделяйте веб-процессы в реальном времени и рабочие процессы. Первые принимают http-запросы от клиента, а вторые — выполняют фоновые задачи, например, с помощью брокера сообщений RabbitMQ (https://github.com/rabbitmq).

Паритет разработки/работы приложения (https://12factor.net/ru/dev-prod-parity). Для того чтобы обеспечить схожесть сред разработки, тестирования и продакшена, мы используем виртуализацию на основе Docker и специально подготовленные образы, содержащие одинаковые наборы и версии библиотек. Промышленные и тестовые среды отличаются лишь степенью масштабирования, на основе технологий K8S и Swarm.

Журналирование (https://12factor.net/ru/logs). Фактор утверждает, что приложение должно просто писать в STDOUT и STDERR, а среда должна отвечать за маршрутизацию этих сообщений в хранилище. Технология PHP-FPM позволяет производить вывод логов в STDOUT, что крайне полезно при работе с Docker-контейнерами. Для организации процесса логирования на уровне приложения мы используем сторонние внешние библиотеки, например Monolog (https://github.com/Seldaek/monolog) или компоненты фреймворков.

Задачи администрирования (https://12factor.net/ru/admin-processes). Реализовать сценарии администрирования приложения можно с помощью внешних библиотек, например Symfony Console (https://github.com/symfony/console). Большинство современных фреймворков имеют встроенные средства для организации запуска консольных команд для служебных целей и миграций. Например, в Yii Framework есть понятие консольного приложения (https://www.yiiframework.com/doc/guide/2.0/en/tutorial-console) и команды.

Gmail: про эксклюзивность

Gmail: про эксклюзивность

Сегодня про то, как с помощью эксклюзивности привлекается база пользователей в продукт.

В 2004 году Google запускает бета-тестирование своего почтового сервиса Gmail, но делает это весьма интересно. Чтобы получить доступ, тебя должны пригласить. У одного пользователя было только одно приглашение.

Вокруг сервиса образовалась такая шумиха, что дело доходило до безумия. Народ продавал инвайты на Ebay от $65 до $125 за штуку. Те, кто получал заветное приглашение, чувствовали себя избранными.

По итогу сервис привлек большую аудиторию и выпустил версию для всех.

Мясо

Прием эксклюзивности или чего-то "закрытого" применяется часто. Из известных у меня на памяти: Лепра и Аура Яндекса. Помню, как в ленте фейсбука все клянчили друг у друга приглашения.

Люди активно реагируют на то, что ему недоступно. Принцип дефицита позволяет создать дополнительную ценность продукта и привлечь внимание. А что делать уже с этим вниманием дело ваше.

Посмотрите на свои продукты. Можно ли к ним применить принцип эксклюзивности?

Как стать продакт-менеджером

Лично я писала на эту тему тут и вот тут (а уж сколько всего понаписано в интернетах, сложно представить!)
– но вопросы все еще с завидной регулярностью прилетают мне в личные сообщения. Поэтому напишу на эту тему отдельную заметку – ловите краткий курс счастливой жизни.

Продакт-менеджером стать НИКАК. Если вы задали такой вопрос в такой формулировке, у вас уже нет ключевых навыков продакта – автономности и умения декомпозировать проблему (ну и коммуникативных скиллов, если уж на то пошло). С чего же интуитивно надо начать? Ответить для себя на вопросы:

  • кто такой продакт и что он делает
  • как это отличается от того, что делаю я
  • А ОНО МНЕ НАДО?

Если "оно вам надо", то ваш дифф между п.1 и п.2, по сути, и есть руководство к действию. Приоритезируете ваш наборчик по глубине проблемы, и вперед.

Как получить п.1:

  • прочитать несколько книжек из заметки, что приложена в самом начале;
  • провести 5 интервью с продактами из компаний, которые вам нравятся / которые делают продукты, которые вам нравятся (вопросы можно взять отсюда; продактов можно взять на конференциях/курсах/LinkedIn/Facebook);
  • составить карту компетенций и навыков.

А дальше исключительно пахать, работать и снова пахать :) делать свои проекты, разбирать кейсы, идти в стажеры к профессионалам.

Повторю еще раз, другими словами:

  • сначала сделать исследование самому, потом задавать конкретные вопросы;
  • задавать конкретные вопросы – конкретным людям, которые вас драйвят/вдохновляют/заставляют думать;
  • их ответы сразу брать в работу и практиковать. Теорию – в топку.

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

Ну и напоследок: можно ли перейти в продакты из танцоров/маркетологов/программистов?

Можно.
Go back to the top.

Спрашивали про точки развития для дизайнера.

Спрашивали про точки развития для дизайнера.

Точек роста для дизайнера четыре:

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

— Творческое развитие. Создание индивидуальной творческой траектории независимости и автономной работы. Частный проект в котором дизайнер один на один со своей личной задачей. Создание личного проекта с осознанными и глубокими мотивами самореализации.

— Postdigital. Отказ от цифровых методов создания вещей в пользу любой натуральной, аналоговой технологии создания объектов. Классические методы производства, длительные, основательные, трудоемкие, но развивающие практическое, прикладное мышление.

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

Юрий Ветров #1 - об аутсорсе и развитии дизайн-системы.

Директор по дизайну в Mail.Ru Group (продукты под брендом “Mail.Ru”).
jvetrau.com

— Привет, Юр. Давай для начала поймем, за что отвечает дизайн-директор по продуктам в Mail.Ru?

Компания делится на продуктовые направления, я отвечаю за дизайн в нескольких из них.

У меня такие группы задач:
- Координация работы дизайнеров, помощь менеджерам в работе с ними.
- Найм и развитие команды.
- Задание направления для дизайна продуктов и его координация.
- Маркетинг нашей экспертизы для усиления бренда (публикации, конференции и т.п.).
- Работа руками, там где хватает времени.

В разных продуктах разная ситуация, поэтому эти обязанности комбинируются по-своему — где-то это всё и сразу, где-то, например, только помощь дизайнеру в развитии. В других подразделениях компании всё устроено по-своему; общий глава дизайна вряд ли возможен, учитывая разнообразие направлений и подходов (игры, социальные сети, e-commerce).

— В прошлом году вы искали аутсорс-дизайнера на продуктовые лендинги. В каком случае вы привлекаете внешних специалистов?

Работа над самим продуктом всегда делается внутри команды. Это позволяет быстро пробовать уйму разных направлений развития и экспериментировать с дизайном; скорость реакции и погруженность дизайнера тоже наилучшие только в таком формате.

Но для части маркетинговых задач (промо-сайты, иллюстрации, баннеры и т.п.), либо там где у нас нет сильной экспертизы и мало практических задач для её развития (например, шрифтовой дизайн, видео-продакшен, брендинг) — иногда обращаемся к внешним студиям. Ещё один повод — если нужно сделать прорыв в продукте и важно посмотреть на проблему со стороны (бывает, что ограничения слишком давят на дизайнеров внутри), здесь иногда заказываем концепты сторонним дизайнерам или студиям (и сами думаем параллельно). Вот неплохо описан процесс работы над брендом My.com, который шёл по такой схеме — be.net/gallery/10980469/Mycom-Identity.

— Вы уже давно занимаетесь развитием своей дизайн-системы Paradigm. Что бы ты сделал по-другому, начиная работать над ней сейчас?

Да, мы начали работу над технологическим фреймворком для дизайн-системы ещё в 2012 году, а первые продукты на ней запустились в 2013. Тогда тема была сырой как идеологически, так и технологически, так что путь приходилось прокладывать по ходу и я уверен, что можно было бы сделать всё гораздо быстрее, имея огромное количество публикаций и примеров, которые есть сейчас.

Я бы начал с идеи токенов (файлов с переменными, которые легко описать и раздавать в любые технологические фреймворки — medium.com/eightshapes-llc/tokens-in-design-systems-25dd82d58421). Мы переводим Paradigm на эту архитектуру с прошлого года и это оказалось настоящей серебряной пулей — здорово сокращает расхождения, очень легко найти общий язык с фронтендом, для многих продуктов это очень дешёвый первый шаг перехода на Paradigm. Весной мы про это подробно расскажем.

— Как ты видишь её дальнейшее развитие?

Ничего особенного, просто чтобы она работала как задумано :) Это самое сложное — хотя дизайн-система начинает давать выхлоп очень быстро, путь к оптимальному состоянию очень длинный.

Из ключевых планов:
- Перевод на архитектуру токенов и замена полу-живого гайдлайна на настоящий живой.
- Раздача токенов в мобильные приложения.
- Перевод большего количества продуктов на дизайн-систему.
- Связка шаблонов в Sketch c настоящими компонентами в коде, чтобы их не пришлось поддерживать вручную.
- Сделать дешёвую адаптацию живого гайдлайна под мобильные. Нам для работы это вообще не надо, но устали получать пинки от сообщества.

Про удалённую работу

Обычно такой вопрос не предполагает, что ответ может быть правильным или неправильным. Но 16 марта 2020 года всё не совсем обычно. Сейчас первый вариант ответа — «дома» — мне кажется наиболее разумным и адекватным. Вне зависимости от того, в какой стране вы находитесь. Вне зависимости от того, считаете ли вы себя в группе риска или нет.

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

Наверняка все уже читали ту самую статью (https://medium.com/@tomaspueyo/coronavirus-act-today-or-people-will-die-f4d3d9cd99ca) (или её перевод на русский (https://habr.com/ru/post/491974/)) о том, почему мер, которые мы принимаем сегодня для сдерживания коронавируса, всё ещё недостаточно.

Когда в начале февраля писал пост про удалённую работу (http://t.me/desprod/524), совершенно не ожидал, что мне так быстро представится случай это всё попробовать.

Вот мои (очень наивные) открытия после первых полутора недель дома:
- Чтобы организовать рабочий день, теперь нужно больше дисциплины. Приходится явно блокировать в календаре время не только на встречи, но и на сфокусированную работу. Оказалось, что работа дома очень незаметно стремится заполнять собой всё свободное время. И хотя мне никогда не была близка идея разделять работу и жизнь, всё же жить одной только работой тоже не клёво.
- Звонить человеку напрямую в Слаке (Телеграме) — быстрее и проще, чем создавать встречу, делиться ссылкой на встречу, потом эту ссылку открывать отдельно и т. д. И почему мы так раньше не делали? Ну и не надо расшаривать экран — лучше делиться ссылкой на то, что обсуждаем (дизайн в Фигме, документ, доску в Миро и т. д.).
- Созваниваться с коллегами по видеосвязи, чтобы вместе пообедать или попить кофе оказалось очень прикольно. Хотя и звучит как безумие и постмодернизм. Здорово недооценивал, как много мы в офисе болтаем не про работу и как много этого теряется при переходе на удалёнку.
- Надо стараться выходить из дома каждый день! (Если вы не на полном карантине, конечно.) Социальная изоляция не означает, что нужно обязательно сидеть в четырёх стенах. Можно и нужно прогуляться в парке или выйти на пробежку.

Всё, что сейчас происходит — сложно, тревожно, печально и захватывающе одновременно. Супер-интересный глобальный эксперимент по переходу на удалённую работу и обучению. Возможность попробовать что-то новое и научиться чему-то новому. Возможность хотя бы на время немного снизить выбросы парниковых газов (в Китае чистый воздух впервые с Олимпиады 2008-го). Возможность объединиться — мы все через это проходим вместе. Здоровья нам всем.