С марта этого годя я провел 50 51 первичную консультацию 🎉 Это, честно говоря, стало для меня приятной неожиданностью.
Я уже и забыл, что в прошлый раз, а было это в конце солнечного июня, счетчик показывал только 18 менти, которые получили мою помощь. Мне в какой-то момент показалось, что я сбавил обороты, но нет, получился достаточно стабильный темп: 5-6 консультаций в месяц или 1-2 консультации в неделю!
Накопив некоторую статистику, хочу поделиться с вами некоторыми выводами. Подводим итоги этого направления, так сказать.
Вывод первый. Наши проблемы в большинстве своем не уникальны.
Так 85% менти приходило с такими запросами:
• как устроиться на первую работу
• как выйти на новый уровень заработка
• как прокачать технические скилы
Остальные немногочисленные 15%, это:
• технические вопросы средней и высокой сложности
• смена технического стека / специальности
• как удовлетворить свои карьерные запросы (не подпадают под первую группу)
Хочется, конечно, систематизировать материал, выдаваемый первой группе менти, чтобы высвободить время для решения продвинутых запросов, но руки пока не дошли.
Вывод второй. Ребята, которые приходят на повторные консультации, их тоже около 15%, достигают крутых результатов.Это, конечно, не значит, что остальные не достигают 😄 , просто мне не так очевиден их прогресс. Обычно это трудяги, которые бы и сами добились своих целей, но пройдя по более извилистой и длинной дорожке. Моя задача — сэкономить их силы и время.
Вывод третий. Айти всё? Новичку в айти не войти? Деньги в айти закончились? Из айти пора идти в курьеры? Нет, это миф.
Перестаньте смотреть на статистику по средним зарплатам, собранную работодателями и агрегаторами! Перестаньте читать упаднические статьи! В айти все идет как надо, особенно у тех, кто умеет его правильно готовить🍷
У меня есть живые примеры, как ребята успешно (в денежном выражении):
• устраивались на первую работу, не имея профильного образования и коммерческого опыта
• росли на текущем месте работы
• находили новую работу с более интересными проектами, задачами и стеком
Такие вот несложные, но интересные для меня и многих моих учеников выводы. Спасибо всем, кто приходил на консультации и оставлял отзывы! Это была тяжелая, но продуктивная наша с вами работа.
Записывайтесь на консультацию, если вдруг еще этого не сделали. Самое время сформировать задел перед наступающим новым годом. Вы ведь поставили перед собой амбициозные цели? Я помогу в их достижении🥳
Я уже и забыл, что в прошлый раз, а было это в конце солнечного июня, счетчик показывал только 18 менти, которые получили мою помощь. Мне в какой-то момент показалось, что я сбавил обороты, но нет, получился достаточно стабильный темп: 5-6 консультаций в месяц или 1-2 консультации в неделю!
Накопив некоторую статистику, хочу поделиться с вами некоторыми выводами. Подводим итоги этого направления, так сказать.
Вывод первый. Наши проблемы в большинстве своем не уникальны.
Так 85% менти приходило с такими запросами:
• как устроиться на первую работу
• как выйти на новый уровень заработка
• как прокачать технические скилы
Остальные немногочисленные 15%, это:
• технические вопросы средней и высокой сложности
• смена технического стека / специальности
• как удовлетворить свои карьерные запросы (не подпадают под первую группу)
Хочется, конечно, систематизировать материал, выдаваемый первой группе менти, чтобы высвободить время для решения продвинутых запросов, но руки пока не дошли.
Вывод второй. Ребята, которые приходят на повторные консультации, их тоже около 15%, достигают крутых результатов.
Вывод третий. Айти всё? Новичку в айти не войти? Деньги в айти закончились? Из айти пора идти в курьеры? Нет, это миф.
Перестаньте смотреть на статистику по средним зарплатам, собранную работодателями и агрегаторами! Перестаньте читать упаднические статьи! В айти все идет как надо, особенно у тех, кто умеет его правильно готовить
У меня есть живые примеры, как ребята успешно (в денежном выражении):
• устраивались на первую работу, не имея профильного образования и коммерческого опыта
• росли на текущем месте работы
• находили новую работу с более интересными проектами, задачами и стеком
Такие вот несложные, но интересные для меня и многих моих учеников выводы. Спасибо всем, кто приходил на консультации и оставлял отзывы! Это была тяжелая, но продуктивная наша с вами работа.
Записывайтесь на консультацию, если вдруг еще этого не сделали. Самое время сформировать задел перед наступающим новым годом. Вы ведь поставили перед собой амбициозные цели? Я помогу в их достижении
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Необходимость писать многопоточный код появилась не от хорошей жизни. Мы вынуждены это делать, потому что в свое время человечество столкнулось с серьезными технологическими ограничениями, в связи с чем тактовая частота процессоров перестала расти. Почему? Выше частота — выше тепловыделение, а эффективно охладить CPU с их TDP — непростая задача.
На заре 21 века для решения этой проблемы появились многоядерные процессоры: будем не частоту увеличивать, а число ядер. Однако ядра не берутся из ниоткуда, их нужно было встраивать рядом с уже имеющимся ядром. Как этого достичь? Можно увеличивать число транзисторов на единицу площади (уменьшение техпроцесса), пытаясь обуздать физику p-n перехода и свойства полупроводников. Можно увеличивать размер кристалла, что связано с увеличением брака, или количество самих кристаллов (чиплетная архитектура).
Ок, большое число ядер — большие вычислительные мощности. Однако мы, как разработчики, теперь сталкиваемся с задачей вертикального масштабирования наших приложений на многоядерные CPU. Иными словами мы должны задействоватьпотанцевал потенциал каждого из предоставленных нам ядер, чтобы занять как можно больше процессорного времени.
Если мы говорим о написании бизнес-кода, то зачастую управление потоками любезно скрыто от нас под капотом удобного API фреймворка или библиотеки. За это хочется сказать отдельное спасибо их мейнтейнерам: при перекладывании json'а🐵 нам почти не приходится задумываться о том, что мы работаем в многопоточной среде. Почему "почти"? К сожалению, при совместном доступе к разделяемым данным проблемы вроде race condition или data race все еще могут возникнуть. Если ваш бизнес-код взаимодействует с внешними ресурсами (БД, кэшем, файлами и т.д.), то ошибки проектирования могут проявиться даже при использовании высокоуровневых абстракций. И все же написание многопоточного кода стало довольно нишевой штукой, которая чаще всего встречается при разработке самих фреймворков и библиотек.
Разработчики начали понимать, что без базовых знаний, как работать в многопоточной среде не обойтись, хотя на собеседованиях многие все равно недоумевают от вопросов по этой теме. Но жизнь идет и настаёт время новых вызовов. Сейчас в России их два:
1️⃣ крупные компании испытывают проблемы с получением современного железа в желаемом объеме (значительно выросли цены и усложнились логистические цепочки)
2️⃣ рост трафика на внутренние сервисы (ведь доступ к зарубежным ограничен)
В этих условиях от разработчика требуется не только чтобы приложение работало быстро. Оно должно эффективно утилизировать имеющиеся ресурсы. Если говорить о CPU-intensive приложениях, то тут в первую очередь нужно будет работать над реализацией эффективных алгоритмов. Если же говорить о сервисах с большим числом интеграций, то один из способов увеличения пропускной способности — избегать любых блокировок потоков(VPN тут не поможет 😃 ) . Блокирующие операции, такие как ожидание завершения другого потока, ответа от базы данных или очередного микросервиса, приводят к простоям приложения. Избежать этого помогают асинхронные неблокирующие подходы. Делаю предположение, что количество проектов, реализующих такую концепцию, в энтерпрайзе будет только расти.
Как с этим обстоят дела в полях? Мне довелось общаться с Java-разработчиками из разных компаний, и я часто слышал, что Reactor/WebFlux у них не прижился из-за сложности разработки и поддержки написанных на нем приложений. Понятно, почему все так полюбили Go — там асинхронный неблокирующий код относительно легко готовить. В Kotlin асинхронные цепочки спрятаны за корутинами, если вы используете библиотеку kotlinx-coroutines-reactor, что достаточно сильно упрощает бизнесовый, но не библиотечный код.
В новому году посмотрим, сбудется ли мой прогноз. По крайней мере рост числа проектов на Go уже заметен. Посмотрим, что будет с таковыми на Java и Kotlin😎 .
На заре 21 века для решения этой проблемы появились многоядерные процессоры: будем не частоту увеличивать, а число ядер. Однако ядра не берутся из ниоткуда, их нужно было встраивать рядом с уже имеющимся ядром. Как этого достичь? Можно увеличивать число транзисторов на единицу площади (уменьшение техпроцесса), пытаясь обуздать физику p-n перехода и свойства полупроводников. Можно увеличивать размер кристалла, что связано с увеличением брака, или количество самих кристаллов (чиплетная архитектура).
Ок, большое число ядер — большие вычислительные мощности. Однако мы, как разработчики, теперь сталкиваемся с задачей вертикального масштабирования наших приложений на многоядерные CPU. Иными словами мы должны задействовать
Если мы говорим о написании бизнес-кода, то зачастую управление потоками любезно скрыто от нас под капотом удобного API фреймворка или библиотеки. За это хочется сказать отдельное спасибо их мейнтейнерам: при перекладывании json'а
Разработчики начали понимать, что без базовых знаний, как работать в многопоточной среде не обойтись, хотя на собеседованиях многие все равно недоумевают от вопросов по этой теме. Но жизнь идет и настаёт время новых вызовов. Сейчас в России их два:
В этих условиях от разработчика требуется не только чтобы приложение работало быстро. Оно должно эффективно утилизировать имеющиеся ресурсы. Если говорить о CPU-intensive приложениях, то тут в первую очередь нужно будет работать над реализацией эффективных алгоритмов. Если же говорить о сервисах с большим числом интеграций, то один из способов увеличения пропускной способности — избегать любых блокировок потоков
Как с этим обстоят дела в полях? Мне довелось общаться с Java-разработчиками из разных компаний, и я часто слышал, что Reactor/WebFlux у них не прижился из-за сложности разработки и поддержки написанных на нем приложений. Понятно, почему все так полюбили Go — там асинхронный неблокирующий код относительно легко готовить. В Kotlin асинхронные цепочки спрятаны за корутинами, если вы используете библиотеку kotlinx-coroutines-reactor, что достаточно сильно упрощает бизнесовый, но не библиотечный код.
В новому году посмотрим, сбудется ли мой прогноз. По крайней мере рост числа проектов на Go уже заметен. Посмотрим, что будет с таковыми на Java и Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Кажется, на новый год мне пожелали мало здоровья — проболел все праздники 😁 ОРВИ, будь она неладна...
В мои планы на эти длинные каникулы входило разобраться наконец c Istio (Service Mesh в k8s), так как изученного в прошлом году ванильного кубера для решения рабочих задач решительно не хватает. Но, как вы понимаете, этим планам не суждено было сбыться. Вооружившись таблетками и спреями, я лежал на диване у купленного почти три месяца назад, но почти не использовавшегося, 65-дюймового ТВ.
В обычное время я сериалами не увлекаюсь, как-то не до них, но раз выдалось подходящее время, то почему бы не глянуть пару-тройку? Настроение было смотреть сериалы про времена СССР. Интересное настроение, не правда ли 😅?
Оказалось, у нас умеют снимать хорошие сериалы. Я, конечно, и раньше знал об этом, даже некоторые смотрел, но тут прям несколько подряд и все понравились.
Комитет — про хороший СССР. Бодрый и бойкий сериал о работе и жизни трех друзей КГБшников от НТВкто бы сомневался 😃 . Сюжет тянется через года: начали в 1970-ые, а закончили — в нулевые. Менялись политический строй, общество, люди. На этом фоне было увлекательно наблюдать, как друзья проживали такие похожие, но в то же время такие разные судьбы.
Игры — реалистично? про СССР. Сериал про Олимпиаду 80 и события, которые ей сопутствовали. Намешали целый ворох клеше, но странным образом это сработало. Мне было увлекательно и интересно. Я этой истории поверил.
Красная королева — про плохой СССР. Сериал про советскую модель с непростой судьбой от Первого канала. Спойлер:от серии к серии жизнь главной героини становится все невыносимее, причем воспринимается все очень органично. Эту историю было морально тяжело смотреть. Без КГБшников тут не обошлось. Увы, хэппи энда не случилось. Кажется ,что такое лучше не показывать на федеральном канале. Правда, жена сказала, что она с бабушкой по ТВ в детстве только такие сериалы и смотрела .
Чтобы разбавить это историческое трио, я обратился к дуэту про Папу Римского. Тем более хотелось посмотреть что-то более жизнеутверждающее. Молодой Папа и Новый Папа — хорошо показывают, что такое церковь и какой она должна? быть. Мне оказался по душе этот микс сарказма, эпатажа и философских размышлений. Джуд Лоу в роли Пия XIII стал украшением этой работы. Даже захотелось взять себе на вооружение несколько цитат на будущее.
Как видите, каникулы прошли не так уж плохо: мой диванный режим был по-настоящему насыщенным. Сегодня, в первый рабочий день, я чувствовал себя отдохнувшим. Возможно именно потому, что мои грандиозные планы сорвались.
В мои планы на эти длинные каникулы входило разобраться наконец c Istio (Service Mesh в k8s), так как изученного в прошлом году ванильного кубера для решения рабочих задач решительно не хватает. Но, как вы понимаете, этим планам не суждено было сбыться. Вооружившись таблетками и спреями, я лежал на диване у купленного почти три месяца назад, но почти не использовавшегося, 65-дюймового ТВ.
В обычное время я сериалами не увлекаюсь, как-то не до них, но раз выдалось подходящее время, то почему бы не глянуть пару-тройку? Настроение было смотреть сериалы про времена СССР. Интересное настроение, не правда ли 😅?
Оказалось, у нас умеют снимать хорошие сериалы. Я, конечно, и раньше знал об этом, даже некоторые смотрел, но тут прям несколько подряд и все понравились.
Комитет — про хороший СССР. Бодрый и бойкий сериал о работе и жизни трех друзей КГБшников от НТВ
Игры — реалистично
Красная королева — про плохой СССР. Сериал про советскую модель с непростой судьбой от Первого канала. Спойлер:
Чтобы разбавить это историческое трио, я обратился к дуэту про Папу Римского. Тем более хотелось посмотреть что-то более жизнеутверждающее. Молодой Папа и Новый Папа — хорошо показывают, что такое церковь и какой она должна
Как видите, каникулы прошли не так уж плохо: мой диванный режим был по-настоящему насыщенным. Сегодня, в первый рабочий день, я чувствовал себя отдохнувшим. Возможно именно потому, что мои грандиозные планы сорвались.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👏1💔1
Каждый год в первых числах января ВКонтакте (да, да, я им пользуюсь) переключает порядок постов в моей ленте новостей на "сначала интересные" вместо моего обычного "по времени публикации". После этого моя лента превращается в поток смешнявок и других увлекательных постов. Спасибо, не надо.
Вполне возможно, что там и нашлась бы полезная для меня информация, но я давно переборол в себе нервоз упустить что-то в информационном поле. А если это будет что-то, действительно, важное? Об этом я и так узнаю, если оно таковым является.
В моей ленте остались только те сообщества, чьи посты я не пропускаю и всегда дочитываю до конца. На другие сообщества я тоже подписан, чтобы не потерять, но выкинул из ленты их публикации. К ним я обращаюсь от случая к случаю, когда возникает такая необходимость.
Примерно той же схемы я придерживаюсь и в tg: почти все каналы у меня замьючены и лежат в архиве. Для интересных мне каналов (в основном это блоги) я создал отдельную папку, к которой периодически обращаюсь, но все они так же замьючены.
Я принципиально не подписываюсь на новостные каналы, иначе точно сойду с ума от потокачасто негативной информации. У меня нет TODO листа на статьи, курсы, книги, к которым я бы никогда не вернулся. Поставил МТС Защитник, чтобы не контактировать со спамерами. Я стараюсь оградить себя от информации, которая мне сейчас не нужна.
Я как реактивная система, которая обладает свойством backpressure: пытаюсь снизить входящую порожняковую информационную нагрузку. Получается, но хотелось бы лучше. А у тебя как с этим? Получается?
Вполне возможно, что там и нашлась бы полезная для меня информация, но я давно переборол в себе нервоз упустить что-то в информационном поле. А если это будет что-то, действительно, важное? Об этом я и так узнаю, если оно таковым является.
В моей ленте остались только те сообщества, чьи посты я не пропускаю и всегда дочитываю до конца. На другие сообщества я тоже подписан, чтобы не потерять, но выкинул из ленты их публикации. К ним я обращаюсь от случая к случаю, когда возникает такая необходимость.
Примерно той же схемы я придерживаюсь и в tg: почти все каналы у меня замьючены и лежат в архиве. Для интересных мне каналов (в основном это блоги) я создал отдельную папку, к которой периодически обращаюсь, но все они так же замьючены.
Я принципиально не подписываюсь на новостные каналы, иначе точно сойду с ума от потока
Я как реактивная система, которая обладает свойством backpressure: пытаюсь снизить входящую порожняковую информационную нагрузку. Получается, но хотелось бы лучше. А у тебя как с этим? Получается?
👍9🤔1
Кажется, что после предновогоднего поста можно было бы списать Java со счетов: уж больно сложно на нем писать асинхронный неблокирующий код. Встроенный CompletableFeature имеет существенные архитектурные ограничения в виде невозможности отмены асинхронной таски, а Reactor/WebFlux сложны, да и реактивность не всем нужна.
Грусть, печаль и тоска. Так Java уже все или еще нет? Мы же совсем недавно заикались о Project Loom здесь. Идея проекта в том, что JVM научили переключать поток на выполнение чего-то полезного, если он заблокирован, например, IO.
Крупные ребята, вроде Netflix, уже вовсю тестируют силу виртуальных потоков, иогребают, но не по собственной вине , о чем рассказывали у себя блоге. В чем была причина? Если кратко, то виртуальные потоки пока плохо дружат с synchronized методами и блоками, что может приводить к deadlock'ам. В марте в 24-ый релиз Java должны завезти фикс. Если он все же не станет LTS, то придется ждать до сентября, если роадмап не поменяют. Так что пока нужно быть осторожнее, тем более в проде.
Как виртуальные потоки выглядят в коде?
Вполне симпатично, почти как в Kotlin:
Даже Structured Concurrency выглядит сносно, хотя scope.join() выглядит криво :
В общем не все так плохо. Project Loom — сильная фича, которая почти не потребует роста экспертизы разработчиков, но значительно повысит пропускную способность уже написанных проектов. Kotlin тоже выиграл, так как корутины дружат с виртуальными потоками. Так что с Go мы еще поборемся🔫
Для интереса на github выполнил два поисковых запроса: "Flux<" language:Java вернул 158k результатов, а "Mono<List" language:Java — 19k. Ни на что не намекаю😃
Грусть, печаль и тоска. Так Java уже все или еще нет? Мы же совсем недавно заикались о Project Loom здесь. Идея проекта в том, что JVM научили переключать поток на выполнение чего-то полезного, если он заблокирован, например, IO.
Крупные ребята, вроде Netflix, уже вовсю тестируют силу виртуальных потоков, и
Как виртуальные потоки выглядят в коде?
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
var user = executor.submit(() -> userRepository.find(userId));
var projects = executor.submit(() -> projectRepository.find(userId));
return new Profile(user.get(), projects.get());
}Вполне симпатично, почти как в Kotlin:
val Dispatchers.LoomDispatcher: CoroutineDispatcher
get() = Executors.newVirtualThreadPerTaskExecutor().asCoroutineDispatcher()
...
suspend fun getProfile(userId: String): Profile = withContext(LoomDispatcher) {
val userDeferred = async { userRepository.find(userId) }
val projectsDeferred = async { projectRepository.find(userId) }
Profile(userDeferred.await(), projectsDeferred.await())
}
Даже Structured Concurrency выглядит сносно
try (var scope = new StructuredTaskScope<>()) {
var user = scope.fork(() -> userRepository.find(userId));
var repositories = scope.fork(() -> projectRepository.find(userId));
scope.join();
return new Profile(user.get(), repositories.get());
}
}В общем не все так плохо. Project Loom — сильная фича, которая почти не потребует роста экспертизы разработчиков, но значительно повысит пропускную способность уже написанных проектов. Kotlin тоже выиграл, так как корутины дружат с виртуальными потоками. Так что с Go мы еще поборемся
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🤔1
Может я сильно придираюсь? Позвольте мне наехать на процесс восстановления пароля на сайте pochta.ru 🤣
На волне различного рода утечек на всех ресурсах, где это было возможно, я подключил двухфакторную аутентификацию (two-factor authentication, 2FA). Обычно в качестве второго фактора в дополнение к паролю используются sms- или email-коды. Эти факторы могут не сработать, если ваша почта недостаточно защищена или вы потеряете/оставите без внимания смартфон, на котором:
1️⃣ не будет установлен пин-код на сим-карте (злоумышленник просто вставит ее в свой смартфон и начнет получать смски). Как его установить?
2️⃣ не настроена блокировка экрана (с паролем/FaceID и т.п.)
3️⃣ не защищены паролем приложения почты и смс-сообщений и уведомления от них
Но на этом настоящие тревожные пирожочки не останавливаются.
На волне мошеннических действий с SMS-кодами я перевел, где это было возможно, 2FA на one-time password (OTP) для лучшей защиты своих аккаунтов.
Почему это актуально? Во-первых, есть такая угроза, как SIM Swapping или SIM-jacking (замена SIM-карты через сотрудника вашего оператора). Во-вторых, я не видел ещё ни одной новости, где жертва передала OTP-код: если с смсками глаз у многих уже замылился, то к OTP пользователи относятся более внимательно.
Конечно, такие меры защиты наиболее актуальны для аккаунтов банков, Госуслуг и других государственных структур. Так вот, если вы начнёте процедуру смены пароля на сайте Почты России, то второй фактор будет выключен (о чем вам сообщит соответствующее письмо выше). Останется только один фактор в виде кода из смс. Выглядит несекурненько.
Какие варианты решения проблемы я вижу?
* использовать email как второй фактор
* использовать заранее выданные проверочные коды (такие, например, Github выдает, когда вы 2FA подключаете)
* использовать для проверки авторизацию через Госуслуги
Надеюсь, что Почта все же залатает эту брешь в нашей с вами безопасности🎹
На волне различного рода утечек на всех ресурсах, где это было возможно, я подключил двухфакторную аутентификацию (two-factor authentication, 2FA). Обычно в качестве второго фактора в дополнение к паролю используются sms- или email-коды. Эти факторы могут не сработать, если ваша почта недостаточно защищена или вы потеряете/оставите без внимания смартфон, на котором:
Но на этом настоящие тревожные пирожочки не останавливаются.
На волне мошеннических действий с SMS-кодами я перевел, где это было возможно, 2FA на one-time password (OTP) для лучшей защиты своих аккаунтов.
Почему это актуально? Во-первых, есть такая угроза, как SIM Swapping или SIM-jacking (замена SIM-карты через сотрудника вашего оператора). Во-вторых, я не видел ещё ни одной новости, где жертва передала OTP-код: если с смсками глаз у многих уже замылился, то к OTP пользователи относятся более внимательно.
Конечно, такие меры защиты наиболее актуальны для аккаунтов банков, Госуслуг и других государственных структур. Так вот, если вы начнёте процедуру смены пароля на сайте Почты России, то второй фактор будет выключен (о чем вам сообщит соответствующее письмо выше). Останется только один фактор в виде кода из смс. Выглядит несекурненько.
Какие варианты решения проблемы я вижу?
* использовать email как второй фактор
* использовать заранее выданные проверочные коды (такие, например, Github выдает, когда вы 2FA подключаете)
* использовать для проверки авторизацию через Госуслуги
Надеюсь, что Почта все же залатает эту брешь в нашей с вами безопасности
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤷♂1
Нечасто приходится слушать экспертов, которые и в разработке (софте) понимают и в управлении миллиардным IT-бизнесом. Меня ещё подкупило человеческое отношение Дмитрия к разработчикам. По крайней мере такое впечатление сложилось.
Преимущественно про Мой Офис шел разговор, но также зацепили Астру, Росу, Постгрес. Посмотрел на одном дыханиина 2x, конечно 😎 . Приятного просмотра.
Преимущественно про Мой Офис шел разговор, но также зацепили Астру, Росу, Постгрес. Посмотрел на одном дыхании
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😱1
Весь прошлый спринт решал интересную рабочую задачу: нужно было настроить маршрутизацию в тестовом кластере k8s с Istio таким образом, что при добавлении в запрос пользователем заголовка
Думаю, что такое k8s всем и так понятно, но что такое Istio?
Под каждым istio-proxy-сайдкаром на прикрепленной монструозной картинке (для простоты istio-proxy отображено схематично, получилось больше похоже на Istio Ambient -- sidecarless Istio) можно посмотреть конфигурацию его VirtualService.
Для чего в описанной схеме WireMock?
* сервисы смежных команд прилегли отдохнуть или вовсе еще не были подняты, но надо продолжать разработку/тестирование
* нужно смоделировать какой-то сценарий, для которого долго/дорого заводить тестовые данные в интеграционные сервисы
Схему, которую реализовал на данный момент, представлена на скрине под заголовком Как стало: для сервисов, которые должны реагировать на наличие заголовка
Для таких правил задаем низкий приоритет (большое значение
На этом план-минимум выполнен👏 . В качестве задания со ⭐️ мне хочется настроить динамический выбор
1) синтаксис
2) если вычисленный
В Алибабе сделали как раз то, что мне хотелось бы реализовать в целевом решении, а именно динамически вычисляемый🤩
Планирую провести несколько встреч с гуру k8s, чтобы реализовать целевое решение. Пожелайте удачи, она мне пригодится🤩
X-MOCK трафик бы маршрутизировался на инстанс WireMock вместо своего обычного маршрута. Давайте разбираться по порядку.Думаю, что такое k8s всем и так понятно, но что такое Istio?
Istio — расширение для k8s, которое реализует концепцию service mesh для управления взаимодействием между сервисами. Оно предоставляет такие возможности, как балансировка нагрузки, мониторинг, управление трафиком, безопасностью и политиками доступа налету, не требуя изменений в коде приложений. Service mesh реализуется как набор прокси-серверов, а именно sidecar-контейнеров с Envoy, которые размещаются рядом с каждым сервисом и перехватывают весь входящий и исходящий трафик.
Под каждым istio-proxy-сайдкаром на прикрепленной монструозной картинке (для простоты istio-proxy отображено схематично, получилось больше похоже на Istio Ambient -- sidecarless Istio) можно посмотреть конфигурацию его VirtualService.
Для чего в описанной схеме WireMock?
* сервисы смежных команд прилегли отдохнуть или вовсе еще не были подняты, но надо продолжать разработку/тестирование
* нужно смоделировать какой-то сценарий, для которого долго/дорого заводить тестовые данные в интеграционные сервисы
Схему, которую реализовал на данный момент, представлена на скрине под заголовком Как стало: для сервисов, которые должны реагировать на наличие заголовка
X-MOCK, добавляем маршруты VirtualService для istio-proxy. На wiremock зашиваем нужный нам ответ, который будем отдавать по заданному шаблону запроса. WireMock также умеет проксировать запросы, если например, ни один шаблон не будет задан:{
"priority": 99999,
"request": {
"method": "ANY",
"urlPattern": "/internal/cards"
},
"response": {
"proxyBaseUrl": "http://gateway.outbound-apps"
}
}Для таких правил задаем низкий приоритет (большое значение
priority).На этом план-минимум выполнен
subset в зависимости от приходящих заголовков, чтобы не прописывать каждое правило в VirtualService явно. Здесь есть две проблемы:1) синтаксис
subset: $dynamic-subset-depend-on-x-feature не поддерживается VirtualService, subset должен быть задан литералом2) если вычисленный
subset не существует, то запрос упадет. Такое поведение возможно, но хотелось перенаправить запрос на заранее выбранный subset, например, defaultВ Алибабе сделали как раз то, что мне хотелось бы реализовать в целевом решении, а именно динамически вычисляемый
subset + fallback для случая, когда нужный subset не найден для сервиса, в который планируем отправить запрос. Проблема в том, что в официальных релизах Istio такой функциональности нет Планирую провести несколько встреч с гуру k8s, чтобы реализовать целевое решение. Пожелайте удачи, она мне пригодится
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Продолжаю шатать инфраструктуру. Поднимаю на десяти! машинках отказоустойчивый (HA) кластер PostgreSQL. Куда так много? Загибаем пальчики ☝️ :
✔️ 4 тачки под одного лидера и три реплики (синхронная + асинхронная + асинхронный резерв)
✔️ 3 тачки под etcd (для распределенного хранения состояния кластера)
✔️ 1 тачка под HAProxy (для балансировки нагрузки на PgBouncer'ы)
✔️ 2 тачки под PgBouncer (своего рода мультиплексор для сглаживания архитектуры PostgreSQL «один процесс на соединение»)
Посмотреть, как это выглядит, можно на первом оранжево-синем скрине. Остальные 6 скринов тоже про HA кластера PostgreSQL. Решения похожи, но все же отличаются, тем:
❓ что используем для хранения состояния кластера (etcd, Consul, Zookeeper, k8s)
❓ вынесено ли это хранилище на отдельный пул тачек
❓ сколько используем PgBouncer'ов и как их размещаем (на отдельных серверах или рядом с СУБД)
❓ нужны ли резервные реплики
❓ сколько HAProxy и куда они балансируют трафик
❓ нужен ли для получившейся архитектуры keepalived, vip-manager или confd
Как нетрудно заметить все варианты работают под управлением Patroni. Есть ли альтернативы?
pg_auto_failover — встроенное в PostgreSQL решение, хорошо для простых сценариев, но не даёт такой гибкости
Repmgr — промежуточный вариант между pg_auto_failover и Stolon/Patroni, обладает простой настройкой, но ограниченной поддержкой k8s
Stolon — схож с Patroni по гибкости и сложности настройки, но перестал активно мейнтейниться
P.S. А теперь сравните показанные решения с MongoDB, где отказоустойчивый кластер идет из коробки😑 .
P.P.S. Автоматизации развертывания решения на пятом скрине можно добиться с помощью Autobase
✔️ 4 тачки под одного лидера и три реплики (синхронная + асинхронная + асинхронный резерв)
✔️ 3 тачки под etcd (для распределенного хранения состояния кластера)
✔️ 1 тачка под HAProxy (для балансировки нагрузки на PgBouncer'ы)
✔️ 2 тачки под PgBouncer (своего рода мультиплексор для сглаживания архитектуры PostgreSQL «один процесс на соединение»)
Посмотреть, как это выглядит, можно на первом оранжево-синем скрине. Остальные 6 скринов тоже про HA кластера PostgreSQL. Решения похожи, но все же отличаются, тем:
Как нетрудно заметить все варианты работают под управлением Patroni. Есть ли альтернативы?
pg_auto_failover — встроенное в PostgreSQL решение, хорошо для простых сценариев, но не даёт такой гибкости
Repmgr — промежуточный вариант между pg_auto_failover и Stolon/Patroni, обладает простой настройкой, но ограниченной поддержкой k8s
Stolon — схож с Patroni по гибкости и сложности настройки, но перестал активно мейнтейниться
P.S. А теперь сравните показанные решения с MongoDB, где отказоустойчивый кластер идет из коробки
P.P.S. Автоматизации развертывания решения на пятом скрине можно добиться с помощью Autobase
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🫡1
Это я, отдохнувший за выходные, сфотографировался на карту болельщика, чтобы в конце марта сходить на матч Зенит-Рубин. Оформление хоть и не очень сложное (через отдельное приложение Госуслуг), но требует отсканировать чип действующего загранпаспорта паспорта (это которые на 10 лет оформляются, в пятилетних чипа нет). Первый раз приложение зависло при считывании на 0%, но со второго раза процедура прошла успешно. Прощаю, не пришлось идти в МФЦ 🎉 .
Почему недостаточно тех данных, что есть уже есть на Госуслугах — непонятно. Помнится, что взятая дистанционно 5 лет назад ипотека и то проще оформлялась🤩 .
P.S. Если еще не оформили замозапрет на взятие на вас кредитов и займов (защищаемся от мошенников, можно снять в любой момент), то можете сделать это через Госуслуги онлайн. Чувствую, что сейчас по стране прокатится волна звонков от мошенников, которые будут "помогать оформлять самозапрет".
P.P.S. Не шарьте экран своего телефона посторонним людям. Могут попытаться авторизоваться и увидят sms-код, который придет вам в уведомлении. Другие рекомендации описал тут.
P.P.P.S. Еще участились сливы ФИО коллег по работе (не моей, а в принципе). Ссылаясь на ФИО начальника или коллеги к вам могут втереться в доверие. Соблюдайте бдительность😎
Почему недостаточно тех данных, что есть уже есть на Госуслугах — непонятно. Помнится, что взятая дистанционно 5 лет назад ипотека и то проще оформлялась
P.S. Если еще не оформили замозапрет на взятие на вас кредитов и займов (защищаемся от мошенников, можно снять в любой момент), то можете сделать это через Госуслуги онлайн. Чувствую, что сейчас по стране прокатится волна звонков от мошенников, которые будут "помогать оформлять самозапрет".
P.P.S. Не шарьте экран своего телефона посторонним людям. Могут попытаться авторизоваться и увидят sms-код, который придет вам в уведомлении. Другие рекомендации описал тут.
P.P.P.S. Еще участились сливы ФИО коллег по работе (не моей, а в принципе). Ссылаясь на ФИО начальника или коллеги к вам могут втереться в доверие. Соблюдайте бдительность
Please open Telegram to view this post
VIEW IN TELEGRAM
💯5❤🔥2😱1