Dmitry
если есть обратная совместимость например и две ноды с разными версиями апи могут работать параллельно
Dmitry
то почему бы не поднять сразу и старые и новые, если у нас есть LB
Dmitry
и старые постепенно отстреливать?
Misha
угу, как-то так
Misha
и возможно две версии type Api = ... на какой-то время дердать
Misha
держать
Dmitry
а у новых нод, например, ставить серверный редирект на старое api, и не в серванте, а в мидлвари
Dmitry
я например пришел к тому, что нормализую пути сначала в мидлвари, что бы в сервант лищний мусор не тащить
Dmitry
еще LB может быть умным, и запросы направлять бэкендам в зависимости от версии API
Misha
мидлварь это в данном случае nginx или типа того?
Dmitry
wai
Dmitry
нормализую запросы перед тем как их в сервант скормить
Misha
о как
Dmitry
что бы в нем не плодить лишних веток
Dmitry
да это звучит страшнее чем есть, там пара-тройка строк всего. подцепить реврайт и переписывать урлы
Misha
звучит страшно, но видимо это как раз способ убрать железную compile-time привязку
Misha
да, таким образом можно на версию смотреть и перенаправлять куда надо
Dmitry
не, это же в том же процессе, где и api
Dmitry
это не решает задачу слишком большого числа эндпойнтов
Dmitry
хотя может и решать, т.к. там вроде сделать так. что бы разные версии были разными типами, а роутить по версии на уровне WAI
Dmitry
может это и решит вопрос. но надо исследовать
Misha
да, но это решает задачу апдейта по частям
Misha
ну как "вроде бы решает", если пытаться себе представить как оно должно работать
Misha
так-то надо смотреть конечно
Quet
если все серьёзно то делается поддержка одновременно и старой и новой версии и постепенно сервисы переезжают
но обычно можно просто загасить все и поднять новую версию сразу
Dmitry
ну зависит. но мне сейчас кажется, что при помощи wai можно растащить разные версии API по разным типам и решить проблему падения ghc, но не решить проблему медленной компиляции
Dmitry
так что лучше все таки сразу резать на куски поменьше, может в этом и еще какой-то смысл есть. ну например сингл респонсибилити, но год обжект антипаттерн и прочая
Quet
смысл что эти куски можно по разным машинам растащить
Quet
если понадобится
Alexander
Alexander
у нас вот например нужно на кластере ноды обновлять, причем по условиям по частям
Alexander
в итоге на разных нодах могут быть слегка разные версии haskell софта и сишного
Alexander
и консенсус протокол и IO не должно ломаться
Alexander
учитывая что обновление сишной части может потребовать обновить под петабайт данных 😏
Alexander
а самая задница в том, что там cloud-haskell и он использует Fingerprint для роутинга сообщений
Misha
кстати да, а как вы это делаете вообще? особенно если с бинарной сериализацией
Alexander
у нас есть тип StablePrint
Alexander
который дает стабильный Fingerprint данным
Alexander
и есть таблица StablePrint->Fingerprint
Alexander
+SafeCopy
Alexander
но это в одну сторону
Alexander
там есть ещё от "мозга" процесс, который на какой-то их нод, на которх consensus protocol работает
Alexander
к сервисам, и в эту сторону сейчас решаем
Alexander
пока непонятно
Alexander
там какой-то ад наворотить хотят
Alexander
переусложнёный но с похожим принципом
Alexander
да есть плюс, network-transport и binary пофиг на версии там все стабильно
Dmitry
а что у вас за кнсенсус?
Alexander
paxos
Dmitry
который посложнее или который попроще? черт, забыл
Alexander
посложнее
Dmitry
они паксос, а второй облегченный как там его
Alexander
raft
Dmitry
да
Alexander
у нас paxos с парой усложнений
Alexander
там есть pipelining и ещё какая-то оптимизации
Alexander
в paxos made live описаны
Alexander
у нас что-то таки сделали
Dmitry
страшно даже представить, что вы там такое делаете
Dmitry
что вам это всё нужно
Alexander
кластером управляем
Alexander
на самом деле не вижу причин почему бы тут рафт не взлетел
Quet
а кластер что делает? )
Anatolii
Управляется!:)
Alexander
данные сохраняет и отдает
Alexander
тот проект что сейчас - система архивирования, но вообще там все крупнее и сложнее
Dmitry
но сам-то кластер что делает? обучает нейросети ? гттовится к захвату мира?
Alexander
fs- расширение lustre
Alexander
с пофикшенными проблемами (но это не мы делаем)
Alexander
нет
Alexander
но скейлится
Alexander
тот продукт, что продают 6 rack-ов, 6Pb места
Alexander
на ssd
Quet
а вот тот софт который собственно реализует фс распределённую он на хаскеле тоже?
Alexander
нет
Alexander
си
Alexander
очень интересно, но сишники сказали, что были планы на haskell его писать
Alexander
ещё давно
Quet
но почему-то не стали?