Pull to refresh
26
0
Максым Атыгаев @atygaev

Java Backend Developer

Send message

Заблуждения Clean Architecture

Reading time15 min
Views412K
Превращаем круги в блоки

­­ 


На первый взгляд, Clean Architecture – довольно простой набор рекомендаций к построению приложений. Но и я, и многие мои коллеги, сильные разработчики, осознали эту архитектуру не сразу. А в последнее время в чатах и интернете я вижу всё больше ошибочных представлений, связанных с ней. Этой статьёй я хочу помочь сообществу лучше понять Clean Architecture и избавиться от распространенных заблуждений.

Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments203

Spring Modulith: достигли ли мы зрелости модульности

Reading time6 min
Views5.7K

Одной из основных причин разработки микросервисов является то, что они обеспечивают четкие границы модулей

Однако минусы микросервисов настолько огромны, что это все равно, что отрубить себе правую руку, чтобы научиться писать левой; есть более управляемые (и менее болезненные!) способы достижения того же результата.

Даже с тех пор, как началось повальное увлечение микросервисами, возобладали некоторые более хладнокровные. В частности, Оливер Дротбом, разработчик среды Spring, долгое время был сторонником альтернативы moduliths. Идея состоит в том, чтобы сохранить монолит, но спроектировать его вокруг модулей.

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

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments13

PostgreSQL Antipatterns: Индиана Джонс и максимальное значение ключа, или В поисках «последних» записей

Reading time2 min
Views10K

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

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

Читать далее
Total votes 18: ↑16 and ↓2+20
Comments42

Историческое решение Netflix — введение карьерных уровней для инженеров-программистов

Reading time10 min
Views17K

Подошёл к концу 25-летний период, когда в компании Netflix придерживались подхода, в соответствии с которым все инженеры-программисты находились на одном карьерном уровне. Что можно сказать о новой системе карьерных уровней Netflix? Как их воспринимают сотрудники компании?

В апреле сего года я, в The Scoop #9, рассказал о том, как Netflix собирается ввести у себя систему карьерных уровней для инженеров-программистов:

Netflix рассматривает вопрос о введении следующей системы карьерных уровней:

— Engineer 1 (Инженер-программист 1)
— Engineer 2 (Инженер-программист 2)
— Senior (Старший инженер-программист)
— Staff (Ведущий инженер-программист)
— Principal (Главный инженер-программист)

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

Почему компания вводит систему карьерных уровней, если она весьма неплохо обходилась без них последние 25 лет? За это время количество программистов в ней дошло до 2000 человек, все они были старшими инженерами-программистами. Предполагаю, что всё дело в проблемах, которые имелись в существующей системе.

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments7

Как не отказаться от тестирования фича-веток при переходе на микросервисы

Reading time15 min
Views2.9K

В современном мире приложение — это огромная связка микросервисов. Функционально её протестировать сложнее, чем монолит. Кто-то решает это единым staging’ом и чатиком синхронизации: «займу auth на полчасика». Другой уходит с головой в shift-left или тестирует в canary. Разберём, как катнуть веточку сервиса и получить свой личный staging.

Меня зовут Евгений Харченко, я инженер в платформе Авито. В мою ответственность входят процессы и технологии, которые связаны с разработкой кода и внедрением его в продакшен. Сегодня я хочу поговорить о том, как организовать работу с фича-ветками при разработке.

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments0

Топ полезных SQL-запросов для PostgreSQL

Reading time7 min
Views83K

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

Читать далее
Total votes 71: ↑69 and ↓2+79
Comments15

Как запустить UI-автотесты в любом Chromium-браузере

Reading time4 min
Views7K

Привет, Хабр! Меня зовут Кристина Курашова, и я отвечаю за качество в VK Assistant. Написала тут небольшую инструкцию для тех, кто тоже запускает UI-автотесты в браузерах на основе Chromium (не только Chrome). Надеюсь, она сэкономит вам время. Welcome!

Читать далее
Total votes 15: ↑14 and ↓1+25
Comments17

Трассировка сервисов, OpenTracing и Jaeger

Reading time7 min
Views118K
image

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

Для минимизации ручного труда мы решили воспользоваться одним из инструментов трассировки. О том, как и для чего можно использовать трассировку и как это делали мы, и пойдет речь в этой статье.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments7

Перенос данных с Oracle на PostgreSQL: основные этапы, несовпадающие типы и форматы данных

Reading time10 min
Views26K

В настоящее время тема миграции с СУБД Oracle на СУБД PostgreSQL (и разработанную на её основе СУБД Postgres Pro) является очень актуальной. В этой области у команды Postgres Professional накоплен многолетний опыт, которым мы решили поделиться. На основе наших материалов для внутреннего обучения мы подготовили серию статей для Хабра о миграции данных в PostgreSQL из «оракловой» базы.

Также на близкие темы можно посмотреть следующие доклады и мастер-классы.

Читать далее
Total votes 25: ↑25 and ↓0+25
Comments0

Лучшие книги по Golang: что стоит почитать как начинающему, так и опытному разработчику

Reading time6 min
Views66K

Мы в Quadcode любим Golang и можем рассказать о языке и его преимуществах много интересного. Все это неспроста - не так давно мы переписали некоторые наши продукты или отдельные их модули именно на Go, чему радуемся до сих пор. Подробности самых интересных кейсов вскоре планируем раскрыть на Хабре, а пока что поделимся подборкой любимых книг, которые посвящены этому языку. Некоторые из них подходят для начинающих разработчиков, другие - для программистов с опытом. Объединяет все представленные в подборке книги одно - они могут оказаться ну очень полезными для тех, кто так или иначе связан с Go. Подборка - под катом, и, кстати, если вы уже читали какую-то из рекомендованных нами книг, расскажите о своих впечатлениях в комментариях. Поехали!

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

Читать далее
Total votes 7: ↑6 and ↓1+7
Comments15

GraphQL-gRPC API Gateway на Java

Reading time16 min
Views9.9K

В данной статье я хочу рассказать про процесс создания концепта API Gateway для обеспечения взаимодействия фронтенда, использующего GraphQL, и бэкенда, использующего gRPC, на Java с использованием фреймворка Quarkus.

Читать далее
Total votes 5: ↑4 and ↓1+5
Comments2

ИТ-книга от идеи до выпуска. Часть 0: как начать и не бросить

Reading time8 min
Views5.9K

В конце прошлого года я выпустила свою первую книгу по тестированию — «Курс молодого бойца». Это было нелегко и долго =) 

Книгу я писала… 3 года! Потом ещё год искала художников и доделывала картинки. Потом искала издательства, проходила редактуру и т.д. Итого — 4.5 года:

07.09.2017 — 11.01.2022 (дата выхода книги на площадках типа OZON)

Я хочу поделиться своим опытом, рассказать про весь процесс. Что вообще предстоит автору, какие фазы нужно пройти от идеи до публикации. Может быть, мой опыт поможет вам тоже решиться на такую авантюру =)

Свой рассказ я решила разделить на цикл статей:

Часть 0. Как начать и не бросить

Часть 1. Работа с фриланс-художниками

Часть 2. Поиск издательства

Часть 3. Процесс производства

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

Читать далее
Total votes 28: ↑25 and ↓3+29
Comments14

Базовые принципы Availability

Reading time5 min
Views11K

О чем статья

В этой статье речь пойдет о БАЗОВЫХ подходах и принципах к такому quality attribute (QA) как Availability. Никаких сложных случаев, ничего слишком сложного, только теория с двумя примерами, скипайте, если искали что-то эдакое.

Вся информация основана на парах книг, статей, и моем опыте. В конце статьи я покажу, какие именно. Также, эта статья - по суть перевод моей же статьи, только написанной на английском.

Что такое Availability?

Перед тем, как рассматривать паттерны и техники для обеспечения availability мы должны определить сам термин.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments0

Коронавирус — апофеоз паники

Reading time3 min
Views11K
На Хабре каждый день появляются статьи на тему Коронавируса, пандемии грандиозного информационного масштаба. На момент написания данной статьи в мире зафиксировано 616 680 случаев заражения и 28 818 летальных случаев, а население Земли составляет 7.5 миллиардов человек. В своей статье я совершенно не пытаюсь отрицать серьёзность самого заболевания, но хочу обратить внимание коллег на чрезмерное нагнетание ситуации правительствами и СМИ. История с Коронавирусом уже обрела формат настоящей истерии и я абсолютно уверен, что гораздо больше людей погибнет не от самого вируса, а от инфарктов и других заболеваний спровоцированных резко возросшим уровнем стресса. Текущий информационный поток служит не объективному информированию, а провоцированию такой эмоции как страх. Сцены с бронетехникой на улицах, люди сметающие продукты и товары первой необходимости вызывают волнение и у людей спокойных, а какой эффект всё это оказывает на стариков или впечатлительных людей трудно представить.
Читать дальше →
Total votes 77: ↑26 and ↓51-16
Comments78

Чего боятся тимлиды и почему им пора перестать это делать

Reading time10 min
Views27K
Я уверен, где-то существует книга «Как подсидеть тимлида». Она передается из рук в руки, из команды в команду и содержит советы типа: «Тимлид никогда не уволится по своей воле, потому что это не работа, а сказка! Его нужно сломать», или «Если ваш тимлид уехал в отпуск, напишите ему, что вам нужно поговорить, когда он вернется. Пусть вместо серфинга думает, что в его отсутствие команда разбежалась», а еще «Саботируйте попытки тимлида внедрить новые полезные рабочие процессы фразой из Agile-манифеста о том, что люди и взаимодействие важнее процессов и инструментов». Иначе просто невозможно объяснить, почему все тимлиды сталкиваются с одними и теми же проблемами и страхами.

Я, Егор Толстой, опросил более 400 тимлидов, чтобы провести деконструкцию некоторых из страхов тимлидов. Результаты опроса и исследование рынка тимлидов помогло понять, как с ними справиться, и я хочу поделиться результатами. Простые лайфхаки помогут меньше страдать от синдрома самозванца не только тимлидам, но и вообще любым специалистам, которые еще недавно выполняли конкретные задачи, а теперь руководят командой исполнителей.


Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments11

Семь самых распространенных ошибок при переходе на CI/CD

Reading time5 min
Views14K

Если ваша компания только внедряет DevOps или инструменты CI/CD, вам может быть полезно познакомиться с самыми распространенными ошибками, чтобы не повторить их и не наступать на чужие грабли. 

Команда Mail.ru Cloud Solutions перевела статью Avoid These Common Pitfalls When Transitioning to CI/CD by Jasmine Chokshi с дополнениями.
Читать дальше →
Total votes 20: ↑18 and ↓2+28
Comments6

Гайд по тому, как разработчику стать спикером и зачем это нужно

Reading time3 min
Views3.9K
Хакатоны, конференции, семинары — у программистов много возможностей проявить себя. Но далеко не все рвутся в спикеры. И упускают огромные возможности.
Читать дальше →
Total votes 7: ↑3 and ↓4+2
Comments3

Повысьте производительность SPA, разбив ваши библиотеки Angular на несколько частей

Reading time7 min
Views8.3K

Привет, Хабр! Представляю Вашему вниманию перевод статьи «Improve SPA performance by splitting your Angular libraries in multiple chunks» автора Kevin Kreuzer.


Angular — отличный фреймворк. Мы все его любим <3.


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


Сегодня благодаря Angular CLI библиотеки легко создать. Они прекрасно подходят для того, чтобы делиться кодом между несколькими приложениями.


Так как они могут быть использованы во многих местах, производительность является критическим аспектом. Библиотека, которая имеет низкую производительность может замедлять несколько приложений!


В Frontend есть разные типы производительности. runtime — производительность и initial load. В этой статье мы сосредоточимся на initial load.


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

Читать дальше →
Total votes 13: ↑11 and ↓2+17
Comments7

Письмо начинающему изучать Data Science

Reading time2 min
Views63K

Я бы хотел получить такое письмо три года назад, когда только начинал изучать Data Science (DS). Чтобы там были необходимые ссылки на полезные материалы. Статья не претендует на полноту охвата необъятной области DS. Однако для начинающего специалиста будет полезна.


Нейронные сети – это...

Читать дальше →
Total votes 51: ↑34 and ↓17+28
Comments21

Information

Rating
Does not participate
Location
Бердск, Новосибирская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Lead
Java
PostgreSQL
Docker
Spring Boot