Как мы корпоративно от винды убегали

Так повелось, что в нашей компании основным языком для backend разработки был выбран C#. Мы, кстати, этим выбором всегда были довольны, а когда MS начали развивать платформу .net Core, стало еще интереснее, так как C# — это хорошо, но C# под Linux — еще лучше.


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


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


Поскольку мы разрабатываем enterprise, то вместе с нами должна была убежать под linux и сквозная windows аутентификация. Собственно это и стало побудителем к написанию статьи. Так как информация находилась весьма трудно, отдельными кусками, и общением со многими людьми, идея собрать все необходимое в одном месте и описать работающий вариант показалась неплохой.


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


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


Разберем наш Dockerfile. Базироваться будем на весьма компактном образе с alpine


FROM alpine:3.7

Далее затянем нужные пакеты, исходники nginx и требуемого модуля spnego-http-auth-nginx-module. В итоге получается примерно такая команда


ENV NGINX_VERSION 1.15.1

RUN set -ex \
  && apk add --no-cache \
    git \
    krb5 \
    krb5-dev \
    ca-certificates \
    libressl \
    pcre \
    zlib \
  && apk add --no-cache --virtual .build-deps \
    build-base \
    linux-headers \
    libressl-dev \
    pcre-dev \
    wget \
    zlib-dev \
  && cd /tmp \
  && wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \
  && tar xzf nginx-${NGINX_VERSION}.tar.gz \
  && git clone https://github.com/stnoonan/spnego-http-auth-nginx-module.git nginx-${NGINX_VERSION}/spnego-http-auth-nginx-module

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


Следующим набором команд соберем nginx и приберемся за собой, чтобы образ не распухал понапрасну


RUN cd /tmp/nginx-${NGINX_VERSION} \
  && ./configure \
    \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --pid-path=/var/run/nginx.pid \
    --lock-path=/var/run/nginx.lock \
    --user=nginx \
    --group=nginx \
    --with-threads \
    --with-file-aio \
    --with-http_ssl_module \
    --with-http_v2_module \
    --with-http_realip_module \
    --with-http_addition_module \
    --with-http_sub_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_auth_request_module \
    --with-http_random_index_module \
    --with-http_secure_link_module \
    --with-http_slice_module \
    --with-http_stub_status_module \
    --http-log-path=/var/log/nginx/access.log \
    --http-client-body-temp-path=/var/cache/nginx/client_temp \
    --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
    --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
    --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
    --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
    --with-mail \
    --with-mail_ssl_module \
    --with-stream \
    --with-stream_ssl_module \
    --with-stream_realip_module \
    --add-module=spnego-http-auth-nginx-module \
  && make -j$(getconf _NPROCESSORS_ONLN) \
  && make install \
  && sed -i -e 's/#access_log  logs\/access.log  main;/access_log \/dev\/stdout;/' -e 's/#error_log  logs\/error.log  notice;/error_log stderr notice;/' /etc/nginx/nginx.conf \
  && adduser -D nginx \
  && mkdir -p /var/cache/nginx \
  && apk del .build-deps \
  && rm -rf /tmp/*

И чтобы все это имело смысл, поднимем nginx


CMD ["nginx", "-g", "daemon off;"]

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


Для этого нужно найти администратора домена, мне с ним крайне повезло — парень оказался отзывчивым и сделал то о чем его попросили очень быстро. А сделать нужно следующее.
Допустим, у хостовой машины hostname — "host-linux", а ваш домен — "DOMAIN.LOCAL".
В домене надо завести машину с именем "host-linux" и создать учетку, к которой ее привяжем, например, "host-linux-user". Далее надо создать SPN и сгенерировать keytab файл, который нам будет нужен при поднятии контейнера.


У нас команда получилась примерно такая


C:\Windows\system32>ktpass -princ HTTP/HOST-LINUX.domain.local@DOMAIN.LOCAL -mapuser host-linux-user@DOMAIN.LOCAL -pass yourpassword -cryptoAll -ptype KRB5_NT_PRINCIPAL -out C:\Temp\web.keytab

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


http {
    #Whatever is there by default

    server {
        listen       80;
        server_name  localhost;

        #Here kerberos stuff starts
        auth_gss     on;
        auth_gss_realm DOMAIN.LOCAL;
        #Keytab file from the mounted folder
        auth_gss_keytab /home/spnego/config/web.keytab;
        auth_gss_service_name HTTP/HOST-LINUX.domain.local;
        auth_gss_allow_basic_fallback off;
        #Here kerberos stuff ends

        location / {
            root   html;
            index  index.html index.htm;
        }
#bla-bla-bla

Теперь, чтобы все завелось, надо при поднятии контейнера закинуть ему актуальный nginx.conf и скормить полученный web.keytab. Для этого воспользуемся магией docker-compose


version: "2"
services:
    nginx-spnego:
        image: fclmman/alpine-nginx-spnego
#опишем проброс портов. Например такой
        ports:
            - 80:80
            - 5010:5010
            - 443:443
            - 8001:8001
#примонтируем раздел с web.keytab, и закинем в контейнер наш конфиг
        volumes:
            - ./config:/home/spnego/config
            - ./config/nginx.conf:/etc/nginx/nginx.conf

Проследуем в директорию, где у нас лежит docker-compose.yml. В нашем случае, в той же папке должна быть директория ./config с файлами nginx.conf и web.keytab. Выполним команду


docker-compose -f ./docker-compose.yml  up -d

Контейнер поднялся и не умер. Это дает надежду на успех.


Откроем браузер на доменной виндовой машине.


В одной вкладке откроем chrome://net-internals/ и запишем запросы, которые у нас ходят. В другой вкладке откроем http://host-linux:80/. Вернемся в chrome://net-internals/ и посмотрим результаты.


#Видим что сервер потребовал negotiate
t= 3 [st= 3]        HTTP_TRANSACTION_READ_RESPONSE_HEADERS
                    --> HTTP/1.1 401 Unauthorized
                        Server: nginx/1.15.1
                        Date: Fri, 10 Aug 2018 14:15:54 GMT
                        Content-Type: text/html
                        Content-Length: 597
                        Connection: keep-alive
                        WWW-Authenticate: Negotiate

t= 4 [st= 4]        HTTP_TRANSACTION_SEND_REQUEST_HEADERS
                    --> GET / HTTP/1.1
                        Host: host-linux
                        Connection: keep-alive
                        Pragma: no-cache
                        Cache-Control: no-cache
                        Authorization: Negotiate #очень длинный набор букв
                        Upgrade-Insecure-Requests: 1
                        User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
                        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
                        Accept-Encoding: gzip, deflate
                        Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
t= 4 [st= 4]     -HTTP_TRANSACTION_SEND_REQUEST
t= 4 [st= 4]     +HTTP_TRANSACTION_READ_HEADERS  [dt=47]
t= 4 [st= 4]        HTTP_STREAM_PARSER_READ_HEADERS  [dt=47]
t=51 [st=51]        HTTP_TRANSACTION_READ_RESPONSE_HEADERS
                    --> HTTP/1.1 200 OK
                        Server: nginx/1.15.1
                        Date: Fri, 10 Aug 2018 14:15:54 GMT
                        Content-Type: text/html
                        Content-Length: 612
                        Last-Modified: Fri, 10 Aug 2018 12:21:36 GMT
                        Connection: keep-alive
                        WWW-Authenticate: Negotiate #Набор букв покороче
                        ETag: "5b6d8350-264"
                        Accept-Ranges: bytes

В результате видим, что операция прошла успешно и видим приветственный экран nginx.
Стоит сделать одно уточнение, работать будет все только по hostname, но насколько я понимаю это правильно, ибо kerberos мы привязывали как раз к нему.


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

Поделиться публикацией
Комментарии 69
    +7
    Это конечно понятно, что сейчас можно перейти с Windows на linux, без особых проблем, сам уже 1.5 года как для работы использую Linux mint, хотя 90% серверов заказчика на Windows server. Были конечно в первое время неудобства, но практически всему софту на windows нашел аналоги на Linux, Вопрос в другом, как разработчики пережили уход с Visual studio и что используют в качестве альтернативы? Я не разработчик, но знаю что по удобству у Visual studio нет аналогов среди IDE, я например сейчас использую для своего pet проекта (MEAN stack)Visual studio code для Linux, ну это скорее редактор с функциями IDE чем полноценная IDE.
      +2
      JetBrains Rider? Никогда не пользовался, но он существует
        +8
        Так и знал что напишите, продуктами от Jetbrains пользовался, webstorm, pycharm, inteliji IDEA, да очень хорошие редакторы, но Visual studio после них как космический корабль, все очень удобно и понятно, intelli sense опять же, ну и для разработки под windows, WPF, WF, ASP.NET аналогов студии просто нет
          0
          Не редакторы а IDE, извиняюсь 2 часа ночи, голова не варит.
            +7
            На вкус и цвет фломастеры конечно разные, но больше 2х лет не писал в Visual studio и не сказать, что забыл, как страшный сон, последние версии были почти ок, но совсем не скучаю. По удобству, стабильности, легковестности, intellisense, рефакторинг, анализатор кода, еще куча приятных мелочей, до intelij им далеко, а если не использовать Resharper, все было совсем плохо.
            Попробуйте посмотреть обучающие видео от intelij.
              +2
              Согласен с вами, у каждого разные предпочтения, я вот пользуюсь visual studio code очень удобный редактор, пробовал и sublime и atom, но VS code показался мне самым удобным и понятным для работы, мне для моих опытов и маленьких проектов с лихвой хватает функционала VS code.
                0

                Пробовал и Sublime, и Atom, и VS Code, и Brackets, и vim, и могучий Komodo IDE — в итоге остановился на Geany.

                  +1
                  +1 за Geany.
                  Минус у него только один: отлаживать низзя. А в VSCode можно.
                +1
                пока пишешь сам «на коленке» — всё отлично, к какой оболочке привык, та и работает. Но… когда нужно согласовывать работу команды, а это согласовывать с хранением версий, гонять удалённую отладку… собираем всё это в кучу — и видим, что для VS/TFS просто нет альтернативы.
                  0
                  «нет альтернативы» ровно до тех пор, пока все разработчики и таргеты на windows. Кроссплатформенность и студия очень не любят друг друга
                    –1
                    Не надо путать опять в сторону наколенки. Речь не о целевой платформе, а о работе командой. В которой не два человека.
                +1
                Уже как полгода перешёл на Rider с Visual Studio, да было тяжело, но сейчас, ни за что назад не вернусь. Все удобнее и быстрее.
                0
                Прекрасный редактор. Но средства отладки в Rider по сравнению c VS действительно не очень.
                0
                Смотря для какого языка. Для шарпа — возможно, для плюсов — не факт, KDevelop раньше был лучше и шустрее и умнее по интеллисенсу (особенно если код с бустом и всяким таким), сейчас CLion. Для хаскеля — вим с парой плагинов.
                  0
                  CLion на больших проектах(уровня в половину ue4 sdk) довольно жруч и тормозен. Студия + visual assist намного быстрее во всех аспектах рефакторинга под windows.
                  По интеллисенсу с секундомером не стоял, не знаю.
                    0
                    В последних релизах VS работу с C++ довольно неплохо подтянули.
                      0
                      Это может многое объяснить. VS для C++ последний раз я пробовал ну очень давно, для C# — лет пять назад, и тогда она подтормаживала на довольно простом проекте по сравнению с тем же KDevelop для плюсов (хотя плюсы парсить, мягко скажем, сложнее).
                    –1
                    VS + Recharpter. От этого ни куда не уйдешь, да и смысл?
                    Для маленьких мобильных приложений использовал Sublime, крайне рекомендую.
                      0
                      Monodevelop ещё
                        0
                        А разработчики могут и не уходить из под windows. Я сейчас разрабатываю под виндами, хостимся под CentOs. А насчет rider — так я его и под виндовс неплохо использую, для разработки api более чем хватает, resharper под капотом. Иногда фризится, но с каждой новой версией кажется что все становится лучше и лучше. А голая студия без resharper'а не очень радует. Некоторые совсем сильные парни пишут в vim, говорят там есть плагины со всем что может понадобиться. Но сам я не пробовал, для меня это перебор.
                          0
                          >>Некоторые совсем сильные парни пишут в vim, говорят там есть плагины со всем что может понадобиться.

                          Писать даже я могу в блокноте, даже в командной строке. И компилировать из под неё же. Сложности начинаются, когда нужно раскопать багу и поправить багу в мегатонне говнокода, доставшегося в наследство. Для этого нужны продвинутые возможности навигации по коду, статический анализатор (который, например, подскажет, что «override» забыли), и хорошие возможности для рефакторинга.
                            –3
                            А вы думаете, что vim не дает таких возможностей?
                              +3

                              Таких, как Visual Studio + Resharper — точно не даёт

                          0
                          +2
                          А пакет не проще собрать и потом ставить его в докере?
                            0
                            Когда дело касается alpine, то, как показывает практика, не проще.
                            +5

                            не то чтобы я придираюсь… но если потенциальный клиент сидит на винде с AD, пользуется виндовым же стэком ПО… то зачем городить огород? Только сэкономить на винсервере и поиграться с докером?
                            Не спорю, я вот тоже подумываю перенести WebApi (уже ранее портированное на Core) на линукс. Но у меня это просто сайт без заморочек, где полноценный винсервер ради просто хостинга .net — полный оверкилл.

                              +1

                              Для меня лично интересно было поиграться с докером. Для компании — совершить некоторое импортозамещение, так сказать

                                0

                                Про "импортозамещение" — это шутка такая? Если нет, то объясните, что именно было "замещено" с импортного на отечественное?

                                  +5
                                  С учётом новостей и веяний от Оракла, импортозамещение это не на «отечественное», а на «то, что не попадёт под санкции». Опенсорс очевидно не попадёт.
                                    +1
                                    Не очевидно, что весь open source не попадет, GPL 2 и старше позволяет накладывать ограничения на отдельные страны. Например, лицензия на Fedora запрещает ее установку в Республике Крым.
                                      +2
                                      Но при этом не запрещает распространение. Миррор в Москве прекрасно отдаёт всё что нужно куда нужно.

                                      Главная сила опенсорса в том, что сырцы открыты. Может не быть сервисных контрактов, но их с лёгкостью заменяют сервисные контракты другой организации. Open governance, libre software — основные требования.
                                        +1
                                        Тут статья была по этому поводу:
                                        Fedora Linux запрещен к распространению на территории Крыма (и временно поломали DNS)

                                        В итоге:
                                        UPD_1
                                        amarao внес очень существенный комментарий:
                                        Я прочитал текст лицензии. Там сказано " you acknowledge that you understand all of the following:". Никаких запретов не вижу. Более того, там же написано: «Fedora software in source code and binary code form are publicly available and are not subject to the EAR in accordance with §742.15(b)»
                                        А работа штатовских мирроров GPL'ем никак не регулируется. Синкайтесь с европейских или русских.

                                        Коммент
                                      +6

                                      Это не шутка. Условно говоря Винду могут запретить продавать нашим нефтяным компаниям, или оборонным, или банкам. Понятно что это никого не остановит, но Линукс никто запретить не сможет. Ибо можно сделать свой болгенос и обозвать его отечественной разработкой. Я понимаю что это смешно, но выглядит примерно так.

                                        0
                                        Open Source != бесплатное.
                                        Половина содержимого дистрибутивов либо доступны для бесплатного использования только в некоммерческих целях, либо под вирусной лицензией. Почитайте что это (вирусная лицензия) на досуге. Если же вам плевать, и вы никаких исходников открывать не собираетесь, и платить за подписку не хотите, то какая вам разница что пиратить? Что Windows, хоть Linux…
                                          +2
                                          Чушь говорите.

                                          Берёте дистрибутив debian, всё, что находится в секции main соответствует критериям свободного ПО.
                                            –2
                                            Может и соответствует. Только хватит ли main?
                                            Кстати, под какой именно лицензией оно там?
                                              +2
                                              Хватит. В contrib и non-free попадает несвободный софт, который можно распространять (например, там долгое время валялсь ораклавая java, адобовый flash и т.д.).

                                              В секции main находится софт под разными лицензиями, однако, все лицензии соответствуют DFSG (debian free software guidelines): www.debian.org/social_contract.html#guidelines

                                              И там ясно написано:
                                              The license of a Debian component may not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license may not require a royalty or other fee for such sale.

                                              * The license must not discriminate against any person or group of persons.
                                              * The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
                                                0
                                                В contrib все же попадает только свободный софт, но например зависящий от пакетов из non-free или несвободных ассетов. Например там лежат все соответствующие движки игр.
                                                  0
                                                  Да, contrib — это свободный софт с несвободными зависимостями.
                                            0

                                            Страшные времена, даже в лицензиях вирусы.


                                            Это вообще-то их преимущество, а не недостаток. Нет никаких проблем (кроме ментальных) открыть код доработок в отечественном дистрибутиве, если таковые будут.

                                            0
                                            Могут запретить продавать, но не использовать.
                                            По факту в оборонных организациях все поголовно пользуются пиратской виндой.
                                              0
                                              Ну вот RedHat нас забанил. И казалось-бы, фиг с ним, есть центось и вообще целый лес всяких линуксов. Но есть разные ребята, типа SAP, которые ни за какие деньги никакой поддержки не гарантируют, если их софт крутится не на RHEL. Вот такой вот энтерпрайз. =\
                                          +1
                                          У нас например контора богатая, но деньги на покупку лицензий выделяют раз в год (бюджет составляется на год), соответственно они все посчитаны и лицензию на windows server каждый раз из IT-отдела надо выпрашивать (обоснование зачем и т.п.). А дополнительный сервер с линуксом они разворачивают по щелчку пальцев, выходит всем удобнее.
                                            0
                                            Извини за любопытство, но что вы там такое регулярно разворачиваете? Что бывает нужно развернуть и что сложно обосновать?
                                            Я постоянно, каждый день пишу код, что-то тестирую, что-то дебажу, но за последние больше чем 2 года я поставил ровно одну копию 2008R2. Т.е. даже не я, а мы (мой «маленький отдел»).
                                              0
                                              Про «все время» разговора не было. За год две-три системы добавляются/переделываются. И у конторы есть традиция разводить различные приложения по разным серверам, чтобы они по минимуму друг на друга влияли, т.к. случается бывает и хайлоад и ddos.
                                              Обосновать-то не сложно, но если этого не нужно, то ведь так проще, верно?
                                              К тому же, бОльшая часть продакшена и так на linux, соответственно наворачивать еще и windows сегмент не очень удобно — зоопарк получается. В общем все в комплексе.
                                          +4

                                          Вместо игр с "уборкой за собой" правильнее использовать multi stage build.

                                            0
                                            спасибо, хорошее замечание.
                                              0
                                              Полностью поддерживаю AlDemion
                                              Единственное, что я пока не осилил — сборку пакета для alpine, чтобы не копировать файлы между стадиями, а сразу ставить пакетом (как для debian/ubuntu с помощью checkinstall/fpm)
                                            +1
                                            Помимо всего прочего, в сторону хостинга наших приложений под Linux нас подтолкнул Docker, так как очень хотелось приобщиться к молодежному течению контейнеризации всего что только возможно.

                                            в виндовс же тоже есть контейнеры, докер и т.п.?

                                              +1
                                              Есть, но как говорят те, кто с ними сталкивался, работают они пока что не так же хорошо, как под linux.
                                              +1
                                              Статичный кейтаб это простой костыль для тестового окружения, а в продакте лучше бы его регулярно обновлять, как это происходит в виндах (вместе с паролем машины, раз в 30 дней, емнип). Я для этого ввожу сервер в домен с помощью SSSD и даю приложению права на системный кейтаб. По требованиям безопасности у нас учетки машин в AD, не меняющие пароль и билеты kerberos, блокируются.
                                              Вот только упихать в Докер SSSD будет немного сложнее :)
                                                0
                                                Я правильно понимаю, что в этом случае вогнать в домен хостовую машину будет недостаточно, так как права нужно выделить именно приложению, которое находится в контейнере?
                                                  0
                                                  Я не силен в контейнерах, но докер позволяет замапить хостовый каталог внутрь контейнера. Но давать доступ из контейнера в хостовый /etc — тоже немного костыль. В идеале — по крону копировать нужные билеты (ktutil rkt/wkt) из системного кейтаба в отдельный и забрасывать в контейнер. Таким образом можно секьюрно разделить сервисы в разных контейнерах с абсолютно разными SPN.
                                                +1
                                                >… очень хотелось приобщиться к молодежному течению…
                                                ==Поиграться за счёт работодателя (в рабочее время).

                                                Очень весело живёте, господа: вас не терзают вопросами типа «когда будет готово!???», «почему опять регрешены полезли, и баги по 15 раз переоткрываются?», похоже нет дебага на неделю с разбором дампов, нет ежедневных отчётов. Подозреваю, что даже окна на улицу в офисе есть, и в них иногда солнце светит.
                                                Если же я ошибаюсь, и вокруг такой же трэш как и везде, но вы сидите и занимаетесь тем, что лично вам интересно, то возникает вопрос: сколько вы получаете?
                                                  +6
                                                  Обычно те, кто «играются» получают больше тех, кто пашет. Потому что у вторых кругозор шире и спектр доступных решений больше. Плюс любопытство, которое всяко сильнее «надо».
                                                    +1
                                                    Мой опыт подсказывает, что наоборот. Пока у меня была возможность играться, я едва-едва сводил концы с концами. Только потом захотелось своё жильё и немного больше уверенности в завтрашнем дне — необходимость впахивать стала осознанной. А неудачная попытка уйти в свободное плаванье показала, что «свобода» может быть хуже рабства.
                                                      +2
                                                      Вы под свободным плаванием подразумеваете фриланс. Я говорю про искренний интерес к технологиям вместе с желанием «поиграться с новым».
                                                        0
                                                        От нового зависит. За агду и идрис не особо платят :(
                                                          0
                                                          www.adga.ca/en/search/job

                                                          www.facebook.com/agdawa/posts/-job-opportunity-have-you-ever-thought-you-would-like-to-share-your-industry-kno/1861700653868768

                                                          Причём я уверен, что этим людям платят больше, чем php-веб-дизайнерам.
                                                            0
                                                            Что-то мне кажется, что это немножко другое, а не это.
                                                              0
                                                              Окей, я плохо искал. Ищу лучше, хотя мне и сложно (не мой круг интересов). Я точно знаю, что SE на Coq ищут и довольно серьёзно. Вообще, с знанием type theory не найти работу — это надо постараться.

                                                              А я говорил про другое — если человек возится с кучей всего интересного по своему интересу, то он легко находит области, где его интересы применимы. Наоборот, если человек пашет на неинтересной работе хорошо, ему накидывают ещё больше неинтересной работы пахать.
                                                    +2
                                                    Речь не идет о том, чтобы все время играться с новыми технологиями просто потому что захотелось и не писать полезный код. В данном случае «поиграться» и «надо» совпали. Естественно, все было согласовано с начальством. Начальство нам говорит: «Надо двигаться в сторону opensource». Мы говорим: «Ок, но нужно время чтобы получить новые знания и провести некоторые эксперименты». Мы обосновали зачем нам docker, зачем net core, и какие преимущества мы получим при разработке и при доставке приложений.
                                                      +2
                                                      почему опять регрешены полезли, и баги по 15 раз переоткрываются?

                                                      А собственно говоря действительно, почему? Если баги систематически переоткрываются — это нестандартная ситуация и требует решения.

                                                      +2
                                                      Я так и не понял посыла статьи. Для меня она выглядит так — «Мы услышали, что докер это стильно/модно/молодежно и научились собирать и запускать nginx в докере». Или я просто не заметил скрытый смысл?

                                                      В чем конкретно заключается уход от винды? Какие преимущества вы получили/какие проблемы решили благодаря уходу? С какими проблемами столкнулись?
                                                        0

                                                        Возможно, заголовок был выбран неудачно. На самом деле, статья описывает лишь небольшой кусок работы, связанной с переходом на деплой под linux. Преимущества в том что мы получаем свободную среду для деплоя так как перешли на core, и не приколочены к винде и iis, получили удобство при развертывании сред разработчиков, тестовых и продуктивных сред, так как стали использовать docker, столкнулись с тем что надо было оставить сквозную аутентификацию, чтобы пользователи, которые все равно сидят под windows не заметили подмены.

                                                        +2
                                                        От окошек в крупном жирном энтерпрайзе почти не убежать. В основном самые крупные заказчики на пространстве СНГ платят не за ОС, а за сервис. Из своего опыта могу сказать, что затраты на разного рода поддержку (за полный life cycle) примерно вдвое превышают стоимость самих систем.
                                                        Да и к любому открытому ПО тоже подходят осторожно. Например выбирая между RedHat с максимально дорогим пакетом поддержки и чем-то бесплатным типа CentOS почти всегда не в пользу последней (только если там не сервис на который всем пофиг).
                                                        И да еще есть причина с точки зрения менеджмента по которой постоянно стараются (по крайней мере в СНГ) раздувать OPEX.
                                                          0
                                                          Мы как раз пилим крупный жирный энтерпрайз и никакие новые проекты не делаются для десктопа, все под web, поэтому со стороны разработки и внедрения мы вполне можем убежать от окошек. Пользователи, ясное дело, продолжать работать под windows. Насчет ПО — чистая правда. Postgre — только postgre PRO, linux — RHEL или OracleLinux. Наличие платной поддержки очень приветствуется. Ну не могут большие и сильные компании взять и не отвалить кому-то денег.
                                                            +1
                                                            Все глобально проще. В портфеле любой компании вендора есть +9000 пользователей, и ваша проблема скорее всего уже решена.

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

                                                        Самое читаемое