Александр Вронский @shandy
CTO / Architect / IT Consultant
Информация
- В рейтинге
- 5 216-й
- Откуда
- Харьковская обл., Украина
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Chief Technology Officer (CTO), Software Architect
Lead
PHP
SQL
PostgreSQL
Docker
High-loaded systems
Неплохие фичи (хотелось бы дальнейшего развития) для DevOps'a (шелл, ссх, докер, кубер). Есть плагины на почти все случаи жизни (Markdown? Пожалуйста!).
Ну и правильно, а то вдруг все побегут с AWS на Гугл, а он не резиновый :)
Если речь про ранчер 1.6 — то да, тоже замечал что ipsec & dns помирают время от времени. Но в 2.0 уже ничего этого нет, пока не замечал таких странностей.
Он же в каталоге вроде есть. Но там есть нюансы в зависимости от ингресс контроллера…
З.Ы. Для меня неожиданность, что ранчер довольно популярное и/или узнаваемое решение в русскоязычном сегменте (да и вообще на этой стороне света)) Наверное стоит организовать какое-то комьюнити...
А не сложно для обычных разработчиков? Тут конфиги уже готовые, а как же понимание?
Как мне было бы проще взять Rancher 2.0 (установка в 1 клик докер команда) и зная AWS ключи можно поднять кластер в один клик без всяких kops и terraform...
P.S. № заказа: 6227979088
Да действительно, для примитивного типа array и ArrayAccess придется создавать свой псевдотип (например «hashable»?) и оно никак не будет пересекается с «iterable».
Пойти что-ли предложить им «hashable» RFC? ))
В целом думаю ориентир был на Hack, где это уже было реализовано именно так (типа зачем плодить другие варианты).
foreach для ArrayAccess никогда работал — https://3v4l.org/8H8vR
Насколько я помню (но могу и ошибаться), все кто реализует ArrayAccess так или иначе используют и Traversable интерфейс в конечном итоге. Например, тот же ArrayObject — он будет принят через «iterable» тип.
Другой вопрос самописные классы — но в них нет проблем добавить еще один дополнительный интерфейс Iterator или IteratorAggregate и все так же будет работать…
For reference, the way to fix any issues with this change is to make sure your __isset() or offsetExists() functions behave correctly. If this change causes issues with your code, it indicates that you already have a broken __isset/offsetExists implementation, but it's brokenness did not previously surface (one bug canceling another...)
А вообще согласен, даже patch версии нельзя бездумно или автоматически обновлять, хотя бы не почитав changelog. )
А можно поинтересоваться мощностью ваших машин выделенных под ELK стек?
Да, но там всего лишь 2 провайдера, glusterfs (который боязно применять в продакшене) и nfs который тормознутый даже для dev (плюс избыточно). А вот если настроить на хосте convoy с каким-то бекендом, то ранчер по сути не видет это все хозяйство и управлять volumes можно только в консоли хостов. Но подвижки в этом направлении в ранчере идут. Надеюсь вызреет что-то )
Встроенных провайдеров много — это однозначно плюс, но хардкод иногда избыточен. Нахватает возможностей CNAME из самого ранчера (чтобы не лазить в сам провайдер).
К примеру lb.project1.dev.domain.com -> LB разбрасывает запросы на другие стеки (один проект но разные ветки/девелоперы) -> nginx.prj1_user1.dev.domain.com, nginx.prj1_user2.dev.domain.com и тд. Сейчас, чтобы сделать это нужно у каждого nginx сервиса открыть порт на хосте (иначе DNS запись не создать), потом пойти в LB сервис и загнать каждый стек девелопера под правило по хостнейму. Можно использовать alias'ы, чтобы прописывать более удобные DNS, но опять же это возможность отредактировать только первый уровень хостнейма.
Ну безусловный лидер в этой области Amazon ECS с их амазоновскими полиси. Для ранчера конечно такого монстра не нужно, но GitHub провайдер и разграничений на уровне environments явно маловато (например, разные клиенты, но один прод env).
Но да, хотелось бы еще реальные мнения послушать...
Еще интересна тема с сотыми версиями компонентов и вообще про версионность (пакетов, модулей), будет ли версии модуля менять версию мадженты и тд. Что из себя представляет repo.magento.com, можно ли поднять зеркало, как распространять свои модули.
Ну в конфиге можно не пользоваться "::class" и ручками полное имя вписывать «User\Service\RoleService» (сначала сделать вид, что пишешь имя класса — IDE дополнит его, а потом обернуть в кавычки). И волки сыты, и овцы целы )
Я делаю через второй способ:
Ну естественно конструкция "::class" ограничивает совместимость — только от PHP 5.5.
Зато удобно, привыкаешь в мгновение ока… )