Как мне спланировать веб-приложение корпоративного уровня?

StackOverflow https://stackoverflow.com/questions/106299

  •  01-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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


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

Другие советы

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

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

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

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

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

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

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

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

  • Используйте систему управления версиями, если вы этого еще не сделали

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

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

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

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

Рекомендуемое чтение:

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top