2009-03-26 3 views
0

Каковы некоторые из основных компонентов, основанных на корпоративных бизнес-приложениях? Я думаю о Многоразовый доли компонентов нескольких приложений:Каковы наиболее важные компоненты инфраструктуры в крупномасштабной разработке?

  1. Шкале быстрее
  2. развития
  3. скорость за счет устранения повторного строительства
  4. Обеспечить устойчивую инфраструктуру за счет минимизации ключевых точек отказа

Некоторые примеры понятий, я видел успех с централизующей/стандартизации:

  • Логгина г
  • очередей
  • Scheduling

ответ

1

Я хотел бы добавить GUI виджетов, которые позволяют командам сохранить тот же внешний вид и через приложение (ы).

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

Кроме того, создание общего набора библиотек (или, еще лучше, на C++, использующих Boost), которые являются местом, где требуется общая утилита, хорошо работает.

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

0

Не полностью в пространстве инфраструктуры:

  • Задаваемые логических моделей данных.
  • Определенные бизнес-процессы (с покрытием краев).

Без них у вас есть ряд приложений для разработки приложений для одного и того же клиента.

  • регистрация
  • очередей
  • Scheduling

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

1

Когда вы говорите о компонентах, вы имеете в виду компоненты кода или компоненты инфраструктуры? Я бы сказал, что инфраструктура (вспомогательные службы и процессы), а не код, дает максимальную отдачу от качества, скорости и простоты разработки. Примеры, которые вы даете, теперь находятся в стандартных библиотеках большинства языков или являются специфичными для конкретного приложения/использования.

Я также собираюсь предположить, что контроль версий является данным, поскольку он является настолько неотъемлемой частью всей разработки.

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

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

Одна из проблем с общими библиотеками заключается в том, что они прикладывают много усилий для того, чтобы хорошо проектировать - так что их стоит многократно использовать, и это занимает много времени, чтобы довести их до этой точки. Большинство из них начнутся как конкретные для проекта, а затем кто-то взломает его в свой проект, а затем некоторое разветвление, а затем скопирует и вставляет. Через некоторое время, вероятно, кто-то проверит код и начнет сливать их в обычное место. Необходимо разработать план обновления общих библиотек и как (или если) иметь сразу две версии. Еще один скрытый недостаток - они позволяют быстрее развиваться в краткосрочной перспективе, но препятствуют развитию в долгосрочной перспективе, поскольку люди становятся заблокированными в более старых версиях (это в большей степени относится к сторонним библиотекам).

Третий будет инструменты для сборки. Это означает общие инструменты для упрощения построения, проверки, поиска и, в противном случае, взаимодействия с кодом. Вещи, которые автоматизируют маркировку ошибок, которые разрешаются при отправке патча, или уведомляют постоянных строителей, которые изменили зависимости, или автоматически запускают тесты перед отправкой теста, что упрощает (и быстро) тестирование.

Четвертый будет Герметичные сборки, что является простым расширением инструментов сборки. Это означает, что приложение является самодостаточным. Это имеет два преимущества: 1) повторное использование машины проще и, что более важно, 2) его невероятно легко для разработчика, чтобы начать работу - им не нужно устанавливать дополнительные библиотеки или что-то менять в/etc или устанавливать что-то в их окружающая среда - она ​​просто строит и работает.

Некоторый друга я могу думать:

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