LINUX.ORG.RU

Enterprise vs. non-enterprise

 , nfr


0

5

Всем привет. Как поживаешь, /development/ ЛОРа? Давно не писал, но мое внимание привлекла одна проблема (присущая, вообще говоря, не только ЛОРу, но на ЛОРе проявляющаяся ярче всего). Речь пойдет о пресловутом «enterprise» (иногда в юмористическом написании «enterpriZe», «ынтырпрайз» и так далее).

В том, что «enterprise» стал на ЛОРе эдаким жупелом, смоляным чучелом — ничего странного и страшного нет. У неспециалистов это слово в первую очередь ассоциируется с корпоративным, капиталистическим, пиджачно-галстучно-кофеварочным. А отрицание корпоративного — очень в духе современной молодежи, чей природный нонконформизм требует реализации. Но это не есть предмет сегодняшней беседы; оставим юношеский нонконформизм социологам и психологам.

Проблема в том, что сам технический термин «enterprise-технологии» часто трактуется неверно. Распространено множество дилетантских интерпретаций (например, «ынтерпрайз ≡ copy-paste» и так далее). Как человеку, не один десяток лет проведшему в пресловутом «enteprise», мне хотелось бы расставить точки над «i».

Итак, ПО и технологии уровня предприятия («enterprise software») характеризуются в первую очередь повышенными нефункциональными требованиями (non-functional requirements, NFR). Что это означает? NFR относятся к работе системы, а не к её специфическому поведению (которое описывается функциональными требованиями). Рассмотрим типичные NFR:

  • производительность (performance);
  • масштабируемость (scalability);
  • доступность (availability);
  • надежность (reliability);
  • безопасность (security);
  • расширяемость (extensibility);
  • управляемость кода (maintainability);
  • управляемость системы (manageability)

и так далее. По этим признакам определенные технологии и языки программирования могут быть отнесены к «enterprise» или «non-enterprise». Например:

  • Java-технологии специально разрабатывались как enterprise и максимально удовлетворяют перечисленным NFR;
  • у языка Си отличная производительность, но отсутствует ООП, отсюда проблемы с абстракциями, управляемостью и расширяемостью. Плюс прямая работа с памятью и проблемы безопасности;
  • C++ предоставляет ООП, но не решает проблем с безопасностью;
  • Python и Ruby обладают хорошим ООП, но, не имея качественных JIT-компиляторов, сильно проигрывают по производительности. См. историю с Твиттером и Ruby vs. Scala;
  • Haskell имеет немасштабирующийся GC; функциональный подход не дает таких возможностей для decoupling'а и модуляризации, как ООП. Следствие — неуправляемый и плохо расширяемый код;
  • Лиспы имеют целый букет проблем, начиная от производительности, проходя через масштабируемость и заканчивая управляемостью.

Разумеется, такое деление «enterprise / non-enterprise» в известной степени условно. Например, можно и на Java нагородить неуправляемой, немасштабируемой и дырявой лапши. С другой стороны, наверное, можно и в рамках лиспа придерживаться строгой модуляризации, а коммерческие реализации дадут хорошую производительность и масштабируемость. Однако, такой подход не принят в лисп-среде (там приняты шестиуровневые квазицитирования), и подобный код будет считаться «non-lispy crap».

Более подробно эту тему я собираюсь осветить в своем блоге. А засим желаю всем быть точными в терминах, а технологии выбирать по их объективным достоинствам/недостаткам, а не руководствуясь нонконформизмом или модными трендами.

С пламенным приветом,
ваш Кукинштейн


Ответ на: комментарий от anonymous

То есть вы учёный?

Я не претендую на столь высокое звание :) Я себя позиционирую скорее как научно-технического работника.

Государственный служащий с небольшой зарплатой?

Молодой человек, пора избавляться от (пост)советских стереотипов. CERN — международная организация с хорошим финансированием от нескольких десятков государств. Рекомендую ознакомиться с западной контрактной системой, по которой работают сотрудники типа вашего покорного слуги. Уверяю вас, никто из здешних обитателей на зарплату не жалуется. ;) Да и госслужащие, кстати, тоже.

Поэтому вы шабашите на стороне уроками по Java?

Зачем вы лжете? Я подрабатываю консультациями по Java EE и более общим вопросам (архитектура, бизнес-аналитика). Я занимаюсь этим даже не ради дополнительного заработка (который, справедливости ради, весьма вкусен), а потому, что Java EE — это вторая полусфера моей компетенции. И я не хочу утрачивать квалификацию как специалист в этой области — положение обязывает, знаете ли. Впрягся — тяни.

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

Я уже занимаюсь любимым делом в ЦЕРНе и получаю за это очень солидное вознаграждение. Нью-Йорк и Лондон мне не нравятся своей пестротой и разношерстностью, а здесь тихий патриархальный уголок.

Kuka
() автор топика
Ответ на: комментарий от anonymous

Кстати, а где бложик-то? Я б подписалсо.

Увы, work in progress. Следите за событиями, я постараюсь анонсировать публикации здесь. Уверяю, вас ждет много интересного. ;) В частности, давно готовящийся труд «Мифы и легенды о лиспе», беспристрастный обзор хваленого Allegro и многое другое.

Kuka
() автор топика
Ответ на: комментарий от metadeu5

Вы действительно хотите сравнить между собой компилятор Форта и Хаскелля между собой или ВМ Форта и JVM? Стандартную библиотеку Ruby и Си?

А что не так?

Вы же понимаете, что в каждом подобном отдельном сравнении вся инфраструктура Джавы и в десятку финалистов не войдет?

Почему? Вычислительная и I/O-производительность JVM приближается к Си; стандартная библиотека богаче, чем у Си/Си++, Ruby, Python, Lisp и Haskell, вместе взятых; по возможностям написания модульного кода Java оставляет далеко позади процедурные и (чисто) функциональные языки. Что не так-то?

Kuka
() автор топика
Ответ на: комментарий от alienclaster

вбрасывает... из психушечки... тонны баззвордов

Молодой человек! Попробуйте поговорить с папуасами Новой Гвинеи о квантовой физике. Услышите в свой адрес гораздо больше нелестных эпитетов, из которых «сумасшедший» и «непонятное жужжание» будут самыми мягкими.

Что-то мне подсказывает, что это как раз ваш случай. ;)

Kuka
() автор топика
Ответ на: комментарий от dizza

Во-первых в интерпрайзе не всегда завышенные NFR. Интерпрайз-интерпрайзу рознь.

Согласен; но NFR в enterprise всегда существенны. В этом и отличие.

Во-вторых, почему для создания хайлоада, где еще суровее NFR, интерпрайза с глуькин нос?
где еще суровее NFR

Это не совсем так. В хайлоаде суровее лишь некоторые NFR, такие как performance, capacity, throughput, scalability. Поэтому и инструменты используются специфические: Hadoop, NoSQL-базы и так далее. Всем по большей части наплевать на сложные объектно-ориентированные модели, вычисление нетривиальные бизнес-правил, выполнение комплексных запросов и так далее.

В enterprise же важен гораздо более широкий спектр NFR — несущественных среди них нет.

Kuka
() автор топика
Ответ на: комментарий от dizza

А вот ООП в задачах модуляризации в голом виде потерпело фиаско.

Да что ви мне такое гойворите! А мужики-то и не знают. ;)

Kuka
() автор топика
Ответ на: комментарий от Kuka

Попробуйте поговорить с папуасами Новой Гвинеи о квантовой физике

Здесь с тобой примерно так и общаются, только до квантовой физики не дошли: тебе пока и простые вещи малопонятны.

alienclaster
()
Ответ на: комментарий от Kuka

В enterprise же важен гораздо более широкий спектр NFR — несущественных среди них нет.

Слова типа «более» портят попытку расставить точки над «i». Увы.

dizza
()
Последнее исправление: dizza (всего исправлений: 1)
Ответ на: комментарий от Kuka

Всем по большей части наплевать на сложные объектно-ориентированные модели, вычисление нетривиальные бизнес-правил, выполнение комплексных запросов и так далее.

И да, вот тут ты палишся. Всякие бизнес-правила и так далее это как раз из области FR.

dizza
()

Вот более годное определение: «Enterprise applications are about the display, manipulation, and storage of large amounts of often complex data and the support or automation of business processes with that data» (Мартин Фаулер).

dizza
()
Ответ на: комментарий от Kuka

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

anonymous
()
Ответ на: комментарий от Kuka

Потому что первая же пара попавшихся продуктов — JBoss, GlassFish

Вы разницу между технологией созданной вердором и конечным продуктом понимаете?

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

Фактически, вы игнорируете переусложнённость этой части индустрии. Возьмите в качестве примера продукты для дистанционного обучения от IBM, «веб порталы» которые мы видели все двухтысячные на ibm.com, sun.com, oracle.com. Медленные, неповоротливые, игнорирующие удобство пользователя.

А ERP продукты, для инсталляции и настройки которых требуются миллионы долларов?

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

ihanick
()

Какой жоский тред :)

Сколько боли в жопках защитничков своего Любивного ЯП :)

Дополню Кукштейна.

Используется ваш любимый ЯП в ентерпрайзе, используется!
Просто на фоне кода Java/C#/C++ их доля не видна. Нельзя сказать что вклад кода на «любимом ЯП» ничтожен, но в то же время, он явно не самый важный в общем контексте.

d_Artagnan
()
Ответ на: комментарий от Kuka

Вычислительная и I/O-производительность JVM приближается к Си

Не предергивайте с java
Вычисляторы пишутся обычно на плюсах, и уже они дергаются из java, .net, pythom и т.п.ссс

Вычислительная и I/O-производительность JVM приближается к Си

И, да, Вы упорно опускаете основного конкурента же - ,NET. с ним, конечно, выпячивать «преимущества Java перед» всякими Ruby/c++/Haskell ГООРАЗДО сложнее ;)

d_Artagnan
()
Ответ на: комментарий от Kuka

по возможностям написания модульного кода Java оставляет далеко позади процедурные и (чисто) функциональные языки. Что не так-то?

не так то, что тезисы надо подтверждать какими-либо аргументами. Можно указать конкретные возможности написания модульного кода в джаве, которых не хватает в ФП?

anonymous
()
Ответ на: комментарий от Kuka

дайте, пожалуйста, ссылку на ваш блог. То что у вас в профиле — не работает.

Bad_ptr ☕☕
()
Ответ на: комментарий от Kuka

Почему? Вычислительная и I/O-производительность JVM приближается к Си;

ну у хацкеля тоже

стандартная библиотека богаче, чем у Си/Си++, Ruby, Python, Lisp и Haskell, вместе взятых;

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

по возможностям написания модульного кода Java оставляет далеко позади процедурные и (чисто) функциональные языки. Что не так-то?

Был бы рад увидеть аргументированный ответ, желательно с примерами, в которых Haskell показывает лучшую модуляризацию, lower coupling и higher cohesion, чем Java.

примени пожалуйста свой аргумент к себе, и каких примеров тебе бы хотелось.

P.S. со следующей версии в хацкель будет параллельный и масштабирующийся ГЦ.

qnikst
()
Последнее исправление: qnikst (всего исправлений: 1)

Итак, ПО и технологии уровня предприятия («enterprise software») характеризуются в первую очередь повышенными нефункциональными требованиями (non-functional requirements, NFR)...

Две страницы срача, основанных на неполной информации и, соответственно, совершенно ложных предпосылках?

Подавляющее большинство предприятий - коммерческие. Т.е. прибыль - во главе угла. И все ваши FR и NFR режутся «как серпом по яйцам» условиями максимизации прибыли (часто - с помощью минимизации затрат) и минимизации времени внедрения (конкуренты не дремлют), плюс самая жуткая IT-страшилка «на все времена» - «легаси».

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

И с этой точки зрения enterprise интересен, как чистка Авгиевых конюшен. Да, он обеспечивает львиную долю вливаний в эту самую IT-сферу, и, таким образом, способствует её развитию. Даже jvm с версии 1.6 стала довольно приличной vm. Но сам по себе «enterprise» в лучшем случае тянет на «инженерию», в худшем - на обычную поломойку. Большинство - где-то между ними.

И судить о технических характеристиках инструмента по его «интерпрайзности» (читай - применимости) - всё равно что оценивать «средний интеллект» нации по её численности (китайцы - самые умные, больше остальных «двигают» науку и находятся на её острие? :))

yyk
()

fat+=1000;

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

Требования для ынтырпрайза:

- низкий порог вхождения

- большое кол-во специалистов на рынке труда

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

:)

sergej
()
Ответ на: комментарий от Kuka

Вообще-то, я сейчас работаю в CERN, в Швейцарии

что-то это место ну никак с ынтырпрайзом не ассоциируется

Harald
()

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

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

Программирование как искусство? Нет, не слышал.

no-such-file 👍👍👍👍👍
()
Ответ на: комментарий от yyk

Хорошее, годное описание.

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

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

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

ЗЫ. Работаю в инвести банке, это нечто среднее между компаниями первого и второго типа. Так что у нас тут вроде и интерпрайз, но апплкиейшен серверов и прочей шелухи нет. Только Java SE, только concurrency, только хардкор.

dizza
()

Enterpris'ы разные бывают. По мне, LHC вполне себе предприятие, если говорить о софте. Да, нет цели получения прибыли, но ограничения по бюджету есть. И что мы там видим? ROOT, GEANT и ко.

ebantrop
()
Ответ на: комментарий от anonymous

cast Bioreactor

Это всё равно что пригласить на партсобрание компартии, посвящённое победе коммунизма, алкаша-машиниста из разворованного полуразрушенного завода по соседству.

anonymous
()
Ответ на: комментарий от anonymous

Это который лиспер, торсионщик и инвольтатор в эгрегоры?

Нет, это местный богач Java разработчик. Поработал пару лет в enterprise, а затем купил три крупных отеля в Майями. Сейчас отошёл от дел, ездит по миру и жертвует миллионы на благотворительность.

anonymous
()
Ответ на: комментарий от anonymous

Нет, это местный богач Java разработчик. Поработал пару лет в enterprise, а затем купил три крупных отеля в Майями. Сейчас отошёл от дел, ездит по миру и жертвует миллионы на благотворительность.

Ах, вон оно что, месье! (понимающе кивает) да-да, Майами, благотворительность... Какой благородный дон, однако!

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

anonymous
()
Ответ на: комментарий от Kuka

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

При таких оговорках никакой язык вообще не должен «решать проблемы с X» - их решает специально обученный человек :) Архитектор/технолог. И все предыдущие построения про преимущества жабы - лесом :)

slackwarrior 😊😊😊
()
Ответ на: комментарий от Kuka

Shootout

Shootout на ЛОРе нельзя упоминать. Тут на первом месте - личная вера

vertexua
()
Ответ на: комментарий от DeVliegendeHollander

Да просто далеко не всех пускают и берут в этот самый «энтерпрайз»

ЧИВО? Нет, нет... LOLWUT? В «энтерпрайз» не берут, в энтерпрайзе остаются те, кто на большее не способны.

vertexua
()

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

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

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

Вы не понимаете, что руководство не знает что такое статическая типизация, выразительность и юнит-тестирование, а знает только про статистические показатели применения технологий X, Y, Z на рынках и кучу охуительных историй, испытанных на своем опыте или опыте коллег про разного рода технологических юродивых, пропогандистов и апостолов, проповедующих с интересами совершенно параллельными интересам компании.

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

anonymous
()
Ответ на: комментарий от Kuka

по возможностям написания модульного кода Java

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

vertexua
()
Ответ на: комментарий от dizza

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

Именно. И это наиболее правильное и адекватное что можно сделать в этой ситуации.

vertexua
()
Ответ на: комментарий от Kuka

Молодой человек, пора избавляться от (пост)советских стереотипов. CERN — международная организация с хорошим финансированием от нескольких десятков государств.

Не посоветуете, в каком направлении над собой работать, чтобы в столь рыбное место попасть?

BattleCoder
()
Ответ на: комментарий от BattleCoder

Не посоветуете, в каком направлении над собой работать, чтобы в столь рыбное место попасть?

Научиться пользоваться гуглом? https://ert.cern.ch/

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

ebantrop
()
Ответ на: комментарий от ebantrop

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

не ради конкретной цели интересуюсь, скорее из любопытства

BattleCoder
()
Ответ на: комментарий от BattleCoder

не ради конкретной цели интересуюсь, скорее из любопытства

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

ebantrop
()
Ответ на: комментарий от BattleCoder

А где - не скучно?

В лисп и хаскель-стартапах же. Очевидно же.

anonymous
()
Ответ на: комментарий от BattleCoder

А где - не скучно?

Много где, когда не надо строить завод для одного эксперимента. Клево когда есть свой проект.

ebantrop
()
Ответ на: комментарий от ebantrop

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

ymn
()
Ответ на: комментарий от BattleCoder

Не посоветуете, в каком направлении над собой работать, чтобы в столь рыбное место попасть?

Для начала искоренить жадные и вороватые совковские мыслишки про блат и «рыбные места».

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

Стань self-made man.

anonymous
()

Тут есть тонкий момент. Один мой друг однажды сказал мне:

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

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

dave
()
Ответ на: комментарий от Kuka

кастани пожалуйста как бложе запустишь, интересно посмотреть

ossnewcomer
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.