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

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

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

Яндекс выложил в опенсорс YDB

Время на прочтение 16 мин
Количество просмотров 139K
Сегодня мы выложили в опенсорс систему управления базами данных YDB — плод многолетнего опыта Яндекса в разработке систем хранения и обработки данных. Исходный код, документация, SDK и все инструменты для работы с базой опубликованы на GitHub под лицензией Apache 2.0. Развернуть базу можно как на собственных, так и на сторонних серверах — в том числе в любых облачных сервисах.



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

В посте я расскажу об истории развития технологий баз данных, о том, зачем использовать YDB, как её применяют текущие пользователи и какие плюсы для всех несёт выход в опенсорс. А во второй половине поста поговорим о разных вариантах развёртывания.
Читать дальше →
Всего голосов 335: ↑332 и ↓3 +329
Комментарии 135

Разделяй и Властвуй. Разбор задач

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


Решение задач с помощью метода "Разделяй и Властвуй" или по-английски "Divide and Conquer" является одним из базовых методов по ускорению алгоритмов. Примером тому служит переход от квадратичной сложности пузырьковой сортировки или сортировки вставками к сложности \inline O(n\log{n}) при сортировке слиянием. Или переход от линейной сложности к логарифмической, при реализации поиска элемента в отсортированном массиве (см. бинарный поиск).


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

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

Рекомендательные системы: проблемы и методы решения. Часть 1

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

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

Задуманный систем оказался слишком объемным для одной статьи, поэтому мы разбили его на две части. Перед вами первая, она посвящена постановке задачи и базовым методам решения. В этой части мы разберем коллаборативные модели от матричного разложения (на примере ALS) до neural collaborative filtering. Кроме того, будет небольшой обзор метрик и техник борьбы с проблемой холодного старта.

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

Анатомия каналов в Go

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

Привет, Хабр! Представляю вашему вниманию перевод статьи "Anatomy of Channels in Go" автора Uday Hiwarale.


Что такое каналы?


Канал — это объект связи, с помощью которого горутины обмениваются данными. Технически это конвейер (или труба), откуда можно считывать или помещать данные. То есть одна горутина может отправить данные в канал, а другая — считать помещенные в этот канал данные.


Создание канала


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

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

Рекомендательные системы: проблемы и методы решения. Часть 2

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

Привет! Меня зовут Екатерина Ванская, и я занимаюсь data science в компании Prequel. В этой статье я продолжу обзор рекомендательных алгоритмов, которым мы начали в предыдущем моем материале

(вот ссылка на первую часть).

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

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

Наш опыт создания API Gateway

Время на прочтение 6 мин
Количество просмотров 23K
Некоторые компании, в том числе наш заказчик, развивают продукт через партнерскую сеть. Например, крупные интернет-магазины интегрированы со службой доставки — вы заказываете товар и вскоре получаете трекинговый номер посылки. Другой пример — вместе с авиабилетом вы покупаете страховку или билет на аэроэкспресс.

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

Дано: экосистема и API-портал с интерфейсом, где пользователи зарегистрированы, получают информацию и т.п. Нам нужно сделать удобный и надежный API Gateway. В процессе нам нужно было обеспечить

  • регистрацию,
  • контроль подключения к API,
  • мониторинг того, как пользователи используют конечную систему,
  • учёт бизнес-показателей.



В статье мы расскажем о нашем опыте создания API Gateway, в ходе которого мы решали следующие задачи:

  • аутентификация пользователя,
  • авторизация пользователя,
  • модификация исходного запроса,
  • проксирование запроса,
  • постобработка ответа.

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

Облачные API Gateway: зачем нужны подобные сервисы и чем они отличаются у разных платформ

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

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

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

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

А нужен ли Redis или хватит PostgreSQL

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

Есть проверенная архитектура, которую я видел много раз для поддержки ваших веб-сервисов и приложений:

  • PostgreSQL для хранения данных
  • Redis для координации очередей фоновых заданий (и некоторых ограниченных атомарных операций)

Redis — это фантастика, но что, если бы я сказал вам, что его наиболее распространенные варианты использования этого стека на самом деле могут быть достигнуты с использованием только PostgreSQL?

Сценарий 1: очередь заданий


Пожалуй, наиболее частое использование Redis, которое я видел, — это координация отправки заданий из вашего веб-сервиса в пул фоновых воркеров. Идея состоит в том, что вы хотите записать желание выполнить какое-то фоновое задание (возможно, с некоторыми входными данными) и гарантировать, что только один из многих ваших фоновых воркеров выполнит его. Redis помогает в этом, поскольку предоставляет богатый набор атомарных операций для своих структур данных.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Комментарии 10

Платформа Netflix Cosmos

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

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

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

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

Синхронизация команды со SCRUM

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


Предлагаю зайти к нам в гости и посмотреть как с проблемой синхронизации внутри себя борется команда “Онлайн-ипотеки” компании “Альфа-Банк”.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 12

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

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

Всем привет! Меня зовут Мария Фомина, я являюсь scrum-мастером в компании «Ренессанс страхование». Моя статья включает в себя две части: первая посвящена определению обратной связи, ее основным видам и критериям, моделям использования и распространённым ошибкам при применении техник, а также советам, как можно принимать обратную связь.

Во второй части вы узнаете секреты создания и проведения эффективного тренинга в scrum-командах по обратной связи.

Что такое обратная связь (далее по тексту обратная связь – ОС)? Под обратной связью понимается информация о том, как объект обратной связи проявляется и как это влияет на других людей, команду, разрабатываемый продукт, организацию. Не стоит путать это с неконструктивной и субъективной критикой, разного рода манипуляциями, выраженными в том числе в словесной форме, а также оценочным суждением, приказами и побуждениями к действию.

Какие виды обратной связи нам известны? Вы скорее всего встречали обширное количество видов, но я бы предложила опираться на нижеизложенные вариации:

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

Как мы теперь договариваемся о новом бизнесе на берегу: юнит-тесты в реальном мире

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


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

Очень многие вещи из ИТ-сферы напрямую относятся к бизнес-процессам. Тойота в какой-то момент придумала промежуточные юнит-тесты на производстве в своей TPS («каждое следующее звено — внутренний заказчик с критериями приёмки»), но вот в областях типа переговоров истории сквозных проверок далеко не зашли. Вообще, в решении типовых переговорных ситуаций есть очень много гениальных механик вроде «русской рулетки» или «техасской перестрелки» при разделе имущества. Только мало кто договаривается подобное применять, потому что в конечном итоге нужно уметь декомпозировать ситуацию и отладить её.

Лет 7 назад я писал про очень простую модель того, как могут договариваться основатели небольшой компании на старте: кто за что отвечает, кто главный в ситуации клинча, как принимаются важные решения и так далее. Это была хорошая рабочая механика, но, как выяснилось за это время, случиться может вообще всякое. И все эти исключения надо обрабатывать. Например, я не думал, что у нас будет смерть соучредителя (и последовавшие проблемы для начала с почтой и доменом, зареганными на него, а потом ещё с кучей всего с наследством его доли).

И вот в какой-то момент к нам в гости завалился человек, который посвятил полжизни конфликтам учредителей. Первая мысль была: «Ну, это не про нас». А потом здравый смысл пересилил, и мы попробовали его механику договорки. И знаете, что? Отдаёт мазохизмом, но удивительно хорошо работает. В общем, давайте покажу, как выглядит очень далёкий, но всё же аналог юнит-тестов сотрудничества нескольких предпринимателей.
Читать дальше →
Всего голосов 53: ↑53 и ↓0 +53
Комментарии 14

Гайд начинающего тимлида

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

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

Всё это я проговаривал на вебинаре в Хекслете тут https://www.youtube.com/watch?v=y_HkXvFovAc

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

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

Читать далее
Всего голосов 51: ↑49 и ↓2 +47
Комментарии 16

Архитектура in-memory СУБД: 10 лет опыта в одной статье

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

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

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

Этот рассказ сжимает 10 лет опыта работы с in-memory решениями в один текст. Порог входа максимально низкий. Чтобы получить пользу от прочтения, вам не нужно иметь столько же лет опыта, достаточно базового понимания IT.
Читать дальше →
Всего голосов 57: ↑57 и ↓0 +57
Комментарии 18

Приложение двенадцати факторов — The Twelve-Factor App

Время на прочтение 22 мин
Количество просмотров 68K
Уважаемые читатели! Представляю вашему вниманию перевод методологии создания веб-приложений The Twelve-Factor App от разработчиков платформы Heroku. Мои комментарии скрыты спойлерами по ходу статьи.

Введение


В наши дни программное обеспечение обычно распространяется в виде сервисов, называемых веб-приложения (web apps) или software-as-a-service (SaaS). Приложение двенадцати факторов — это методология для создания SaaS-приложений, которые:

  • Используют декларативный формат для описания процесса установки и настройки, что сводит к минимуму затраты времени и ресурсов для новых разработчиков, подключенных к проекту;
  • Имеют соглашение с операционной системой, предполагающее максимальную переносимость между средами выполнения;
  • Подходят для развертывания на современных облачных платформах, устраняя необходимость в серверах и системном администрировании;
  • Сводят к минимуму расхождения между средой разработки и средой выполнения, что позволяет использовать непрерывное развертывание (continuous deployment) для максимальной гибкости;
  • И могут масштабироваться без существенных изменений в инструментах, архитектуре и практике разработки.

Методология двенадцати факторов может быть применена для приложений, написанных на любом языке программирования, и которые используют любые комбинации сторонних служб (backing services) (базы данных, очереди сообщений, кэш-памяти, и т.д.).
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 5

Стратегии деплоя в Kubernetes: rolling, recreate, blue/green, canary, dark (A/B-тестирование)

Время на прочтение 5 мин
Количество просмотров 68K
Прим. перев.: Этот обзорный материал от Weaveworks знакомит с наиболее популярными стратегиями выката приложений и рассказывает о возможности реализации наиболее продвинутых из них с помощью Kubernetes-оператора Flagger. Он написан простым языком и содержит наглядные схемы, позволяющие разобраться в вопросе даже начинающим инженерам.


Схема взята из другого обзора стратегий выката, сделанного в Container Solutions

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

Более короткие и частые развертывания имеют следующие преимущества:

  • Сокращается время выхода на рынок.
  • Новые функции быстрее попадают к пользователям.
  • Отклики пользователей быстрее доходят до команды разработчиков. Это означает, что команда может дополнять функции и исправлять проблемы более оперативно.
  • Повышается моральный дух разработчиков: с большим количеством функций в разработке интереснее работать.
Читать дальше →
Всего голосов 43: ↑40 и ↓3 +37
Комментарии 3

Reactor, WebFlux, Kotlin Coroutines, или Асинхронность на простом примере

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


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


В JVM-мире всё немного сложнее. Есть огромное количество фреймворков и библиотек, блокирующих потоки при использовании. Так и сама stdlib может делать то же самое порой. Да и в Java нет аналогичного механизма, похожего на горутины в Golang.


Тем не менее, JVM активно развивается и появляются новые интересные возможности. Есть Kotlin с корутинами, которые по своему использованию очень похожи на горутины из Golang (хоть и реализованы совершенно по-другому). Есть JEP Loom, который в будущем привнесёт fibers в JVM. Один из самых популярных веб-фреймворков — Spring — не так давно добавил возможность создавать полностью неблокирующие сервисы на Webflux. А с недавним релизом Spring boot 2.2 интеграция с Kotlin стала ещё лучше.


Предлагаю на примере небольшого сервиса по переводу денег с одной карты на другую самим написать приложение на Spring boot 2.2 и Kotlin для интеграции с несколькими внешними сервисами.

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

kotlinx.coroutines 1.4.0: представляем StateFlow и SharedFlow

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

Сегодня мы с радостью объявляем о выходе версии 1.4.0 библиотеки Kotlin Coroutines. Основными новшествами этого релиза стали StateFlow и SharedFlow, которые теперь являются стабильными API-интерфейсами. StateFlow и SharedFlow предназначены для использования в тех случаях, когда требуется управление состоянием в контексте асинхронного выполнения с применением Kotlin Coroutines.

(Примечание: перевод статьи от 30 октября 2020г.)

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

Как давать обратную связь: 9 правил

Время на прочтение 4 мин
Количество просмотров 78K
Исследования показали: получив конструктивный фидбек, сотрудники работают лучше. Если обратной связи нет, появляется стресс: трудно понять, хорошо ли ты справляешься и куда двигаться дальше. Возникает «кризис признания» – а там не за углом и выгорание.

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


Читать дальше →
Всего голосов 29: ↑25 и ↓4 +21
Комментарии 13

Что посмотреть на карантине? Подборка материалов от Технострима (часть 1)

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

Сидение на необъявленном карантине можно провести с пользой, совершенствуя тело и разум. О первом мы, возможно, когда-нибудь поговорим, а пока предлагаем вам пищу для ума: подборку разноплановых интересных материалов в виде двух курсов и двух интервью.
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 5

Информация

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