Що таке Symfony без технічних термінів
Уявіть набір надійних деталей, з яких можна зібрати систему будь-якої складності, і інструкцію, як з’єднувати їх правильно. Symfony — саме такий набір. Окремі його компоненти відповідають за обробку запитів, форми, перевірку даних, безпеку, листи, черги, кешування, переклади.
Ці компоненти настільки перевірені, що їх використовують і в інших продуктах на PHP. Тому навіть якщо ви ніколи не чули про Symfony, ви майже напевно користувалися сайтами, які частково на ньому працюють.
Сильні сторони Symfony
- Порядок у великому проєкті. Фреймворк підштовхує розділяти код на незалежні частини. Через кілька років і зміну кількох розробників у системі все ще можна розібратися.
- Передбачувані оновлення. У Symfony є версії з тривалою підтримкою і продумана політика змін: про те, що зміниться в наступній версії, фреймворк попереджає заздалегідь.
- Гнучкість. Можна взяти лише потрібні компоненти й не тягнути в проєкт зайве, а будь-яку стандартну поведінку — замінити своєю.
- Добре підходить для API. Сервери, з якими працюють кілька фронтендів і застосунків, на Symfony будуються природно.
Недоліки, про які варто знати
- Повільніший старт. Symfony вимагає більше налаштувань і коду на початку, ніж Laravel, тому перша версія продукту з’являється пізніше.
- Вищий поріг для розробників. Фреймворк складніший у вивченні, і знайти досвідчених Symfony-розробників зазвичай важче.
- Надмірний для простих задач. Для сайту компанії чи невеликого сервісу його структура — зайва вага, за яку ви платите часом розробки.
- Немає готової адмін-панелі для контенту. Інтерфейс для менеджерів треба проєктувати й робити під систему.
Symfony чи Laravel
Обидва фреймворки на PHP і обидва надійні, тому вибір — не про «кращий чи гірший», а про характер проєкту.
- Laravel доречний, коли важливо швидко вийти з першою версією, перевірити ідею, а команда невелика.
- Symfony доречний, коли система велика з самого початку, над нею працюватимуть кілька команд, а життя проєкту вимірюється роками.
- Якщо у вас уже є команда, що знає один з фреймворків, це часто вагоміший аргумент, ніж технічні відмінності.
Для сайтів, де головне — тексти й сторінки, жоден з них не потрібен: зручніше взяти CMS.
Які системи ми будуємо на Symfony
- облік і погодження: заявки, договори, рахунки, проходження документів між відділами;
- кабінети для партнерів і дилерів з персональними умовами, замовленнями та звітами;
- портали з кількома ролями, де дані різних груп користувачів суворо розділені;
- централізований API, з якого беруть дані сайт, мобільний застосунок і облікові системи;
- частини ERP-рішень, які доповнюють готові облікові системи під специфіку компанії.
Новий проєкт чи робота з наявною системою
Новий проєкт починаємо з моделі даних і меж модулів. На цьому етапі вирішується, наскільки легко буде розвивати систему через роки, тому ми не поспішаємо й узгоджуємо структуру з вами. Помилку в моделі даних, знайдену на папері, виправити легко, а в робочій системі з реальними даними — дорого.
Наявна система часто працює на старій версії Symfony, яку вже не оновлюють. Переписувати все з нуля ризиковано й дорого. Ми робимо інакше: покриваємо ключові сценарії тестами, а потім оновлюємо частинами — версію за версією, модуль за модулем. Детальніше про такий підхід — на сторінці про модернізацію застарілих систем.
Як ми тримаємо якість коду
Великі системи ламаються не через одну помилку, а через накопичення дрібних компромісів. Тому в Symfony-проєктах ми дотримуємося кількох правил, які окупаються з кожним новим етапом:
- ключові сценарії — оплати, розрахунки, права доступу — покриваємо автоматичними тестами, які запускаються при кожній зміні;
- кожну зміну переглядає інший розробник, перш ніж вона потрапить у спільний код;
- автоматичний аналіз коду знаходить типові помилки ще до тестування людиною;
- важливі архітектурні рішення записуємо: що вирішили і чому, щоб нова людина в команді не повторювала старих дискусій.
Для вас це означає менше несподіваних збоїв після оновлень і швидшу роботу над новими функціями, бо розробники не бояться змінювати код.
Інтеграції, навантаження і підтримка
Корпоративні системи рідко працюють самі по собі. Ми налаштовуємо обмін з 1С, BAS, SAP, CRM, банками та сервісами доставки. Важкі операції — імпорт, звіти, синхронізацію — виносимо в черги, щоб вони не гальмували роботу користувачів.
Коли система зростає, допомагаємо з кешуванням, оптимізацією запитів до бази даних і розподілом навантаження між серверами. Після запуску беремо на себе оновлення, моніторинг помилок і розвиток функцій.
Що впливає на вартість
- Предметна область: кількість сутностей, правил і винятків у ваших процесах.
- Ролі та доступи: скільки груп користувачів і наскільки детально треба розмежувати їхні права.
- Інтеграції: кількість систем, наявність у них документованого API і вимоги до швидкості обміну.
- Навантаження: скільки людей і запитів має витримувати система одночасно.
- Наявний код: для підтримки й оновлення — версія Symfony, тести, документація.
Великі системи ми оцінюємо поетапно: спершу проєктування з детальним планом, потім розробка частинами, і після кожної ви бачите результат.
Часті запитання
Чи можна поступово перейти з власного PHP-коду на Symfony? Так. Компоненти Symfony можна впроваджувати в наявний код частинами, не зупиняючи систему.
Наша система на старій версії Symfony. Це критично? Стара версія без оновлень безпеки — це ризик. Ми оцінимо стан і запропонуємо план оновлення з мінімальними перервами.
Чи підходить Symfony для інтернет-магазину? Для типового магазину — ні, краще готова платформа. Для B2B-торгівлі зі складними умовами та інтеграціями — так.
Скільки розробників потрібно, щоб підтримувати таку систему? Залежить від темпу змін. Стабільній системі часто вистачає планових оновлень і невеликого обсягу доробок, а для активного розвитку ми формуємо постійну групу розробників під ваш план.
Хто зможе підтримувати систему, якщо ми змінимо підрядника? Будь-яка команда, що знає Symfony. Ми передаємо код, доступи і документацію, а стандартна структура фреймворку полегшує передачу.
Чому Promodex
Promodex працює з 2015 року, у нас 750+ реалізованих проєктів і власна команда з 30+ людей у Києві. Ми не передаємо роботу на аутсорс, тому знання про систему залишаються всередині команди. Ми не нав’язуємо Symfony: якщо задачу можна розв’язати простіше, скажемо про це на першій розмові. А коли проєкт справді великий і довгий, домовляємося про прозорий формат роботи і залишаємося поруч після запуску.