Задать вопрос
  • Насколько реально нужен консул девопсу?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никто не заставляет использовать docker, systemd, ansible и вообще какие угодно системы оркестрации и оптимизации. Необязательно делать шаблоны конфигов или кластерные конфигурации сервисов, необязательно использовать библиотеки настраиваемого логгирования, возиться с балансерами и реприцируемыми базами. Но люди это делают, значит, смысл всё-таки есть?

    Опытный администратор не должен задавать вопрос "нужно ли это вообще?" и исходить из идей вида "любому специалисто в области DevOps нужно вот конкретно это и не нужно конкретно другое". Он должен сам понимать, в какой момент сложность его инфраструктуры достигает того состояния, при котором ей нужно то или иное усложнение. Не рассуждать о том, что консул вообще не нужен или остро необходим, а принять решение о том, что и когда ему нужно для решения практических задач. Прекрасно, что в современном мире существует множество инструментов, которые позволяют достаточно быстро делать различные полезные вещи.

    Консул - это тоже инструмент. Вряд ли хоть кто-то использует его возможности целиком и полностью, тем более что никто не заставляет. Кому-то достаточно того, что у него все сервисы зарегистрированы в одном месте и из коробки имеют автоматическое DNS-имя вида NAME.service.consul. Кто-то использует kv-хранилище для хранения параметров, а кто-то хранит в нём секреты и целые конфиги, настраивает токены с различными acl и скрещивает всё это с consul-template. Вообще, необязательно использовать именно консул, есть и другие инструменты для подобных задач. Например, zk/etcd.

    Консул чаще используют совсем не с ансиблом, а с инструментами оркестрации, в которых сервисы могут расширяться и сворачиваться, перезагружаться и мигрировать. Скажем, пусть у нас есть условный сервис rabbitmq на три ноды. Тогда у нас может быть три контейнера rabbitm{1..3}, при запуске они регистрируются в консуле скриптом запуска вместе с проверками, а далее consul отдаёт их все три в виде имени rabbitmq.service.consul. Если какой-то из них вдруг упадёт, consul оперативно это обнаружит и исключит из DNS проблемный узел. Если вдруг управляющий всем этим администратор или автоматическая система оркестрации посчитает нужным добавить новые узлы или перенести их куда-то ещё в кластере, то consul также отразит все нужные изменения. При этом использующее rabbitmq приложение должно будет знать только адрес rabbitmq.

    Конечно, любую задачу можно обвесить скриптами, костылями и даже самописными плейбуками без использования готовых инструментов, а потом повторно решать десятки задач, которые уже сто раз решены до тебя опытными людьми, но зачем?
    Ответ написан
    1 комментарий
  • Как детально проверить SAS диски под linux?

    hint000
    @hint000
    у админа три руки
    SMART совершенно скудную информацию выдает

    https://qna.habr.com/q/1069110
    У SCSI и SAS-дисков нет SMART в "классическом" понимании этого слова.
    Ответ написан
    1 комментарий
  • Какой стек технологий лучше всего подойдет для работы с объемными базами данных?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    исходя из вышеизложенного, какой бы стек технологий вы бы выбрали как разработчик чтобы решить вышеописанную задачу?

    Для начала немного контекста - 2 важных примечания:
    1) Описанная задача решается на любом упомянутом стеке, + еще десяток возможных вариантов (Java/Spring, питон, нода, дотнет, голанг и т.д.).
    2) Быстродействие системы зависит от ее самой медленной части, и в 95% случаев самая медленная часть - БД, просто в силу специфики работы: много данных со сложными связями, выборки с сортировкой и фильтрацией из большого массива и вот это все, в то время как язык бэкенда в основном выполняет достаточно простые манипуляции с уже готовыми наборами данных (за редчайшими исключениями, которых в вашем кейсе нет, или они не описаны в вопросе).

    В вашем случае:
    - база можно сказать совсем небольшая, до 1 миллиона записей условный мускуль ворочает весьма шустро, если железо соответствует.
    - задача сбора метрик достаточно тривиальная, особого ума в сохранении действий пользователя не надо, бОльшая часть работы - вывод в красивые графики и написание быстрых запросов с хитрыми выборками/агрегациями, немного пошаманить с формулами, возможно делать какие-то сводные выборки с денормализованными результатами для отчетов и прочие мелочи. Работа не сложная, но нудная, и ее много.

    Насчет стоимости и условий:
    полный самопис 150к+ (я это не тяну) или же сайт на Laravel +MySQL а дальше варьируется.
    полный самопис - либо маркетинг, либо идиотизм, писать на голом языке не будет ни одна нормальная студия, в принципе в данном случае либо используется фреймворк и заказчику преподносится как "сделано вручную программистами девственниками под светом серебряной луны", либо разработчики идиоты, мнящие себя круче всех (нет). В первом случае это то же что и "сайт на Laravel +MySQL" (норма и стандарт для среднего уровня студий), во втором - развод на мани на пустом месте и попытка продать г**но в обертке "иксклюзивнасти".

    По цене - на сегодняшний день, если я не ошибаюсь, 150к деревянных это +- 1000уе. Цена приемлемая за нормальную работу, если найдете дешевле "на Laravel" - думаю будет вообще ок. Опять же, цены штука такая, кто-то за копейки сделает хорошо, кто-то за дорого каку сляпает. Влияет так же регион, понятно что в Мск цена будет серьезно больше чем в условном Челябинске...

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

    UPD:
    проект планируется на 100 к+ посетителей в месяц...
    предупреждают что если аудитория достигнет условных 100 тысяч в месяц Лара начнет потихонечку задыхаться от нагрузки,
    ок, пусть будет 200к для наглядности.
    В среднем, если это маркетплейс, то постоянных посетителей будет не много, думаю около 10%, так что ими можно пренебречь. Условно - 200к / 30 дней = 6600 в сутки, при активных 10-12 часах посещения это ~600 в час. Пусть на 1 посетителя будет 5 запросов страниц, это 600*5=3000 в час = 50 в минуту или менее 1 запроса в секунду.
    Даже если умножить это на 30 (допустим такая пиковая нагрузка), 30rps вообще "ниачем". Не знаю кто там вам считал то это проблема, любое современное железо среднего уровня вытягивает без напряга.
    Ответ написан
    2 комментария
  • Скейлинг в терраформ. Как?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    тот же terraform plan вам напишет почему он хочет заменить инстансы - какие параметры общей для инстансов конфигурации изменились, при невозможности их замены на лету
    Если вы меняете важный элемент в настройке, который невозможно заменить без пересоздания инстанса, его надо игнорировать через lifecycle -> ignore changes
    Однако так вы потенциально можете получить исключительно увеличение количества объектов
    Если вы деплоите в AWS то ASG может помочь - она не пересоздает инстансы без надобности, при добавлении необходимого количества инстансов. При уменьшении, базовая политика удаления инстансов - удалять наиболее старый.
    Ответ написан
    Комментировать
  • Как правильно организовать работу серверов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    1. API
    2. Сервера могут общаться через базу данных
    3. Сервера могут общаться через брокер очередей
    4. Можно подумать насчет общего стораджа - S3, распределенная файловая система, просто сетевой диск замапленный на каждый сервер.

    Вопрос не в том, чтобы "как связать", вопрос зачем вам это надо, как вы себе представляете "связывание" и какая у него цель?
    Ответ написан
    1 комментарий
  • Ошибка при изменении класса хранилища объекта. Почему?

    @Looka Автор вопроса
    Отвечу частично сам.
    Восстановление работает командой:
    $ aws s3api restore-object --bucket awsexamplebucket --key dir1/example.obj --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'

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

    Понять статус объекта можно так:
    $aws s3api head-object --bucket looka1 --key 1Cv77_Bin.zip
    { "AcceptRanges": "bytes",
    "Restore": "ongoing-request=\"true\"",
    "LastModified": "2019-11-01T10:50:19+00:00",
    "ContentLength": 10771150,
    "ETag": "\"f4fc5cdcfeccf75b3a432c1ae6c540f9\"",
    "VersionId": "CefbquFTCKrUa0xf5TEKv.2UdWCXNuNs",
    "ContentType": "application/zip",
    "Metadata": {},
    "StorageClass": "DEEP_ARCHIVE"
    }

    Обратить внимание:
    "Restore": "ongoing-request=\"true\""
    true - идет восстановление, falsh - восстановлен, есть доступ.

    Соответсвенно тоже самое делает в веб интерфейсе пункт Initial restore
    Но пункт доступен только для файлов, если в списке есть папка Dir\ то интерфейс не нает выбрать опцию восстановления, только изменить класс, который не работает для этого класса.

    А для  CLI решения для рекурсивного вызова не нашел, только. скрипты, а усложняется еще наличием кирилицы и пробелов в именах. В этом смысле вопрос остается. БУду признателен за подсказку и помощь.

    А кирилица не причем
    Ответ написан
    Комментировать
  • Как настроить PITR PostgreSQL?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Для pitr вам нужен:
    - basebackup как основа, должно быть завершено его снятие до датывремени требуемого восстановления pitr
    - непрерывный архив всех и абсолютно каждого сегмента wal без пропусков от момента checkpoint перед снятием используемого в восстановлении basebackup и до требуемой точки восстановления

    database system was shut down at 2022-02-10 13:31:25 UTC
    starting point-in-time recovery to 2022-02-10 07:00:00+00

    Это, конечно, невозможно даже с корректным архивом WAL.
    У postgresql REDO recovery, а не UNDO. Pitr только вперёд от текущей позиции. И не раньше достижения точки консистентности состояния (окончания снятия basebackup)

    Чтобы не ходить по граблям консистентности ещё и файловой системы, basebackup предпочтительнее снимать с самого postgresql, а не снимком блочного устройства. Но в целом вариант предусмотренный, ничем неотличимый от обычного crash recovery вроде старта после пропадания электричества (лишь бы fsync работал на всех уровнях корректно и не игнорировался).
    Ответ написан
    6 комментариев
  • Будет ли недоступность сайта при смене DNS-серверов?

    suffix_ixbt
    @suffix_ixbt
    https://www.babai.ru/
    Нет, не будет если Вы не удалите зону со всеми записями со "старого" dns-хостинга, пока ns-сервера "нового" dns-хостинга (куда Вы зону скопировали) кэшируются везде.
    Ответ написан
    Комментировать
  • Для каких примерно целей программисту нужен computer science?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Можете отвечать этим выпендрёжникам, что computer science у всех в школе была.
    61f95ecd99b46818468684.png
    Ответ написан
    1 комментарий
  • Как рулить docker-compose в проде?

    DoctorStein
    @DoctorStein
    QNX, Linux, С++, С#, mono
    docker-compose не очень, сейчас в моде kubernetes. Но если очень хочется, то можно:
    1. Редактируем yaml и Dockerfile если надо. docker-compose build, docker-compose down, docker-compose up -d. Если изменения yaml большие, например меняется состав сервисов, то стоит down сначала, потом редактирование.
    2,3. По возможности локально image не собираются. Есть отдельный процесс разработки, image выкладываются в частный registry, откуда и берутся композом.
    4. Образы строятся на том, на чём удобно разработчику. Ни разу не было задачи заменить типа описанной. Но бывает наоборот - новая ОС, на ней запускаются старые проверенные докеры.
    5. docker-compse stop servicename
    Ответ написан
    4 комментария
  • Какие наиболее выгодные фриланс-биржи на русском языке?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Нормальные бывают не биржи, а знания.
    Пока знаний нет, будет высокая конкуренция и демпинг. И никакая биржа не спасёт. Нет такого чудесного поля дураков, где всем подряд раздают вкусные заказы.

    Как знания подтянутся, можно будет уже играть в другом классе, по другому ценнику и с меньшей конкуренцией.
    Ответ написан
    3 комментария
  • Правда ли то, что например сайт или сервис електронной почты не имеют доступа к паролям?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Теоретически, это можно сделать, если хешировать/солить ваш пароль на клиенте и не передавать на сервер.
    Практически, это все равно остается вопросом доверия между вами и сайтом - сегодня они не передают пароль при авторизации, завтра фронтенд Василий шото напутал, и пароль улетел не только в базу сайта, но и к кампании, которая предоставляет аудит пользовательских метрик.
    Ответ написан
    2 комментария
  • Как создать контейнер приложения, которое развернуто?

    @rPman
    в общем случае это невозможно
    docker файл это список команд, которые необходимо выполнить на 'нулевой системе' чтобы приложение заработало

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

    в некоторых случаях, пакетный менеджер linux предлагает вполне законченное описание того что нужно для того чтобы приложение заработало, к сожалению в реальности не все так просто, не все приложения корректно описаны, а для некоторых требуется ручная первоначальная настройка
    Ответ написан
    2 комментария
  • Закрытие бесплатного G Suite (Workspace), куда мигрировать?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Можно и на месте остаться, это же сервис для компаний, несколько тысяч в месяц за то, что Яндекс с тащмайором не будет индексировать вашу переписку со страшной силой, имхо, не так дорого. Ну или свой почтовик настройте - но возможны неожиданные нюансы.
    Ответ написан
    Комментировать
  • Недостатки видеоуроков?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Многое зависит от особенностей конкретного человека. Я вот, например, с огромным трудом воспринимаю информацию в видеоуроках, а на прошлом месте работал с коллегой, который наоборот гораздо лучше воспринимал новое на слух, он как раз предпочитал видеоуроки.
    Ответ написан
    Комментировать
  • Достаточна ли защита сайта php?

    @d-sem
    Безопасность вещь комплексная и многое зависит от конкретной реализации. То что в одном месте закрывается (и то не факт, так как не известна реализация) один вектор мало влияет на общую безопасность.

    Например, у Вас может быть супер защищенный сайт, но рядом у вас в соседней папке у вас лежит приложение, которое принимает команду из пользовательского ввода и подкладывает ее в exec(). Или веб-сервер настроен так, что по отдельным запросам на другие виртуальные хосты отдает содержимое конфиг файлов. Или ньюансы срезания углов при разработке (добавим более тщательную фильтрацию полей позже. ага). Или внезапно выяснилось что в версии вашего ЯП, конкретной библиотеке или субд есть фундаментальная уязвимость.

    Хотите комплексно подойти к вопросу? Копайте в сторону изучения материалов от OWASP. Например, https://owasp.org/www-project-web-security-testing... Там достаточно много материалов для чеклистов. Или смотрите готовые чеклисты что проверять. Например, https://github.com/0xRadi/OWASP-Web-Checklist (я не говорю что это прям лучший чеклист, но посмотрите на число пунктов для быстрой оценки).

    Хотите подойти еще комплексней? Начните с книги для новичков по поиску узявимостей - Ловушка для багов. Полевое руководство по веб-хакингу | Яворски Питер https://www.piter.com/product_by_id/196618476

    А далее например обратите внимание на более сложную книгу как строить защиту в приложениях
    Безопасно by design | Берг Джонсон Д., Деоган Д., Савано Д. https://www.piter.com/product/bezopasno-by-design
    Там уже более основательно доводится доводится мысль как выстраивать защиту на основании архитектуры.
    Ответ написан
    Комментировать
  • Чему учит Марк Лутц?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Но полистав pdf-файл этой книжки я не смог найти ни одного куска кода, который был бы для меня не понятен. Разве что незнакомые модули.


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

    Потом попробуй почитать стандартные вопросы на интервью для джуна.
    Ответ написан
    5 комментариев
  • Как повысить свои навыки в построении архитектуры сложных приложений?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Читать книги на эту тему, работать на проектах, где более опытные коллеги строят сложные архитектуры, участвовать в этом посильно.
    Ответ написан
    Комментировать
  • Как повысить свои навыки в построении архитектуры сложных приложений?

    bingo347
    @bingo347
    Crazy on performance...
    Если по теории, то мне в свое время вот эта книга помогла:
    https://www.litres.ru/robert-s-martin/chistaya-arh...

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

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

    Еще через пол года прочел третий раз, опять же с оглядкой на личный опыт. И тут я кажется уже совсем въехал. По крайней мере многие проблемы с организацией взаимодействия между компонентами стали разрешаться. И вообще появилось достаточно четкое понимание, как структурировать приложение и где разбивать его на компоненты.
    Ну и после 3 прочтения еще помог момент: мне дали с нуля проектировать новое, достаточно крупное приложение на Rust. Притом заказчик кричал "микросервисы - это круто, хочу, хочу, хочу", а тимлид мне сказал "давай монолит, но так чтоб потом легко было распилить, а то все сроки про**ем". Вот тут прямо вообще понимание пришло. Ну и плюс в Rust архитектурные компоненты очень хорошо ложатся на отдельные крейты (это такая единица компиляции в Rust), а компилятор в принципе не дает делать циклические зависимости между крейтами.

    Ну и недавно решил освежить память и перечитать еще раз. И на этот раз уже были мысли вроде "так если делать по другому, потом проблемы вылезут тут и тут".
    Ответ написан
    1 комментарий
  • Является ли порочной практика итеративных попыток сдачи тестировщикам сырых результатов работы?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    В итоге оказывается что во-первых было очень много багов, и во-вторых, требование программисты поняли не так, прочитали не все, да и в требованиях прямо каждая мелочь не была учтена. Программисты правят то что не нравится тестировщику и цикл повторяется снова и снова, пока вся команда не поймет задачу одинаково и результат не станет похожим на ожидаемый в требованиях.


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

    Эм, если все настолько плохо, что надо повторять цикл снова и снова, то где все это время был тимлид, который давал изначальную задачу?
    Его привлекать в первую очередь, чтобы он либо переобъяснил разработчикам все, либо поправил свои требования, чтобы они были понятнее.
    В моем понимании тимлид - это один из разработчиков, который ежедневно контролирует их работу, а не ждет пока ему принесут готовое через месяц.
    А так да, тестировщик помогает разработчикам правильно понять требования, но он не должен биться головой об стену в одиночку. Если разработчикам что-то неясно, они могут и сами поднять жёпку и сходить к тимлиду, к аналитикам, к тестировщикам чтобы понять задачу правильно.
    Ответ написан
    1 комментарий