Так повелось, что в нашей компании основным языком для 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)


  1. Anshi85
    12.08.2018 22:28
    +3

    Это конечно понятно, что сейчас можно перейти с 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.


    1. Areso
      12.08.2018 22:31

      JetBrains Rider? Никогда не пользовался, но он существует


      1. Anshi85
        12.08.2018 22:36
        +3

        Так и знал что напишите, продуктами от Jetbrains пользовался, webstorm, pycharm, inteliji IDEA, да очень хорошие редакторы, но Visual studio после них как космический корабль, все очень удобно и понятно, intelli sense опять же, ну и для разработки под windows, WPF, WF, ASP.NET аналогов студии просто нет


        1. Anshi85
          12.08.2018 22:41

          Не редакторы а IDE, извиняюсь 2 часа ночи, голова не варит.


        1. Iqorek
          13.08.2018 00:11
          +3

          На вкус и цвет фломастеры конечно разные, но больше 2х лет не писал в Visual studio и не сказать, что забыл, как страшный сон, последние версии были почти ок, но совсем не скучаю. По удобству, стабильности, легковестности, intellisense, рефакторинг, анализатор кода, еще куча приятных мелочей, до intelij им далеко, а если не использовать Resharper, все было совсем плохо.
          Попробуйте посмотреть обучающие видео от intelij.


          1. Anshi85
            13.08.2018 06:46

            Согласен с вами, у каждого разные предпочтения, я вот пользуюсь visual studio code очень удобный редактор, пробовал и sublime и atom, но VS code показался мне самым удобным и понятным для работы, мне для моих опытов и маленьких проектов с лихвой хватает функционала VS code.


            1. shoorick
              13.08.2018 11:20

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


              1. mgremlin
                13.08.2018 17:35
                +1

                +1 за Geany.
                Минус у него только один: отлаживать низзя. А в VSCode можно.


          1. Bedal
            13.08.2018 17:15
            +2

            пока пишешь сам «на коленке» — всё отлично, к какой оболочке привык, та и работает. Но… когда нужно согласовывать работу команды, а это согласовывать с хранением версий, гонять удалённую отладку… собираем всё это в кучу — и видим, что для VS/TFS просто нет альтернативы.


            1. Antervis
              14.08.2018 00:08

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


              1. Bedal
                14.08.2018 08:15

                Не надо путать опять в сторону наколенки. Речь не о целевой платформе, а о работе командой. В которой не два человека.


        1. vodun
          13.08.2018 13:28
          +1

          Уже как полгода перешёл на Rider с Visual Studio, да было тяжело, но сейчас, ни за что назад не вернусь. Все удобнее и быстрее.


      1. DistortNeo
        13.08.2018 21:31

        Прекрасный редактор. Но средства отладки в Rider по сравнению c VS действительно не очень.


    1. 0xd34df00d
      13.08.2018 03:42

      Смотря для какого языка. Для шарпа — возможно, для плюсов — не факт, KDevelop раньше был лучше и шустрее и умнее по интеллисенсу (особенно если код с бустом и всяким таким), сейчас CLion. Для хаскеля — вим с парой плагинов.


      1. Kobalt_x
        13.08.2018 16:46

        CLion на больших проектах(уровня в половину ue4 sdk) довольно жруч и тормозен. Студия + visual assist намного быстрее во всех аспектах рефакторинга под windows.
        По интеллисенсу с секундомером не стоял, не знаю.


      1. DistortNeo
        13.08.2018 21:32

        В последних релизах VS работу с C++ довольно неплохо подтянули.


        1. 0xd34df00d
          13.08.2018 23:44

          Это может многое объяснить. VS для C++ последний раз я пробовал ну очень давно, для C# — лет пять назад, и тогда она подтормаживала на довольно простом проекте по сравнению с тем же KDevelop для плюсов (хотя плюсы парсить, мягко скажем, сложнее).


    1. firedragon
      13.08.2018 07:49

      VS + Recharpter. От этого ни куда не уйдешь, да и смысл?
      Для маленьких мобильных приложений использовал Sublime, крайне рекомендую.


    1. usrsse2
      13.08.2018 09:52

      Monodevelop ещё


    1. Vahman Автор
      13.08.2018 11:27

      А разработчики могут и не уходить из под windows. Я сейчас разрабатываю под виндами, хостимся под CentOs. А насчет rider — так я его и под виндовс неплохо использую, для разработки api более чем хватает, resharper под капотом. Иногда фризится, но с каждой новой версией кажется что все становится лучше и лучше. А голая студия без resharper'а не очень радует. Некоторые совсем сильные парни пишут в vim, говорят там есть плагины со всем что может понадобиться. Но сам я не пробовал, для меня это перебор.


      1. scumware
        13.08.2018 13:16

        >>Некоторые совсем сильные парни пишут в vim, говорят там есть плагины со всем что может понадобиться.

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


        1. Wedmer
          13.08.2018 13:43

          А вы думаете, что vim не дает таких возможностей?


          1. DarkWanderer
            13.08.2018 14:30

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



  1. rt3879439
    12.08.2018 22:28
    +2

    А пакет не проще собрать и потом ставить его в докере?


    1. onegreyonewhite
      13.08.2018 00:32

      Когда дело касается alpine, то, как показывает практика, не проще.


  1. Marwin
    12.08.2018 23:37
    +1

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


    1. Vahman Автор
      13.08.2018 06:49

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


      1. bugdesigner
        13.08.2018 07:07

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


        1. Ndochp
          13.08.2018 07:34
          +1

          С учётом новостей и веяний от Оракла, импортозамещение это не на «отечественное», а на «то, что не попадёт под санкции». Опенсорс очевидно не попадёт.


          1. KY3EH
            13.08.2018 11:50

            Не очевидно, что весь open source не попадет, GPL 2 и старше позволяет накладывать ограничения на отдельные страны. Например, лицензия на Fedora запрещает ее установку в Республике Крым.


            1. amarao
              13.08.2018 13:11

              Но при этом не запрещает распространение. Миррор в Москве прекрасно отдаёт всё что нужно куда нужно.

              Главная сила опенсорса в том, что сырцы открыты. Может не быть сервисных контрактов, но их с лёгкостью заменяют сервисные контракты другой организации. Open governance, libre software — основные требования.


            1. asbgrin
              13.08.2018 14:32

              Тут статья была по этому поводу:
              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'ем никак не регулируется. Синкайтесь с европейских или русских.

              Коммент


        1. Vahman Автор
          13.08.2018 07:37

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


          1. scumware
            13.08.2018 12:56

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


            1. amarao
              13.08.2018 13:12

              Чушь говорите.

              Берёте дистрибутив debian, всё, что находится в секции main соответствует критериям свободного ПО.


              1. scumware
                13.08.2018 13:18

                Может и соответствует. Только хватит ли main?
                Кстати, под какой именно лицензией оно там?


                1. amarao
                  13.08.2018 13:44

                  Хватит. В 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.


                  1. SXX
                    13.08.2018 18:23

                    В contrib все же попадает только свободный софт, но например зависящий от пакетов из non-free или несвободных ассетов. Например там лежат все соответствующие движки игр.


                    1. amarao
                      13.08.2018 19:32

                      Да, contrib — это свободный софт с несвободными зависимостями.


            1. Hardcoin
              13.08.2018 18:21

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


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


          1. DistortNeo
            13.08.2018 21:34

            Могут запретить продавать, но не использовать.
            По факту в оборонных организациях все поголовно пользуются пиратской виндой.


          1. Insane11
            13.08.2018 23:11

            Ну вот RedHat нас забанил. И казалось-бы, фиг с ним, есть центось и вообще целый лес всяких линуксов. Но есть разные ребята, типа SAP, которые ни за какие деньги никакой поддержки не гарантируют, если их софт крутится не на RHEL. Вот такой вот энтерпрайз. =\


    1. unclejocker
      13.08.2018 09:23
      +1

      У нас например контора богатая, но деньги на покупку лицензий выделяют раз в год (бюджет составляется на год), соответственно они все посчитаны и лицензию на windows server каждый раз из IT-отдела надо выпрашивать (обоснование зачем и т.п.). А дополнительный сервер с линуксом они разворачивают по щелчку пальцев, выходит всем удобнее.


      1. scumware
        13.08.2018 13:04

        Извини за любопытство, но что вы там такое регулярно разворачиваете? Что бывает нужно развернуть и что сложно обосновать?
        Я постоянно, каждый день пишу код, что-то тестирую, что-то дебажу, но за последние больше чем 2 года я поставил ровно одну копию 2008R2. Т.е. даже не я, а мы (мой «маленький отдел»).


        1. unclejocker
          13.08.2018 13:14

          Про «все время» разговора не было. За год две-три системы добавляются/переделываются. И у конторы есть традиция разводить различные приложения по разным серверам, чтобы они по минимуму друг на друга влияли, т.к. случается бывает и хайлоад и ddos.
          Обосновать-то не сложно, но если этого не нужно, то ведь так проще, верно?
          К тому же, бОльшая часть продакшена и так на linux, соответственно наворачивать еще и windows сегмент не очень удобно — зоопарк получается. В общем все в комплексе.


  1. AlDemion
    13.08.2018 07:39

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


    1. Vahman Автор
      13.08.2018 11:17

      спасибо, хорошее замечание.


      1. gecube
        13.08.2018 15:20

        Полностью поддерживаю AlDemion
        Единственное, что я пока не осилил — сборку пакета для alpine, чтобы не копировать файлы между стадиями, а сразу ставить пакетом (как для debian/ubuntu с помощью checkinstall/fpm)


  1. Laney1
    13.08.2018 09:52

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

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


    1. Vahman Автор
      13.08.2018 11:13

      Есть, но как говорят те, кто с ними сталкивался, работают они пока что не так же хорошо, как под linux.


  1. anonymous
    13.08.2018 10:31

    Статичный кейтаб это простой костыль для тестового окружения, а в продакте лучше бы его регулярно обновлять, как это происходит в виндах (вместе с паролем машины, раз в 30 дней, емнип). Я для этого ввожу сервер в домен с помощью SSSD и даю приложению права на системный кейтаб. По требованиям безопасности у нас учетки машин в AD, не меняющие пароль и билеты kerberos, блокируются.
    Вот только упихать в Докер SSSD будет немного сложнее :)


    1. Vahman Автор
      13.08.2018 12:03

      Я правильно понимаю, что в этом случае вогнать в домен хостовую машину будет недостаточно, так как права нужно выделить именно приложению, которое находится в контейнере?


      1. anonymous
        13.08.2018 12:14

        Я не силен в контейнерах, но докер позволяет замапить хостовый каталог внутрь контейнера. Но давать доступ из контейнера в хостовый /etc — тоже немного костыль. В идеале — по крону копировать нужные билеты (ktutil rkt/wkt) из системного кейтаба в отдельный и забрасывать в контейнер. Таким образом можно секьюрно разделить сервисы в разных контейнерах с абсолютно разными SPN.


  1. scumware
    13.08.2018 12:47

    >… очень хотелось приобщиться к молодежному течению…
    ==Поиграться за счёт работодателя (в рабочее время).

    Очень весело живёте, господа: вас не терзают вопросами типа «когда будет готово!???», «почему опять регрешены полезли, и баги по 15 раз переоткрываются?», похоже нет дебага на неделю с разбором дампов, нет ежедневных отчётов. Подозреваю, что даже окна на улицу в офисе есть, и в них иногда солнце светит.
    Если же я ошибаюсь, и вокруг такой же трэш как и везде, но вы сидите и занимаетесь тем, что лично вам интересно, то возникает вопрос: сколько вы получаете?


    1. amarao
      13.08.2018 13:13
      +1

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


      1. scumware
        13.08.2018 13:24

        Мой опыт подсказывает, что наоборот. Пока у меня была возможность играться, я едва-едва сводил концы с концами. Только потом захотелось своё жильё и немного больше уверенности в завтрашнем дне — необходимость впахивать стала осознанной. А неудачная попытка уйти в свободное плаванье показала, что «свобода» может быть хуже рабства.


        1. amarao
          13.08.2018 13:46

          Вы под свободным плаванием подразумеваете фриланс. Я говорю про искренний интерес к технологиям вместе с желанием «поиграться с новым».


          1. 0xd34df00d
            13.08.2018 23:43

            От нового зависит. За агду и идрис не особо платят :(


            1. amarao
              14.08.2018 12:42

              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-веб-дизайнерам.


              1. 0xd34df00d
                14.08.2018 16:37

                Что-то мне кажется, что это немножко другое, а не это.


                1. amarao
                  14.08.2018 16:47

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

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


    1. Vahman Автор
      13.08.2018 13:36

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


    1. Hardcoin
      13.08.2018 18:26
      +2

      почему опять регрешены полезли, и баги по 15 раз переоткрываются?

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


  1. ALexhha
    13.08.2018 18:52
    +1

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

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


    1. Vahman Автор
      13.08.2018 19:41

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


  1. DEN_Z
    15.08.2018 08:57
    +2

    От окошек в крупном жирном энтерпрайзе почти не убежать. В основном самые крупные заказчики на пространстве СНГ платят не за ОС, а за сервис. Из своего опыта могу сказать, что затраты на разного рода поддержку (за полный life cycle) примерно вдвое превышают стоимость самих систем.
    Да и к любому открытому ПО тоже подходят осторожно. Например выбирая между RedHat с максимально дорогим пакетом поддержки и чем-то бесплатным типа CentOS почти всегда не в пользу последней (только если там не сервис на который всем пофиг).
    И да еще есть причина с точки зрения менеджмента по которой постоянно стараются (по крайней мере в СНГ) раздувать OPEX.


    1. Vahman Автор
      15.08.2018 09:01

      Мы как раз пилим крупный жирный энтерпрайз и никакие новые проекты не делаются для десктопа, все под web, поэтому со стороны разработки и внедрения мы вполне можем убежать от окошек. Пользователи, ясное дело, продолжать работать под windows. Насчет ПО — чистая правда. Postgre — только postgre PRO, linux — RHEL или OracleLinux. Наличие платной поддержки очень приветствуется. Ну не могут большие и сильные компании взять и не отвалить кому-то денег.


      1. firedragon
        15.08.2018 10:28

        Все глобально проще. В портфеле любой компании вендора есть +9000 пользователей, и ваша проблема скорее всего уже решена.