Как стать автором
Обновить
-2
0
mIK_LH @mIK_LH

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

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

Сценарии использования service mesh

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


Прим. перев.: автор это статьи (Luc Perkins) — developer advocate в организации CNCF, являющейся домом для таких Open Source-проектов, как Linkerd, SMI (Service Mesh Interface) и Kuma (кстати, вы тоже задумывались, почему в этом списке нет Istio?..). В очередной раз пытаясь принести в DevOps-сообщество лучшее понимание в модный хайп под названием «service mesh», он приводит 16 характерных возможностей, которые предоставляют подобные решения.

Сегодня service mesh ― одна из самых горячих тем в области программной инженерии (и по праву!). Я считаю эту технологию невероятно перспективной и мечтаю стать свидетелем ее широкого распространения (конечно, когда это имеет смысл). Тем не менее, она до сих пор окружена ореолом таинственности для большинства людей. При этом даже те, кто хорошо знаком с ней, нередко затрудняются сформулировать ее плюсы и что именно она собой представляет (включая и вашего покорного слугу). В статье я попытаюсь исправить ситуацию, перечислив различные сценарии использования «сервисных сеток»*.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии0

Корпоративный жаргон в США: почему «Good job» в американских компаниях иногда означает «Все фигня, переделывай»

Время на прочтение6 мин
Количество просмотров61K
Корпоративная этика в американских компаниях кардинально отличается от российских и европейских. Там абсолютно другой менталитет. И специалистам, которые переезжают в США работать, бывает очень сложно привыкнуть к вечным улыбкам и сверхобходительному отношению начальства к сотрудникам.

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


Читать дальше →
Всего голосов 56: ↑49 и ↓7+62
Комментарии140

10 антипаттернов деплоя в Kubernetes: распространенные практики, для которых есть другие решения

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

Команда Kubernetes aaS от Mail.ru Group продолжает серию переводов о правильном использовании Kubernetes. В этот раз — об антипаттернах разработки на Kubernetes с рекомендациями, как сделать по-другому.

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

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

Читать далее
Всего голосов 22: ↑21 и ↓1+37
Комментарии12

Что нужно есть, чтобы коже стало плохо

Время на прочтение11 мин
Количество просмотров71K
image
Это не призыв к действию. Не думайте о жареной картошке в сметане с грибами и прослойками подкопчённого бекона

Иногда хочется сожрать какую-нибудь гадость: беляш там, сосиску в тесте или пончик в солидоле на вокзале. На крайний случай тройной жирбургер с двойной колой без сахара. Это совершенно нормально и понятно.

Тем не менее пытаться съесть всё, что вы видите, — не всегда лучшая стратегия. Например, многие из вас слышали, что от сладкого прыщи на лице вылезут, но не уверены правда ли это и как работает. Поэтому сейчас расскажу, как влияет еда на кожу, и попробую разобрать традиционные мифы про питание:

  • Прыщи от сладкого не из-за того, что вы потеете сахаром.
  • Что такое БАДы по изначальной задумке (до прибежавших маркетологов).
  • Коллаген принимать перорально неэффективно.
  • Есть витамины просто так — довольно плохая идея.
  • Синтетические витамины хуже всасываются, а кальций так вообще лучше только из скорлупы получать.
  • Модная непереносимость глютена.
  • Можно ли пить молоко, если вам уже исполнилось 18 лет.

Коротко — жалко, что этого нет в школьных учебниках биологии.
Читать дальше →
Всего голосов 112: ↑106 и ↓6+136
Комментарии275

Как мы обновляли Kubernetes 1.16 до 1.19… с удовольствием

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

На начало декабря 2020 у нас во «Фланте» было около 150 кластеров на Kubernetes 1.16. Это кластеры с разной степенью загруженности: как находящиеся под высоким трафиком production-кластеры, так и использующиеся для разработки и демонстрации новых возможностей. Кластеры работают поверх различной инфраструктуры, начиная с облачных провайдеров, таких как AWS, Azure, GCP, Яндекс.Облако, различных инсталляций OpenStack и vSphere, и заканчивая железками.

Все эти кластеры находятся под управлением Deckhouse, который является нашей внутренней разработкой и позволяет не только иметь один инструмент для создания кластеров, но и общий интерфейс для управления всеми компонентами кластера на всех поддерживаемых типах инфраструктуры. Для этого Deckhouse состоит из различных подсистем. Например, есть подсистема candi (cluster and infrastructure), которая наиболее интересна в рамках данной статьи, поскольку отвечает за управление control-plane Kubernetes и настройку узлов, предоставляет готовый к работе, актуальный кластер.

Итак, почему мы вообще застряли на версии 1.16, когда уже достаточно давно вышли 1.17, 1.18 и даже выпустили патч версии для 1.19?..

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

Что почитать (НаучПоп / Научная Фантастика)

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

Некоторые время назад сильно увлёкся потреблением информации с научно-популярным уклоном. Но как не заблудиться в миллионах книг? Ресурс то ограничен. А значит придётся выбирать.

Удалось собрать библиотеку по 4 разделам:


Раздел 1. Законы науки и мышление
(Математика, Рациональность, Научный метод, Когнитивные искажения, Нейрофизиология, Ошибки мышления, Доказательная медицина)

Раздел 2. Законы природы
(Физика, Математика, Теория относительности, Квантовая механика, Астрофизика, Астрономия, Изобретения и открытия)

Раздел 3. Законы жизни
(Абиогенез, Теория эволюции, Молекулярная биология, Биоинформатика, Биология клетки, Антропогенез)

Раздел 4. Художественный научпоп / Научная фантастика

Обменяться рекомендациями
Всего голосов 34: ↑31 и ↓3+38
Комментарии253

Kubernetes в ДомКлик: как спать спокойно, управляя кластером на 1000 микросервисов

Время на прочтение8 мин
Количество просмотров16K
Меня зовут Виктор Ягофаров, и я занимаюсь развитием Kubernetes-платформы в компании ДомКлик в должности технического руководителя разработки в команде Ops (эксплуатация). Я хотел бы рассказать об устройстве наших процессов Dev <-> Ops, об особенностях эксплуатации одного из самых больших k8s-кластеров в России, а также о DevOps/SRE-практиках, которые применяет наша команда.


Поехали!
Всего голосов 39: ↑39 и ↓0+39
Комментарии37

Kubernetes tips & tricks: удобные заготовки для kubectl

Время на прочтение5 мин
Количество просмотров16K
Внутри компании мы активно делимся между собой полученными знаниями: не только в виде формальных wiki-инструкций, но и сообщениями в Slack (а чтобы ничего не терялось, предусмотрена умная система поиска, но это уже отдельная история…). У нас накопилось уже большое количество разнообразных заготовок для консольных операций в Kubernetes с kubectl. Про них и пойдет речь в этой статье.



Какие-то команды могут оказаться повседневной обыденностью для некоторых читателей, но если найдутся и те, кто откроет для себя новое, улучшив тем самым свою эффективность, — цель статьи будет достигнута.
Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии5

Настройка состава JUnit5 тестов с помощью application.properties

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

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


Теперь представьте, что не все тесты должны проходить в этих окружениях — кажому свой набор тестов.


И предпочтительней настроить выбор, какие тесты должны выполняться, в… файле application.properties — кажому тесту свой переключатель "вкл/выкл".


Звучит здорово, не правда ли?


Тогда добро пожаловать под кат, где мы все это и реализуем с помощью SpringBoot 2 и JUnit 5.

Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии9

Подготовка к Spring Professional Certification. Контейнер, IoC, бины

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

Доброго времени суток, Хабр.


Сегодня я решил представить вам перевод цикла статей для подготовки к Spring Professional Certification.


Это перевод только первой статьи, если он зайдет аудитории, я продолжу выпуск переводов.  


Зачем я это делаю, ведь уже есть куча профильных материалов?
  1. Часто в них информация не структурирована, не собрана, или не актуальна
  2. Молодые разработчики могут не знать английский. Этот цикл можно использовать не только для сертификации, но и для самообучения/повторения материалов.
  3. Этими материалами можно пользоваться при подготовке к собеседованию, т.к. они выстроены в виде вопросов и ответов.
  4. Важное, и самое главное преимущество — этот QA сделан из вопросов из  официального Study Guide от Pivotal. 

  • Некоторые вопросы, которые казались мне лишними или которых не было в гиде я осознанно упустил.

Оглавление
  1. Внедрение зависимостей, контейнер, IoC, бины
  2. AOP (аспектно-ориентированное программирование)
  3. JDBC, транзакции, JPA, Spring Data
  4. Spring Boot
  5. Spring MVC
  6. Spring Security
  7. REST
  8. Тестирование

Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии53

Масштабирование БД в высоконагруженных системах

Время на прочтение9 мин
Количество просмотров34K
На прошлом внутреннем митапе Pyrus мы говорили о современных распределенных хранилищах, а Максим Нальский, CEO и основатель Pyrus, поделился первым впечатлением от FoundationDB. В этой статье рассказываем о технических нюансах, с которыми сталкиваешься при выборе технологии для масштабирования хранения структурированных данных.

Когда сервис недоступен пользователям какое-то время, это дико неприятно, но всё же не смертельно. А вот потерять данные клиента — абсолютно недопустимо. Поэтому любую технологию для хранения данных мы скрупулезно оцениваем по двум-трем десяткам параметров.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии22

Разбираем лямбда-выражения в Java

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

image


От переводчика: LambdaMetafactory, пожалуй, один из самых недооценённых механизмов Java 8. Мы открыли его для себя совсем недавно, но уже по достоинству оценили его возможности. В версии 7.0 фреймворка CUBA улучшена производительность за счет отказа от рефлективных вызовов в пользу генерации лямбда выражений. Одно из применений этого механизма в нашем фреймворке — привязка обработчиков событий приложения по аннотациям, часто встречающаяся задача, аналог EventListener из Spring. Мы считаем, что знание принципов работы LambdaFactory может быть полезно во многих Java приложениях, и спешим поделиться с вами этим переводом.


В этой статье мы покажем несколько малоизвестных хитростей при работе с лямбда-выражениями в Java 8 и ограничения этих выражений. Целевая аудитория статьи — senior Java разработчики, исследователи и разработчики инструментария. Будет использоваться только публичный Java API без com.sun.* и других внутренних классов, поэтому код переносим между разными реализациями JVM.

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

Архитектуры нейросетей

Время на прочтение12 мин
Количество просмотров65K
Перевод Neural Network Architectures

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


Сравнение популярных архитектур по Top-1 one-crop-точности и количеству операций, необходимых для одного прямого прохода. Подробнее здесь.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии7

Реактивное программирование с JAX-RS

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

Последний в этом году курс «Разработчик Java Enterprise» успешно запущен и у нас остался последний материал по данной теме, которым мы хотим поделиться с вами, где разбирается использование асинхронного подхода и стейджинга для разработки отзывчивых реактивных приложений.

Поехали.

Реактивное программирование сперва звучит, как название зарождающейся парадигмы, но на самом деле, относится к методу программирования, в котором для работы с асинхронными потоками данных используется событийно-ориентированный подход. Основываясь на постоянно текущих данных, реактивные системы реагируют на них путем выполнения ряда событий.
Реактивное программирование следует шаблону проектирования “Наблюдатель”, который можно определить следующим образом: если в одном объекте происходит изменение состояния, то все прочие объекты оповещаются и обновляются соответствующим образом. Поэтому, вместо того, чтобы опрашивать события на предмет изменений, события пушатся асинхронно, чтобы наблюдатели могли их обработать. В этом примере, наблюдатели — функции, которые исполняются, когда событие отправлено. А упомянутый поток данных — фактический наблюдаемый.

Почти все языки и фреймворки используют этот подход в своей экосистеме, и последние версии Java — не исключение. В этой статье я объясню как можно применить реактивное программирование, используя последнюю версию JAX-RS в Java EE 8 и функционал Java 8.

Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии1

Старые песни о главном. Java и исходящие запросы

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

(Иллюстрация)

Одна из задач, с которой сталкиваются 99,9% разработчиков, — это обращение к сторонним endpoint’ам. Это могут быть как внешние API, так и «свои» микросервисы. Сейчас все и вся бьют на микросервисы, да. Получить или отправить данные просто, но иногда изобретают велосипеды. Можете назвать 5 способов реализации запросов на Java (c использованием библиотек и без)? Нет — добро пожаловать под кат. Да? Заходите и сравните ;)
Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии21

Асимметрия жизни

Время на прочтение17 мин
Количество просмотров14K
Привет! Не знаю как вам, а мне всегда хотелось не только знать что-то, но еще и понимать то, что знаю. Знания, преподносимые системой образования, в виде несвязного набора фактов об окружающем мире, требовали всегда больших усилий для удержания их в голове, но достаточно было понять логический принцип или закономерность, которая соответствует появлению этих фактов и можно было со спокойной совестью избавиться от них, оставив в голове только само правило и при необходимости выводить нужный факт из этого принципа.

И науками больше всего нашпигованными фактами без логических объяснений для меня всегда были те, которые связаны с органической жизнью и ее устройством, чтобы убедиться в этом откройте учебник по биологии, например на разделе о ДНК, там будет подробное описание строения и функций ДНК, но ни слова о том, почему это все должно работать именно так и никак иначе. Наверное поэтому в моих знаниях по этим предметам всегда был большой провал. Эта статья о попытках восполнить пробелы и свести факты об органической жизни в логически согласованную систему, которая не только отвечала бы на вопрос «как?» но могла бы еще и давать общее направление, в котором нужно двигаться чтобы ответить на вопрос «почему?». Итак поехали!
Всего голосов 33: ↑29 и ↓4+25
Комментарии18

OutOfMemoryError: поймай, если сможешь

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

image


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

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

Как начать работать с Лямбда-выражениями в Java

Время на прочтение4 мин
Количество просмотров17K
Привет, Хабр! Представляю вашему вниманию перевод статьи "How to start working with Lambda Expressions in Java" автора Luis Santiago.

До того как Лямбда-выражения были добавлены в JDK 8, я использовал их в таких языках как C# и С++. Когда они были добавлены в Java я стал изучать их подробнее.

С добавлением Лямбда-выражений добавились элементы синтаксиса, которые увеличивают «выразительную силу» Java. В этой статье я хочу сосредоточиться на основополагающих концепциях, с которыми вам необходимо познакомиться, чтобы начать использовать Лямбда-выражения.

Краткое введение


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

Это анонимные методы (методы без имени), используемые для реализации метода, определенного функциональным интерфейсом. Важно знать, что такое функциональный интерфейс, прежде чем вы начнете использовать Лямбда-выражения.

Функциональный интерфейс


Функциональный интерфейс — это интерфейс, содержащий один и только один абстрактный метод.

Если вы посмотрите на определение стандартного интерфейса Runnable, то вы заметите как он попадает в определение функционального интерфейса, поскольку он определяет только один метод: run().

В приведенном ниже примере кода метод computeName является абстрактным и единственным методом в интерфейсе MyName, что делает его функциональным интерфейсом.

interface MyName{
  String computeName(String str);
}
Читать далее
Всего голосов 19: ↑15 и ↓4+11
Комментарии6

Каков должен быть размер у Thread Pool?

Время на прочтение5 мин
Количество просмотров8.4K
В нашей статье Stream API & ForkJoinPool мы уже рассказывали про возможности изменять размер пула потоков, который мы можем использовать в параллельных обработчиках, использующих Stream API или Fork Join. Надеюсь эта информация вам пригодилась, когда находясь на должности Senior Java Developer, вы смогли увеличить производительность разработанной вами системы, изменив размер пула по умолчанию. Так как наши курсы, в целом, заточены на переход ступеньку выше от джуниора и миддла выше, то часть программы строится исходя из основных вопросов задаваемых на собеседованиях. Один из из которых звучит так: «У вас есть приложение. И есть задача использующая Stream API или Fork Join, которая поддается распараллеливанию. При каких условиях вы можете счесть разумным изменить размер пула потоков заданный по умолчанию? Какой размер вы предложите в этом случае?»

Можете попробовать ответить на этот вопрос сами, прежде чем читать дальше, чтобы проверить собственную готовность к подобному интервью на данный момент.

Чтобы теоретические рассуждения подкрепить настоящими цифрами предлагаем погонять небольшой бенчмарк для стандартного метода Arrays.parallelSort(), реализующего разновидность алгоритма merge sort, и исполняемого на ForkJoinPool.commonPool(). Запустим этот алгоритм на одном и том же большом массиве с различными размерами commonPool и проанализируем результаты.


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

Эликсир для джавистов. Часть первая

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


Не так давно я решил изменить образ мышления с помощью изучения нового языка программирования. С самого начала карьеры я работал с Джавой, и сейчас стал ощущать необходимость в совершенно другой парадигме. Так я повстречал невероятный язык под названием Эликсир.


Рубистам хорошо знакомо название этого языка, а также, возможно, имя создателя – Джозе Валима. Однако у пришедших из более многословных языков шансы быть знакомыми с Эликсиром довольно низки.


Так я решил написать несколько постов, чтобы помочь джавистам быстрее понять как устроен Эликсир. С помощью сравнения этих двух языков будет проще постичь новый для вас мир. Через эти посты я расскажу о синтаксисе, о работе языка и о ключевых особенностях, которые делают Эликсир по-настоящему потрясающим!

Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии7
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Украина
Дата рождения
Зарегистрирован
Активность