Где найти примеры больших хороших проектов на PHP?
Добрый день. Третий год уже пишу на PHP, за плечами много разных проектов от простых визиток, до проектов с достаточно сложной структурой, от проектов с нулевой до средней (500к уников в день, 2-8млн просмотров) посещаемости.
Работал с большинством cms, писал для них модули, компоненты, плагины, переносил контент с одних систем на другие.
Писал SPA на vue.js + vuex + vue router.
Писал на Laravel, писал api под мобильные приложения, писал интернет магазины, аукционы, парсеры и.т.д.
Работал с облаками, лямбда функциями.
Переписывал проекты с cms на связку из компонентов от фреймворков (брал роутер, query билдер, шаблонизатор и контейнер)
По идее - для меня нет задачи, которую я не смогу реализовать, но не всегда я знаю, как реализовать правильно - в компании, в которой я работаю - посоветовать не могут, уровень у других разработчиков не достаточный.
Где можно найти примеры реально работающих приложений со сложной логикой и архитектурой? Исходники фреймворков не интересуют. Интересуют хорошие примеры сервисного и доменного слоев. Да, есть книги с паттернами, но в книгах все красиво ложится на стандартных примерах, а в проектах всегда есть какие-то подводные камни. Плюс интересно увидеть, на сколько тесно сидит ddd в таких проектах, так как - можно сделать красиво, а можно быстро, хочется увидеть баланс этого в реальных проектах. Возможно есть какая-то книга, с примерами, статьи и.т.д.
Есть проект но он не имеет доступа из вне для пользователей. Соответственно код вы тоже не найдете.
Реализован на Symfony 3, DDD.
БД Postgresql несколько терабайт, mongodb ~400gb, ES, Redis тоже забиты.
Сам проект, это огромный API + интерфейс для отелей. В секунду идет примерно 100 обращений, это в среднем 300 запросов к данным.
Суть проекта такая: к нему обращаются (укажу знакомые вам проекты) booking.com, trivago, hotelbook и множество других травел дистрибьюторов. В добавок, много тысяч отелей работают без посредников в виде указанных ранее сайтов.
Архитектура самой БД очень огромна. Для примера, magento по своей EAV архитектуре, это наверное 10% от того что сейчас есть в проекте.
Естественно различные проекты нон-стоп обновляют, добавляю все данные по номерам своих отелей. Эта кабота бесконечная.
Если просто - вы на сайтике (допустим booking.com), сделали бронирование номера. Что происходит в этот момент? Идет запрос на проект который я описал, там проверяется все информация (квоты, стопы, цены, политики и еще куча всего остального) и находит нужный вам номер. Соответственно создается заказ на этот номер.
Далее уведомляется отель (или посредник, затем отель), который подтверждает, что номер свободен. Проект получает подтверждение, активирует заказ и затем все уже это уведомляет букинг.
Это если просто )
Я работаю 16 лет с PHP.
А вы за три года, уже гуру. Значит вы уже перешагнули планку в 300т.р.
upd
DDD - это далеко не баланс. При разработки с DDD, вы потратите в десятки раз больше времени на реализацию проекта. Будет множество камней, особенно с доктриной (пришлось отдельный маппинг бандл писать).
P.S.
Скорость всяких booking проектов, зависит с какой скоростью мы (или зарубежные аналоги) отдаем ответ.
SharkMan, хех, я думал booking последняя точка, эвона чё... А вы оказывается в тени сидите... А с отелями вы напрямую работаете? То есть всю инфу о себе они сами дают по API?
Одиночка Айс, Да.
Или отели на прямую (для них есть интерфейс) или через других дистрибьюторов уже к нам. А от нас берут различные букинги.
booking.com - это всего навсего интерфейс для предоставления нужного пользователям функционала.
Если посмотреть их презентацию о архитектуре, то это малая часть что находится у нас в тени.
SharkMan, ой, повар опасная работа — на кухне плиты столько говна выжаривают, что потом литр молока в день минималку пить нужно
желудок от соусов страдает — там на вкус, тут на вкус каплю, в итоге поллитра соусов в желудке :)
Не относитесь к теории как чему-то реализуемому в реальной жизни. Просто начните думать и применять какие-то важные моменты. С одной стороны вам будет мешать работодатель и команда (вы занимаетесь не тем, вы слишком усложняете и т.д.), а с другой недостаточный опыт (а хрен его знает, будет изменятся то или другое место в коде и как). И сколько бы вы опыта не получили или сколь лояльного работодателя не повстречали - ничего не изменится.
Тоже понятие "сложный проект" - это не всегда про архитектуру. Чаще наследие по коду и не умение организовать производственный процесс.
Большие проекты не выкладывают. Раньше был код reddit, но его сейчас закрыли. По DDD есть статьи и книги и видео. DDD используют не всегда.
Про архитектуру говорят на конференциях, например на том же highload++. Про php там рассказывают badoo и avito. https://www.youtube.com/user/profyclub