CNCF спонсировал этот пост.
Давление для быстрого отправки функций может быть ошеломляющим. Инженерные команды часто могут расставлять приоритеты на скорости во всем остальном, что приводит к компромиссам в качестве качества кода и архитектурного дизайна.
Стремившись как можно быстрее отправить программное обеспечение, разработчики часто создают свои собственные инструменты или развернуты непосредственно в облако, что приводит к распространению тени. Это может привести к распространению сотен маленьких платформ на заказ, использующих различные наборы приложений, каждая из которых со своим собственным набором конфигураций и зависимостей.
Это накопление технического долга увеличивает затраты на техническое обслуживание и снижает скорость развития. Скрытые затраты на неустойчивое программное обеспечение являются значительными: полные переписывания, расширенное время простоя, нарушения безопасности, проблемы соблюдения требований и разочарованные группы разработчиков.
Важно уточнить, что определение приоритетов устойчивого разработки программного обеспечения не заключается в замедлении инноваций. Скорее, речь идет о принятии обоснованных решений, чтобы избежать гораздо больших препятствий и замедления.
Принципы устойчивого разработки программного обеспечения
Несколько ключевых принципов лежат в основе устойчивого разработки программного обеспечения:
- Модульность и обслуживание: Проектирование систем как коллекции независимых, четко определенных модулей облегчает понимание, изменение и расширение кодовой базы. Это снижает риск введения ошибок и упрощает обслуживание.
- Обратная совместимость: Стремление к обратной совместимости гарантирует, что существующие пользователи могут продолжать использовать программное обеспечение без сбоев при добавлении новых функций. Это способствует доверию пользователя и избегает фрагментации, уменьшая необходимость в индивидуальных платформах.
- Наблюдаемость и мониторинг: Реализация надежных систем мониторинга и регистрации дает представление о поведении программного обеспечения в производстве. Это позволяет разработчикам идентифицировать и решать проблемы активно, обеспечивая долгосрочное здоровье и стабильность системы. Наблюдаемость и мониторинг также могут помочь предотвратить его тень, обеспечивая управление и защищенными от всех систем и защиты в соответствии с лучшими практиками.
- Масштабируемость и повторно использование: Создание масштабируемых архитектур, которые также являются ресурсными, имеет решающее значение для долгосрочной устойчивости. Придерживаясь принципов, таких как строгое разделение этапов сборки и запуска, процессов без сохранения состояния и масштабирования через модель процесса, компании могут эффективно управлять ресурсами и масштабировать приложения по мере необходимости. Это сосредоточено на облачных нативных технологиях, таких как контейнеры и Kubernetes, обеспечивает устойчивость в инновациях и стандартизации платформы разработки и стандартизации, что позволяет компаниям использовать последние достижения при сохранении согласованности и эффективности в процессах разработки и развертывания.
Придерживаясь этих принципов, команды разработчиков могут избежать ловушек краткосрочных инноваций и создавать надежные, масштабируемые и обездоленные приложения.
Как двенадцать фактических принципов поддерживают устойчивость
Методология приложения двенадцатифакторных приложений, в то время как она сосредоточена на облачных приложениях, обеспечивает прочную основу для устойчивого разработки программного обеспечения. Некоторые из его принципов непосредственно соответствуют целям устойчивости:
- Кодовая база: Поддержание одной кодовой базы, отслеживаемой в управлении версиями, способствует последовательности и сотрудничеству.
- Зависимости: Явное объявление и изоляция зависимостей сводит к минимуму конфликты и упрощает обслуживание.
- Конфигурация: Хранение конфигурации за пределами кода гарантирует, что приложение может быть развернуто и настроено последовательно в разных средах.
- Журналы: Обработка журналов как поток событий обеспечивает централизованную регистрацию и анализ, облегчая наблюдаемость и мониторинг.
Для платформ двенадцатифакторные принципы обеспечивают план для масштабируемых, обслуживания, обслуживания и портативных приложений. Придерживаясь этих принципов, платформы могут гарантировать, что приложения, развернутые на них, хорошо структурированы, просты в управлении и могут быть масштабированы вверх или вниз по мере необходимости. Принципы способствуют четкому разделению проблем, облегчая обновление и поддержание платформы и приложения, работающие на ней. Это приводит к повышению гибкости, снижению риска и повышению общей устойчивости платформы и экосистемы программного обеспечения, которую она поддерживает.
Адаптация двенадцати факторов для современных архитектур требует тщательного рассмотрения контейнеризации, оркестровки и без серверов. Тем не менее, основные принципы ясности, модульности и обслуживания остаются весьма актуальными.
Лучшие практики для балансировки инноваций с долговечностью
Достижение баланса между инновациями и долговечностью требует сочетания технических практик и культурных сдвигов:
- Принятие мышления платформы: Определите свою строку стоимости в DIY по сравнению с стандартизированными и общими службами/повторным использованием компонентов и API. Тщательно рассмотрим, какие области процесса разработки программного обеспечения являются уникальными отличиями, которые требуют пользовательских решений, а какие могут извлечь выгоду из стандартизированных платформ и общих услуг.
- Автоматизированное тестирование и CI/CD: Комплексное автоматическое тестирование и конвейеры CI/CD обеспечивают качество кода и позволяют быстро итерацию без устойчивости.
- Прогрессивный рефакторинг: Вместо того, чтобы проводить массовые переписывания, принимайте стратегию прогрессивного рефакторирования. Непрерывно улучшать кодовую базу с небольшими, управляемыми приращениями, устранение технического долга и улучшая обслуживание с течением времени.
- Культура разработчиков: Содействовать культуре, которая ценит вдумчивое принятие решений по поводу быстрых исправлений, не мешая творчеству и производительности. Поощряйте разработчиков рассмотреть долгосрочные последствия своего кода и расставить приоритеты в области обслуживания наряду с доставкой функций.
- Открытые стандарты и совместимость: Придерживание открытия стандартов и проектирование для совместимости снижает блокировку поставщиков и гарантирует, что программное обеспечение может адаптироваться к будущим изменениям в технологии.
Итог
Устойчивое разработка программного обеспечения — это не просто техническая дисциплина; Это мышление. Это требует приверженности строительным системам, которые являются не только функциональными, но и обслуживаемыми, масштабируемыми и адаптируемыми. Принимая эти принципы и практики, разработчики и организации могут создавать программное обеспечение, которое обеспечивает ценность в долгосрочной перспективе, уравновешивая необходимость инноваций с императивом долголетия.
Сосредоточьтесь на создании культуры, которая ценит качество и обслуживание, и инвестируйте в инструменты и процессы, которые поддерживают устойчивое разработку программного обеспечения. Работать на платформе для масштаба и устойчивости. Долгосрочные выгоды-снижение затрат, повышение гибкости и повышение удовлетворенности пользователей-намного перевешивают первоначальные инвестиции.
Чтобы узнать больше о Kubernetes и Облачной нативной экосистеме, присоединяйтесь к нам в Kubecon + CloudNativecon Europe в Лондоне 1-4 апреля. Команда Хероку будет там. Посетите нас на нашем стенде, чтобы узнать больше о нашем вкладе в двенадцать факторных сообществ, и о том, как Heroku может дать возможность вашей команде создавать устойчивые приложения для нативных облаков. Узнайте больше здесь.
Облачный фонд Cloud Computing Foundation (CNCF) проводит критические компоненты глобальной технологической инфраструктуры, включая Kubernetes, Prometheus и Angoy. CNCF является нейтральным домом для сотрудничества, объединяющий ведущих разработчиков отрасли, конечных пользователей и поставщиков. Узнайте больше последних из CNCF Trending Stories YouTube.com/ThenewStack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Бетти Джунод — директор по маркетингу и старший вице -президент Heroku. Бетти ранее занимала руководящие должности маркетинга в VMware, Docker, Solo.io и является стратегическим консультантом по технологическим стартапам. Она любит тусоваться на перекрестке … Подробнее от Бетти Джунод