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) и команды.

Наталья Стурза рассказала, что на сайтах российских банков мешает клиентам (предпринимателям) выбрать оптимальный тариф.

Тёмные паттерны и просто плохой дизайн:

  1. Важные условия и ограничения написаны мелко и малоконтрастно, чтобы человек не обратил на них внимания.
  2. Тарифам даны эмоциональные названия. Например, тариф «Успех» (подороже) и «Лоукост» (самый дешёвый).
  3. Некоторые важные условия тарифа есть только в огромном документе со всеми условиями. Например, показаны только лимиты, но не показано, что будет после их превышения.
  4. Сломана привычная логика отображения информации. Например, показаны сначала свойства тарифа, а потом стоимость. Или показаны тарифы слева направо от большей стоимости к меньшей.
  5. Общие формулировки и канцеляризмы.
  6. Все тарифы показаны на отдельных страницах без единой сводной таблицы.

Как делать:

  1. Расположите тарифы по возрастанию цены и предложения.
  2. Выделите приоритетный тариф с помощью дизайна.
  3. Дайте сравнить, но не больше 4 тарифов в таблице.
  4. Называйте тарифы осмысленно, без манипуляций и оценок.
  5. Чётко прописывайте 4 главных критерия: абонентскую плату, количество бесплатных платежей, комиссии за снятие и пополнение наличных, лимиты и комиссии на переводы физлицам.
  6. Давайте ссылку на подробное описание тарифов.
  7. Отдельно выносите скидки, они интересны только продвинутым пользователям.
  8. Прописывайте пункты на языке пользователя: вместо «платежи» — «платежи юрлицам и ИП».
  9. Расскажите про превышение лимитов.
  10. Дайте посмотреть цены при ежемесячной оплате и оплате за год вперёд.

https://vc.ru/design/90038

Брюс Стерлинг о пользе написания дизайн-фантастики

Брюс Стерлинг о пользе написания дизайн-фантастики для дизайна полезных и нужных объектов: «У дизайна мало универсальных научных законов, которые можно было бы предложить нам. Вы можете поразмыслить над многими дизайнерскими текстами, не найдя квадратичного уравнения, тестируемой гипотезы или экспериментального доказательства. Но дизайнерское мышление глубоко и справедливо повлияло на мою научную фантастику.

Я пишу "дизайн-фантастику" уже много лет. Дизайн-фантастика во многом похожа на научную фантастику; на самом деле, нормальному читателю и в голову не приходит разделение этих двух понятий. Основное различие заключается в том, что дизайн-фантастика имеет больше прикладного смысла на странице книги, чем научная фантастика. Научная фантастика хочет использовать величие и достоверность науки для своего собственного фокуса-покуса, но дизайн фантастики может быть более практичным, более полезным. Она приносит в жертву некое чувство магии, но гораздо ближе к пылающему накалу социально-бытового конфликта»

Британка у всех на слуху, что же она из себя представляет?

Британская высшая школа дизайна, а в простонародье британка, готовит специалистов по множеству образовательных программ: от высшего образования до краткосрочных интенсивов. Я учусь на программе ДПО (дополнительного профессионального образования), по факту это профессиональная переквалификация, правда, поступить можно только с уже имеющимся диплом о высшем или среднем образовании, так как это образование дается дополнительно к уже имеющемуся.

Мы занимаемся во вторник и четверг с 19 до 22, и в субботу с 11 до 18.
Обучение очное, и это круто. Можно вновь почувствовать себя учеником: поднимать руку на занятиях, выполнять задания и хлопать выступающим.
Одна из фишек очного образования — коммуникация с другими студентами. Это здорово стимулирует — когда ты видишь, что большинство уже выполнили задание, то волей-неволей сам начинаешь шевелиться. И конечно, это новые связи и знакомства — одна из причин, по которой я пошел в британку.

В данный момент у нас во всю идет блок исследования — экспериментальный курс на 1,5 месяца. Введение подобного курса — это попытка адаптации обучения под динамично меняющуюся индустрию.

Многие из выпускников, скорее всего, будут работать продуктовыми дизайнерами, а работа над продуктом подразумевает постоянное исследование, построение гипотез и проверка их на пользователях.

И, даже если в непосредственные обязанности дизайнера не будет входить проведение исследования, он все равно должен понимать, в чем ценность этих исследований, чтобы, в случае необходимости, отстоять эти ценности внутри команды, либо перед бизнесом/заказчиком.

Розыгрыш брифов!

Напомню схему по которой происходит распределение проектов: озвучивают только приблизительное описание того, о чем проект, при этом неизвестно, что будет дальше, желающие поднимают руки, набирается команда и так далее.

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

Интересно также то, что заказчики в этот раз присутствовали очно, и после распределения по проектам мы могли сразу провести с ними интервью.

Итак, посмотрим на то, какие еще проекты были представлены:

Билайн
Билайн — это технологии. оборудование и люди, которые существуют в рамках их корпоративной культуры. Билайн-университет, занимается развитием сотрудников — развитие 360. Давать человеку то что его прокачает, равномерно и постепенно повышает уровень сотрудника, в этом и есть задача — сервис для роста сотрудник внутри компании.

Revolut
Сервис по выгодному обмену курсов для путешественников. Выросли из этого, хотят быть круче, чем банк. Круто то, что проект международный. Цель проекта — предоставить пользователю различные банковские продукты в нужный момент времени (например, страховку в момент, когда пользователь приезжает в аэропорт)

SkyEng
Стартап, который уже давно не стартап. Цель проекта — удовлетворить запрос пользователей, которые хотят путешествовать.

Profi.ru
С лета 14 года помогают людям найти частных специалистов для решения любых задач. Все началось с доски объявлений на сайте университета по поиску репетиторов, сегодня это огромный сервис по поиску специалистов в любой сфере.
Сервис хорош тем, что с точки зрения специалиста в нем достаточно низкий порог входа, а с точки зрения заказчика огромная база специалистов.
Уникальность сервиса заключается в том, что взаимодействие в нем строится по принципу частник-частник.

КосмоЗоо
Однажды родился такой проект — московский космический зоопарк. Его целью является желание соединить ветеринаров и владельцев домашних животных. Ребятам предстоит изучить много нового в области домашних животных.

Это не все брифы, а только те, которые были представлены лично заказчиками, остальные созвонились со своими командами лично по скайпу.

Хорошей практики пост

Иногда, бывает крайне полезно записать свою версию проекта и передать ее на пару часов коллеге в работу. Свежий взгляд и другие развитые навыки могут здорово помочь в разработке и упрощении дизайна, корректировке деталей и выявлении ошибок «свежим взглядом». При этом храните и свою версию проекта, чтобы объективно сравнить, позже принять решение о дополнениях, разумных улучшениях. Например, ваш коллега хорошо разбирается в анимации, может предложить улучшения UX благодаря более тонкой настройке анимации переходов, создании иллюзии повышения скорости загрузки. Или вы честно влюбились в свои иллюстрации, а коллега трезво оценил их и предложил сделать меньше размером в макете, чтобы сохранить информативность и эмоциональность, но оптимизировать загрузку контента. Стоит попробовать.