Re[24]: dotnet vs java 2016-2020
От: Cyberax Марс  
Дата: 12.04.16 07:55
Оценка: :)
Здравствуйте, Sinclair, Вы писали:

C>>Например, в сильно безопасных сетях ключи синхронизируются путём втыкания "флешки" с защитой от записи.

S>Так из флешки или через LDAP?
Из обоих. И ещё из rsync, git'а и других источников. Всё полностью ортогонально, в отличие от.

C>>А Докер как раз и построен на конструктивных описаниях. См.: Dockerfile.

S>Не, докер построен на image. А dockerfile — это один из 2х способов построения image.
Нет, докер построен на Dockerfile, а изображение является лишь его побочным артефактом.

В частности, изображение идентифицируется хэшэм всех строк Dockerfile'а, которые выполнены для получения этого изображения. Т.е. если у меня есть Dockerfile:
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y nginx

То ему будут соответствовать 3 образа:
ubuntu:14.04 + apt-get update
ubuntu:14.04 + apt-get update + apt-get install -y curl
ubuntu:14.04 + apt-get update + apt-get install -y curl + apt-get install -y nginx


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

Понятно, что образ можно построить и руками (это же просто файл!), ну или снять дочерний snapshot работающего образа, но это уже детали.

S>В винде есть ндцать способов построения того, чего нужно. Вы же не думаете, что та же МС разворачивает свои рабочие станции при наёме сотрудников вручную?

У нас работают сбёгшие оттуда сотрудники, так что я знаю.

S>Я затрудняюсь найти какую-нибудь особенность конфигурации винды, которую ну никак-никак нельзя заскриптовать через PowerShell.

Я уже предложил задачу — взять ЧИСТЫЙ образ Винда и на него поставить SQL-сервер (можно Postgres или MySQL), а потом запустить там простенький web-сайт. Без перезагрузок и с временем на установку не более 2-3 минут.

В качестве базы предлагаю использовать образ с Amazon AWS.
Sapienti sat!
Re[25]: dotnet vs java 2016-2020
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.04.16 08:50
Оценка:
Здравствуйте, Cyberax, Вы писали:

S>>Я затрудняюсь найти какую-нибудь особенность конфигурации винды, которую ну никак-никак нельзя заскриптовать через PowerShell.

C>Я уже предложил задачу — взять ЧИСТЫЙ образ Винда и на него поставить SQL-сервер (можно Postgres или MySQL), а потом запустить там простенький web-сайт. Без перезагрузок и с временем на установку не более 2-3 минут.
C>В качестве базы предлагаю использовать образ с Amazon AWS.
По-прежнему не понимаю, что может помешать развернуть postgres или MySQL copy-деплойментом, а "простенький веб-сайт" запустить при помощи powershell.
К примеру, мы наше веб-приложение в ИИС разворачиваем при помоши setup.ps1, который делает всю нужную работу. Включая регистрацию боевого SSL сертификата на фронтнете и генерацию self-signed для бэкнета.
И включая развёртывание / апгрейд базы на MS SQL. Мы могли бы туда включить и подготовку винды (в частности, включение нужных фич IIS и установку SQL Server), если бы была гарантия установки на чистую машину.
Мы, к сожалению, на такую роскошь рассчитывать не можем, и вынуждены писать скрипт осторожно, ибо хрен его знает, что там ещё наконфигурили перед нашим запуском.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[26]: dotnet vs java 2016-2020
От: Cyberax Марс  
Дата: 12.04.16 09:09
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>В качестве базы предлагаю использовать образ с Amazon AWS.

S>По-прежнему не понимаю, что может помешать развернуть postgres или MySQL copy-деплойментом, а "простенький веб-сайт" запустить при помощи powershell.
Ну так а кто копию-то изначально создаёт? Понятно, что образ копированием даже и тренированная обезьяна может запустить.

S>К примеру, мы наше веб-приложение в ИИС разворачиваем при помоши setup.ps1, который делает всю нужную работу. Включая регистрацию боевого SSL сертификата на фронтнете и генерацию self-signed для бэкнета.

А у нас ещё оно добавляется в балансировщики загрузки, прописывает alert'ы во внешней мониторилке, запускает burn-in тесты от ещё одного сервиса, и при этом закидывает логи в третью систему.

Потом всё это ещё умножить на примерно 30 зон доступности.

Это чтоб понятнее масштаб был.

У Гугла всё ещё круче, кстати.

S>И включая развёртывание / апгрейд базы на MS SQL. Мы могли бы туда включить и подготовку винды (в частности, включение нужных фич IIS и установку SQL Server), если бы была гарантия установки на чистую машину.

У вас таки коробочных продукт для установки на одни-два сервера, а не крупномасштабная система. Совсем другие проблемы и задачи.
Sapienti sat!
Re[27]: dotnet vs java 2016-2020
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.04.16 10:32
Оценка: 3 (1) +2
Здравствуйте, Cyberax, Вы писали:
S>>По-прежнему не понимаю, что может помешать развернуть postgres или MySQL copy-деплойментом, а "простенький веб-сайт" запустить при помощи powershell.
C>Ну так а кто копию-то изначально создаёт? Понятно, что образ копированием даже и тренированная обезьяна может запустить.
В смысле "кто"? Разработчики MySQL, вестимо. http://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html — в чём вопрос-то?

S>>К примеру, мы наше веб-приложение в ИИС разворачиваем при помоши setup.ps1, который делает всю нужную работу. Включая регистрацию боевого SSL сертификата на фронтнете и генерацию self-signed для бэкнета.

C>А у нас ещё оно добавляется в балансировщики загрузки, прописывает alert'ы во внешней мониторилке, запускает burn-in тесты от ещё одного сервиса, и при этом закидывает логи в третью систему.
Итого ещё 4 строки powershell, я правильно понял проблему?
C>Потом всё это ещё умножить на примерно 30 зон доступности.
То есть запускаем скрипт в цикле. Я правильно понял проблему?
C>Это чтоб понятнее масштаб был.
C>У Гугла всё ещё круче, кстати.
S>>И включая развёртывание / апгрейд базы на MS SQL. Мы могли бы туда включить и подготовку винды (в частности, включение нужных фич IIS и установку SQL Server), если бы была гарантия установки на чистую машину.
C>У вас таки коробочных продукт для установки на одни-два сервера, а не крупномасштабная система. Совсем другие проблемы и задачи.
Конечно. На мой взгляд, наши задачи и проблемы — гораздо сложнее. Просто потому, что мы не можем полагаться на то, что система разворачивается с контролируемого нами же имаджа.

Вот мне, скажем, понятно, как задеплоить приложение в IIS. Вот это всё — копирование, создание пула, регистрация виртуального сайта, навешивание биндингов, импорт сертификатов. Конфигурирование фич IIS, которые из коробки могут стоять или не стоять. Выбор версии .Net framework для работы приложения.

А вот, скажем, как то же самое сделать под апач я х.з. С учётом хотя бы того, что весь линукс — это "зато я у себя могу навертеть как мне удобно". И даже при ручном деплойменте начинаются квесты в стиле "как понять, какая из трёх копий Апача является активной" и "семь нестандартных способов расположить postgres на файлухе так, чтобы он всё ещё работал".

Понятно, что когда имадж — наш, то вопросов типа "а не отобрал ли админ права на запись в темп у анонимуса" как бы не возникают.
Запустить один и тот же скрипт на 10000 копий одного и того же енвайронмента вы мне сейчас преподносите как челлендж века? Смешно.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[28]: dotnet vs java 2016-2020
От: Cyberax Марс  
Дата: 12.04.16 18:04
Оценка: :)
Здравствуйте, Sinclair, Вы писали:

C>>Ну так а кто копию-то изначально создаёт? Понятно, что образ копированием даже и тренированная обезьяна может запустить.

S>В смысле "кто"? Разработчики MySQL, вестимо. http://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html — в чём вопрос-то?
Ок. Я скачал образ. Как мне запустить кластер с автоматическим масштабированием в режиме репликации? Я попробовал перетащить файл на консоль Autoscaling'а, но оно почему-то выдаёт мне ошибку.

C>>А у нас ещё оно добавляется в балансировщики загрузки, прописывает alert'ы во внешней мониторилке, запускает burn-in тесты от ещё одного сервиса, и при этом закидывает логи в третью систему.

S>Итого ещё 4 строки powershell, я правильно понял проблему?
Нет, не правильно.

C>>У вас таки коробочных продукт для установки на одни-два сервера, а не крупномасштабная система. Совсем другие проблемы и задачи.

S>Конечно. На мой взгляд, наши задачи и проблемы — гораздо сложнее. Просто потому, что мы не можем полагаться на то, что система разворачивается с контролируемого нами же имаджа.
Вот только это становится совершенно ненужно. Нафиг бегать с бубном вокруг сервера, который настраивался админом Васей три года назад и не имеет никакой документации? Если я могу тупо взять и синтезировать нужный мне сервер за пару минут и запустить готовый образ на виртуалк[е|ах].

S>Запустить один и тот же скрипт на 10000 копий одного и того же енвайронмента вы мне сейчас преподносите как челлендж века? Смешно.

Нет, challenge'ем является создание этого изображения с чистой машины и управление ими.
Sapienti sat!
Re[29]: dotnet vs java 2016-2020
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.04.16 07:06
Оценка: 1 (1) +3
Здравствуйте, Cyberax, Вы писали:
C>Ок. Я скачал образ. Как мне запустить кластер с автоматическим масштабированием в режиме репликации?
Наверное, надо почитать маны. Автоматическое масштабирование — это, наверное, добавление ноды в кластер по мере необходимости? Ну так почитайте инструкцию производителя, добавьте в скрипт развёртывания мускула команды по добавлению его в существующий кластер

C>Я попробовал перетащить файл на консоль Autoscaling'а, но оно почему-то выдаёт мне ошибку.

Это набор слов. Я его не понимаю.

S>>Итого ещё 4 строки powershell, я правильно понял проблему?

C>Нет, не правильно.
Тогда поясните.

C>Вот только это становится совершенно ненужно. Нафиг бегать с бубном вокруг сервера, который настраивался админом Васей три года назад и не имеет никакой документации? Если я могу тупо взять и синтезировать нужный мне сервер за пару минут и запустить готовый образ на виртуалк[е|ах].

Ещё раз: вы живёте в тепличных условиях. В них и с виндой и с линуксом жить примерно одинаково комфортно. А вот разработчикам коробочного софта приходится мириться с тем, что целевое окружение изменчиво. И даже в этом случае развёртывание под винду вполне себе скриптуется — если вместо мантр читать документацию.

C>Нет, challenge'ем является создание этого изображения с чистой машины и управление ими.

Вы пока что так и не объяснили, что вам мешает скопировать файлы и настроить всё так, как вам надо.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[30]: dotnet vs java 2016-2020
От: Cyberax Марс  
Дата: 13.04.16 19:01
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>Ок. Я скачал образ. Как мне запустить кластер с автоматическим масштабированием в режиме репликации?

S>Наверное, надо почитать маны. Автоматическое масштабирование — это, наверное, добавление ноды в кластер по мере необходимости? Ну так почитайте инструкцию производителя, добавьте в скрипт развёртывания мускула команды по добавлению его в существующий кластер
Ну так а можно увидеть такой скрипт?

C>>Я попробовал перетащить файл на консоль Autoscaling'а, но оно почему-то выдаёт мне ошибку.

S>Это набор слов. Я его не понимаю.
Ну вот у меня есть консоль. Она позволяет запустить чистый образ Windows Server и передать ему 16 килобайт данных инициализационного скрипта. Как мне сделать так, чтобы он ещё установил MSSQL и т.д.?

C>>Вот только это становится совершенно ненужно. Нафиг бегать с бубном вокруг сервера, который настраивался админом Васей три года назад и не имеет никакой документации? Если я могу тупо взять и синтезировать нужный мне сервер за пару минут и запустить готовый образ на виртуалк[е|ах].

S>Ещё раз: вы живёте в тепличных условиях.
Ничуть. Мы просто перестаём жить в помойке непонятно как установленных и поддерживаемых систем и переходим на системы, которые определены с помощью кода.

Лет через 10 и винда до этого дойдёт.

C>>Нет, challenge'ем является создание этого изображения с чистой машины и управление ими.

S>Вы пока что так и не объяснили, что вам мешает скопировать файлы и настроить всё так, как вам надо.
Ну так а нафиг вам продукт по установке? Это же просто надо скопировать файл и прописать ключи в реестре.
Sapienti sat!
Re[31]: dotnet vs java 2016-2020
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 13.04.16 19:47
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>>>Я попробовал перетащить файл на консоль Autoscaling'а, но оно почему-то выдаёт мне ошибку.

S>>Это набор слов. Я его не понимаю.
C>Ну вот у меня есть консоль. Она позволяет запустить чистый образ Windows Server и передать ему 16 килобайт данных инициализационного скрипта. Как мне сделать так, чтобы он ещё установил MSSQL и т.д.?

Образ подготовить заранее, где mssql уже есть ?

C>>>Нет, challenge'ем является создание этого изображения с чистой машины и управление ими.

S>>Вы пока что так и не объяснили, что вам мешает скопировать файлы и настроить всё так, как вам надо.
C>Ну так а нафиг вам продукт по установке? Это же просто надо скопировать файл и прописать ключи в реестре.

Смотря что ставить. Если сайт, то это копирование. А вот старые приложения надо инсталировать с большим трудом.
Re[32]: dotnet vs java 2016-2020
От: Cyberax Марс  
Дата: 13.04.16 20:44
Оценка:
Здравствуйте, Ikemefula, Вы писали:

C>>Ну вот у меня есть консоль. Она позволяет запустить чистый образ Windows Server и передать ему 16 килобайт данных инициализационного скрипта. Как мне сделать так, чтобы он ещё установил MSSQL и т.д.?

I>Образ подготовить заранее, где mssql уже есть ?
Нельзя. Так как это требует ручного труда, который никак не документируется и не может быть гарантировано воспроизведён.

S>>>Вы пока что так и не объяснили, что вам мешает скопировать файлы и настроить всё так, как вам надо.

C>>Ну так а нафиг вам продукт по установке? Это же просто надо скопировать файл и прописать ключи в реестре.
I>Смотря что ставить. Если сайт, то это копирование. А вот старые приложения надо инсталировать с большим трудом.
О том и речь. Если не понимать в чём вообще проблема, то всё просто.
Sapienti sat!
Re[31]: dotnet vs java 2016-2020
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.04.16 05:28
Оценка: +3
Здравствуйте, Cyberax, Вы писали:
C>Ну так а можно увидеть такой скрипт?
Нет, потому что я не специалист по настройке кластеров на MySQL.

C>Ну вот у меня есть консоль. Она позволяет запустить чистый образ Windows Server и передать ему 16 килобайт данных инициализационного скрипта. Как мне сделать так, чтобы он ещё установил MSSQL и т.д.?

Прочитать https://msdn.microsoft.com/en-us/library/ms144259.aspx и подготовить правильную команду по развёртыванию SQL server так, как вам нужно.
Про и т.д. — то же самое. Вы по прежнему не обозначили ни одной проблемы.

C>Ничуть. Мы просто перестаём жить в помойке непонятно как установленных и поддерживаемых систем и переходим на системы, которые определены с помощью кода.

C>Лет через 10 и винда до этого дойдёт.
Вы не понимаете сути проблемы. Винда до "этого" уже дошла достаточно давно. А по факту линукс системы как раз и есть "непонятно как установленные и поддерживаемые".

S>>Вы пока что так и не объяснили, что вам мешает скопировать файлы и настроить всё так, как вам надо.

C>Ну так а нафиг вам продукт по установке? Это же просто надо скопировать файл и прописать ключи в реестре.
В простых случаях — да. И если мне этого достаточно, то я не погнушаюсь написать инсталлятор на .cmd. Я вам уже объяснил, что в нашем случае "продукт по установке" — это скрипт на PowerShell.
Если вас оскорбляет MSI — то не переживайте, меня он тоже оскорбляет.
Но сам по себе он никак не мешает "конструктивному развёртыванию из командной строки", т.к. у всех инсталляторов есть режим unattended installation.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[32]: dotnet vs java 2016-2020
От: Cyberax Марс  
Дата: 14.04.16 06:07
Оценка: :))) :)
Здравствуйте, Sinclair, Вы писали:

C>>Ну вот у меня есть консоль. Она позволяет запустить чистый образ Windows Server и передать ему 16 килобайт данных инициализационного скрипта. Как мне сделать так, чтобы он ещё установил MSSQL и т.д.?

S>Прочитать https://msdn.microsoft.com/en-us/library/ms144259.aspx и подготовить правильную команду по развёртыванию SQL server так, как вам нужно.
Ещё раз — КАК конкретно это "правильную команду" написать? Откуда она возьмёт нужные данные (типа паролей пользователей, адресов endpoint'ов и т.д.)?

Далее, если даже каким-то чудом система установилась — как редактировать конфигурацию? Что если часть конфигурационных данных недоступна вплоть до момента запуска сервиса?

А если нужно брать конфигурацию в рантайме, то как бы сделать так, чтобы сервис был отказоустойчивым?

После запуска, как объяснить веб-серверу куда соединяться к БД, которую тоже запустили?

C>>Лет через 10 и винда до этого дойдёт.

S>Вы не понимаете сути проблемы. Винда до "этого" уже дошла достаточно давно.
Нет. Винда абсолютно неподдерживаема. Это прошлое тысячелетие.

S>А по факту линукс системы как раз и есть "непонятно как установленные и поддерживаемые".

Я уже привёл пример в этой теме как сейчас современные системы делают.

Приведу ещё раз. Создание кластера веб серверов: http://kubernetes.io/docs/hellonode/ — в буквальном смысле десяток строк кода нужно для того, чтобы запустить простую масштабируемую систему.

И это не просто пример на упрощённой инфраструктуре для начинающих, Гугл на абсолютно таком же Kubernetes запускает сервисы из тысяч серверов и десятков ролей.

C>>Ну так а нафиг вам продукт по установке? Это же просто надо скопировать файл и прописать ключи в реестре.

S>В простых случаях — да. И если мне этого достаточно, то я не погнушаюсь написать инсталлятор на .cmd. Я вам уже объяснил, что в нашем случае "продукт по установке" — это скрипт на PowerShell.
Ну так и весь Линукс — это всего-то исполнитель скриптов и программ. Какие проблемы-то?

S>Но сам по себе он никак не мешает "конструктивному развёртыванию из командной строки", т.к. у всех инсталляторов есть режим unattended installation.

За слова unattended installation — сразу следует удар по лицу ногой. Оно просто не работает. Не может работать система, которая абсолютно непрозрачна и непредсказуема.
Sapienti sat!
Re[33]: dotnet vs java 2016-2020
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.04.16 08:24
Оценка: +5
Здравствуйте, Cyberax, Вы писали:

C>>>Ну вот у меня есть консоль. Она позволяет запустить чистый образ Windows Server и передать ему 16 килобайт данных инициализационного скрипта. Как мне сделать так, чтобы он ещё установил MSSQL и т.д.?

S>>Прочитать https://msdn.microsoft.com/en-us/library/ms144259.aspx и подготовить правильную команду по развёртыванию SQL server так, как вам нужно.
C>Ещё раз — КАК конкретно это "правильную команду" написать? Откуда она возьмёт нужные данные (типа паролей пользователей, адресов endpoint'ов и т.д.)?
Простите, вы по профессии кто?
Как написать команду:
1. Читаем документацию к нужной вам подсистеме. Например, SQL Server.
2. Выбираем нужные нам параметры.
3. Пишем скрипт с использованием этих параметров.
Ну, то есть также, как вообще пишется любая программа. Что такого волшебного, скажем, даёт развёртывание MySQL на Linux, чего нельзя сделать на винде?
Данные команде вы передадите любым удобным вам способом. Можете захардкодить в скрипте, можете заставить скрипт считывать данные из конфигурационного файла в удобном вам формате. Всё в ваших руках.

C>Далее, если даже каким-то чудом система установилась — как редактировать конфигурацию?

При помощи PowerShell коммандлетов для редактирования конфигурации.
RTFM: https://msdn.microsoft.com/en-us/library/mt683368.aspx
C>Что если часть конфигурационных данных недоступна вплоть до момента запуска сервиса?
Не очень понятно, чем момент развёртывания сервиса отличается от момента запуска сервиса. Если у вас данных для развёртывания не хватает вплоть до момента t2, то не надо выполнять развёртывание в момент t1ю
C>А если нужно брать конфигурацию в рантайме, то как бы сделать так, чтобы сервис был отказоустойчивым?
Сервис чего? Сервис конфигураций? Или вы хотите от меня консультаций по HA&LB конфигурации MS SQL Server? Это — только за деньги

C>После запуска, как объяснить веб-серверу куда соединяться к БД, которую тоже запустили?

.
Обычно веб-приложение берёт строку подключения из конфигурационного файла. (Веб-сервер ни к какой БД, естественно, не подключается).
Поэтому скрипт по развёртыванию веб-приложения прописывает connection string в web.config и полетели. А в Linux что, это как-то по-другому делается?

S>>А по факту линукс системы как раз и есть "непонятно как установленные и поддерживаемые".

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

C>Приведу ещё раз. Создание кластера веб серверов: http://kubernetes.io/docs/hellonode/ — в буквальном смысле десяток строк кода нужно для того, чтобы запустить простую масштабируемую систему.

Не вижу ничего интересного. Это же не платформа, а приложение. Для винды есть Azure, где для hello world можно получить примерно то же, вид сбоку. Только вместо команд кубернетеса будет Windows Azure Powershell.
S>>В простых случаях — да. И если мне этого достаточно, то я не погнушаюсь написать инсталлятор на .cmd. Я вам уже объяснил, что в нашем случае "продукт по установке" — это скрипт на PowerShell.
C>Ну так и весь Линукс — это всего-то исполнитель скриптов и программ. Какие проблемы-то?
Проблемы — очень простые. В линуксе нет заранее предусмотренных способов жить с "неизвестной" конфигурацией. Простейшие вещи — узнать, установлена ли какая-то фича IIS на винде можно документированным способом. Узнать программно, какая версия PHP активирована в апаче, программным способом в общем случае нельзя.

S>>Но сам по себе он никак не мешает "конструктивному развёртыванию из командной строки", т.к. у всех инсталляторов есть режим unattended installation.

C>За слова unattended installation — сразу следует удар по лицу ногой. Оно просто не работает. Не может работать система, которая абсолютно непрозрачна и непредсказуема.
Вы в таком тоне со своей женой разговаривайте. А на профессиональных форумах принято какими-то профессиональными аргументами оперировать.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[33]: dotnet vs java 2016-2020
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 14.04.16 10:31
Оценка:
Здравствуйте, Cyberax, Вы писали:

I>>Образ подготовить заранее, где mssql уже есть ?

C>Нельзя. Так как это требует ручного труда, который никак не документируется и не может быть гарантировано воспроизведён.

Это делается один раз. Воспроизводить не надо — берешь и юзаешь образ везде, где надо.
Для чего надо воспроизводить создание образа — не ясно
Re[17]: dotnet vs java 2016-2020
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.04.16 12:07
Оценка: 2 (1) +8
Здравствуйте, ·, Вы писали:
·>Скажем, как при наличии linq переименовать колонку в таблице или поменять тип? Как вообще поддерживать миграцию бд?
Вы, конечно же, хотели спросить "как при отсутствии linq переименовать колонку в таблице или поменять тип".
Потому что с linq как раз всё тривиально. Вот переименовали мы Orders.Id в Orders.OrderID — поправили это в одном месте модели.
Рефакторинг автоматически найдёт нам все 7 миллионов linq-запросов, где мы обращаемся к Orders.Id. Независимо от формы обращения — ну там типа from orders o where o.id = orderID. И переименует всё как надо.
А с текстовым SQL придётся каждую SQL-строку вычитывать глазами, потому что orders.id там от product.id или orderline.id никаким грепом не отличишь.
И даже после вычитывания остаётся только молиться, что за углом не притаился код склейки строк, который дописывает напалм типа "top " + string(pageSize)+ sql + " AND ID > @lastID order by ID desc"
Ну да, тесты вас конечно же "спасут". В том смысле, что после этого переименования упадёт 6 миллионов тест кейзов, и вы проведёте прекрасные выходные в офисе, разгребая все эти простыни unexpected syntax near id).
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Отредактировано 12.03.2020 5:22 Sinclair . Предыдущая версия .
Re[34]: dotnet vs java 2016-2020
От: Cyberax Марс  
Дата: 14.04.16 17:21
Оценка:
Здравствуйте, Ikemefula, Вы писали:

C>>Нельзя. Так как это требует ручного труда, который никак не документируется и не может быть гарантировано воспроизведён.

I>Это делается один раз. Воспроизводить не надо — берешь и юзаешь образ везде, где надо.
Нет, это не делается один раз. Хотя бы из-за необходимости установки обновлений.
Sapienti sat!
Re[34]: dotnet vs java 2016-2020
От: Cyberax Марс  
Дата: 14.04.16 17:49
Оценка: -3
Здравствуйте, Sinclair, Вы писали:

C>>Ещё раз — КАК конкретно это "правильную команду" написать? Откуда она возьмёт нужные данные (типа паролей пользователей, адресов endpoint'ов и т.д.)?

S>Простите, вы по профессии кто?
Так, погулять вышел.

S>Ну, то есть также, как вообще пишется любая программа. Что такого волшебного, скажем, даёт развёртывание MySQL на Linux, чего нельзя сделать на винде?

Надёжность.

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

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

Ещё через лет 10 таких итеративных шагов можно дойти до Kubernetes.

C>>Что если часть конфигурационных данных недоступна вплоть до момента запуска сервиса?

S>Не очень понятно, чем момент развёртывания сервиса отличается от момента запуска сервиса. Если у вас данных для развёртывания не хватает вплоть до момента t2, то не надо выполнять развёртывание в момент t1ю
Очень просто — я не знаю какие пользователи нужны на сервере до момента запуска. Или на каком интерфейсе слушать соединения.

C>>А если нужно брать конфигурацию в рантайме, то как бы сделать так, чтобы сервис был отказоустойчивым?

S>Сервис чего? Сервис конфигураций?
Да, сервис конфигурации. Просто конфигурации.

S>Поэтому скрипт по развёртыванию веб-приложения прописывает connection string в web.config и полетели. А в Linux что, это как-то по-другому делается?

Я запускаю образ, который "один раз сделал админ". Откуда он возьмёт строку и как её он пропишет в web.config? Как обнаружить сбой, если вдруг строка не берётся?

S>Ещё раз: вы привели пример какой-то тепличной конфигурации. Вы бы мне ещё рассказали про то, как пишутся прошивки для брелков сигнализации, где заранее известна не только версия платформы, а ещё и все параметры аппаратуры на руках.

Нет, это не тепличный пример. Это пример как надо делать правильно.

То что Винда настаивает на сексе в гамаке — её личные половые проблемы.

C>>Приведу ещё раз. Создание кластера веб серверов: http://kubernetes.io/docs/hellonode/ — в буквальном смысле десяток строк кода нужно для того, чтобы запустить простую масштабируемую систему.

S>Не вижу ничего интересного. Это же не платформа, а приложение. Для винды есть Azure, где для hello world можно получить примерно то же, вид сбоку. Только вместо команд кубернетеса будет Windows Azure Powershell.
Прочитай, пожалуйста, что делает Kubernetes.

Azure, кстати, его и рекомендует.

C>>Ну так и весь Линукс — это всего-то исполнитель скриптов и программ. Какие проблемы-то?

S>Проблемы — очень простые. В линуксе нет заранее предусмотренных способов жить с "неизвестной" конфигурацией.
Есть. Но не нужны.

S>Простейшие вещи — узнать, установлена ли какая-то фича IIS на винде можно документированным способом. Узнать программно, какая версия PHP активирована в апаче, программным способом в общем случае нельзя.

Можно ( https://github.com/hercules-team/augeas/blob/master/lenses/httpd.aug ). Но зачем?

C>>За слова unattended installation — сразу следует удар по лицу ногой. Оно просто не работает. Не может работать система, которая абсолютно непрозрачна и непредсказуема.

S>Вы в таком тоне со своей женой разговаривайте. А на профессиональных форумах принято какими-то профессиональными аргументами оперировать.
Объясняю — unattended не может работать в принципе, никогда. Это скриптованные ответы на вопросы инсталлятора, так что они абсолютно непрозрачны и неотлаживаемы. Ошибки могут молчаливо игнорироваться, а цикл тестирования занимает часто часы. Я уж не говорю про то, что об установке за пару десятков секунд при запуске машины — можно забыть.
Sapienti sat!
Re[2]: dotnet vs java 2016-2020
От: Submitter  
Дата: 25.04.16 05:53
Оценка: -1
Здравствуйте, Arsen.Shnurkov, Вы писали:

AS>Обратите внимание на раздел "ищу работу". Работу ищут в основном C#-программисты. У Java-программистов проблем нет.


Может это потому, что C#-программистов в разы больше чем Java-программистов?
Re[3]: dotnet vs java 2016-2020
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 25.04.16 05:59
Оценка:
Здравствуйте, Submitter, Вы писали:

AS>>Обратите внимание на раздел "ищу работу". Работу ищут в основном C#-программисты. У Java-программистов проблем нет.


S>Может это потому, что C#-программистов в разы больше чем Java-программистов?


Ой. А ссылочку можно?
The God is real, unless declared integer.
Re[4]: dotnet vs java 2016-2020
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 25.04.16 10:16
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, Submitter, Вы писали:


AS>>>Обратите внимание на раздел "ищу работу". Работу ищут в основном C#-программисты. У Java-программистов проблем нет.


S>>Может это потому, что C#-программистов в разы больше чем Java-программистов?


N>Ой. А ссылочку можно?


Ссылочку вряд ли найду, но где-то читал, что в Индии обучают примерно миллон программистов в год, большинство из которых на C#.

За пределами индии перекос в другую сторону.
Re[12]: dotnet vs java 2016-2020
От: Alexander Polyakov  
Дата: 15.07.16 23:23
Оценка: -1 :))) :)))
IT>благодаря ему возможность работы с БД с использованием фактически типизированного SQL.
Это не так -- LINQ это другой язык. Отличия от SQL сильное -- даже модели данных разные. SQL-ем всё равно приходится пользоваться. Поэтому вместо одного языка приходится пользоваться двумя. Например, если SQL в строках, то его можно скопировать куда угодно -- выполнить, послать по почте человеку, который с SQL знаком, а с C# нет, и т.п.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.