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

веб-разработчик

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

Пробы на роль Архитектора. Акт III: выступление

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

Выборы архитектора происходят всегда по‑разному. Это только политиков одинаково выбирают — по принципу лишь бы не этот… А вот с архитекторами везде свой сценарий. Где‑то в половине мест сидят эстеты и предлагают что‑то изобразить да обсудить. Четверть мест явно химики с мензурками в сейфе — спрашивают про правильный код или просят пузырьковую сортировку. Ещё реже циркачи просят пожонглировать стеклянными шариками на башне или погонять трамваи. Остальные просто хотят обсуждения с залом. Как бы намекая, что нельзя вот так просто прийти в училище имени Гнесиных с фамилией Иванов. Кто‑то из гильдии таки должен сказать, что в мальчике что‑то есть.

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

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

Как seo-оптимизировать сайт: основы поисковой оптимизации и проверка эффективности сайтов

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

Всем привет, это adlook!

Вы хотите зарабатывать на сайтах и стать крутым пабом? У вас есть сын маминой подруги, который может помочь быстро наклепать сайт на коленке? Отличный вариант, если ваши планы — отсутствие профита и постоянные 404-ошибки. 

Недавно написали лонгрид про монетизацию сайтов для начинающих пабов. Бегло пробежались по SEO, но не сказали главного — чтобы интернет-проекты приносили деньги, нужна грамотная seo-оптимизация веб-ресурса. Сегодня речь пойдет о базовых основах SEO, которые помогут разобраться в некоторых тонкостях продвижения и монетизации сайтов. Давайте разбираться с самого начала. 

Как подготовиться к созданию seo-сайта?

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

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

Прооптимизируем? :)
Всего голосов 8: ↑0 и ↓8-8
Комментарии10

Моделирование микросервисов. Часть 1

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

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

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

Мы пилили монолит — много нас, а он один. Полезные советы от команды Яндекс Еды

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

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

Распилить
Всего голосов 31: ↑28 и ↓3+36
Комментарии36

История импортозамещения: от BluePrism к SaluteRPA

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

Привет, Хабр! Я Смолин Максим, разработчик и администратор баз данных в продуктах RPA BluePrism и SaluteRPA в Блоке Технологий Сбербанка, руководитель ИТ-направления. Мы с командой развиваем продукт SaluteRPA — роботизированная автоматизация процессов Сбербанка. Я расскажу, почему нас не устраивала платформа от зарубежного вендора, и почему мы решились на создание собственной платформы роботизации.

В 2017 году в банке начали использовать систему RPA BluePrism. На этапе MVP всё было великолепно, но потом началось много вопросов. ЦПУ (центральное процессорное устройство) сервера БД зашкаливали за 95 %, процессы тормозили и не успевали отрабатывать в нужное время, инциденты сыпались как из рога изобилия. С этого момента началась наша работа по превращению софта, рассчитанного на малый бизнес, в софт уровня предприятия с тысячами роботов. В итоге она привела к написанию собственного продукта SaluteRPA.

Архитектура RPA BluePrism достаточно проработана. Но вот реализация на уровне БД имела много замечаний с нашей стороны. Что-то мы отправляли на переделку вендору, что-то дорабатывали сами, а что-то смогли реализовать только в своём продукте.

Забегая вперёд, скажу, что внедренные нами изменения позволили преодолеть ограничение RPA BluePrism в 100 роботов на одну БД и уверенно держать нагрузку до 500 роботов на одну БД.

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

Правильный подход к модульной архитектуре

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

Эта статья строится на двух простых идеях:

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

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

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

Паттерн Aggregate Outside

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

Руслан Гнатовский aka @Number55 в свой статье Когда ни туда, ни сюда, или в поисках оптимальной границы Domain слоя описал известную проблему протекания бизнес-логики из агрегата, в случае если эта логика зависит от данных которые находятся вне агрегата, и предложил несколько решений этой проблемы, каждое из которых не лишено недостатков. Многие из этих недостатков были описаны в статье а также в комментариях поэтому я не буду здесь дублировать эту информацию а попытаюсь предложить решение которое этих недостатков лишено.

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

Когда ни туда, ни сюда, или в поисках оптимальной границы Domain слоя

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

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

Можно долго искать решения, читать различные комментарии и книги про разделение бизнес-логики от приложения. И все равно ваша конкретная ситуация будет казаться вам уникальной, как будто ничего нельзя сделать либо надо снова переписывать Domain слой, дабы ни одно зернышко бизнес-логики не выпало за его пределы. А можно просто закрыть глаза на некоторые моменты, забыть об идеале и спать спокойно, рассчитывая, что все чудесным образом само разрулится.

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

Разбираемся с RabbitMQ: High Availability и High Load

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

Продолжаем делиться конспектами Алексея Барабанова, IT-директора «Хлебницы». На этот раз обсудим специфику работы RabbitMQ с высокими нагрузками (High Load) и обеспечением высокой доступности (High Availability). Рассмотрим различные методы увеличения производительности и горизонтального масштабирования, разберём и настроим внутренние инструменты. Также по мере погружения постараемся изучить основные подводные камни всех подходов.

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

А был ли баг? Может бага и не было? Зачем, как и чем тестировать PHP код

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

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

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

Книга «Создание микросервисов. 2-е издание»

Время на прочтение31 мин
Количество просмотров15K
image Привет, Хаброжители!
А мы издали второе издание книги Сэма Ньюмена

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

Вы познакомитесь с современными решениями для моделирования, интеграции, тестирования, развертывания и мониторинга собственных автономных сервисов. Примеры из реальной жизни показывают, как получить максимальную отдачу от этих архитектур. Книга будет полезна всем: от архитекторов и разработчиков до тестировщиков и специалистов по эксплуатации.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии6

Переходы и конверсии — что вы упускаете, фокусируясь только на этих показателях в programmatic-рекламе

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

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

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

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

Применение DDD. От моделей до EDM — поиск новых форм и архитектурные излишества

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

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



DDD не на коленке, а за дорого ;)

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

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

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

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

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

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

«Успейте за 5 месяцев создать систему онлайн обучения», — говорили они, «Успеем к 1 сентября», — сказали мы

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

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

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

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

Symfony под капотом: Symfony Messenger и механизм повторной обработки сообщений при ошибках

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

Привет! Меня зовут Ваня, последние несколько лет я занимаюсь backend-разработкой в Сравни. Моя команда разрабатывает интеграции с сервисами наших партнёров, код пишем на PHP и Symfony Framework.

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

В этой статье я расскажу о том, как в Messenger-компоненте Symfony устроен механизм повторной обработки сообщений при ошибках (или по-простому – механизм ретраев), а также поделюсь опытом его использования и некоторыми важными нюансами его работы.

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

Опыт эксплуатации MySQL Master-Master — как пережить аварию датацентра

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

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

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


Читать дальше →
Всего голосов 86: ↑73 и ↓13+60
Комментарии70

Мутационное тестирование в PHP: качественное измерение для code coverage

Время на прочтение10 мин
Количество просмотров12K
Как оценивать качество тестов? Многие полагаются на самый популярный показатель, известный всем, — code coverage. Но это количественная, а не качественная метрика. Она показывает, какой объём вашего кода покрыт тестами, но не то, как хорошо эти тесты написаны. 

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

На Badoo PHP Meetup в марте я рассказывал, как организовать мутационное тестирование для PHP-кода и с какими проблемами можно столкнуться. Видео доступно по ссылке, а за текстовой версией добро пожаловать под кат.


Читать дальше →
Всего голосов 78: ↑76 и ↓2+74
Комментарии27

Проектирование высокопроизводительных кэширующих решений с использованием Redis и Memcached

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

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

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

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

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

«Обновляй меня нежно» — как мы докатились до Feature Toggle

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

Вопрос подготовки релизов и внесения новых изменений стоит перед любыми командами. Но чем масштабнее сфера применения каждого конкретного решения, тем важнее не допустить downtime, связанного с ошибками в новом функционале. В этом посте я расскажу о том, почему нам в Леруа Мерлен потребовалось развивать новый механизм работы с обновлениями, из-за чего не подошел ни один из популярных инструментов и что мы стали делать в итоге. Также мы обсудим различные подходы к организации функций Feature Toggle. Если вы тоже интересуетесь этой темой, приглашаю под кат!

Читать далее
Всего голосов 7: ↑6 и ↓1+5
Комментарии10
1
23 ...

Информация

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