@prophp7

Страница 1241 из 1387
Dmitry
08.08.2018
06:43:03
вот только его все забывают выпиливать и этот ком растет

Maksim
08.08.2018
06:43:33
Да похер как) я не о том спрашиваю)

Alexander
08.08.2018
06:43:40
:)

Google
Dmitry
08.08.2018
06:44:49
о том, он руками выполняет миграции в том порядке, что бы не ломалось... или вообще заворачивает релиз если там альтер жуткий

Maksim
08.08.2018
06:45:09
Нахуй нужен такой релиз менеджер)

Alexander
08.08.2018
06:45:11
Или ты о поломке базы?

Мы просто о поломке приложения после изменения базы

Dmitry
08.08.2018
06:45:44
он может спросить релизера если что

Maksim
08.08.2018
06:46:24
Чет по описанию вы себе на ровной протоптанной тропинке проблем придумали, имхо

Alexander
08.08.2018
06:46:25
А миграции которые ломают базу это полный пиздец

Тем более если они дошли до релиза

Dmitry
08.08.2018
06:47:25
мы не о ломании, а о правильном их порядке относительно релиза кода

Anton
08.08.2018
06:48:11
У нас например часто бывает зарелизили потом ой надо откатить, чета не то

Dmitry
08.08.2018
06:48:15
и о потенциально просаживающих производительнось особо

Anton
08.08.2018
06:48:18
Откатываем

Google
Anton
08.08.2018
06:48:33
А сайт надо чтобы без даунтайма все это время

Пока раскатывается новая версия на несколько серверов, бывают обновляешь страницу и тебе то старая то новая

Тут полюбому надо так делать нам, чтобы код без миграции работал правильно

Dmitry
08.08.2018
06:51:02
код не сломается, если будет лишняя колонка

Anton
08.08.2018
06:51:59
Да, в случае удаления колонки все верно. Но например такая ситуация: зарелизили, удалили колонку, а через 15 мин поняли что надо откатить релиз

Поэтому я обычно удаляю колонку уже назавтра в другом релизе

А в случае добавления нового поля сложнее: надо 100% сначала накатывать миграцию с новым полем, а потом код, который его юзает

Dmitry
08.08.2018
06:53:51
ну да, только у нас не программисты следят за этим, а девопсы

Anton
08.08.2018
06:54:07
У нас тоже

Alexander
08.08.2018
06:54:24
Интереснее вопрос как сделать тяжелый алтер без даунтайма

Dmitry
08.08.2018
06:54:33
и один файл миграции могут исполнить в разном порядке или вообще не исполнить

Anton
08.08.2018
06:54:43
Не делать альтер :)

Alexander
08.08.2018
06:54:48
В каком мире ты живёшь ?)

Anton
08.08.2018
06:55:15
У нас бывает на 2-3 минуты альтеры, мы просто по живому делаем и миримся с локами таблицы на 2-3 минуты

Очень редко

Dmitry
08.08.2018
06:55:24
Интереснее вопрос как сделать тяжелый алтер без даунтайма
есть такая методика с копированием всего

Alexander
08.08.2018
06:55:40
А если альтер 15-20 минут

Anton
08.08.2018
06:55:56
Ну надо придумывать исходя из ситуации

Google
Anton
08.08.2018
06:56:12
Тут общего решения наврядли будет

Dmitry
08.08.2018
06:56:18
угу, тригера для догона и потом ренейм

Anton
08.08.2018
06:56:32
В идеале если 24/7 не надо, можно ночью сайт приложить

Как онлайнер делал

Anton
08.08.2018
06:57:04
Мы иногда тоже прикладываем в 6 утра когда очень надо

Alexander
08.08.2018
06:57:29
Если на америкосов работать то даже ночами не придётся не спать :)

Удобно

Anton
08.08.2018
06:57:36
Но наверное есть проекты кому нельзя так

Там придумывают что-то

Alexander
08.08.2018
06:57:52
Есть конечно

Ну вот выше описали кейс

Anton
08.08.2018
06:58:06
Мне не приходилось

Alexander
08.08.2018
06:58:16
Но мы так по-моему ни разу не делали

Anton
08.08.2018
06:58:32
Не ну если можно уйти в даун то зачем

Наверное кучу методик можно придумать

Самая простая - не делать альтеры

Можно в коде придумывать разные воркэраунды

Новая таблица там

Конечно если инт на бигинт поменять, наврядли это спасет :)

Google
Dmitry
08.08.2018
07:00:55
ну или варчар расширить, да

Anton
08.08.2018
07:12:00
Я могу представить себе очень хорошо ситуацию когда просто скажешь так не будем делать

Бизнес говорит - хотим 512 вместо 256 поле

А программисты такие уууууу

Там таблица на 10 млрд записееей...

Не, не будем это делать

И бизнес такой Okaaaay =(

И нету проблемы миграции

Dmitry
08.08.2018
07:17:02
почему не будете? Вон ребята из соседней фирмы делают это каждую неделю? - а мы не умеем и учиться не хотим - а, ну ок... Прошло две недели...

Admin
ERROR: S client not available

Anton
08.08.2018
07:19:56
Не ну бывает всякое

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

Dmitry
08.08.2018
07:27:22
https://www.percona.com/doc/percona-toolkit/LATEST/pt-online-schema-change.html

Anatoliy
08.08.2018
07:42:53
Всем привет. Предположим, есть достаточно большой проект, сердцем которого является некое API. Технологии не важны, но для контекста: PHP7 и GraphQL. Далее есть некие клиенты, которые работают с API: CLIENT1 - панель управления (админка) / ReactJS CLIENT2 - клиент для гостей / PHP CLIENT3 - личный кабинет для зарегистрированных / ReactJS CLIENT4 - блог / PHP ... Сейчас аутентификация пользователя на API происходит через JWT-token. Если вкратце, то мы делаем некий запрос с логином и паролем, получаем некий токен и с помощью него делаем уже авторизованные запросы. Далее я столкнулся со следующим вопросом: а как аутентифицировать клиенты? API имеет ряд запросов, которые не покрывает JWT, тоесть данные по этим запросам можно получить без аутентификации. Например пользователь заходит на CLIENT4, CLIENT4 в свою очередь делает запрос на API, получает список статей и показывает их пользователю (пользователь может быть гостем). Тут все верно. Однако остается и такой вариант, когда пользователь может миновать CLIENT4, сделать запрос к API и получить данные на прямую. Вопрос заключается в том, как лучше всего закрыть API от всех прямых запросов и дать доступ только определенным клиентам? ———————————————————————————- Некоторые дополнительные размышления. Хорошим и безопасным вариантом было бы ограничить доступ и сделать API локальным, однако некоторые клиенты могут быть на другом сервере или требовать внешний доступ (например мобильные устройства). Я отказался от использования протокола OAuth2, так-как по сути в проекте нет 3 стороны. Поэтому получается не совсем то, что нужно. Единственный вариант пока приходит в голову, это некий дополнительный токен, который хранит каждый клиент и получает доступ к API подставляя в каждый запрос. Собственно хотелось бы получить советы/рекомендации, возможно ссылки на технологии/протоколы, которые упустил.

Maksim
08.08.2018
07:43:08
у перконы там прикольные тулзы) на любое кол-во голов раскидывает быстро и прозрачно даже по меркам мускуля)

Shaun
08.08.2018
07:49:23
Всем привет. Предположим, есть достаточно большой проект, сердцем которого является некое API. Технологии не важны, но для контекста: PHP7 и GraphQL. Далее есть некие клиенты, которые работают с API: CLIENT1 - панель управления (админка) / ReactJS CLIENT2 - клиент для гостей / PHP CLIENT3 - личный кабинет для зарегистрированных / ReactJS CLIENT4 - блог / PHP ... Сейчас аутентификация пользователя на API происходит через JWT-token. Если вкратце, то мы делаем некий запрос с логином и паролем, получаем некий токен и с помощью него делаем уже авторизованные запросы. Далее я столкнулся со следующим вопросом: а как аутентифицировать клиенты? API имеет ряд запросов, которые не покрывает JWT, тоесть данные по этим запросам можно получить без аутентификации. Например пользователь заходит на CLIENT4, CLIENT4 в свою очередь делает запрос на API, получает список статей и показывает их пользователю (пользователь может быть гостем). Тут все верно. Однако остается и такой вариант, когда пользователь может миновать CLIENT4, сделать запрос к API и получить данные на прямую. Вопрос заключается в том, как лучше всего закрыть API от всех прямых запросов и дать доступ только определенным клиентам? ———————————————————————————- Некоторые дополнительные размышления. Хорошим и безопасным вариантом было бы ограничить доступ и сделать API локальным, однако некоторые клиенты могут быть на другом сервере или требовать внешний доступ (например мобильные устройства). Я отказался от использования протокола OAuth2, так-как по сути в проекте нет 3 стороны. Поэтому получается не совсем то, что нужно. Единственный вариант пока приходит в голову, это некий дополнительный токен, который хранит каждый клиент и получает доступ к API подставляя в каждый запрос. Собственно хотелось бы получить советы/рекомендации, возможно ссылки на технологии/протоколы, которые упустил.
В чём проблема запихнуть название/идентификатор клиента в сам токен?

Anatoliy
08.08.2018
07:49:57
В чём проблема запихнуть название/идентификатор клиента в сам токен?
в том, что некоторые данные можно/нужно получать без аутентификации пользователя.

Anton
08.08.2018
07:50:59
@oldenby ^^^

Bohdan
08.08.2018
07:53:20
в том, что некоторые данные можно/нужно получать без аутентификации пользователя.
то есть, их можно получить, но ты хочешь, чтобы нельзя было?

Shaun
08.08.2018
07:53:59
в том, что некоторые данные можно/нужно получать без аутентификации пользователя.
Тогда в хедерах отправлять, x-client-id какой-то, в каждом клиенте свой прописать

Google
Anatoliy
08.08.2018
07:54:34
то есть, их можно получить, но ты хочешь, чтобы нельзя было?
чтобы их можно было получать только через определенные клиенты (мобилы, планшеты, десктоп и тп.)

Bohdan
08.08.2018
07:55:16
ну просто в случае с блогом - у тебя априори нет какого-либо токена можно, конечно, извратиться с чем-то вроде csrf токена...

Anton
08.08.2018
07:55:21
Мне кажется OAuth2 можно было бы юзать, в нем есть понятие сервер креденшелс, можно получить токен как с креденшелами юзера, так и с креденшелами сервера

Соответственно, разные права им раздавать

Я бы наверное сюда смотрел

Bohdan
08.08.2018
07:55:40
ну либо я чего-то не понимаю

Roman
08.08.2018
08:02:42
Всем привет. Предположим, есть достаточно большой проект, сердцем которого является некое API. Технологии не важны, но для контекста: PHP7 и GraphQL. Далее есть некие клиенты, которые работают с API: CLIENT1 - панель управления (админка) / ReactJS CLIENT2 - клиент для гостей / PHP CLIENT3 - личный кабинет для зарегистрированных / ReactJS CLIENT4 - блог / PHP ... Сейчас аутентификация пользователя на API происходит через JWT-token. Если вкратце, то мы делаем некий запрос с логином и паролем, получаем некий токен и с помощью него делаем уже авторизованные запросы. Далее я столкнулся со следующим вопросом: а как аутентифицировать клиенты? API имеет ряд запросов, которые не покрывает JWT, тоесть данные по этим запросам можно получить без аутентификации. Например пользователь заходит на CLIENT4, CLIENT4 в свою очередь делает запрос на API, получает список статей и показывает их пользователю (пользователь может быть гостем). Тут все верно. Однако остается и такой вариант, когда пользователь может миновать CLIENT4, сделать запрос к API и получить данные на прямую. Вопрос заключается в том, как лучше всего закрыть API от всех прямых запросов и дать доступ только определенным клиентам? ———————————————————————————- Некоторые дополнительные размышления. Хорошим и безопасным вариантом было бы ограничить доступ и сделать API локальным, однако некоторые клиенты могут быть на другом сервере или требовать внешний доступ (например мобильные устройства). Я отказался от использования протокола OAuth2, так-как по сути в проекте нет 3 стороны. Поэтому получается не совсем то, что нужно. Единственный вариант пока приходит в голову, это некий дополнительный токен, который хранит каждый клиент и получает доступ к API подставляя в каждый запрос. Собственно хотелось бы получить советы/рекомендации, возможно ссылки на технологии/протоколы, которые упустил.
Может зарегать клиентов у себя в базе, дать им private public ключи, и далее проводить аутентификацию с помощью них? по публичному токену аутентифициурешь клиента, по приватному проверяешь подлинность подписи.

Anatoliy
08.08.2018
08:13:32
Все спасибо, что-то в голове сфорировалось =)

Sergey
08.08.2018
08:14:53
фичефлаги далеко не всегда возможны и замусоривают код
приведи пример когда не всегда возможны

и да - не замусоривают код) елси грамотно делать)

Anton
08.08.2018
08:19:55
У нас фичефлаги в проекте работают через тот же механизм, что и разделение по разным прайс планам фич, поэтому получается очень аккуратно в итоге, сначала фича делается, потом добавляется некоторым клиентам, потом какому-то прайс плану

В целом по нашему проекту я бы не сказал, чтобы мы очень страдали от этого

Alexander
08.08.2018
08:25:59
@oldenby ^^^
Я все пропустил )

Anton
08.08.2018
08:26:14
Всем привет. Предположим, есть достаточно большой проект, сердцем которого является некое API. Технологии не важны, но для контекста: PHP7 и GraphQL. Далее есть некие клиенты, которые работают с API: CLIENT1 - панель управления (админка) / ReactJS CLIENT2 - клиент для гостей / PHP CLIENT3 - личный кабинет для зарегистрированных / ReactJS CLIENT4 - блог / PHP ... Сейчас аутентификация пользователя на API происходит через JWT-token. Если вкратце, то мы делаем некий запрос с логином и паролем, получаем некий токен и с помощью него делаем уже авторизованные запросы. Далее я столкнулся со следующим вопросом: а как аутентифицировать клиенты? API имеет ряд запросов, которые не покрывает JWT, тоесть данные по этим запросам можно получить без аутентификации. Например пользователь заходит на CLIENT4, CLIENT4 в свою очередь делает запрос на API, получает список статей и показывает их пользователю (пользователь может быть гостем). Тут все верно. Однако остается и такой вариант, когда пользователь может миновать CLIENT4, сделать запрос к API и получить данные на прямую. Вопрос заключается в том, как лучше всего закрыть API от всех прямых запросов и дать доступ только определенным клиентам? ———————————————————————————- Некоторые дополнительные размышления. Хорошим и безопасным вариантом было бы ограничить доступ и сделать API локальным, однако некоторые клиенты могут быть на другом сервере или требовать внешний доступ (например мобильные устройства). Я отказался от использования протокола OAuth2, так-как по сути в проекте нет 3 стороны. Поэтому получается не совсем то, что нужно. Единственный вариант пока приходит в голову, это некий дополнительный токен, который хранит каждый клиент и получает доступ к API подставляя в каждый запрос. Собственно хотелось бы получить советы/рекомендации, возможно ссылки на технологии/протоколы, которые упустил.
Вот тут

Dmitry
08.08.2018
08:38:40
приведи пример когда не всегда возможны
когда много разработчиков работающих с кодом. привет, постоянные конфликты. когда изменение логики и число проверок фичефлагов будет на порядок больше, чем самих измнений

Sergey
08.08.2018
08:39:22
ну и когда у тебя то что ты описал - что-то идет не так. Тоглы обычно юзаются только на UI

где все красиво можно разделить на компоненты

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

(или разделения проекта на модули)

Dmitry
08.08.2018
08:45:04
ну т.е. если нет UI - нет фичефлагов?

Страница 1241 из 1387