Pull to refresh
25
0
netslow @netslow

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

Send message

Бэкенд для фронтенда, или Как в Яндекс.Маркете создают API без костылей

Reading time7 min
Views71K

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



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


Читать дальше →

Корреляции для начинающих

Reading time6 min
Views221K
Апдейт для тех, кто сочтет статью полезной и занесет в избранное. Есть приличный шанс, что пост уйдет в минуса, и я буду вынужден унести его в черновики. Сохраняйте копию!

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


Введение


Зачем это вообще надо? В науке и около нее очень часто возникает задача предсказания какого-то неизвестного параметра объекта исходя из известных параметров этого объекта (предикторов) и большого набора похожих объектов, так называемой учебной выборки. Пример. Вот мы выбираем на базаре яблоко. Его можно описать такими предикторами: красность, вес, количество червяков. Но как потребителей нас интересует вкус, измеренный в попугаях по пятибалльной шкале. Из жизненного опыта нам известно, что вкус с приличной точностью равен 5*красность+2*вес-7*количество червяков. Вот про поиск такого рода зависимостей мы и побеседуем. Чтобы обучение пошло легче, попробуем предсказать вес девушки исходя из ее 90/60/90 и роста.
Читать дальше →

SLO и SLI на практике — что это такое, как внедрить и как контролировать на примере инструмента Instana

Reading time9 min
Views53K

Сегодня мы хотим обсудить практическую сторону внедрения концепций Service Level Objectives и Service Level Indicators. Рассмотреть, что входит в понятия SLI, SLO и Error budget, как рассчитывать эти показатели, как за 7 шагов внедрить их отслеживание и как в последствии контролировать эти показатели на примере инструмента Instana.

Определимся с терминологией

Service Level Indicator (SLI) – это количественная оценка работы сервиса, как правило, связанная с удовлетворенностью пользователей производительностью приложения или сервиса за заданный период времени (месяц, квартал, год). А если говорить конкретнее – это индикатор пользовательского опыта, который отслеживает одну из многочисленных возможных метрик (рассмотрим их ниже) и, чаще всего, представляется в процентном эквиваленте, где 100 % - означает отличный пользовательский опыт, а 0% - ужасный.

Service Level Objectives (SLO) – это желаемое, целевое значение нашего SLI или группы SLI. При установке SLO необходимо указывать реально достижимое значение для каждого конкретного SLI. Ниже мы рассмотрим логику установки SLO на примере конкретных SLI.

Также важно понимать, что SLO – это наш внутренний показатель качества работы сервиса и/или приложения, в отличие от Service Level Agreement (SLA), который обычно устанавливается бизнесом как внешнее обязательство по доступности сервиса перед клиентами компании.

Читать далее

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

Reading time8 min
Views52K

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

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

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

Читать далее

Проектирование отказоустойчивости IT-систем

Reading time11 min
Views24K

❓Как проектировать системы, которые будут толерантными для различного вида отказов и ошибок?

Что такое отказоустойчивость и стабильность?

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

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

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

Читать далее

Построение платформенного продукта в Авито

Reading time19 min
Views14K

Мы в Авито разработали свою внутреннюю платформу для разработчиков. Несмотря на то, что создание платформенного продукта — довольно затратная история, в итоге мы видим сплошные плюсы. Она растит скорость и качество разработки, делает системы стабильнее, помогает инженерам сосредоточиться на бизнес-задачах, а не на рутине. 

Наш опыт построения платформы мы постарались заложить во внешнее решение Plato, которое опирается на проверенные open-source решения.

О преимуществах платформы, процессах её разработки и сложностях в реализации — в этой статье.

Читать далее

Как подготовиться к собеседованию начинающему сетевому инженеру? Базовые знания

Level of difficultyEasy
Reading time10 min
Views21K


Приветствую, коллеги! Меня зовут ProstoKirReal, и я сетевой инженер.

Мир информационных технологий часто объединяют одним словом — IT. Когда знакомые меня спрашивают, кем я работаю, я всегда переспрашиваю: вам проще объяснить или сложнее? Всегда выбирают проще, и приходится говорить, что я айтишник.

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

Как подготовиться к собеседованию


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

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

«Как это работает»: знакомство с SSL/TLS

Reading time6 min
Views180K
Мы достаточно часто рассказываем о разных технологиях: от систем хранения до резервного копирования. Помимо этого мы делимся собственным опытом оптимизации работы нашего IaaS-провайдера — говорим об управленческих аспектах и возможностях для улучшения usability сервиса.

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

Читать дальше →

Что такое TLS

Reading time9 min
Views512K
Данный текст является вольным переводом вот этой главы замечательной книги «High Performance Browser Networking» авторства Ильи Григорика. Перевод выполнялся в рамках написания курсовой работы, потому очень вольный, но тем не менее будет полезен тем, кто слабо представляет что такое TLS, и с чем его едят.

Общие сведения о TLS

Протокол TLS (transport layer security) основан на протоколе SSL (Secure Sockets Layer), изначально разработанном в Netscape для повышения безопасности электронной коммерции в Интернете. Протокол SSL был реализован на application-уровне, непосредственно над TCP (Transmission Control Protocol), что позволяет более высокоуровневым протоколам (таким как HTTP или протоколу электронной почты) работать без изменений. Если SSL сконфигурирован корректно, то сторонний наблюдатель может узнать лишь параметры соединения (например, тип используемого шифрования), а также частоту пересылки и примерное количество данных, но не может читать и изменять их.
Читать дальше →

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

Level of difficultyMedium
Reading time8 min
Views7.4K

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

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

Приступим.

Битый или небитый? Как обеспечить целостность данных в Postgres Pro

Level of difficultyEasy
Reading time9 min
Views7.2K

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

Администратор любой IT системы должен знать о всех возможных проблемах, которые могут возникнуть на вверенном ему оборудовании: аппаратные сбои системы хранения, сбои файловой системы, повреждения страниц в оперативной памяти, сбои в кэше хранилищ и так далее. Для серверов баз данных выявление и исправление таких ошибок особенно важно, так как информация в БД должна быть в согласованном состоянии и некорректность только части данных портит БД целиком. В этой статье мы расскажем с помощью каких инструментов можно защитить ваши данные в СУБД Postgres и обнаруживать ошибки до того, как они становятся реальными проблемами.

Читать далее

Cohesion и Coupling: отличия

Reading time6 min
Views82K

Эта статья является переводом материала «Cohesion and Coupling: the difference». 

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

Читать далее

Mattermost. Интеграция с внешними сервисами

Reading time4 min
Views21K

Выбирая замену, используемой у нас системы обмена сообщениями, наткнулся на описание Mattermost, и решил попробовать. Одним из плюсов, описываемой системы, является простая интеграция со сторонними сервисами, так называемые "хуки" (outgoing и incoming hooks). Вот про настройку взаимодействия через хуки с внешними системами и будет данная статья (в нашем конкретном случае это zabbix и glpi).

Читать дальше →

Принципы SOLID, только понятно

Level of difficultyEasy
Reading time6 min
Views109K

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

Изучить принципы

Ката программиста — путь к недостижимому идеалу. Или как я упал с велосипеда этим летом

Reading time8 min
Views17K

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

Изнуряющие тренировки отнимают много времени и сил. Зато потом, когда понадобится применить своё искусство,  тело сделает всё само — «на автомате». А ценные ресурсы мозга будут освобождены для решения более важных задач — стратегического планирования, принятия ключевых решений, поиска новых возможностей. И, конечно, для творчества.

А что же программисты?...

Читать далее

Шаблоны GRASP: Low Coupling (низкая связанность) и High Cohesion (высокое зацепление)

Reading time4 min
Views67K
И снова здравствуйте. Меня зовут Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.

Специально к старту нового набора на курс «Архитектура и шаблоны проектирования» я продолжаю серию своих публикаций про шаблоны GRASP.




Введение


Описанные в книге Craig'а Larman'а «Applying UML and patterns, 3rd edition», GRASP'овские паттерны являются обобщением GoF'овских паттернов, а также непосредственным следствием принципов ООП. Они дополняют недостающую ступеньку в логической лестнице, которая позволяет получить GoF'овские паттерны из принципов ООП. Шаблоны GRASP являются скорее не паттернами проектирования (как GoF'овские), а фундаментальными принципами распределения ответственности между классами. Они, как показывает практика, не обладают особой популярностью, однако анализ спроектированных классов с использованием полного набора GRASP'овских паттернов является необходимым условием написания хорошего кода.

Полный список шаблонов GRASP состоит из 9 элементов:

  • Information Expert
  • Creator
  • Controller
  • Low Coupling
  • High Cohesion
  • Polymorphism
  • Pure Fabrication
  • Indirection
  • Protected Variations

В прошлый раз мы обсудили принцип Creator. Сейчас я предлагаю рассмотреть два принципа GRASP, которые имеет смысл рассматривать только в паре, потому что рассмотрение их по отдельности в пределе приводит к явно плохому коду. Эти принципы могут рассматриваться не только в контексте микропроектирования, но и при проектировании, например, микросервисов. Ниже поговорим о Low Coupling и High Cohesion.
Читать дальше →

Нотация моделирования архитектуры С4 — примеры диаграмм и инструменты

Level of difficultyMedium
Reading time19 min
Views131K

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

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

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

Читать далее

Архитектура CQRS

Level of difficultyMedium
Reading time10 min
Views25K


Идея CQRS возникла в 2010 году, когда Грег Янг (Greg Young) опубликовал статью на эту тему. CQRS быстро стал популярным в разработке приложений, и сегодня является одним из ключевых подходов в работе со сложными системами.

CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который предлагает разделить операции записи и чтения данных в приложении на две отдельные ветки. Вместо того, чтобы использовать единый интерфейс для обеих операций, CQRS предлагает использовать различные модели данных для команд и запросов. Это позволяет оптимизировать каждую модель для конкретных задач и улучшить производительность приложения.
Читать дальше →

Эффективная конструкция агрегата. Заставляем агрегаты работать вместе

Reading time8 min
Views3.2K

Эта статья является конспектом материала Effective Aggregate Design Part II: Making Aggregates Work Together.

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

Мы можем захотеть использовать композиционную структуру во время проектирования агрегатов. Такая структура позволит нам обходить глубокие графы объектов. Однако это не должно быть целью. DDD утверждает, что один агрегат может содержать ссылки на корень других агрегатов. Но это не значит то, что агрегаты входят в границу согласованности другого агрегата, который на них ссылается. Ссылка не приводит к образованию единого агрегата.

Читать далее

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity