- PVSM.RU - https://www.pvsm.ru -
Это перевод блогозаписи "Can Laravel Be Used for Big Enterprise Apps? [1]"
Вчера я слушал новый эпизод Laravel Podcast [2] с Тейлором Отвелом (Taylor Otwell [3]), Джеффри Веем (Jeffrey Way [4]) и Мэттом Стаффером (Matt Stauffer [5]) – и они (наконец-то!) поговорили про создание больших приложений на Laravel, в последнее время этот вопрос очень часто задают.
Так как ребята из подкаста не предоставили стенограмму, и прослушивание 50 минут может быть излишним, я решил написать краткое содержание и разбить ответы в более удобном формате Вопрос-Ответ, с ссылками по теме. Поехали!
Мэтт: Прежде чем погружаться в тему, давайте определимся, что такое Enterprise приложение? Это о количестве строчек кода, о зависимостях, или безопасности, или о нагрузке?
Джеффри: у меня тот же вопрос. Какие функции/возможности имеют фреймворки, которые делают их энтерпрайзными, а Laravel нет? Имеет ли значение, что Zend имеет за собой большую компанию, тогда как про Laravel все спрашивают «что будет, когда Тейлор умрет? [6]»
Тэйлор: я думаю, что большинство людей имеет ввиду множество классов, и, я полагаю, большое количество кода.
Тэйлор: очевидно, я собираюсь сказать да, он может быть использован для больших приложений, потому что:
Так что он не только может использоваться для больших приложений, он однозначно лучше подходит для больших приложений, чем прочие альтернативы на PHP.
Я понимаю, что это вводит в заблуждение, потому что Laravel имеет низкий порог входа. Но в тоже время он масштабируется в соответствие с вашими потребностями.
Тэйлор: Между прочим, люди не выбирают фрейморк рационально. Много субъективных вещей. Может, им не нравится маркетинг, может они не любят дружелюбный стиль Laravel, так что они выбирают что-то более строгое, вроде Zend. Иногда им просто не нравлюсь лично я!
Мэтт: говоря об энтерпрайзе, есть различия между большим и корпоративным проектом. У нас есть люди, постоянно говорящие «Генеральный директор, или совет директоров, или финансовый директор, или юристы, или кто-то еще из нашей многомиллиардной компании, очень обеспокоены тем, что мы собираемся вложить целую кучу времени и денег в Х», поэтому многие разработчики получают входные данные, не относящиеся к разработке, поэтому мне интересно, существуют ли какие-то ограничения, например, не использовать Laravel.
Мэтт: давайте отойдем в сторону от энтерпрайза и поговорим о больших приложениях.
Я знаю, что мы не можем назвать много сайтов на Laravel. Я знаю несколько, потому что я под NDA с многими из них, и там тысячи миллионов посещений, из Alexa 500, много компаний из списка Fortune 500. Можем мы рассказать больше?
Тэйлор: различные сайты компьютерных игр, например, Fallout 4, используют Laravel на своих лендингах. Но основной вопрос – зачем людям нужны доказательства, что это работает? Доказательств всегда мало.
Тейлор: Люди, возможно, хотят узнать: «если я создам свое большое приложение на Laravel, будет ли он вечно поддерживаться и обслуживаться, и … ?». Нет, Laravel не сделает автоматически ваше приложение крутым в поддержке в ближайшие 10 лет.
Фреймворк позволяет сосредоточится на вашем коде. Фреймворк — это маршрутизация, сессии, кеш, обращения к бд, но вы единственный, кто может описать специфику предметной области и знает проблемы бизнеса, которые намного сложнее, чем особенности фреймворка.
Мэтт: Плохой разработчик напишет плохой код на любом фреймворке.
Мэтт: Ну, предположим, люди согласны, что Laravel хорош. Как создать большое приложение, какие нюансы в приложении с миллионами просмотров в неделю?
Тэйлор: Достаточно просто. Убедитесь, что вы используете хороший драйвер для сессий [10] и кеша [11], вроде Memcached [12] или Redis [13], на сервере вроде Elasticcache [14] на вашем AWS [15].
Вероятно, вам нужен балансировщик нагрузки, PHP очень хорошо масштабируется в этом смысле.
На уровне Laravel, убедитесь, что вы используете config:cache [16], route:cache [17], что вы сделали composer dump-autoload –optimize.
Джеффри: На Laracsts, который, внезапно, тоже хайлоад-проект, я не делал столько всего! Есть многие базовые вещи, которые люди полностью игнорируют, например, размеры их картинок!
Тэйлор: другая хорошая идея – отделить вашу БД от сервера приложения. Это позволит проще масштабироваться, например, если вам потребуется второй сервер.
И, говоря о кешировании, я много использую Cloudflare в последнее время. Весь официальный сайт Laravel жестко закеширован, только несколько запросов на самом деле достигают сервера, потому что почти все статично, например, документация.
Мэтт: С Cloudflare есть другая проблема: необходимо учитывать срок хранения, чтобы обновлять кеш. Так что это даже не проблема Cloudflare, а ваша – проверяйте Expires [18] в заголовках!
Выслушав их мысли (спасибо, ребята!), я пришел к тому же выводу – что большие приложения это не про фреймворк, здесь есть еще много предметов для обсуждения: DevOps, механизмы кеширования, уникальная бизнес-логика вашего приложения, структура БД и так далее. Так что вопрос «Достаточно ли хорош Laravel?» — это неправильный вопрос. Лучше спросите, «Достаточно ли хорош мой код?», или «Достаточно ли у меня навыков использовать Laravel эффективно в большом приложении?». Если есть что добавить, то автор статьи принимает комментарии в своем блоге [1], и вот ссылка на сам подкаст [2].
От себя добавлю: сама суть обсуждения достаточно дискуссионна, и во многом я не согласен с категоричностью Тейлора (каждый поп хвалит свой приход, да), но основная мысль, которая сквозит через подкаст — плохой разработчик напишет плохой код, вне зависимости от фреймворка. Фреймворк лишь дает инструменты для того, чтобы сосредоточится на основном — бизнес-логике.
P.P.S: Об ошибках и не точностях сообщайте, пожалуйста, в личку.
Автор: parotikov
Источник [19]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/255221
Ссылки в тексте:
[1] Can Laravel Be Used for Big Enterprise Apps?: http://laraveldaily.com/can-laravel-used-big-enterprise-apps-summary-laravel-podcast/
[2] новый эпизод Laravel Podcast: http://www.laravelpodcast.com/episodes/68236-episode-53-bigger-better
[3] Taylor Otwell: https://twitter.com/taylorotwell
[4] Jeffrey Way: https://twitter.com/jeffrey_way
[5] Matt Stauffer: https://twitter.com/stauffermatt
[6] что будет, когда Тейлор умрет?: https://www.reddit.com/r/PHP/comments/676vns/if_taylor_otwell_got_hit_by_bus_what_would_happen/
[7] DI: https://laravel.com/docs/5.4/container
[8] систему очередей: https://laravel.com/docs/5.4/queues
[9] Event Broadcasting: https://laravel.com/docs/5.4/events
[10] сессий: https://laravel.com/docs/5.4/session
[11] кеша: https://laravel.com/docs/5.4/cache
[12] Memcached: https://memcached.org/
[13] Redis: https://redis.io/
[14] Elasticcache: https://aws.amazon.com/elasticache/
[15] AWS: https://aws.amazon.com/
[16] config:cache: https://laravel.com/docs/5.4/configuration#configuration-caching
[17] route:cache: https://laravel.com/docs/5.4/controllers#route-caching
[18] Expires: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires
[19] Источник: https://habrahabr.ru/post/328610/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.