Как стать автором
Обновить
11
0

Пользователь

Отправить сообщение

Добро пожаловать в мир приключений по API-серверу Kubernetes. Часть 1

Время на прочтение24 мин
Количество просмотров5.7K

Kubernetes состоит из нескольких компонентов, где значительная часть взаимодействий итогового пользователя с системой осуществляется при помощи API-сервера. Он представляет собой отправную точку для многих функций, которые проект создал за время своего существования, и может быть расширен для поддержания дополнительной произвольной функциональности. Поэтому API-сервер иногда оказывается ограниченным местом, которое изначально не было задумано для размещения, или, по крайней мере, хорошего размещения.

В новой серии статей «Мир приключений по API-серверу Kubernetes» («k8s ASA») мы погрузимся во все детали работы API-сервера, получим представление о том, как они работают, а также с какими компонентами взаимодействуют. Параллельно поэкспериментируем с заменой пользовательских компонентов, создадим инструментарий и рассмотрим, как другие пользователи модифицировали его в соответствии с пользовательскими кейсами. Кто знает, возможно, даже построим наш собственный. ?

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Торговать на зарубежных брокерских счетах снова можно, но только если вы расскажете о них налоговой

Время на прочтение10 мин
Количество просмотров12K

С марта 2023 года российское инвестиционное сообщество оказалось расколото: одни юристы настаивали на том, что сделки с бумагами на зарубежных счетах оказались под запретом, другие считали, что это не так. Новый указ от 08.11.2023 ставит в этом вопросе точку – в данной статье мы простым языком объясняем его последствия.

Читать далее
Всего голосов 10: ↑8 и ↓2+8
Комментарии8

Кто победит: средненагруженный Kubernetes или простой list-запрос?

Время на прочтение5 мин
Количество просмотров7K

В статье мы расскажем, как столкнулись с множественными запросами к API-серверу Kubernetes от одного из приложений, к чему это привело и каким образом проблема была решена.

Читать далее
Всего голосов 36: ↑36 и ↓0+36
Комментарии1

Как устроено индексирование баз данных

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров91K

Индексирование баз данных — это техника, повышающая скорость и эффективность запросов к базе данных. Она создаёт отдельную структуру данных, сопоставляющую значения в одном или нескольких столбцах таблицы с соответствующими местоположениями на физическом накопителе, что позволяет базе данных быстро находить строки по конкретному запросу без необходимости сканирования всей таблицы. Применяются разные типы индексов, однако они занимают пространство и должны обновляться при изменении данных. Важно тщательно продумывать стратегию индексирования базы данных и регулярно её оптимизировать.
Читать дальше →
Всего голосов 53: ↑51 и ↓2+64
Комментарии9

Чистый код. Часть 3

Время на прочтение15 мин
Количество просмотров17K

Привет! Этим постом я завершаю цикл из конспектов видеолекция Дяди Боба про чистый код.

Сегодня обсудим обработку исключений, комментарии к коду, форматирование, размеры файлов и дата-классы.

Обработка исключений

Не раскрывайте реализацию

Майкл Физерс (Working effectively with legacy code) сказал: «Если обработка ошибок раскрывает реализацию — то это неправильная обработка ошибок». Не раскрывать реализацию можно, если написать исключения перед тем, как написать реализацию функции (привет TDD — по-другому и не получится).

Рассмотрим классCommissionCalculator , который обменивает сумму в разных валютах.

Читать далее
Всего голосов 23: ↑20 и ↓3+20
Комментарии52

Как Федор выписывался из военкомата после эмиграции: полный гайд по снятию с воинского учета удаленно

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров129K

На прошлой неделе мой подписчик по имени Федя успешно снялся с воинского учета, не покидая Казахстан. В этой статье мы подробно разберем его пример, а также вместе с юристом распишем вам детальный пошаговый гайд для всего процесса.

Читать далее
Всего голосов 119: ↑101 и ↓18+114
Комментарии280

Где решать задачи по программированию, чтобы пройти путь from zero to hero

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров116K

Если вам о чём-то говорят фамилии Зив, Хомченко и Рымкевич, иди сюда, дай обниму, бедолага-олимпиадник, то вы наверняка знаете, как важно прорешивать задачи для полноценного, осознанного и глубокого понимания изученного материала. Когда нет или совсем мало реальной практики, задачи дают возможность покрыть практикой все теоретические знания, погрузиться в неожиданные выводы, сложности, баги, препятствия. Более того, даже если практики достаточно, задачи помогают относительно быстро, комплексно и глубоко проработать типичные и нетипичные ситуации, возникающие в разработке (любой другой науке). Это всегда безопасный (никто не взрывает лабораторию и не роняет прод), доступный и удобный способ подробно разобраться в предмете. Определённо, программирования это касается в первую очередь.

Читать далее
Всего голосов 42: ↑41 и ↓1+65
Комментарии25

Интерфейсы в Go — как красиво выстрелить себе в ногу

Время на прочтение8 мин
Количество просмотров38K

Вы когда-нибудь задумывались, что такое interface? Ну, то есть, не ключевое слово синтаксиса, а что это такое в рантайме? Как выглядит его проинстанцированный объект? А, главное, каким свойством обладает при сравнении с nil? Нет? Тогда устраивайтесь поудобнее, я сейчас вам всё расскажу.

Go →
Всего голосов 18: ↑17 и ↓1+16
Комментарии5

Переходим на Go: 16 материалов для самостоятельного изучения языка

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров50K

Привет! Меня зовут Владислав Попов, я автор курса «Go-разработчик» Яндекс Практикума. Когда-то я сам был студентом — хотел учиться Go, но такого курса в Практикуме не было, поступил на Python. Прошёл вводную часть — и тут стартовал желанный курс по Go. В тот же вечер оформил возврат и перепоступил. Попал в первый поток, прошёл его, и после сдачи итогового проекта мне предложили стать тестером курса «Продвинутый Go-разработчик».

Оба курса были ещё не идеальны — что-то требовало доработки, некоторые темы казались мне недостаточно раскрытыми. Я сообщил об этом команде курса и предложил варианты, что можно улучшить. В какой-то момент о них узнал продакт-менеджер — и так я получил приглашение поработать с командой Практикума. Мне предстояло разработать концепцию и внести предложения по рефакторингу курса, но я сделал бросок пантеры и написал несколько уроков с нуля. Команде они понравились. Так я стал работать в Практикуме.

За время работы с Go я понял, что сам язык не очень сложный и подходит даже в качестве первого, но нужно выучить синтаксис и погрузиться в некоторые особенности, которые отличают Go от других языков: например, интерфейсы и особенности встраивания. А ещё важно на старте хорошо знать Git и ориентироваться в работе SQL (причём любого).

Эта подборка составлена менторами нашего курса по Go-разработке для практикующих программистов. Она родилась благодаря коллективному разуму наших наставников, которые занимают позиции синьор-разработчиков на Go в разных компаниях.

Читать далее
Всего голосов 16: ↑12 и ↓4+11
Комментарии12

BPF для самых маленьких, часть первая: extended BPF

Время на прочтение51 мин
Количество просмотров30K

В начале была технология и называлась она BPF. Мы посмотрели на нее в предыдущей, ветхозаветной, статье этого цикла. В 2013 году усилиями Алексея Старовойтова (Alexei Starovoitov) и Даниэля Боркмана (Daniel Borkman) была разработана и включена в ядро Linux ее усовершенствованная версия, оптимизированная под современные 64-битные машины. Эта новая технология недолгое время носила название Internal BPF, затем была переименована в Extended BPF, а теперь, по прошествии нескольких лет, все ее называют просто BPF.


Грубо говоря, BPF позволяет запускать произвольный код, предоставляемый пользователем, в пространстве ядра Linux и новая архитектура оказалась настолько удачной, что нам потребуется еще с десяток статей, чтобы описать все ее применения. (Единственное с чем не справились разработчики, как вы можете видеть на кпдв ниже, это с созданием приличного логотипа.)


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

Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии5

Шпаргалка по структурам данных в Go

Время на прочтение6 мин
Количество просмотров70K

Некоторые компании проводят собеседования с online написанием кода. Требуется решить олимпиадную задачку на скорость. В таких условиях нет времени посмотреть подробности реализации структур данных — нужно сразу реализовать идею. Но курсы по алгоритмам и структурам данных дают примеры или на псевдокоде, или на С++. Ещё эталонные решения задач написаны зачастую на С++. Готовясь к собеседованию, составил шпаргалку библиотек — аналогов контейнеров STL, что бы не тратить драгоценное время на поиск.
Читать дальше →
Всего голосов 52: ↑47 и ↓5+42
Комментарии11

Инструменты для MLOps: выбираем между вендорскими и Open Source-решениями

Время на прочтение9 мин
Количество просмотров5K


MLOps использует проверенные методы DevOps для автоматизации создания, развертывания и мониторинга конвейеров ML в производственной среде. По мере развития MLOps-инструментов для работы с ним становится больше — как проприетарных, так и Open Source. Из этого разнообразия часто сложно выбрать стек для своего проекта.

Меня зовут Александр Волынский, я технический менеджер Cloud ML Platform в VK Cloud. В этой статье я сравню подходы к работе с MLOps на основе Open Source и проприетарного ПО и расскажу, какие инструменты и почему мы выбрали для Cloud ML Platform.
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии3

Кластер ElasticSearch на 1Ptb+

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров8.1K

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

На проекте в моем ведении находилось несколько on-premise кластеров в нескольких европейских датацентрах. «Мы» в этой статье — небольшая команда DataOps из 5 человек.

Было дело я читал на Хабре статью про «Кластер Elasticsearch на 200 ТБ+» и примерял написанное к нам, у нас такой кластер считался средним, самый маленький кластер под 0,1Ptb, а большой тогда был под 0,5Ptb. Потом была поставлена задача подготовить кластер к увеличению объемов входящих данных в 2-3 раза, а срок хранения в 2 раза, т. е. объем хранимых данных, если грубо экстраполировать, должен был стать в районе 2-3Ptb.

Хочу поделиться нашим опытом, может кому пригодиться.

Читать далее
Всего голосов 30: ↑30 и ↓0+30
Комментарии11

Введение в базы данных

Время на прочтение7 мин
Количество просмотров51K

Я решила написать эту статью, потому что именно такой статьи мне очень не хватало несколько лет назад, когда я только начала карьеру в аналитике данных. Тогда я часто слышала слова «база данных», «реляционная база», «primary key», примерно понимала, что они означают, но единую картину в голове у меня сложить не получалось.

Читать далее
Всего голосов 13: ↑9 и ↓4+7
Комментарии21

eBPF в production-условиях

Время на прочтение15 мин
Количество просмотров8.5K

У технологии eBPF много поклонников. Она предлагает множество плюсов, но в работе с ней есть и некоторые минусы, сложности и ограничения. Давайте разберемся со всем этим.

Данный материал подготовлен на базе выступления “eBPF в production-условиях” от Дмитрия Евдокимова и Александра Трухина из компании Luntry с конференции HighLoad++ 2022. Он будет полезен как компаниям, что используют внутри себя решения на базе eBPF, так и разработчикам, которые что-то пишут или планируют писать с использованием данной технологии.

Читать далее
Всего голосов 26: ↑25 и ↓1+31
Комментарии2

PostgreSQL под капотом. Часть 1. Цикл сервера

Время на прочтение7 мин
Количество просмотров15K

Продолжаем изучать исходный код PostgreSQL

В этот раз исследуем главный цикл сервера:

- Принятие входящих подключений;

- Проверка окружения;

- Обработка упавших воркеров.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии3

PostgreSQL под капотом. Часть 0. Старт программы

Время на прочтение17 мин
Количество просмотров15K

Postgres - один из крупнейших open source проектов. Он создавался многие года. Кодовая база накопилась огромная. Мне, как программисту, всегда было интересно как он работает под капотом. Но не про SQL пойдет речь, а про язык на котором он написан. Про C. 

С общей архитектурой можно ознакомиться здесь

Для начала поймем, что происходит до входа в главный цикл сервера.

Читать далее
Всего голосов 24: ↑24 и ↓0+24
Комментарии2

Средние highload паттерны на Go

Время на прочтение20 мин
Количество просмотров12K

Привет, Хабр! Меня зовут Агаджанян Давид и ранее я опубликовал статью «простые highload паттерны на Go», в которой были рассмотрены простые подходы увеличения пропускной способности отдельно взятого экземпляра приложения без хардкора. Мне импонируют простые подходы, так как over engineering подходы требуются в исключительных проектах, и то чаще всего только в отдельно взятых подсистемах, в остальном можно воспользоваться давно известными лучшими практиками.

Читать далее
Всего голосов 19: ↑16 и ↓3+16
Комментарии4

Пишем сложные операторы Kubernetes

Время на прочтение11 мин
Количество просмотров5.2K

Советы по созданию операторов уровня продакшена с помощью Kubebuilder.

В этой статье рассматривается простой пример оператора для сценария автоматического создания ServiceAccount и ClusterRoleBinding с помощьюKubebuilder.

Читать далее
Всего голосов 8: ↑7 и ↓1+7
Комментарии1

Куда уходит время? Боремся за миллисекунды в Kubernetes

Время на прочтение7 мин
Количество просмотров21K

Привет, Хабр! Меня зовут Вова, я разрабатываю observability-платформу в Ozon. Как-то раз в наш уголок на 42 этаже заглянули коллеги — и поделились наблюдением. Если открыть рядом графики времён запросов и ответов двух живущих в Kubernetes и общающихся между собой микросервисов, то иногда можно наблюдать большую разницу в высоких квантилях: клиент считает, что один ответ из сотни ему приходит за сто миллисекунд, сервер же говорит, что успевает ответить за десять.

Куда ушло время? Можно ли его вернуть? Под катом расскажу о том, с какими граблями может столкнуться микросервис, живущий в типичной инсталляции Kubernetes.

Читать далее
Всего голосов 119: ↑118 и ↓1+139
Комментарии23
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

КнопконажимательOps