Женя Янченко (@jane_yanchenko) — Telegram-канал | Telegram Dialogs
Telegram Dialogs — логотип
Все каналы
Женя Янченко

Женя Янченко

@jane_yanchenko

5.5K подписчиков карьера 💬 Комментарии открыты

Блог про архитектуру, работу и карьеру в ИТ. Автор - бэкендер, тимлид, руководитель разработки. Истории из опыта, инструменты и лайфхаки. Написать мне: @miralasse

Последние публикации

Женя Янченко
30.06.2026 06:06 · 👁 1.1K
Давай разберем шаги на примере Яндекс OAuth для логина пользователей в другом приложении. Вообще по правилам OpenID Connect все сделано у Google, но поскольку на практике сейчас скорее всего столкнемся с интеграцией с Яндексом, решила рассмотреть его флоу. 1️⃣ Пользователь в браузере открывает PetApp и нажимает кнопку: «Войти с Яндекс ID» 2️⃣ PetApp перенаправляет пользователя на страницу Яндекс OAuth. Для этого используется запрос на эндпойнт /authorize Яндекса: https://oauth.yandex.ru/authorize? response_type=code &client_id=pet-app &redirect_uri=https://pet.app.ru/oauth/callback &scope=login:info%20login:email response_type=code означает, что PetApp просит вернуть ему код подтверждения для дальнейшего получения токена client_id=pet-app — PetApp ранее зарегистрировался в Яндекс OAuth, получил идентификатор клиента и теперь передает его в запросе. Остальные параметры в случае Яндекс OAuth необязательны, они могут браться из профиля клиента PetApp, но покажу основные: redirect_uri — URL, на который Яндекс перенаправит пользователя после того, как тот разрешит PetApp доступ. scope — это как раз запрашиваемые права В доке Яндекс ID основной сценарий описан как OAuth 2.0, поэтому здесь запрашиваются просто права из списка: login:info login:email. Если бы использовался протокол OIDC (как у Google, например), то мы бы передали в scope слово openid и запрашиваемые данные: scope=openid profile email 3️⃣ Яндекс показывает страницу логина и возможно запрос разрешений 4️⃣ После успешного логина Яндекс редиректит обратно в PetApp на тот самый redirect_uri 5️⃣ Этот запрос принимает PetApp (обычно его бэк, но зависит от реализации), в нем он получает код подтверждения: code=SOME_AUTH_CODE 6️⃣ Получив код авторизации, PetApp отправляет POST запрос в Яндекс на эндпойнт /token с только что полученным кодом SOME_AUTH_CODE 7️⃣ Яндекс возвращает access-токен и refresh-токен. В случае OIDC обычно возвращается еще id_token с данными пользователя. Яндекс ID не возвращает id_token, у них для получения данных пользователя нужно использовать отдельный запрос на /info с access-токеном. 8️⃣ Приложение PetApp отправляет запрос на /info с access-токеном, находит или создает внутреннюю учетку для этого пользователя и связывает ее с аккаунтом Яндекса. После этого PetApp уже создает свою сессию для пользователя: например, выдает собственную cookie/JWT и дальше работает с пользователем как со своей внутренней учетной записью. ✏️ Таким образом OAuth 2.0 выделяет основные эндпойнты: 🔴Authorization Endpoint — нужен, чтобы отправить пользователя на сервер авторизации и вернуть приложению-клиенту код авторизации. 🔴Token Endpoint — нужен, чтобы обменять код авторизации на access-токен. 🔴В OIDC в ответе от /token добавляется еще id_token и UserInfo Endpoint — для получения данных профиля пользователя. Пример апишки провайдера можно посмотреть в доке Яндекс OAuth или VK ID или Google (повторюсь, у них как раз есть OpenID Connect). OAuth 2.0 / OpenID Connect используется не только для работы с публичными провайдерами, но и для внутрикорпоративного доступа. В качестве внутрикорпоративного провайдера может выступать например Keycloak. Keycloak — настоящий OpenID Connect Provider. У него есть все нужные эндпойнты (authorization endpoint, token endpoint, userinfo endpoint) плюс обычно он отвечает сразу за группы, роли, права, и в access-токен сразу может вкладывать группы и роли пользователя, которые затем будут анализироваться разными внутренними приложениями для определения того, что разрешено этому пользователю. Ещё у меня был пост про организацию доступа с помощью access и refresh токенов. Чтобы не перегружать пост, я совсем не затронула тему безопасности и специальных параметров, которые передаются в запросах OAuth 2.0 для верификации участников. Поставьте 🦆, если нужно это разобрать в отдельном посте. Сталкивались ли вы с вопросами по OAuth 2.0 / OIDC на собесах или с реализацией на практике?
Женя Янченко
30.06.2026 06:06 · 👁 1.1K
Сегодня технический #женя_есть_вопрос Привет, с некоторых пор работаю системным аналитиком и вроде всё хорошо, но в последний раз на собеседованиях посыпалась на теме Oauth 2.0, вроде рассказала какую-то базу, но кажется человек, который меня собеседовал не то хотел услышать, можешь пожалуйста рассказать что требуется знать по этой теме или что почитать толкового и понятного, что надо знать про flow, и про связь OAuth 2.0 и OpenID Connect, я рассказала, что OpenID Connect — протокол аутентификации, потому что я так про это и читала в нескольких источниках, но кажется явно что-то не понимаю. Привет! Ты все верно сказала про авторизацию и аутентификацию. Сложно, конечно, судить, что хотел услышать конкретный собеседующий, возможно про разницу OAuth 2.0 и OpenID Connect, но скорее подробно про флоу, что ты понимаешь, как это устроено. OAuth 2.0 — это фреймворк авторизации. Он отвечает на вопрос: "Можно ли этому приложению получить доступ к ресурсу от имени пользователя?" То есть результатом работы OAuth 2.0 является выдача токена доступа. OpenID Connect (OIDC) — это надстройка над OAuth 2.0 для аутентификации. То есть OIDC использует OAuth 2.0 flow, но добавляет выдачу id_token — токена аутентификации, с помощью которого можно узнать, кто этот пользователь (и отдельно получить данные его профиля). Представь, что ты разрабатываешь приложение для доставки корма домашним животным и хочешь добавить возможность пользователям подключать свой Яндекс.Календарь, чтобы твое приложение могло затянуть из него даты покупки корма. Плохой вариант: предложить пользователю ввести у тебя в приложении логин и пароль от Яндекса, а твое приложение сходит с ними в Календарь. Тут и пользователь не согласится и вообще опасно: это же полный доступ к акку пользователя. OAuth 2.0 решает это так: Пользователь логинится в Яндексе Яндекс спрашивает: «Разрешить PetApp читать календарь?» Пользователь соглашается. Яндекс выдает PetApp специальный токен доступа. PetApp ходит с этим токеном в Яндекс Календарь API, при этом PetApp не получает пароль пользователя. 🐼 В OAuth 2.0 выделяют следующие роли: 🔴Resource Owner — владелец ресурса, обычно это пользователь. Например: Олег, владелец Яндекс.Календаря и пользователь PetApp. 🔴Client — приложение, которое хочет получить доступ. В нашем примере это PetApp 🔴Authorization Server — сервер, который умеет логинить пользователя и выдавать токены. Например: Яндекс OAuth 🔴Resource Server — API, к которому нужен доступ. В примере это Яндекс.Календарь Олега. Когда PetApp нужно просто разрешение читать календарь пользователя, достаточно OAuth 2.0. Но если мы хотим, чтобы пользователи логинились в нашем PetApp через учетку другого сервиса (кнопка "Войти через Google"), то обычно для этого используют OIDC, чтобы получить еще данные пользователя. То есть с точки зрения пользователя: OAuth 2.0 — это «Дай приложению PetApp доступ к моим данным» OpenID Connect — это «Войди в приложение PetApp через мой аккаунт» Но некоторые провайдеры (например, Яндекс) реализуют логин через внешний аккаунт не через протокол OpenID Connect, а через OAuth 2.0 + отдельный эндпойнт получения данных пользователя ⬇️
Женя Янченко
24.06.2026 09:43 · 👁 1.9K
Порядок сообщений, DLQ, graceful shutdown, spike нагрузки — на каждый вопрос есть минимум два рабочих ответа📎 Витя Михайлов, Backend Lead Garage Eight, и Женя Янченко, руководитель разработки и автор канала @jane_yanchenko, разложили по полочкам карточкам 5 вопросов про брокеры со стороны RabbitMQ и Kafka соответственно. Все ответы перед тобой, а разбор последнего ждет в комментариях ;-) #GarageEight_разработчикам
Женя Янченко
24.06.2026 09:43 · 👁 1.8K
В последнее время я много писала про Кафку, и ко мне пришли из компании Garage Eight с предложением совместного поста. Вот что у нас получилось ⬇️
Женя Янченко
22.06.2026 07:09 · 👁 2.1K
В субботу ходила на «Сезон кода» — летнее мероприятие Т-Банка. Правда, я опять прошляпила запись на экскурсию по офису, так что не смогу показать вам его фотки( UPD. Фото уже выложили в комментах 🔥 Прошлый раз мне очень понравилось, так кроме докладов было много прикольных игр на стендах. В этот раз было целых три потока докладов, но учитывая, что это был первый по-настоящему солнечный день после долгого перерыва, я решила часть времени просто почиллить в гамаке у воды 🏖 Сходила на два доклада: 🟡 Про подходы к обновлению конфигурации от Кати Липониной из Т-Банка. О чем доклад: у микросервисов есть конфигурация (хосты, пароли, настройки, feature-флаги и т.д.). Конфигурация обычно хранится отдельно от кода. Когда в конфигурации происходят какие-то изменения, нужно, чтобы сервисы подхватили эти изменения. Сначала Катя напомнила теоретические подходы, потом рассказала про то, как они реализовали это в своей распределенной системе с учетом требований к согласованности. Очень бодрый доклад, мне понравился! 🟡 Хардкорный доклад по JVM от Владимира Воскресенского из Сбера. Очень крутой доклад про то, как «под капотом» работает Java, похожий на доклады Алексея Шипилёва. Владимир рассказал, что такое прогрев, какие JIT компиляторы есть в JVM, наглядно показал разницу в скорости выполнения кода интерпретатором и двумя JIT-компиляторами. Я чувствовала себя прямо как на интересной лекции в университете. Пообщалась на стенде про инженерные метрики. В Т-Банке собирают огромное количество метрик разработки (время до мерджа, время до деплоя на прод, степень сложности кода, использование ИИ и др.) Вот что показалось мне наиболее интересным и перекликающимся с моим опытом: ➡️ Lead time (время от коммита фичи до деплоя на прод) мало зависит от ИИ, намного больше зависит от процессов: использование ИИ увеличивает throughput задач, то есть разрабы начинают генерить больше кода. Но вот чтобы дальше этот код быстрее доставлять на прод нужно работать с процессами. И это 100% жиза, я большой фанат организации процессов и знаю на практике, как они влияют на скорость доставки и состояние команды. ➡️ На основании данных корпоративного мессенджера они построили social graph, с помощью которого определили центр знаний, то есть к кому приходит больше всего вопросов. Угадайте, кто это? Ответ: бэкендеры Ну, как бэкендер, я не удивлена 😂 ➡️ ИИ часто используют там, где запутанный сервис. Тоже кажется логично. Когда это твой сервис от и до, ты сам выстроил архитектуру в нем и написал львиную долю кода, то дописать в нем новую фичу — чистое удовольствие. Когда это чей-то чужой запутанный сервис, пусть электронный мозг разбирается 😂 ➡️ Качество кода в тех репозиториях, где активно используется ИИ, не упало. Потому что ребята ревьюят то, что написал ИИ. Еще познакомилась и очень приятно пообщалась с devops-инженером из компании YADRO. Рассказал, что у них активный найм уже довольно продолжительное время, плюс берут студентов-стажеров. Возможно, вам есть кому это рассказать) Кормили вкусно, вообще организация мероприятия на высшем уровне. Рада, что сходила 😊 Если были тоже, поделитесь впечатлениями в комментах. В комментах выложу задания A/B тестов с одного из стендов: два экрана приложения, надо предположить, было ли улучшение конверсии в варианте Б. Я нифига не продуктовый аналитик, ошиблась в двух случаях из трех 😃
Женя Янченко
19.06.2026 07:32 · 👁 2.8K
Привет. Очень сочувствую, что ты сейчас в такой ситуации. Согласна, что в 2020-2023 был тот самый "рынок соискателя", найти работу было легче, многие знакомые находили без накрутки. Сейчас ситуация с поиском ощутимо сложнее. Давай обсудим несколько вариантов. ➡️ Первый: найти любую официальную работу разработчиком. Как ты и сказал, в большинстве крупных компаний сейчас проверяют трудовую. Но есть компании, где этого все еще не делают. Опыт у тебя есть, пусть он без оформления, но работу ты делал и про свои задачи и победы рассказать сможешь. Тимлид, с которым ты будешь общаться, увидит, что ты решал реальные проблемы. Если идешь этим путем, то на hh нужно бить по площадям: делай резюме со стеком и достижениями, пиши там то количество опыта, которое считаешь нужным, и откликайся на все вакансии. Не на 20-30 штук, а на все. Лимит откликов на hh — 200 в сутки. Часть компаний сразу откажет, многие попросят трудовую, но останутся те, которые позовут на собес. Даже если проект окажется не очень, поработаешь там полгода-год, получишь опыт новых задач и найдешь вариант лучше. Через 2-3 итерации уже будешь в команде мечты. ➡️ Второй: "в хорошую команду под своим именем без накрутки опыта". Дело в том, что до бума 2020-го года не-студенту без опыта тоже было довольно трудно найти первую работу разрабом, особенно в регионах. Знаю это на собственном опыте: я перешла в разработчики из менеджеров проектов еще до 2020. Поэтому я бы предложила рассмотреть путь с оффлайном. Крупные компании часто проводят мероприятия, где можно пообщаться с разрабами и с HR. Особенно подойдут хакатоны, их устраивают в том числе чтобы присмотреть себе талантливых сотрудников. Если ты не в Мск/Спб/Екб, это тоже работает, есть местные митапы. Знаю, что некоторые этот способ хейтят, но я работу разработчиком так и нашла: пошла на мероприятие для студентов (не будучи студентом), там подошла пообщалась к HR, и меня позвали на собес. Не на сеньора, конечно, а на джуна, но позвали же. Потом на других мероприятиях я так же знакомилась с HR и обменивалась контактами. Конечно, скорее всего придется сделать несколько попыток, но одна из них может оказаться успешной. Также у крупных компаний бывает целенаправленный найм джунов. Главное — узнать об этом (из соцсетей компаний, от знакомых) и успеть податься. Активно общайся со всеми знакомыми из ИТ и регулярно узнавай новости про найм в их компании. Учитывая твой опыт с профилированием, анализом heap dump и др. мне прямо хочется рекомендовать тебе сходить в Т-Банк, потому что они любили такое на собесах у джавистов спрашивать. У них много мероприятий (например, завтра иду на "Сезон кода" в Питере). Но трудовую они проверяют, поэтому нужно с HR пообщаться про вакансии для начинающих. Если ты живешь в регионе, можно посмотреть на hh, у каких местных компаний есть вакансии, и прийти к ним в офис. Да, может быть неловко, могут отправить писать на почту, а можно и пообщаться с HR и потом попасть на собес к техлиду. ➡️ Третий: получить профильное образование. Тебе всего 26 лет. Если ты еще не заканчивал магистратуру, можно рассмотреть поступление по ИТ-специальности, чтобы официально быть студентом и участвовать в программах для студентов. Увы, нет простого пути, когда у тебя мало опыта. Но я знаю примеры, когда люди устраивались благодаря упорству и настойчивости. Обычно первым местом не была компания мечты, но уже второе/третье — то, которое хотелось. Уверена, что у тебя получится устроиться, если задействуешь все способы. Ребят, что порекомендуете в такой ситуации?
Женя Янченко
19.06.2026 07:32 · 👁 2.1K
Сегодня новый #женя_есть_вопрос В этой рубрике обычно обсуждаем рабочие ситуации и карьерные вопросы, но иногда бывают и технические. 📍Задать свой анонинимый вопрос можно тут: https://forms.gle/SPE6NEALG9vcnF3s7 Привет, Женя! Мне 26 лет. Мучает тема накрутки и интересно узнать твое мнение и мнение из комментариев к ответу в последующем:) Я попал на проект через шадоу-мод на позицию синьора. Да, это плохо, обман итд, но мне это было нужно, жизненная ситуация. Первый месяц мне было трудно из-за того, что впервые вникал в айтишные процессы и одновременно в бизнес-логику проекта. Но потом примерно через два месяца все сильно поменялось. Постепенно помимо закрытия своих задач, я начал находить серьезные баги в проекте (с sql-запросами в цикле, многопоточкой, с транзакциями). Начал видеть архитектурные проблемы. Я спорил с синьорами из команды, объясняя им почему многопоточный код, который они написали, некорректен и что он будет ломаться под нагрузкой. К тому же я профилировал сервисы на проде через JFR(искал тормоза), читал heap dump после падения сервиса по ООМ и исправлял утечки памяти и еще много чего другого, что джуны обычно, наверное, не делают на старте карьеры. Тут важно обозначить, что я вышел на работу не после курса от гикбрейнс через полгода. Я посвятил активному обучению 2 с половиной года: проходил джавараш (все 50 уровней), читал чистый код/архитектуру, Java Concurrency), по сетям, по операционным системам итд, писал пет проекты. И все 2 с половиной года я занимался не по пару часов в день, а практически каждый день почти все свободное от работы время. Это только Java и ее экосистема. У меня и до джавы есть бэкграунд с программированием и не только. Но когда я вышел на рынок, то обнаружил, что не могу устроиться на работу джуном и расти потихонечку. Практически всем компаниям нужен минимум мидл. Тогда через некий промежуток времени я догадался, что не пройду через фильтры и накрутил опыт, чтобы пробиться. И даже после накрутки я обнаружил, что не могу попасть на собеседование, где смог бы рассказать о своих знаниях и навыках(настоящих, без обмана). Даже когда удается выйти в личку с рекрутером, то получаешь вопрос с ходу "а в трудовой опыт зафиксирован"? Да, у меня нет опыта в трудовой, и, что уж тут, даже незафиксированный мой опыт - около полугода. Но у меня есть настоящие крепкие знания и навыки, которые уже сравнимы с некоторыми синьорами "на бумаге". Я очень пробивной в плане изучения чего-то нового в технологиях, довольно легко разбираюсь в чем бы то ни было, стараюсь инженерно мыслить, а не просто крудошлепить. Умею общаться с людьми, никогда не инициирую конфликты. Но мне закрыт путь в хорошую команду под своим именем без накрутки опыта и без страха, что легенду раскроют. Как будто бы, в нынешних условиях я могу найти работу только если наткнусь на рекрутера, который не попросит трудовую. Как быть в таких условиях рынка? Как пробиться через "нужен опыт в трудовой"? Пару лет назад нужно было всего-то решиться накрутить опыт и гладко рассказать легенду, трудовую почти не спрашивали, насколько мне известно. А сейчас повально просят трудовую и ГПХ с ИП уже не прокатывают. Есть ли реальные способы пробиться и попасть в команду с реальной оценкой инженерных компетенций, а не через подсчет количества лет опыта в трудовой? Сори за полотно, крик души:))
Чат поддержки
Ответим здесь же, обычно быстро
Здравствуйте! Напишите ваш вопрос — оператор ответит в этом чате.