Pull to refresh
0
0
Vsevolod Kaloshin @arzonus

Golang Developer

Send message

Я с женой путешествовали/жили таким же образом с сентября 2019 по май 2021, успев посетить 24 страны. Нам очень понравилось, за исключением хлопот со сбором вещей, продумыванием страховки/билетов/жилья/виз, ну и конечно неожиданными локдаунами в период пандемии (за 1-2 дня до поездки в Украину и Чили приходилось отменять билеты и все перепланировать).

Подумываем повторить такое уже с маленькими детьми, однако пугает то, как проводить с ними время когда оба родителя работают. Как вы справляетесь? Были ли у вас проблемы с садиками на месте? Не сложно ли для ребенка менять садики при каждом переезде?

Развитие плацкарта от ТМХ — это неплохой шаг вперед. Однако не могу понять зачем все также берут советское расположение полок в вагоне. Почему не развить эту историю в более удобный формат. К примеру как в китайском вагоне от немцев.?
Можно ограничится одним, просто показывать типа 2 шкалы: все и у кого есть карма +5.
Типа как обзор кино: мнение критиков и пользователей :)
Было бы интересно сравнить оценку статей, тех кто может плюсовать/минусовать, c теми кто сейчас не могут. Насколько сильно будет отличаться оценка статей членов «меритократии» от всех пользователей.

Попробовать дать возможность всем ставить плюсы и минусы, а учитывать к примеру в выборке статей оценки только тех, кто имеет карму +5. Тем самым у Хабра будет накапливаться статистика по оценкам и в будущем может быть они дадут всем возможность ставить плюсы и минусы, а мб наоборот появится больше аргументов, что не надо давать эту возможность.
Казалось бы, до работы я все еще добираюсь, убер в других странах у меня будет работать, вроде проблема решена… Но почему я тогда решил все таки написать эту статью? А все просто, недавно вышло такое же приложение Uber Azerbaijan, также есть приложение Uber Russia. Наверняка для каждой страны СНГ будет свое приложение. Получает ли пользователь реальный профит с этих приложений? Абсолютно никакого. А минусов хоть отбавляй.


Гугл аккаунт зареган в России, живу в Беларуси. Uber BY не скачать, однако можно заказать через Uber Russia. Даже работали скидки в Беларуси (схожие были в РФ на новогодних) через Uber Russia
Для начала синхронизируем наши с вами представления о «хайлоаде». В качестве иллюстрации высоконагруженной системы в статье используется главным образом наша система защиты от мошенничества (антифрод). Она обрабатывает все входящие операции Яндекс.Денег – а это не одна сотня операций в секунду.


Если можно, не могли бы рассказать о среднем tps на 1 MSSQL сервере? А то у меня в голове как то не укладывается MSSQL и highload :) У нас получалось не более пары сотен к сожалению :(
func (order)Insert(tx Transaction, m *model.Order) {
    db := tx.DataSource().(*gorm.DB)
    query := "insert into orders (shop_id) values (?) returning id"
    db.Raw(query, m.Shop.ID).Scan(m)
}



Правильно я понимаю, что у вас есть 2 метода всегда, 1 с транзакцией, а другой без?
У вас есть возможность такого?
А каким образом отключаете?
В рамках транзакции удаляете триггер, а потом добавляете заново?
Не знаю какая у вас структура таблиц, но хотелось узнать какой был просед производительности при внедрении?
Все таки используется динамический SQL при каждой операции с таблицей.
Речь именно о фазе сборке, о внешних приватных зависимостях. git clone как самый простой пример, обычно это npm/yarn/composer или иной пакетный менеджер.

А с пакетными менеджерами вам не хватает функционала ARG?

Проблема в том, что на фазе билда (читай на фазе разработки Dockerfile) я не знаю под каким uid будет выполняться docker run, более того я не знаю под каким uid работают докер-демоны.

Если вам важно какой uid используется в контейнере при сборке и при запуске после сборки используйте команду USER.
Под каким uid работают docker daemon на хост системе? А зачем вам это знать при работе с файлами?

С правами вестимо. Когда entrypoint требует root прав для подготовки данных для «демона», а потом должна запустить демон с правами обычного юзера. ну и плюс сама entrypoint висит с pid 1

Вы можете разбить на 2 файла entrypoint, в первом вы выполните работу которая требует root, потом смену uid с помощью USER, а потом запуск entrypoint. А зачем вам требуется pid?

Не всё так просто. Во-первых, очень легко может установиться 8.8.8.8, если хост с NetworkManager с DNS 127.0.0.1. Во-вторых, я немного не о том, а о links — можно задать, например, что имя some-link соотвествует в контейнере 10.0.12.45, но нельзя что test-db.local

Или я не понял ваш кейс или я не понимаю зачем смешивать эти разные вещи. links — это же связка конкретного контейнера с другим конкретным контейнером, зачем вам задавать url данного контейнера, если вы и так знаете его прямой IP адрес?
windows, mac, linux запускают докер по-разному. Кому-то нужно запускать контейнеры внутри виртуальной машины, кому-то она не нужна.

Работаю с docker на 3 системах сразу же, дома на маке, на работе windows и linux, и не видел проблем с запуском. Одно из условий запуска docker — это наличие linux ядра. Соответственно на не linux системах, ему требуется виртуальная машина. Однако docker-toolbox настраивает за вас все это и вы не задумываетесь о настройке.

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

Какие изменение были сделаны, которые стали несовместимы с прошлой версией? Я просто не припомню кардинальные отличия, которые требовали изменения файлов. То что продукт развивается и изменяется — это нормально. Не забывайте, он появился в 2013 году и ему «всего лишь» 4 года.

Чтобы понимать, о чем я говорю — просто пойдите и попробуйте задеплоить любой Hello, World на тот же Amazon ECS.

Не скажу за Amazon, но скажу за Azure. Вы можете взять за основу официальный скрипт установки от Docker и установить его. А потом docker run -rm helloworld.
Расскажите подробнее в чем были сложности :)
передача ключей и прочих секретов в процесс сборки контейнеров (текущее решение — base64 кодирование содержимого файлов типа .ssh/id_rsa в одну строку .env, ARG в докерфайле, декодирование в RUN типа


Обычно dockerfile находится в том репозиторий, с которым вы работаете и собираете, поэтому зачастую проблема по передаче ключей для git clone решается не на уровне контейнера, и она не возникает на процессе сборки. Однако проблема с передачей всяких секретов также решается на уровне docker-entrypoint.sh, в котором уже задаются все специфичные настройки.

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


Процессы в контейнере можно запускать с заданным uid. Если выставить его таким же как и на хостовой системе, вы решите проблему с правами. Конечно если у вас разные пользователей на хост системе, работающие с теми же самыми данными, то это не проблема контейнеров.

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


Можно по подробнее в чем была проблема?

связывание с внешними системами (как и относительно внешними типа баз данных, так и и полностью типа платежных систем) по DNS-именам


А здесь в чем проблема? По умолчанию в контейнер пробрасывается адрес DNS сервера хост системы. Можно самому задать DNS сервер.

Никогда не сталкивался с такой проблемой. Обычная команда docker run -v /path:/path repo:tag.
Я только пробовал подключать docker volume как Azure File System. Однако из-за отсутствия поддержки симлинков в Azure File System, постгрес не хотел работать :)
Azure всегда включает локальный SSD во все типы инстансов. В итоге, вы платите за него независимо от вашего желания;

Этот SSD — диск для временных файлов. Этот диск у вас подключен при любом типе основного диска HDD или SSD. Однако (как я понимаю) его использование не включается в стоимость, так как данный диск не использует пространство Azure Storage.
Тут зависит от задач. Так как если у вас небольшая база и вы не хотите управлять процессорным и дисковым временем, то вопрос где запускается БД особо не стоит. Однако если вам уже важны эти времена (я думаю на больших БД), то я думаю, что и Patroni тут уже не будет использоваться, а что то посерьезнее :)
Так ничего же страшного нету. Папка с БД выносится за контейнер, а процесс БД в контейнере работает. Разницы в работе нет никакой. БД в контейнере можно запустить с тем же юзером, что и на хост системе, что позволяет не волноваться за то, кто является владельцем и что будет происходить с папками БД.
Спасибо за статью!
Хотел сам написать, да как то руки не доходили :)
Мы использовали patroni, засунув его с postgresql в Docker контейнер.
База данных SQL

База данных SQL не может заменить Heroku Postgres, так первая построенна на базе MSSQL, а вторая на базе Postgres.
Перенести файлы статики, которые заливаются скриптом на один из старых серверов и служат Origin для Akamai CDN;


Можно использовать не один старый сервер, а на прямую BLOB. CDN умеет получать информацию напрямую.
Жаль, что не получилось у вас написать продолжение данного туториала.
Для себя я решил эту задачу с помощью Patroni
1

Information

Rating
Does not participate
Date of birth
Registered
Activity