Рубрики
Uncategorized

Программное обеспечение не является экономикой масштаба

Как монолитные приложения означают добавление людей, снижает производительность. Tagged с WebDev, DevOps, BestPractices, Economics.

Недавно я увидел твит из Devopsdays, который абсолютно взорвал мой разум, потому что он сказал, что то, что я знал, было совершенно верным, но никогда не выразил слова.

«В программном обеспечении нет экономии масштаба» Программное обеспечение становится хуже, чем больше вы его связываете Так что разбивайте все как можно меньше @Devopsdaysdfw @adrianco

Я хочу объяснить, что это значит и почему это правда почти для всего программного обеспечения.

Что такое экономика масштаба?

Адам Смит был первым, кто описывал, как экономия масштабных общества в своей книге 18 -го века «« Количество наций ». Либертарианцы любят говорить о богатстве народов, но, похоже, никто из них не удосужился прочитать его или изучать, как это сформировало правительственную политику после ее освобождения (включая вдохновляющие правительства внедрить новые налоги.) Есть даже целый раздел о том, как правительства являются единственными, кто имеет квалификацию, чтобы защитить и кормить бедных, так что.

Если мы задаем вопрос: «Как продвинутая экономика производит так много швейных булавок?» Мы могли бы предположить, что ответ — «Автоматизация», но Смит писал в 1700 -х годах, и тогда было не очень много роботов.

Смит заметил, что если люди сидят за вербовкой и делают булавки сами, они могут заработать несколько сотен в день. Однако, если четыре человека составляют булавки вместе; Один разрезание провода, другой, образующий штифты, один заточка и один упаковочный штифт, команда производит в десять раз больше штифтов. _ Этот пример демонстрирует, что, когда группа людей работает над производством, с правильной организацией, как эффективность, так и производительность труда повышают тангенциально. Сборка, автоматизация и отслеживание производства Kanban — все это конкретные примеры экономики масштаба.

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

Большие, плохие проекты

Когда программные проекты становятся большими, они становятся медленными.

Фред Брук — классический текст Мифический мужчина-месяц: эссе о разработке программного обеспечения Все еще есть уроки для нас. В 1975 году текст описал, как программные проекты становятся больше, более сложными, и удалось снять чудеса, такие как стоимость вдвое больше и заканчиваться на год поздно.

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

Известный веб -разработчик Мартин Фаулер был ранним сторонником того, что стало современным решением три десятилетия спустя; Микросервисы Анкет

Кроме того, я отмечу, что Мифический человек-месяц полон сексистского языка и является основным источником мифа «10x инженера», который был полностью опровергнут. Если вы ищете реальные и текущие знания об управлении инженерными командами, я рекомендую Camille Fournier’s Путь менеджера: руководство для технических лидеров, ориентирующихся на рост и изменения.

Триумф Лилипута: микросервисы

Хотя определение не совсем согласованно, в целом «микросервисы» означает наличие отдельных приложений с четкими договорными обязанностями друг для друга. Подумайте об этом, как о ремонте дома: если ваш кондиционер перерывает, вы знаете, что это как -то связано с системой кондиционирования воздуха. Если ваш туалет не будет промыть, вы можете погрузить его или вызвать сантехника. Если ваш кондиционер ломается, вы не называете сантехника. Точно так же, если ваша раковина будет резервирована, вы бы не позвонили подрядчику. С микросервисами все разбивается на более мелкие, гранулированные сегменты, так что, когда часть не работает правильно, легко найти сломанный код и, что важно, Команда это может это исправить.

Операции являются частью решения

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

Другая, вероятно, более значительная потребность в поддержке OPS небольшого программного обеспечения заключается в том, как уполномоченные разработчики запускают код, который они пишут. Если весь код работает на монолите вместо микросервисов, какой доступ каждый разработчик должен запускать новый код? Скорее всего, потребуется несколько дней, чтобы новый код был одобрен и развернут, в результате чего разработчики полагаются на полуэтранную «постановку» или «тестовые» среды, где важные работы не похожи на производство.

https://thenewstack.io/honeycombs-charity-majors-go-ahead-test-in-production/

Таким образом, программное обеспечение не является экономикой масштаба

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

Хероку — один из способов разбить монолит

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

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

Хероку — отличный способ начать путь. Облегчая развернуть новое приложение, Heroku также заставляет разработчиков документировать зависимости своего контейнера. Результатом является микросервис, который также портативный.

Хероку проклял тропу Определение современной архитектуры приложения Анкет Heroku отделяет ваше приложение от вашей рабочей нагрузки и облегчает следование передовым методам надежности и переносимости, как описано в 12-факжное приложение Анкет

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

Оригинал: «https://dev.to/heroku/software-is-not-an-economy-of-scale-pek»