Как я планирую веб-приложение уровня предприятия? - PullRequest
9 голосов
/ 20 сентября 2008

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

Мне нравится работа, но я обнаружил, что в конечном итоге мои приложения доходят до точки, когда перегрев при обслуживании очень высок. Я оглядываюсь назад на код, который написал 6 месяцев назад, и обнаруживаю, что мне нужно потратить некоторое время на то, чтобы заново узнать, как я изначально его кодировал, прежде чем я смогу внести исправления или дополнения функций. Я пытаюсь попрактиковаться в использовании фреймворков (я раньше использовал Zend Framework и рассматриваю Django для моего следующего проекта)

Какие методы или стратегии вы используете для планирования приложения, способного обрабатывать множество пользователей, не ломая и сохраняя код достаточно чистым, чтобы его можно было легко поддерживать? Если у кого-нибудь есть какие-либо книги или статьи, которые он мог бы порекомендовать, это также было бы очень полезно.

Ответы [ 6 ]

9 голосов
/ 20 сентября 2008

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

Ремонтопригодность - это не то, что вы можете планировать прямо, кроме очень маленьких проектов Это то, о чем вам нужно заботиться в течение всего проекта. На самом деле, если заранее создать множество классов и кода инфраструктуры, можно получить код, который еще сложнее понять, чем наивный спагетти-код.

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

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

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

Начните убирать свой код сегодня . Не откладывайте это на ваши будущие проекты.


(То же самое относится и к документации. Первые документы у всех были очень плохими. Через несколько месяцев они оказываются слишком многословными и заполненными неважными вещами. Поэтому дополните документацию решениями, которые вы действительно имел, потому что велики шансы, что в следующем году вы столкнетесь с подобной проблемой. Этот опыт улучшит ваш стиль письма больше, чем любое руководство по стилю "как писать хорошо".)

4 голосов
/ 20 сентября 2008

Я бы искренне рекомендовал взглянуть на Мартина Фаулера Шаблоны архитектуры корпоративных приложений . Здесь обсуждается множество способов сделать ваше приложение более организованным и обслуживаемым. Кроме того, я бы порекомендовал использовать модульное тестирование для лучшего понимания вашего кода. Книга Кента Бека о Test Driven Development - отличный ресурс для изучения того, как решить проблему изменения кода с помощью модульных тестов.

3 голосов
/ 02 октября 2008

Чтобы улучшить ремонтопригодность, вы могли бы:

  • Если вы являетесь единственным разработчиком, выберите стиль кодирования и придерживайтесь его. Это придаст вам уверенности при навигации по вашему собственному коду о том, что вы могли бы сделать, а что нет. Уверенность в том, где искать и что искать, а что не искать, сэкономит вам много времени.

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

  • Сохраняйте документацию сбалансированной: некоторые высокоуровневые диаграммы, содержательные комментарии. Лучшие комментарии говорят, что не могут быть прочитаны из самого кода. Как деловые причины или «почему» за определенными кусками кода.

  • Включите в план усилия по обновлению структуры кода, имен папок, пространств имен, объектов, переменных и подпрограмм и отражением того, что они на самом деле делают. Это будет иметь большое значение для улучшения ремонтопригодности. Всегда называйте вещи своими именами. Избегайте больших кусков кода, структурируйте его средствами, доступными на выбранном вами языке, дайте кускам значимые имена.

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

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

  • Использовать контроль источника, если вы этого еще не сделали

  • Вести подробный журнал всего, что сделано для клиента, а также любых важных сообщений (простая компьютерная или бумажная CMS). Обновляйте память перед каждым назначением.

  • Вести журнал вопросов, оставленных открытыми, идеи, предложения для каждого клиента; Снова обновите память, прежде чем начинать назначение.

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

  • Расширяйте, нанимая, даже если вам нужен кто-то, только чтобы обеспечить поддержку после внедрения, сделайте административные биты.

Рекомендуемое значение:

2 голосов
/ 20 сентября 2008

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

  1. Используйте хорошие принципы и структуры MVC для отделения уровня представления от бизнес-логики и модели данных.
  2. Используйте надежный уровень персистентности, чтобы не связывать вашу бизнес-логику с моделью данных
  3. План безгражданства и асинхронного поведения.

Вот отличная статья о том, как eBay решает эти проблемы http://www.infoq.com/articles/ebay-scalability-best-practices

1 голос
/ 24 декабря 2008
  1. Использование фреймворка / системы MVC. Чем более организован и централизован ваш код, тем лучше.

  2. Попробуйте использовать Memcache. В PHP есть встроенное расширение, для его установки требуется около десяти минут и еще двадцать для установки в ваше приложение. Вы можете кэшировать все, что захотите, - я кеширую в нем все записи своей базы данных - для каждого приложения. Это странствует.

  3. Я бы порекомендовал использовать систему контроля версий, такую ​​как Subversion, если вы этого еще не сделали.

0 голосов
/ 20 сентября 2008

Возможно, вам стоит подумать об использовании SharePoint. Это среда, которая уже разработана для того, чтобы делать все, что вы упомянули, и имеет множество других функций, о которых вы, возможно, даже не задумывались (но, возможно, вам понадобится в будущем :-))

Вот некоторая информация с официального сайта.
Вы можете использовать 2 разные среды SharePoint: Windows Sharepoint Services (WSS) или Microsoft Office Sharepoint Server (MOSS). WSS является бесплатным и поставляется с Windows Server 2003, в то время как MOSS не является бесплатным, но имеет гораздо больше функций и покрывает практически все потребности вашего предприятия.

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