Разработка в Pyrobyte

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

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

Разделение на бэкенд и фронтенд

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

Такой подход называется API-first. Он позволяет:
  • Сэкономить на разработке последующих приложений на 30−40%. Например, разработка мобильного приложения после сайта (или наоборот).
  • Создать централизованную систему хранения и управления данными.
  • Выполнять интеграцию со сторонними системами один раз. К таким системам относятся: почтовый сервер, сервис рассылок, сервер пушей, складские системы 1С и прочие, CRM и ERP-системы и т. д.
  • Упростить дальнейшее развитие и масштабирование проекта и всех подсистем: сайт, мобильное приложение, внутренняя ERP и т. д.
  • Добиться высокой производительности всей системы.
  • При использовании микросервисной архитектуры также можно добиться высокой отказоустойчивости системы.

Архитектурные работы

Перед началом разработки мы выполняем работы, которые позволяют нам разработать проект с высоким уровнем качества:

  • Клиент-серверная архитектура
  • Многоуровневая архитектура
  • Проектирование базы данных
  • Проектирование и документирование API
Эти работы позволяют создать хорошо спроектированное решение, выполнить разработку быстро, минимизировать количество багов, синхронизировать работу команды, упростить подключение новых разработчиков, безболезненно масштабировать и развивать проект в будущем.
Иногда архитектурные работы мы можем выполнить на этапе сбора требований к проекту.
  • Клиент-серверная архитектура — это схема взаимодействия всех подсистем проекта с описанием технологического стека. Если на проекте работает несколько команд разработки, то на клиент-серверной архитектуре мы также показываем зону ответственности.
  • В многоуровневый архитектуре мы показываем все уровни взаимодействия проекта начиная с самого высокого — бизнес задач до самого низкого — описания физических классов и таблиц хранения данных.
  • При проектирование базы данных мы составляем перечень таблиц, которые нужны для хранения данных и взаимосвязи между этими таблицами. На этом этапе мы продумываем наиболее оптимальный вариант хранения данных.
  • Для эффективного взаимодействия фронтенда и бэкенда мы проектируем API и документируем методы в сервисе Swagger. Эту же документацию мы можем использовать при проектировании публичных API, которые будут использоваться заказчиком для своих бизнес-задач. Например, подключение партнеров к своей системе.

Требования к разработке

При разработке мы пишем код по единым современным стандартам. Для бэкенда — PSR. Для фронтенда — стандарт кодирования от Google. В разработке используем современные принципы и подходы программирования.
Команды формируем таким образом, чтобы у нас был минимум один старший программист на фронтенде и бэкенде. Разработку ведем через пул-реквесты. Таким образом добиваемся, чтобы весь код проверялся старшими разработчиками и соответствовал нашим требованиям.
Кроме этого к проекту подключаем техлидов, которые регулярно проводят кодревью, помогают в разработке технически сложных задач.
У нас большая библиотека, и мы часто проводим доклады, холивары и другие образовательные мероприятия. По каждому разработчику ведем карту компетенций и следим за его развитием.

Ручное и автоматизированное тестирование

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

Кроме ручного тестирования мы используем автотесты. Покрываем код автоматизированными тестами для более быстрого тестирования важного функционала и выявления регрессий.

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

Тестирование производительности и безопасности

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

Технологический стек

  • Бэкенд
    PHP, Laravel, Node.js, NestJs, Mysql, PostgreSQL, MongoDB, Redis, RabbitMQ, Swagger
  • Фронтенд
    React, Webpack, Next.js, Mobx
  • Мобильная разработка
    React Native, Mobx
  • DevOps
    Gitlab, Docker, CI/CD
  • QA
    JMeter, Ytank, Chrome DevTools, Selenium, Postman

Микросервисная архитектура

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

Преимущества микросервисного подхода:
  • Разделение логических фрагментов приложения на самостоятельные модули.
  • Отказоустойчивость микросервисов.
  • Оптимальное использование физических ресурсов для каждого микросервиса.
  • Возможность делегирования разработки и поддержки отдельных микросервисов разным командам.
К минусам можно отнести большие сроки на разработку и, соответственно, стоимость. Как правило, стоимость и сроки этапа программирования увеличиваются на 30%.
Решение о выборе архитектуры принимается на этапе проектирования архитектуры и согласуется с заказчиком.
Напишите нам для оценки разработки сайта или мобильного приложения
Сделаем это бесплатно и отправим вам подробную смету и красивое коммерческое предложение
Напишите нам для оценки разработки сайта или мобильного приложения
Сделаем это бесплатно и отправим вам подробную смету и красивое коммерческое предложение