Лучшие практики на руководящих компонентах сложности/визуализации в Вашем программном обеспечении?

Я работаю в GCP и над облачными функциями для Go.

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

Вы можете создать триггер Cloud Build со следующим фрагментом из https://www.terraform.io/docs/providers/google/r/cloudbuild_trigger.html :

resource "google_cloudbuild_trigger" "build_trigger" {
  project  = "my-project"
  trigger_template {
    branch_name = "master"
    project     = "my-project"
    repo_name   = "some-repo"
  }
  filename = "cloudbuild.yaml"
}

Из этого триггера вы можете использовать этот cloudbuild.yaml, адаптированный из примера в https://cloud.google.com/functions/docs/bestpractices/testing#continuous_testing_and_deployment :

[111 ]

См. https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/go с примерами настройки Cloud Build for Go. Эта установка будет развертывать функцию из Cloud Build, а не использовать google_cloudfunctions_function с Terraform .

7
задан Wooble 26 November 2013 в 15:38
поделиться

7 ответов

В коде говорится, что происходит на каждом этапе. Используя DSL было бы благо, но возможно не, если это прибывает за счет записи Вашего собственного языка сценариев и/или компилятора.

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

Хорошие советы:

  • Визуализируйте свои отношения схемы базы данных.
  • Используйте Visio или другие инструменты (как тот, который Вы упомянули - не использовали его) для обзоров процесса (по моему скромному мнению, он принадлежит спецификации Вашего проекта).
  • Удостоверьтесь, что Ваш код правильно структурирован / разделенный / и т.д.
  • Удостоверьтесь, что у Вас есть своего рода проектная спецификация (или некоторая другая "общая" документация, которая объясняет, что система делает на абстрактном уровне).

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

2
ответ дан 7 December 2019 в 05:32
поделиться

Я нахожу, что структура зависимостей матрицирует полезный способ проанализировать структуру приложения. Инструмент как lattix мог помочь.

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

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

1
ответ дан 7 December 2019 в 05:32
поделиться

Я использую известный Graphviz AT&T, ее простое, и делает работу приятно. Это - то же использование библиотеки Doxygen также.

Также, если Вы прилагаете немного усилия, можно получить очень симпатичные графики.

Забыл упоминать, способ, которым я использую его, следующим образом (потому что Graphviz анализирует сценарии Graphviz), я использую альтернативную систему для входа событий в формате Graphviz, таким образом, я затем просто анализирую файл Журналов и получаю хороший график.

3
ответ дан 7 December 2019 в 05:32
поделиться

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

Необходимо нарисовать высокоуровневую схему (мне нравятся карандаш и бумага).

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

Я думал бы об использовании нескольких очередей для

  • URL для проверки
  • Проверенные страницы от сети
  • Извлеченная информация на основе шаблонов и бизнес-правил
  • Проанализированные результаты
  • normalizationed и фильтрованные результаты

Вы имели бы простым (вероятно, командная строка без UI) программы, которые считают данные с очередей и вставят данные в одну или несколько очередей (Поисковый робот подал бы и "URL для Проверки" и "Проверенных страниц от сети"), Вы могли использовать:

  • Поисковый робот
  • Экстрактор данных
  • Синтаксический анализатор
  • Нормализатор и filterer

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

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

1
ответ дан 7 December 2019 в 05:32
поделиться

Моя компания пишет функциональные спецификации для каждого главного компонента. Каждая спецификация следует за распространенным форматом и использует различные схемы и изображения как соответствующие. Наши спецификации имеют функциональный компонент и техническую часть. Функциональный компонент описывает то, что компонент делает на высоком уровне (почему, какие цели он решает, что он не делает, что он взаимодействует с, внешние документы, которые связаны, и т.д.). Техническая часть описывает самые важные классы в компоненте и любых высокоуровневых шаблонах разработки.

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

Для аргумента от полномочий Joel рекомендует Функциональные Спецификации здесь и здесь.

1
ответ дан 7 December 2019 в 05:32
поделиться

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

0
ответ дан 7 December 2019 в 05:32
поделиться

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

Я нашел, что принятие архитектуры микроядра может действительно помочь "разделить и завоевать" эту сложность. Сущность архитектуры микроядра:

  • Процессы (каждый компонент работает в изолированном пространстве памяти),
  • Потоки (каждый компонент работает на отдельном потоке),
  • Коммуникация (компоненты связываются через единственный, простой канал передачи сообщений),

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

Каждый компонент отображается на исполняемый файл.NET, Исполняемым временем жизни управляют через Autosys (все на той же машине), Коммуникация происходит через Рандеву TIBCO

Если можно использовать инструментарий, который обеспечивает некоторый самоанализ во время выполнения, еще лучше. Например, Autosys позволяет мне видеть то, что выполняют процессы, какие ошибки произошли, в то время как TIBCO позволяет мне осмотреть очереди сообщений во времени выполнения.

0
ответ дан 7 December 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: