Как стать автором
Обновить
19
0
Сергей @wapmorgan

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

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

Что такого в IT, что с ним все носятся. И когда всё это закончится

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

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

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

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

Читать далее
Всего голосов 63: ↑41 и ↓22+27
Комментарии229

Я — айтишник, я не хочу много знать

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

За последнее время мне довелось провести немало технических собеседований на позицию DevOps инженера, в связи с чем появилась идея формализовать полученные выводы в этой статье. Хочу поделиться своими наблюдениями, субъективным мнением, и задать самому себе вопросы, ответы на которые, возможно, мне помогут получить читатели данной статьи.

Читать далее
Всего голосов 125: ↑117 и ↓8+142
Комментарии943

Гексагональная архитектура

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

  1. Видео с доклада
  2. Слайды


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



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



Гексагональная архитектура, ни в коем случае не новый подход к разработке с применением фреймворков. Напротив, это всего лишь обобщение «лучших практик» — практик новых и старых. Я обернул эти слова в кавычки, чтобы люди не воспринимали их совсем буквально. Лучшие практики, которые работают для меня, могут не работать для вас — все зависит от задачи и преследуемых целей.



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


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

Чем заняться тимлиду, если не кодить? Рассказываю о своих задачах

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

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

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

Я составил список своих задач и разбил их на категории. Кстати говоря, добрую половину этих задач я повесил на себя сам.

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

Рациональный подход к декомпозиции систем на модули или микросервисы. Практика

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

В своём прошлом посте я рассказал теорию своего подхода к декомпозиции систем на модули. Теперь пришло время проверить её на практике.

Кэмп - реальный проект, который стоил семизначную сумму для заказчика, выполнялся командой из 12 человек (включая двух бакэндеров) и сейчас запущен в промышленную эксплуатацию. Суммарно на выполнение проекта было затрачено 5500 человеко/часов, из которых 950 - на бакенд.

Что из этого получилось?
Всего голосов 8: ↑5 и ↓3+6
Комментарии2

Долгоиграющие приложения на PHP

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров21K

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

Меня зовут Александр Пряхин, я TechUnit Lead в Авито. В IT работаю уже 14 лет. Из них 8 лет руковожу командами. Параллельно с этим преподаю и менторю. Сегодня разберём, как готовить демонов на PHP — от А до Я, и почему это актуально.

Читать далее
Всего голосов 54: ↑52 и ↓2+58
Комментарии17

Не нужно стыдиться PHP

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

Недавно я решил зайти на сайт cybersport.ru (проект VK GROUP), где хотел посмотреть результаты матчей наших мальчиков по Dote. Мой взгляд упал на статью "Когда будет новый сайт". Там помимо общей информации было пару фраз про PHP и Symfony, которые меня расстроили.

Читать далее
Всего голосов 59: ↑48 и ↓11+57
Комментарии102

PostgreSQL 16: Часть 5 или Коммитфест 2023-03

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

Вместе с окончанием мартовского коммитфеста, закончился прием изменений в 16-ю версию. Пришла пора посмотреть, что в нем было нового и интересного.


Надеюсь, что представленный материал вместе с предыдущими статьями серии (2022-07, 2022-09, 2022-11, 2023-01) поможет сформировать представление о новинках PostgreSQL 16.

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

SRP-6: аутентификация без передачи пароля

Время на прочтение5 мин
Количество просмотров34K
Как и было обещано в соседней теме, где рассказывался велосипед, выкладываю описание алгоритма SRP RFC2945 — способе регистрации и аутентификации пользователей безопасным образом по небезопасному каналу. Вот только в процессе подготовки статьи я обнаружил более свежую версию протокола, SRP-6, вместе с реализацией, в связи с чем решил выбросить свои архаичные наработки по SRP-3, и просто дать ссылки на имплементацию новой версии.
Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии28

Оптимизация бэкенда приложения с примерами на Symfony. Часть 2

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

Всех приветствую!

Это продолжение серии статей, где мы рассмотрим еще несколько методов, которые помогут улучшить производительность приложения. Мы поговорим о том, как использовать entity manager, unit of work, bulk inserts и batching processing для более эффективной работы с базой данных.

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

В предыдущей статье мы говорили о проблеме n+1, видах пагинации и индексах. Там же Вы можете найти описание приложения, репозиторий проекта и схему данных.

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

Разрешение имен доменов из контейнеров Docker в сложных случаях

Время на прочтение5 мин
Количество просмотров43K
В вопросе связанном с DNS попил мне Docker кровушки основательно, ибо столько там разных мест в которых тебе предлагают написать заветные цифры, что прямо-таки глаза разбегаются.

Итак, задача: необходимо поднять окружение разработчика для одновременной работы с несколькими веб-проектами висящими на доменах вида example.app. При этом данные домены должны быть доступны из контейнеров, с хоста, а также, например, из эмулятора Genymotion. Кроме того, из контейнеров должен быть доступен и внешний интернет. Все это усугубляется корпоративным Intranet со своим внутренним DNS сервером.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии6

AI Talent Hub: как мы создаем лучшую онлайн-магистратуру по искусственному интеллекту

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

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

Читать далее
Всего голосов 40: ↑35 и ↓5+40
Комментарии64

Девять способов выстрелить себе в ногу с PostgreSQL

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров26K

Большинство этих проблем связано с масштабируемостью. Это то, что не повлияет на вас, пока база данных мала. Но если когда-нибудь вам захочется, чтобы база данных перестала быть маленькой, о таких вещах стоит подумать заранее. В противном случае они нанесут вам удар исподтишка, возможно, в самый неудобный момент. Плюс во многих случаях работы потребуется меньше, если делать всё правильно с самого начала, чем менять уже работающую систему.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+26
Комментарии2

MySQL. Выбор случайных строк в один запрос

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

Что имеем?


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

Таблица(test) имеет следующую структуру:
  • — pk_id ( первичный ключ )
  • — id ( поле заполненное разными числами )
  • — value ( поле заполненной с помощью rand() )

Первичный ключ не имеет дыр и начинается с 1.
Читать дальше →
Всего голосов 62: ↑49 и ↓13+36
Комментарии42

Вячеслав Смирнов — Ускоряем Apache JMeter

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

Вячеслав Смирнов — Ускоряем Apache JMeter



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


Apache JMeter является популярным инструментом тестирования производительности с большим количеством компонентов и возможностей. Одни и те же операции в Apache JMeter можно выполнить несколькими способами.


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


Пользуясь средствами профилирования Java-приложений, такими как Java Flight Recorder, jVisualVM, SJK, имея доступ к исходным кодам инструмента, написав синтетические тесты и взяв примеры из практики, мы подготовили отчёт по тестированию производительности инструмента для тестирования производительности.


Доклад будет интересен инженерам по тестированию производительности, использующим Apache JMeter, как начинающим, так и опытным, а также разработчикам, использующим JVM/JDK в работе и занимающихся профилированием и оптимизацией кода.


Всем привет! Я сегодня расскажу, как ускорить Apache JMeter.


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

«Еще умнее — еще проще для пользователя»: CEO Postgres Pro Олег Бартунов о будущем СУБД, open source и астрономии

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

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

При этом оцифрованная Библиотека конгресса в США совсем маленькая, хранить ее у себя дома может любой. Телескопы, на которых работают в Америке, могут производить несколько десятков терабайт за одну ночь. А радиотелескоп, размер которого квадратный километр, будет производить петабайты.

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

Elastic APM для PHP-разработчиков: Используем APM c Laravel и Lumen

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

APM расшифровывается как Application Performance Monitoring (мониторинг производительности приложений). Если на вашем пути встречается эта аббревиатура, то речь скорее всего идет о измерении производительность вашего приложения и ваших серверов. Как они справляются, сколько памяти они потребляют, где узкие места? И это далеко не все. С помощью APM можно настроить специальные уведомления, которые будут оповещать вас, например, о том, что потребление памяти достигло очень высоких показателей или удаленный вызов занимает слишком много времени. Триггеры для подобных уведомлений могут опираться на довольно широкий набор показателей и событий. Но давайте не будем забегать вперед.

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

Пробуем preload (PHP 7.4) и RoadRunner

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


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

Мы часто пишем и говорим о производительности PHP: как мы ей занимаемся в целом, как мы сэкономили 1 млн долларов при переходе на PHP 7.0, а также переводим разные материалы на эту тему. Это вызвано тем, что аудитория наших продуктов растёт, а масштабирование PHP-бэкенда при помощи железа сопряжено со значительными затратами — у нас 600 серверов с PHP-FPM. Поэтому инвестирование времени в оптимизацию для нас выгодно.

Прежде мы говорили в основном об обычных и уже устоявшихся способах работы с производительностью. Но сообщество PHP не дремлет! В PHP 8 появится JIT, в PHP 7.4 — preload, а за пределами core-разработки PHP развиваются фреймворки, подразумевающие работу PHP как демона. Пора поэкспериментировать с чем-то новым и посмотреть, что это может нам дать.

Так как до релиза PHP 8 ещё далеко, а асинхронные фреймворки плохо подходят для наших задач (почему — расскажу ниже), сегодня остановимся на preload, который появится в PHP 7.4, и фреймворке для демонизации PHP — RoadRunner.

Это текстовая версия моего доклада с Badoo PHP Meetup #3. Видео всех выступлений мы собрали в этом посте.
Читать дальше →
Всего голосов 114: ↑111 и ↓3+108
Комментарии52

Целостность данных в микросервисной архитектуре — как её обеспечить без распределенных транзакций и жёсткой связности

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

Всем привет. Как вы, возможно, знаете, раньше я все больше писал и рассказывал про хранилища, Vertica, хранилища больших данных и прочие аналитические вещи. Сейчас в область моей ответственности упали и все остальные базы, не только аналитические, но и OLTP (PostgreSQL), и NOSQL (MongoDB, Redis, Tarantool).


Эта ситуация позволила мне взглянуть на организацию, имеющую несколько баз данных, как на организацию, имеющую одну распределенную гетерогенную (разнородную) базу. Единую распределенную гетерогенную базу, состоящую из кучи PostgreSQL, Redis-ов и Монг… И, возможно, из одной-двух баз Vertica.


Работа этой единой распределенной базы порождает кучу интересных задач. Прежде всего, с точки зрения бизнеса важно, чтобы с данными, движущимися по такой базе, все было нормально. Я специально не использую здесь термин целостность, consistency, т.к. термин это сложный, и в разных нюансах рассмотрения СУБД (ACID и CAP теорема) он имеет разный смысл.


Ситуация с распределенной базой обостряется, если компания пытается перейти на микросервисную архитектуру. Под катом я рассказываю, как обеспечить целостность данных в микросервисной архитектуре без распределенных транзакций и жесткой связности. (А в самом конце объясняю, почему выбрал для статьи такую иллюстрацию).


Всего голосов 77: ↑76 и ↓1+75
Комментарии73

Профилируем php на бою

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

Привет Хабр! Последняя статья про инструменты для профилирования php датируется аж  2018 годом. Но все перечисленные решения разработаны много лет назад и имеют недостатки: древний интерфейс btp (аналог pinba), оверхед xhprof и необходимость ручного запуска phpspy на stage.

Я тимлид в рекомендательном сервисе Zoon и перед моей командой стояла цель найти инструменты, которые профилируют весь код на проде 24/7 и хранят данные. Инструменты, с которыми могут работать рядовые разработчики, без доступа к проду. Инструменты, которые позволяют находить "бутылочные горлышки" за 30 секунд.

В конце 2021 года показался свет в конце туннеля, в виде системы на основе семплирующего eBFP профайлера: prodfiler

С какими трудностями мы столкнулись при настройке и что вышло в итоге - под катом.

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность