Pull to refresh
3
0
Send message

Проверка готовности приложения к работе в реальном ненадежном мире. Часть 1

Reading time6 min
Views2.4K

Опытом делится Виталий Лихачёв, SRE в booking.com и спикер курса Слёрма «Golang-разработчик». Он рассказывает, о чём стоит подумать перед выкаткой сервиса в жестокий прод, где он может не справиться с нагрузкой или деградировать из-за резких всплесков при наплыве пользователей и по вечерам.

Считайте это некоторым чек-листом, но не применяйте все пункты as is, потому что каждая система уникальна и иногда вполне допустимо построить менее надежную систему с целью значительного сокращения затрат на разработку, поддержку и эксплуатацию (например, отсутствие резервирования). Однако бэкапы обязательно должны быть 🙂

Некоторые термины не будем переводить не в силу лени автора, а в силу устойчивости терминов в литературе.

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

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

Статья состоит из 5 частей, которые будут выходить по очереди:

1. Надежность.

2. Масштабируемость/отказоустойчивость.

3. Resiliency/отказоустойчивость.

4. Безопасность. Процесс разработки. Процесс выкатки.

5. Наблюдаемость. Архитектура. Антипаттерны.

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

Сдохни или умри: мой опыт создания проекта от идеи до релиза

Reading time10 min
Views3.7K

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

Экспертизы в сфере P2P платежек у меня не было, поэтому первоначально пошел гуглить, что это вообще такое, где и как работает. После изучил схему, которую он мне прислал. В голове обрисовалась картинка как это можнно реализовать на практике, я ему рассказал свои мысли, сильные и слабые (на мой взгляд) стороны его идеи. После чего он выдал: а сделать сможешь? Деньги на реализацию есть, ТЗ — напишу, всё как полагается.

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

Читать далее
Total votes 19: ↑18 and ↓1+19
Comments6

Инструмент обеспечения качества данных: от теории к практике

Level of difficultyMedium
Reading time7 min
Views1.5K

 Всем привет! Меня зовут Саша Ткачев, я ведущий дата-инженер отдела управления ценностью данных в Лемана ПРО (Леруа Мерлен). Наша команда занимается разработкой self-service инструментов для пользователей платформы данных. Сегодня расскажу о новом продукте — DQ platform.  

Почему именно платформа? У нас получилась большая система, которая включает в себя самые разнообразные компоненты — планировщик заданий, REST-API интерфейс предоставления информации и приема DQ проверок на исполнение, модуль работы с секретами, множество систем: хранения, сквозного логирования, обслуживания БД, восстановления работоспособности при возникновении ошибок (сетевых, работоспособности БД), валидации входящих моделей и т.п.    

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

Методология баг-баунти: гайд для охотников за багами

Level of difficultyMedium
Reading time18 min
Views5.7K

Ирландский full-time багхантер Monke делится советами по осознанному хакингу и подборкой инструментов, упрощающих поиск уязвимостей. Бонусом — список полезных ресурсов для тех, кто интересуется темой баг-баунти.

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

Вам не нужно готовое API чтобы начать писать фронтенд или краткий обзор готовых решений для мокинга данных

Level of difficultyEasy
Reading time7 min
Views8.7K

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

Однако, её статус был не в “Ready for development”. Также можно было увидеть что сама задача ждёт выполнения другой задачи - на разработку API с данными. Здесь у меня начались вопросы, а также желание в очередной раз разъяснить менеджерам что критичных блокеров у этой задачи нет.

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

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

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

Продакт-менеджеры бесполезны на запуске продукта

Reading time6 min
Views4.8K
Продакт оптимизирует то, что уже работает. Он может заниматься воронками, полировать фичи и так далее, но всё его обучение вообще никак не предполагает создания продукта. Только улучшение чего-то, что уже работает.

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

Продакт — это тот, кто 20 лет назад был проджектом. Это люди, которых вы нанимаете, чтобы они сделали вам проект. Основная функция продакта — оптимизировать продукт. Упрощая, они кастдевят, придумывают гипотезы, быстро ставят эксперименты, оптимизируют воронки и собирают совещания.

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

Вы, возможно, будете смеяться, но разработчик заменяет продакта на старте продукта и показывает большую эффективность. Я проверил это численно.
Читать дальше →
Total votes 25: ↑21 and ↓4+24
Comments22

Игра: Загрузка иностранного языка в мозг

Reading time9 min
Views139K
Бывает ли у вас такие ситуации, когда слово, идиома или грамматическая конструкция иностранного языка никак не могут удержаться в голове, несмотря на то, что вы встречали её уже много раз и даже специально учили? А сколько процентов иностранных слов вы помните спустя месяц после их изучения? А спустя полгода? Сложно ли вам мотивировать себя на занятия иностранным языком?



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

Под катом вас ждет рассказ о методе изучения иностранного языка при помощи карточек (flashcards), о технике эффективного использования метода и о принципиальных особенностях и алгоритмах одного варианта программной реализации.
Читать дальше →
Total votes 58: ↑48 and ↓10+38
Comments56

Примитивы синхронизации в Python Asyncio: Исчерпывающее руководство

Level of difficultyHard
Reading time14 min
Views13K

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

Что было дальше?
Total votes 15: ↑14 and ↓1+15
Comments4

Зарубежная банковская карта в 2024: где оформить онлайн, сколько стоит, как пополнять?

Level of difficultyEasy
Reading time5 min
Views68K

Привет, Хабр! Меня зовут Мила, когда‑то я работала аналитиком в банках, а нынче делаю авторские туры в Африку. По работе мне постоянно приходится отправлять деньги за границу, оплачивать отели, трансферы, билеты онлайн и оффлайн.

Хочу поделиться опытом оформления одной конкретной карты банка Казахстана. Данный банк, опасаясь санкций, публично отрицает возможность открытия счетов для нерезидентов ОНЛАЙН. Поэтому помогающие конторы стараются не ссылаться на реальное название банка, а заменять его на псевдонимы: «зелёный банк», «свободный банк», «банк воландеморт». Так что тссс! мы все понимаем, что король голый, но вслух ни‑ни.

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

Итак, поехали.

Читать далее
Total votes 63: ↑49 and ↓14+44
Comments122

Как мы заработали 100 000 рублей за 3 месяца, запустив простой конвертер картинок в США

Level of difficultyEasy
Reading time5 min
Views63K

Что мы поняли, запустив простой конвертер картинок за 1 месяц в США. И как заработали 100 000 рублей за первые 3 месяца, хотя вокруг куча бесплатных аналогов.

Читать далее
Total votes 121: ↑109 and ↓12+116
Comments219

Нейросеть для создания персонажа 2D игры

Level of difficultyMedium
Reading time3 min
Views11K

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

Читать далее
Total votes 37: ↑32 and ↓5+32
Comments8

Руководство по проектированию реляционных баз данных (1-3 часть из 15) [перевод]

Reading time7 min
Views437K
Перевод цикла из 15 статей о проектировании баз данных.
Информация предназначена для новичков.
Помогло мне. Возможно, что поможет еще кому-то восполнить пробелы.

Другие части: 4-6, 7-9, 10-13, 14-15.

Руководство по проектированию баз данных.



1. Вступление.

Если вы собираетесь создавать собственные базы данных, то неплохо было бы придерживаться правил проектирования баз данных, так как это обеспечит долговременную целостность и простоту обслуживания ваших данных. Данное руководство расскажет вам что представляют из себя базы данных и как спроектировать базу данных, которая подчиняется правилам проектирования реляционных баз данных.
Читать дальше →
Total votes 34: ↑20 and ↓14+6
Comments28

У меня был 6-дневный дофаминовый детокс — и вот что получилось

Level of difficultyEasy
Reading time5 min
Views135K

Что такое дофамин и почему в среде любителей самосовершенствования он считается гормоном, способствующим отвлечению внимания?

Выражение «дофаминовый детокс» на первый взгляд звучит как полный отказ от дофамина на какое-то время, что в корне неверно. От дофамина избавиться невозможно.

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

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

Читать далее
Total votes 159: ↑143 and ↓16+147
Comments278

Давайте сделаем крупное приложение на Flask (язык Python)

Reading time18 min
Views20K

На Хабре я часто вижу статьи о реализации тех или иных фич на Python-фреймворках. Я объединил все эти фичи в реальный проект с открытым исходным кодом, чтобы у вас сложилась целостная картина. Мы с вами создадим UX/UI на Figma, напишем фронтенд на HTML, CSS, SASS, Bootstrap и JavaScript, создадим ER-диаграмму в MySQL Workbench, напишем бекэнд на Flask, создадим регистрацию через социальные сети OAuth 2.0 в один клик, используем брокер сообщений и асинхронную очередь Celery для отправки писем на электронную почту, сделаем WYSIWYG-редактор, реализуем полнотекстовый поиск Elasticsearch, закешируем Redis, покроем тестами pytest и запустим в Docker-контейнерах, поговорим о многопроцессности для WSGI-шлюза Gunicorn.

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

Мои взгляды на программирование на июль 2024 года

Reading time5 min
Views7.9K
Эта статья – собрание убеждений о разработке ПО, которые выработались у меня на сегодняшний день. Всё основано на личном опыте.

Подход к задачам


Основная часть моей работы – разбираться с тикетами, и я до сих пор продолжаю совершенствоваться в этом деле. Вот несколько вещей, которые я открыл для себя в процессе.
  • Разные задачи, проекты и команды требуют разных подходов. Например, сделать пейсмейкер без автоматических тестов было бы безответственным решением – кто-то может от этого пострадать. И вместе с тем, глупо изводиться по поводу автоматических тестов на геймджеме, куда вы отправились на выходных. Содержание понятия «хороший код» меняется в зависимости от контекста, и нужно адаптировать свой подход под конкретную ситуацию.
  • Делайте марш-броски. Бывает, что я ставлю себе цель довести какую-то функциональность до готовности в кратчайшие сроки, пусть даже срезая углы где только можно, с кодом ужасного качества и TODO на каждом шагу. Когда у меня появится что-то рабочее, тогда и буду приводить всё в должный вид. Я пришел к выводу, что это хороший способ обозначить для себя проблемные зоны, а также неплохой путь к ускорению процесса разработки. На эту тему есть статья «Выбросьте первый набросок кода».
  • Если я бьюсь головой об задачу и никак не могу сдвинуться с мертвой точки, значит, необходимо оторваться от нее на какое-то время.
  • Прежде чем начать работу над сложной задачей, я задаю себе вопрос: «А что если вообще этого не делать?» Как правило, вопрос оказывается глупым и выполнять задачу все-таки приходится. Но примерно в пяти процентах случаев я осознаю, что определенную часть работы можно спокойно пропустить.

Читать дальше →
Total votes 15: ↑13 and ↓2+16
Comments26

Метод локусов или чертоги разума: краткая история знаменитой мнемотехники

Reading time11 min
Views8.9K

Среди научно‑популярных книг, которые мне доводилось переводить, особняком стоит «Мастерская памяти» от издательства «Портал» (большая часть сотрудничества с этим издательством пришлась на тревожный пандемийный период, и я могу только лишний раз поблагодарить уважаемых Веру Малышкину и Любовь Родионову за то, что тогда помогли мне от него отвлечься). Автор этой книги, Лин Келли — австралийка в возрасте за 60, которая профессионально, в спортивном режиме, выступает в своей возрастной группе в соревнованиях по «мнемонической атлетике». Книга максимально актуальна в наше время, так как помогает бороться и с дефицитом внимания, и с недостаточной концентрацией и, что вообще незаменимо — с возрастным ухудшением памяти. В этой статье я хочу подробнее рассказать об одной из самых важных рассмотренных в ней мнемонических техник, которая наиболее известна в древнегреческой трактовке и называется «чертоги разума». В английских источниках встречаются формулировки «memory palace» и «mind palace» а также «brain attic» — это вариант, в котором данную технику переосмыслил Артур Конан‑Дойл.

Читать далее
Total votes 25: ↑23 and ↓2+37
Comments6

17 продвинутых RAG-техник: как превратить прототип LLM-приложения в готовое решение

Reading time18 min
Views9K

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

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

Как метко подметил Мэтт Тёрк: если в 2023 году мы боялись, что GenAI нас погубит, то в 2024-м мечтаем хоть как-то приручить его и запустить в "мелкосерийное производство".

Если вы уже успели создать свои первые LLM-приложения и готовы вывести их на новый уровень, эта статья для вас. Мы рассмотрим 17 продвинутых RAG-техник, которые помогут избежать типичных ошибок и превратить ваш прототип в мощное и стабильное решение.

Пристегните ремни, мы отправляемся в увлекательное путешествие по миру AGI! Вместе мы:

Поймем, как система отличает ценную информацию от информационного шума;

Разберемся, как правильно подготовить данные для LLM;

Выясним, можно ли строить цепочки из нескольких LLM;

Поймем, как направлять запросы через разные компоненты системы.

Приятного прочтения(:

Читать далее
Total votes 18: ↑18 and ↓0+19
Comments8

Как работает Python Asyncio: воссоздаем с нуля

Level of difficultyMedium
Reading time10 min
Views9.4K

Автор оригинала: Jacob Padilla

Сейчас asyncio — одна из самых модных тем в Python, и это справедливо — это отличный способ обработки программ, связанных с вводом-выводом! Когда я изучал asyncio, мне потребовалось некоторое время, чтобы понять, как это на самом деле работает. Но позже я узнал, что это по сути просто очень хороший слой поверх генераторов Python. В этой статье я собираюсь создать упрощенную версию asyncio, используя только генераторы Python. Затем я собираюсь реорганизовать пример, чтобы использовать ключевые слова async и await с помощью dunder-метода __await__, прежде чем замкнуть круг и заменить свою версию на настоящий asyncio. Надеюсь, создав простую версию asyncio в конце этой статьи, вы сможете лучше понять, как он творит свою магию!

Читать далее
Total votes 11: ↑10 and ↓1+12
Comments1

Как создать свой стикер пак с помощью нейросети Stable Diffusion

Level of difficultyEasy
Reading time9 min
Views22K

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

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

Читать далее
Total votes 31: ↑30 and ↓1+36
Comments14

Обучение с подкреплением на основе обратной связи от человека (RLHF). История становления идеи. LLM, KL-контроль

Level of difficultyEasy
Reading time13 min
Views4.3K

Техника тренировки модели на основе обратной связи от людей (RLHF) была предложена как один из способов повысить согласованность модели. Люди, при том что являются основным источником предвзятостей в данных, одновременно являются своего рода высшим авторитетом в оценке текстов на соответствие каким либо ценностям.

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

Это первая статья цикла о LLM, Предобучении и KL‑контроле.

Читать далее
Total votes 9: ↑9 and ↓0+12
Comments2
1
23 ...

Information

Rating
Does not participate
Registered
Activity