Как стать автором
Обновить
14
0
Ак Валерий @Akvel

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

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

Учимся разворачивать микросервисы. Часть 3. Helm

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


Привет, Хабр!


Это третья часть в серии статей "Учимся разворачивать микросервисы", и сегодня речь пойдет о Helm 3. В прошлой части мы создали Kubernetes конфигурацию для учебного проекта из 2 микросервисов (бекенда и шлюза) и задеплоили все это в Google Kubernetes Engine. В этой статье мы напишем Helm-чарт для нашей системы, создадим для него репозиторий на основе GitHub Pages и задеплоим проект в GKE с помощью Helm.

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

Чек-лист: технический аудит IT проекта

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

35 вопросов для быстрой оценки качества IT проекта

Привет, дорогие читатели! Хочу поделиться с вами моим чек-листом для проверки состояния IT проекта (преимущественно web, но адаптируется и под другие). Особенно пригодится предпринимателям и управленцам, которые попали на новый проект. После проверки вы получите результат по 100-балльной системе!

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

Podman и Buildah для пользователей Docker

Время на прочтение10 мин
Количество просмотров57K
Хотя есть много хороших блогов и учебников по Podman и Buildah, пользователям Docker явно не хватает ясных и четких разъяснений на тему, как им перейти на Podman, зачем нужен Buildah и в других вопросах подобного рода.



Постараемся ответить на эти вопросы и рассказать, как безболезненно мигрировать с Docker на Podman.
Читать дальше: Podman и Buildah для пользователей Docker
Всего голосов 18: ↑15 и ↓3+12
Комментарии49

OpenShift как корпоративная версия Kubernetes

Время на прочтение12 мин
Количество просмотров103K
«В чем разница между Kubernetes и OpenShift?» – этот вопрос возникает с завидным постоянством. Хотя на самом деле это все равно что спрашивать, чем автомобиль отличается от двигателя. Если продолжить аналогию, то автомобиль – это готовый продукт, им можно пользоваться сразу же, буквально: сел и поехал. С другой стороны, чтобы двигатель вас куда-то повез, его сначала надо дополнить массой других вещей, чтобы в итоге получить все тот же автомобиль.



Поэтому Kubernetes – это такой двигатель, вокруг которого собран автомобиль (платформа) марки OpenShift, который и везет вас к цели.
Читать дальше: OpenShift как корпоративная версия Kubernetes. Часть 1
Всего голосов 14: ↑13 и ↓1+12
Комментарии10

30 команд Git, необходимых для освоения интерфейса командной строки Git

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

Git — самая популярная в мире распределённая система контроля версий. Линус Торвальдс, разработчик ядра ОС Linux, создал этот инструмент ещё в 2005 году, а сегодня Git активно поддерживается как проект с открытым исходным кодом. Огромное количество открытых и коммерческих проектов используют Git для контроля версий.

В данной статье перечисляются самые основные команды, которые следует знать разработчику, чтобы освоить управление репозиториями GitHub на высоком уровне. Ознакомиться с ними будет полезно как новичкам, так и опытным разработчикам.
Читать дальше →
Всего голосов 84: ↑69 и ↓15+54
Комментарии63

Проверяем сервисы для удаленного общения и видеоконференций на собственном опыте

Время на прочтение16 мин
Количество просмотров11K
Все больше компаний переходят на гибридный формат работы: сотрудники проводят в офисе лишь несколько дней, решая большую часть задач из дома. В «Онланте» (входит в группу компаний ЛАНИТ) работали удаленно еще до того, как пандемия внесла свои коррективы. Эта статья — обзор сервисов, которые позволяют участвовать в брейнштормах, работать над проектом и получать уведомления о новых задачах и их приоритете, находясь в любой точке мира. Описываем не только преимущества сервисов, но и подмечаем недостатки. Читайте о них ниже. 


В «Онланте» формат удаленной работы был опробован задолго до того, как это стало мейнстримом. Команда у нас большая: сотрудники живут в разных городах — Пензе, Барнауле, Краснодаре, Нижнем Новгороде и Твери. Поэтому, когда грянула пандемия, полный переход на удаленку прошёл легко и безболезненно: дистанционная работа отличается от обычной только местоположением. 

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

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

И еще небольшая оговорка. В силу специфики отрасли у нас высокие требования к уровню информационной безопасности, поэтому и этот критерий также лег в отбор описываемых сервисов, используемых командой «Онланты». 
Читать дальше →
Всего голосов 60: ↑59 и ↓1+58
Комментарии48

Новый подход к просмотру логов

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

Одно время, приходилось много работать с логами. Они могли быть большими и находиться на разных серверах. Требовалось не найти что-то конкретное, а понять почему система ведёт себя не так как надо. По некоторым причинам, лог-агрегатора не было.

Хотелось иметь просмотрщик логов, позволяющий, в любой момент, открыть любой файл, без скачивания на локальную машину, как команда less в linux консоли. Но при этом, должна быть удобная подсветка текста, как в IDE, и фильтрация событий по различным параметрам. Фильтрация и поиск должны работать по событиям в логе, а не по строкам, как grep, это важно когда есть многострочные записи, например ошибки со стектрейсами. Так же должна быть возможность просматривать записи сразу из нескольких файлов на одной странице, смёржив их по таймстемпу, даже если файлы находятся на разных нодах.

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

Олды в ИТ

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

Когда ты молод, ты «бессмертен» и не задумываешься о старости. Есть просто уверенность, что если много и хорошо работать, то твоя карьера и доходы будут неуклонно расти. Следуя этой стратегии, ты развиваешься в профессии уже 15, 20, 30 лет. За эти годы уже получил огромный опыт и, наверное, он обязательно поможет безбедно и интересно прожить остаток дней. Но все не так просто. Да, ты уже давно работаешь в хорошей компании, занимаешься интересными проектами, получаешь за это достойную зарплату, но в будущем уже не так уверен, как раньше. Профессиональный возраст приходит с массой вопросов, на которые нужно ответь стратегически.

 Эта статья родилась на основе обсуждения горячей темы «Олды в ИТ», которую 4 января 2021 г. мы записали для подкаста Linkmeup. Обязательно послушайте запись здесь или в любимом подкаст-приложении.

Читать далее
Всего голосов 188: ↑181 и ↓7+174
Комментарии435

Публикуем либку в maven central

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

Предисловие


Решил я что то сделать полезное. Был проект в котором мы должны были вместо старого сервиса сделать новый, но лучше. Сервис большой получился, 10к строк бизнесс-правил+код на джаве 15к строк. Сейчас уже раза в два больше. Но так как логики много и никто толком уже многого не помнит (за тем нас и призвали, что бы были тесты, доки и минимум багов) надо было сравнить старый сервис и новый. Что бы наши тестеры не умерли от старости, пытаясь все проверить я подумал и написал сервис, который дергал апи старого и нового, сравнивал и сливал разницу ответов в базу, что бы тестеры проверили и мы пофиксили разницу. Но вот проблема, на входе у нас много параметров и возможных их значений, это же миллиарды комбинаций будут, проверять несколько месяцев с полной нагрузкой, да и похожих много.
В итоге сначала была рождена идея взять и сократить возможные изменения параметров и вообще выкинуть некоторые из перебора, а потом была взята на вооружение Pairwise testing теория и она позволила закинуть все параметры и все значенеия и все проверить целиком.

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

Трюки с SQL от DBA. Небанальные советы для разработчиков БД

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

Когда я начинал свою карьеру разработчика, моей первой работой стала DBA (администратор базы данных, АБД). В те годы, ещё до AWS RDS, Azure, Google Cloud и других облачных сервисов, существовало два типа АБД:

  • АБД инфраструктуры отвечали за настройку базы данных, конфигурирование хранилища и заботу о резервных копиях и репликации. После настройки БД инфраструктурный администратор время от времени «настраивал экземпляры», например, уточнял размеры кэшей.
  • АБД приложения получал от АБД инфраструктуры чистую базу и отвечал за её архитектуру: создание таблиц, индексов, ограничений и настройку SQL. АБД приложения также реализовывал ETL-процессы и миграцию данных. Если команды использовали хранимые процедуры, то АБД приложения поддерживал и их.

АБД приложений обычно были частью команд разработки. Они обладали глубокими познаниями по конкретной теме, поэтому обычно работали только над одним-двумя проектами. Инфраструктурные администраторы баз данных обычно входили в ИТ-команду и могли одновременно работать над несколькими проектами.
Читать дальше →
Всего голосов 76: ↑72 и ↓4+68
Комментарии38

PostgreSQL Antipatterns: навигация по реестру

Время на прочтение4 мин
Количество просмотров9.5K
Сегодня не будет никаких сложных кейсов и мудреных алгоритмов на SQL. Все будет очень просто, на уровне Капитана Очевидность — делаем просмотр реестра событий с сортировкой по времени.

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

CREATE TABLE events(
  id
    serial
      PRIMARY KEY
, ts
    timestamp
, data
    json
);

CREATE INDEX ON events(ts DESC);

Понятно, что записей у нас там будет не десяток, поэтому нам потребуется в каком-то виде постраничная навигация.

#0. «Я у мамы погроммист»


cur.execute("SELECT * FROM events;")
rows = cur.fetchall();
rows.sort(key=lambda row: row.ts, reverse=True);
limit = 26
print(rows[offset:offset+limit]);

Даже почти не шутка — редко, но встречается в дикой природе. Иногда после работы с ORM бывает тяжело перестроиться на «прямую» работу с SQL.

Но давайте перейдем к более распространенным и менее очевидным проблемам.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии17

Адаптационный чек-лист как инструмент мягкого введения в должность

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

Процесс адаптации можно пустить на самотек. Учитывая затраты отдела HR, руководителя отдела, тимлида и других сотрудников на поиск подходящих кадров, это неэффективный подход. Когда новичок поймет, что ему никто не помогает влиться в коллектив, просто уйдет на испытательном сроке. Если останется, то адаптация займет слишком много времени, ее же никто не контролирует.



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

Настроить систему поможет адаптационный чек-лист. Он содержит в себе ключевые аспекты адаптации на разных этапах введения в должность: зоны адаптации, какие навыки и в какой последовательности должен изучить новичок, система наставничества, аттестация и обратная связь. Подробнее о том, что такое чек-лист и как он работает, расскажет Алексей Петров (pifagor_mc).
Всего голосов 37: ↑36 и ↓1+35
Комментарии14

Стажёр Вася и его истории об идемпотентности API

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

Идемпотентность — звучит сложно, говорят о ней редко, но это касается всех приложений, использующих API в своей работе.


Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


image

Читать дальше →
Всего голосов 219: ↑216 и ↓3+213
Комментарии163

О Legacy-коде без максимализма: что делать

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


Представьте, что вам дали задачу поправить часть кода. В голове возникнет много мыслей. Кто его написал? Когда? А может он — legacy? Где документация? Давайте попробуем разобраться с «наследием» основательно и со всех сторон. Поможет нам в этом вопросе Андрей Солнцев @asolntsev (http://asolntsev.github.io/), разработчик из таллинской компании Codeborne. Начнём.

— Андрей, вы знакомы с трудами Michael Feathers, например, «Working Effectively with Legacy Code»? В книге акцентируется внимание на важности тестирования и выделяется одно из ключевых отличий legacy от не legacy-кода — это наличие тестов. Вы согласны с этим мнением?

Абсолютно согласен! Скажу больше: юнит-тесты — необходимое, но недостаточное условие. И с юнит-тестами можно навалить так, что сам Геракл не разгребёт.
Что для настоящего джедая мастхав, так это:
  1. TDD — то есть тесты ДО кода.
  2. Чистый код (и чистые тесты).


Я очень люблю книгу Robert C. Martin «Clean Code» («Чистый код»). Это для меня настольная библия. Категорически всем советую. Кстати, его блог тоже великолепен.

Читать дальше →
Всего голосов 53: ↑44 и ↓9+35
Комментарии61

Подборка подкастов по программированию на русском и английском языках

Время на прочтение7 мин
Количество просмотров180K
Всем привет! В этой статье собраны одни из лучших подкастов по программированию как на русском так и на английском языках, которые позволят вам быть всегда в курсе последних новостей.

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

И да, есть много интересных и популярных подкастов для разработчиков и программистов. Подкасты невероятно полезны, они будут держать вас в курсе всего что происходит в интересующей вас сфере, а также помогут вам развить более широкий взгляд на постоянно развивающуюся область информационных технологий.
Читать дальше →
Всего голосов 74: ↑71 и ↓3+68
Комментарии63

Исследование защищенности карты Тройка

Время на прочтение18 мин
Количество просмотров202K
Карта тройка

Карта Тройка представляет из себя универсальный пополняемый электронный кошелек, широко используемый в системах оплаты общественного транспорта Москвы с 2013 года.

Цель данного исследования — выяснить защищенность системы электронного кошелька от подделки баланса, оценить безопасность инфраструктуры, работающей с картой. Вся работа была выполнена без использования специальных технических средств. Использовался дешевый смартфон на платформе Android и персональный компьютер. Общее время, затраченное на исследование, составило 15 дней.

В ходе работы был успешно проведен реверс­-инжиниринг мобильного приложения «Мой проездной», что позволило получить доступ к памяти карты и изучить структуру хранения данных. Были найдены уязвимости, позволяющие выполнить подделку баланса, записанного на электронном кошельке карты Тройка. В результате чего стало возможным использование систем, поддерживающих карту, без оплаты.

Итогом исследования стала разработка приложения TroikaDumper, позволяющего эксплуатировать уязвимости системы электронного кошелька.

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

Читать дальше →
Всего голосов 380: ↑374 и ↓6+368
Комментарии348

Контроль качества воздуха (со2 и температуры) в офисе и дома, своими руками

Время на прочтение3 мин
Количество просмотров45K
Все началось с того что я работаю в офисе, где как водится нет нормальной вентиляции. Зато есть много народу, кому-то все время жарко, другим постоянно дует.

Для контроля качества воздуха в помещении знать температуру недостаточно. Даже с кондиционером часто бывает прохладно, но душно. Спертый воздух. Оказалось, на это больше всего влияет концентрация со2. Когда я узнал стоимость готовых приборов хотел от этой идеи отказаться. Но случайно увидел описание оптического датчика концентрации со2 MH-Z19.

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

Материал по работе с Apache Lucene и созданию простейшего нечёткого поиска

Время на прочтение4 мин
Количество просмотров41K
Пост расcчитан на начинающих, на людей незнакомых с технологией Apache Lucene. В нем нет материала о том, как устроен Apache Lucene внутри, какие алгоритмы, структуры данных и методы использовались для создания фреймворка. Пост является обучающим материалом-тизером, написанным для того, чтобы показать, как организовать простейший нечёткий поиск по тексту.

В качестве материала для обучения предоставлен код на github, сам пост в качестве документации и немного данных для тестирования поисковых запросов.
Подробности
Всего голосов 11: ↑10 и ↓1+9
Комментарии6

Объясняя необъяснимое

Время на прочтение11 мин
Количество просмотров60K
Друзья, мы с радостью продолжаем публикацию интересных материалов, посвященных самым разнообразным аспектам работы с PostgreSQL. Сегодняшний перевод открывает целую серию статей за авторством Hubert Lubaczewski, которые наверняка заинтересуют широкий круг читателей.



Одна из первых вещей, которую слышит новоиспеченный администратор баз данных – «используй EXPLAIN». И при первой же попытке он сталкивается c непостижимым:

                                                        QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
 Sort  (cost=146.63..148.65 rows=808 width=138) (actual time=55.009..55.012 rows=71 loops=1)
   Sort Key: n.nspname, p.proname, (pg_get_function_arguments(p.oid))
   Sort Method: quicksort  Memory: 43kB
   ->  Hash Join  (cost=1.14..107.61 rows=808 width=138) (actual time=42.495..54.854 rows=71 loops=1)
         Hash Cond: (p.pronamespace = n.oid)
         ->  Seq Scan on pg_proc p  (cost=0.00..89.30 rows=808 width=78) (actual time=0.052..53.465 rows=2402 loops=1)
               Filter: pg_function_is_visible(oid)
         ->  Hash  (cost=1.09..1.09 rows=4 width=68) (actual time=0.011..0.011 rows=4 loops=1)
               Buckets: 1024  Batches: 1  Memory Usage: 1kB
               ->  Seq Scan on pg_namespace n  (cost=0.00..1.09 rows=4 width=68) (actual time=0.005..0.007 rows=4 loops=1)
                     Filter: ((nspname <> 'pg_catalog'::name) AND (nspname <> 'information_schema'::name))

Что бы это могло значить?
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии23

JSR 133 (Java Memory Model) FAQ (перевод)

Время на прочтение25 мин
Количество просмотров146K
Добрый день.
В рамках набора на курс «Multicore programming in Java» я делаю серию переводов классических статей по многопоточности в Java. Всякое изучение многопоточности должно начинаться с введения в модель памяти Java (New JMM), основным источником от авторов модели является «The Java Memory Model» home page, где для старта предлагается ознакомится с JSR 133 (Java Memory Model) FAQ. Вот с перевода этой статьи я и решил начать серию.
Я позволил себе несколько вставок «от себя», которые, по моему мнению, проясняют ситуацию.
Я являюсь специалистом по Java и многопоточности, а не филологом или переводчиком, посему допускаю определенные вольности или переформулировки при переводе. В случае, если Вы предложите лучший вариант — с удовольствием сделаю правку.
Этот статья также подходит в качестве учебного материала к лекции «Лекция #5.2: JMM (volatile, final, synchronized)».

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Ну и да, приходите учиться ко мне!


JSR 133 (Java Memory Model) FAQ


Jeremy Manson и Brian Goetz, февраль 2004

Содержание:
Что такое модель памяти, в конце концов?
Другие языки, такие как C++, имеют модель памяти?
Что такое JSR 133?
Что подразумевается под «переупорядочением» (reordering)?
Что было не так со старой моделью памяти?
Что вы подразумеваете под «некорректно синхронизированы»?
Что делает синхронизация?
Как может случиться, что финальная поля меняют значения?
How do final fields work under the new JMM?
Что делает volatile?
Решила ли новая модель памяти «double-checked locking» проблему?
Что если я пишу виртуальную машину?
Почему я должен беспокоиться?
Читать дальше →
Всего голосов 56: ↑51 и ↓5+46
Комментарии32
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность