API. Архитектура. Веб-сервисы
3.36K subscribers
239 photos
50 videos
10 files
276 links
Канал для тех, кто хочет начать карьеру в IT или прокачать свои знания

Автор: Глеб Учитель glebteach.ru и его IT-команда.
🔹Обучили более 2000 учеников
🔹Подходит ли тебе проектирование интеграций/веб-сервисов? Узнаешь в боте @studyit_help_bot
Download Telegram
Ребята, забыл вам рассказать...

На связи Глеб Учитель👍

Пригласили на Stepicon 2025 – конференция от платформы Stepik, прошла 19-20 сентября в Москве. Сам приболел - дома онлайн смотрел, но команду отправил в разведку)

Что новое узнали про тренды:

✔️что учить в эпоху ИИ;

✔️ какие навыки действительно нужны рынку, а что устарело;

✔️ пару фишек взяли от HR и экспертов по корпоративному обучению (внедрим в курс)

И кормили там отлично, ребята мои еще и поели🔥😂

Планирую эфир живой провести - напишите в комментариях, какую тему осветить сейчас актуальнее всего, что вам поможет сейчас в работе/карьере👇
🔥18😍2
Найди пользователей по этой схеме👇

И получи консультацию Глеба Учителя в подарок🎁

Для этого нужно решить задачку и рандомно среди всех участников с правильными ответами выберем одного победителя👇

Задача.
Найти пользователей, которые сделали хотя бы одну покупку в январе 2025 и ни одной покупки в феврале 2025. Под покупкой считаем только заказы со статусом paid.

Что вернуть. Один столбец user_id, отсортированный по возрастанию. Дубликаты не нужны.

Границы месяцев
Январь 2025: >= 2025-01-01 00:00:00 и < 2025-02-01 00:00:00
Февраль 2025: >= 2025-02-01 00:00:00 и < 2025-03-01 00:00:00
Временная зона не важна, берите как есть.

Важно
Учитываем только status = 'paid'. Статусы canceled и refunded не считаются покупкой.
Таблица users дана для контекста, join не обязателен.

Схема
-- Таблицы
CREATE TABLE users (
user_id INT PRIMARY KEY,
created_at DATE,
channel VARCHAR(50)
);

CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
order_ts TIMESTAMP,
status VARCHAR(20),
amount NUMERIC(10,2)
-- FOREIGN KEY (user_id) REFERENCES users(user_id)
);

-- Данные
INSERT INTO users (user_id, created_at, channel) VALUES
(1, '2024-12-15', 'organic'),
(2, '2024-12-20', 'ads'),
(3, '2025-01-10', 'ads'),
(4, '2025-01-01', 'referral'),
(5, '2024-11-30', 'organic'),
(6, '2024-09-01', 'ads'),
(7, '2024-12-31', 'organic'),
(8, '2025-01-05', 'influencer'),
(9, '2024-11-11', 'referral'),
(10,'2025-02-01', 'ads'),
(11,'2024-10-20', 'organic'),
(12,'2025-01-31', 'organic');

INSERT INTO orders (order_id, user_id, order_ts, status, amount) VALUES
(1001, 1, '2025-01-05 10:00:00', 'paid', 50.00),
(1002, 2, '2025-01-10 09:30:00', 'paid', 20.00),
(1003, 3, '2025-02-01 08:00:00', 'paid', 60.00),
(1004, 4, '2025-01-31 23:50:00', 'paid', 99.00),
(1005, 5, '2025-01-12 12:00:00', 'canceled', 40.00),
(1006, 6, '2025-01-20 17:45:00', 'paid', 14.00),
(1007, 7, '2024-12-31 16:00:00', 'paid', 45.00),
(1008, 8, '2025-01-11 11:12:00', 'paid', 80.00),
(1009, 9, '2025-01-01 00:01:00', 'paid', 100.00),
(1010, 2, '2025-02-20 14:00:00', 'paid', 35.00),
(1011, 5, '2025-02-15 13:00:00', 'paid', 25.00),
(1012, 6, '2025-02-02 09:00:00', 'refunded', 14.00),
(1013, 7, '2025-03-01 10:00:00', 'paid', 10.00),
(1014, 8, '2025-02-28 07:07:00', 'paid', 15.00),
(1015, 9, '2025-02-10 10:10:00', 'canceled', 5.00),
(1016, 11, '2025-01-25 09:00:00', 'paid', 12.00),
(1017, 11, '2025-01-25 09:05:00', 'paid', 6.00),
(1018, 12, '2025-01-31 23:59:59', 'paid', 30.00),
(1019, 12, '2025-02-28 00:00:00', 'refunded', 30.00);


Критерии приёмки
В выборке только те, у кого есть хотя бы один paid в январе и ноль paid в феврале.
user_id уникальные, сортировка по возрастанию.
Нет ложных срабатываний на canceled и refunded.
Корректно отработаны границы интервалов времени.

Условия понятны? Ждем ваших ответов до 25.09👇
🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
❤‍🔥8👍7👏5😍1
Королевский подарок системным аналитикам: открывайте🎁

Системные аналитики (и все причастные), с профессиональным праздником🔥 Что тут сказать: классных проектов и карьерного роста!

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

Спец предложение действует до 1 октября.


❗️И это еще не все…

Открываем бесплатный доступ к разделу курса "Брокеры сообщений"

👉https://stepik.org/a/175243?utm_medium=tg

Далее заходите в Раздел 11 - Брокеры сообщений▶️Урок 11.1 Концепция брокеров сообщений
Проектирование архитектуры и интеграций (API / брокеры) сервисов

Кто хотел обучаться и ждал подходящего момента - welcome! 👇

✔️ Курс "Проектирование архитектуры и интеграций (API / брокеры) сервисов":

Базовый тариф - 11.000 рублей (вместо 13 990 рублей).

Тариф с поддержкой - 20.000 рублей (вместо 25.000 рублей).

Тариф с поддержкой и карьерным модулем - 35.000 рублей (вместо 44.000 рублей).

✔️ Курс "Системный анализ по-взрослому"

Единый тариф - 7.990 рублей (вместо 9.990 рублей)

Промокод: ANALYTIC25
🔥18😁2
Перестаньте путать API-ключ с токеном. Как правильно настроить авторизацию для нейросетей в n8n (с примерами)🔥

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

Что это за три сущности⁉️

1️⃣ API ключ: статическая секретная строка, часто вида sk-.... Идентифицирует ваш аккаунт или проект.

2️⃣ Токен: временный пропуск с правами. Часто JWT из трёх частей через точки. Выдаётся авторизационным сервером и протухает.

3️⃣ Код из доков: не отдельный способ. Это рецепт, какие заголовки отправить, где взять токен, как посчитать подпись.

Как понять, что именно нужно

Видите Authorization: Bearer ... это токен. Ищите, где его получить: token_url, client_id, client_secret, scope.

Видите X-API-Key это статический ключ. Берёте и кладёте в заголовок.

В тексте встречаются signature, timestamp, nonce значит нужна подпись запроса, обычно HMAC.

Строка вида aaa.bbb.ccc это почти всегда JWT токен.
Если в примере есть редиректы и код авторизации это OAuth 2.0 Authorization Code или PKCE.

✔️ Когда что выбирать
Прототипы и внутренние интеграции: API ключ.

Прод и безопасность: OAuth 2.0 токены или сервисные аккаунты, короткий срок жизни, минимальные scope(области прав).

Финтех, маркетплейсы, биржи: подпись HMAC плюс ключ или токен.

Браузер и мобилки: секреты не кладём на клиент. Клиент говорит с вашим бэкендом, бэкенд уже ходит во внешнее API. Для браузера уместен PKCE.

Мини примеры

Ключ:
curl -H "X-API-Key: $KEY" https://api.example.com/v1/me



Токен через Client Credentials:
# получаем токен
curl -X POST https://auth.example.com/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=$ID&client_secret=$SECRET&scope=read"

# используем
curl -H "Authorization: Bearer $ACCESS_TOKEN" https://api.example.com/v1/data


Диагностика, если ошибки
401 значит токен отсутствует или битый. 403 значит прав не хватает.
Проверяйте Content-Type и точный формат тела.

JWT может быть протухшим по exp. Также смотрите таймзону.
Некоторые токен‑эндпойнты требуют Basic с client_id:client_secret в Authorization.

А вы используете nocode n8n в проектах?👇
Хотели бы воркшоп на эту тему?🔥
🔥29👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Ловите лайфхак для собеседований😂

А у кого какие приколы были с HR?👇
😁24👏1
Шеф, все пропало - гипс снимают, клиент уезжает😱

А если серьезно, заботливо напоминаем, что королевский подарок системным аналитикам от Глеба Учителя истекает завтра 01 октября.

Жирный промик истекает - доступ к Уроку по Брокерам сообщений закрывается!

Успевайте забрать все подарки👍

Все подробности и как посмотреть урок👉 ТУТ
👍6
🔥 Осенний апгрейд: как провести аудит навыков и составить план, который вы не выбросите через неделю

Пока "продуктивные" гуру советуют просто рано вставать (в топку таких😂), мы предлагаем РАБОЧУЮ СХЕМУ, как провести ревизию своих скиллов и построить план развития на осень. Без воды и мотивационного спама: делитесь с коллегами.

1️⃣ Шаг 0: выдохните, это не Performance Review.

Не надо брать офисный глоссарий и ставить себе KPI. Суть в том, чтобы понять: "Что я сейчас умею, куда хочу приплыть и что для этого нужно?". Всё.

2️⃣ Шаг 1: ревизия "технического долга".

Задайте себе фундаментальный вопрос: "Что я вообще знаю?"
Разложите свои навыки на три стопки:

✔️Бэкенд (то, что уверенно юзаю)
Например, писать SQL-запросы, описывать API в Swagger, или отрисовывать макеты для дизайнера.

✔️Фронтенд (знакомо, но плаваю)
Слышал про Kafka, но никогда не настраивал. Понимаю OAuth 2.0, но путаюсь в grant types.

✔️404 Not Found (вообще не шарю)
Например, Kubernetes или event-driven архитектура.

Внимание! Тревожным айтишникам: дышите, это не список на выговор, а карта возможностей😉

3️⃣ Шаг 2: сверка с рынком 2025

Теперь смотрим, что из стопки Фронтенд и 404 реально востребовано. Только честно. Самим себе врать не надо)

❗️Актуальный чек-лист 2025 для сверки

🔹AI-ассистенты в работе

Не просто "юзаю ChatGPT", а автоматизирую им генерацию тест-кейсов или документации. Это уже не хобби, а хард-скилл.

🔹Low-code для прототипирования

Умение быстро набросать логику в n8n или Airtable - это как знать второй язык. Ценится.

👉 Кто хочет глубже в эту тему, у нас был подробный разбор в посте Low-code в 2025: почему его "смерть" сильно преувеличили (и как на этом заработать аналитику)

🔹Брокеры сообщений (Kafka/RabbitMQ)

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

💡ЛАЙФХАК: если это ваш Фронтенд, осень - идеальное время прокачать. Кстати, один из самых сильных и практических уроков в курсе Глеба Учителя как раз про брокеров - там нет сухой теории, только реальные кейсы и интеграции, которые вы сможете повторить

🔹API-интеграции и безопасность: OAuth 2.0, JWT, подписи запросов. Без этого никуда.

4️⃣ Шаг 3: составляем "спринт", а не "корпоративный водопад"

Вместо плана "Выучить всё за полгода", ставьте 2-3 конкретные цели на сезон.

Плохо: "Сразу стать seniorом".

Отлично: "До конца октября разобраться с Kafka: понять, чем она лучше RabbitMQ, и спроектировать на коленке простой обмен сообщениями между двумя сервисами".

5️⃣ Шаг 4: найти ментора в лице... проекта. Вот это поворот😂

Теория без практики = null. Лучший способ прокачаться - применить знание на реальной задаче, даже учебной с опытным наставником тогда.

Вот вам осенний стек для роста для проведения честного аудита своих скиллов.

Закрепим:

🔻 Фокус на 2-3 актуальные темы из чек-листа 2025

🔻 План-спринт с конкретным измеримым результатом

🔻 Практика на любом проекте, даже учебном.

Кто говорит "Мне и так норм" через год смотрит, как коллеги, прокачавшие осенью Kafka и AI-инструменты, уходят в x2 зарплате💸 Не ваш сценарий?

А какой один навык из вашего списка Фронтенд вы точно прокачаете этой осенью? Сейчас будет совет от "продуктивных" гуру: пишите в комментариях, чтобы зафиксировать это намерение. Или во Вселенную отправить, как вам удобнее👇😂
🔥16❤‍🔥2👍2
This media is not supported in your browser
VIEW IN TELEGRAM
❤‍🔥6🔥4
У меня тут назрел вопрос...

На связи Глеб Учитель👍

А какая мотивация вообще для вас самая мощная? Напишите в комментариях, что вас мотивирует по-настоящему👇

И напоминаю, что вы можете протестировать на себе навыки проектирования интеграции и веб-сервисов с помощью бесплатных уроков в нашем БОТЕ.

Всем успехов👍
👍12
Задачку решил - консультацию Глеба Учителя выиграл🔥

Все по-честному. Поздравляем Александра с правильным ответом на ЗАДАЧУ.

Проявляйте активность - будут еще шикарные бонусы🎁
🔥14
Отправляете POST и молитесь? Перестаньте гадать. Вот 5 правильных решений для REST👇

Знакомо: отправил платеж, висит таймаут... Ждать или слать еще раз? А если письмо улетит 5 раз? На собесах именно на таких бытовых кейсах и сыпятся.

Давайте разомнем мозги на 5 простых задачках.

Решил ▶️ сверился с ответом в комментариях ▶️ забрал шпаргалку-картинку себе. Всё по-честному👍

Сравнить свои ответы с правильным вариантом можно в самом первом комментарии к этому посту.

И сохраните себе красивую шпаргалку🎁 (там же, в комментах) - она закроет все вопросы.

Погнали🚀

1️⃣ Задача 1. POST и его злой близнец

Клиент создает платеж: POST /payments с Idempotency-Key: abc-123. Не дождался ответа и пнул тот же запрос еще разок.

Вопрос: Что должен ответить сервер на первый и второй запрос? А если во второй раз сумма платежа другая?

2️⃣ Задача 2. PUT & PATCH и потерянные апдейты
Два менеджера почти одновременно меняют email клиента через PUT /users/42.

Вопрос: Как сделать так, чтобы побеждал не тот, кто последний нажал "сохранить", а тот, кто прав? Как серверу сказать: "Эй, у меня версия поновее, обновись!"

3️⃣ Задача 3. Жмакать ли "Повтор"?
Ваш API Gateway вернул ошибку: (а) 502 Bad Gateway, (б) 429 Too Many Requests с Retry-After: 5, (в) 408 Request Timeout.

Вопрос: На какие из них можно и нужно жать retry с чистой совестью, а на какие - опасно? Как сделать retry безопасными для POST-запросов?

4️⃣ Задача 4. Массовая зачистка
Нужно отменить кучу заказов разом: POST /orders/cancel со списком их ID.

Вопрос: Как быть, если часть заказов отменилась, а часть - нет? Как о таком красочно сообщить клиенту, чтобы запрос был идемпотентным?

5️⃣ Задача 5. Письмо счастья, которое не клонируется
После регистрации юзеру летит приветственное письмо и событие в шину. Сеть глючит, и запросы могут дублироваться.

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

Как вам такой формат разбора задач на живых примерах? На обучении мы уделяем этому особое внимание. Все эти темы (и еще десятки подобных задач) мы детально разбираем в большом разделе "8. Проектирование API – REST", где учим не просто отвечать на вопросы, а понимать их изнутри.

❗️Напоминаем, что ответы и шпаргалка ждут в комментариях к этому посту👇

Сколько ответов у вас оказалось правильных - делитесь👇
🔥31👍7
Бизнес сказал: "Хочу синхронизацию с CRM!" - что делать дальше?🤯

Синхронизация с CRM - это не про "волшебную кнопку". Это про 9 конкретных шагов, которые превращают размытую хотелку в работающий процесс.

✔️ Как за 1 встречу выяснить реальную цель бизнеса, а не выслушивать хотелки.

✔️ Как составить понятную таблицу данных на человеческом языке.

✔️ Как определить, кто главный по каждому полю (спойлер: это предотвращает хаос).

✔️ еще 6 рабочих шагов - от обработки ошибок до запуска.

🎧 Слушайте новый кейс-подкаст от Глеба Учителя и берите готовый план для своих интеграций👆

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

А с каким самым неочевидным шагом при интеграции сталкивались вы? Поделитесь опытом👇
🔥17👍4
+100к за год: зарплатный рывок системного аналитика с "Я немного знаю SQL" до проектирования Kafka🚀

Карьера застыла. Ты делаешь одно и то же, а за сложные задачи браться страшно - вдруг не потянешь?

Наш ученик был в такой же точке. Вот его кейс и цифры👆

#ученикиговорят

Было: 180к грязными
Стало: 280к чистыми

И это всего за год, с 3-мя сменами работодателей!

А начал он с уровня "читаю текстовые файлы и знаю SQL до джойнов". Про API - ноль.
А сейчас проектирует интеграции на Kafka и API с нуля и консультирует коллег. Сильно? Ещё как!

Как так вышло? Рассказываем:

Однажды он готовился к собесу. Утром перед ним (собеседование было в 13:00) повторил одну тему из нашего курса "Брокеры сообщений" и так её уверенно выдал, что HR позвонила почти сразу и одобрила его зарплатные ожидания.
Да, иногда всё решает одна тема, изученная вовремя💯

✔️ Сейчас он регулярно возвращается к материалам курса, чтобы освежить знания.

Курс это как шпаргалка, которая всегда под рукой.

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

API, Kafka, проектирование БД - всё это становится не страшными словами, а понятными инструментами.

Желаем ученику дальнейшего карьерного роста и такого же увеличения зарплаты за свои скиллы каждому из вас👍

P.S. Напишите в комментариях, какая тема для вас сейчас самая сложная в интеграциях? Может, это Kafka, REST или что-то ещё?👇
🔥12
This media is not supported in your browser
VIEW IN TELEGRAM
У кого было😂

Расскажите приколы со своего первого рабочего дня👇
😁38🔥1
Интеграции 2025🔥 Что уже убьёт ваш проект, а что срочно внедрить до конца года.

Если ваш API до сих пор работает по принципу "один запрос - одна попытка", готовьтесь к ночным кошмарам с откатами транзакций🫣

Что уже в прошлом:

REST без идемпотентности: вас уже съели конкуренты

Ручные retry без backoff и jitter: это как стучать в закрытую дверь с криком "Ну открой же!"

Монолитные API-gateway, которые тянут всё: включая технический долг и слезы разработчиков

А вот что сейчас в тренде:

GraphQL + Federation
Если вы до сих пор делаете 15 отдельных запросов для сборки одного экрана - вы рискуете получить "премию" за нагрузку на сеть.

GraphQL + Apollo Federation стали стандартом для микросервисов. Один запрос = все данные. Магия? Нет, просто хорошая архитектура.

Async API как новый REST
Событийная архитектура - это не про "попробуем Kafka для красоты". Это про то, чтобы ваш сервис не лёг, когда соседний ушёл на обед. Спецификация AsyncAPI стал таким же Must-Have, как OpenAPI для REST.

Пример: уведомления о платежах летят через брокер, а не "зайдите позже, когда всё заработает".

"Умные" API-гейтвеи
Вместо монстров - легкие шлюзы, которые умеют:

- кешировать ответы (да, даже для GraphQL)

- автоматически повторять запросы с разными условиями

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

Идемпотентность как религия
Повторяем как мантру: "Мой POST всегда обрабатывается идемпотентно".
Idempotency-Key - это не опция, а обязательный заголовок. Если ваш платеж ушел дважды, вы платите не только деньгами, но и репутацией.

API-безопасность: не только JWT
OAuth 2.1 + mTLS для service-to-service общения.
И да, пора обновлять библиотеки и конфиги - в старых версиях OAuth были дыры, в которые пролезали даже новички.

⁉️Что делать прямо сейчас:

1️⃣ Проверьте свои API на идемпотентность (по умолчанию POST не идемпотентен)

2️⃣ Добавьте мониторинг качества интеграций: не только "работает/не работает", но и "как быстро и стабильно"

3️⃣ Начните документировать в AsyncAPI - это экономит часы на синхронизацию команд

Хорошая новость) Все эти темы мы разбираем на обучении, причем с нуля до продвинутых кейсов. Ученики решают 100+ практических задач по проектированию архитектуры и интеграций: от простых API до сложных систем с брокерами сообщений. И да, даже если вы пока не отличаете REST от Kafka - это нормально, начинаем с основ интернета и постепенно двигаемся к сложному.

Напишите в комментариях, с какими пунктами больше всего проблем?👇GraphQL кажется сложным? Или брокеры сообщений до сих пор как тёмный лес?

Поделитесь, возможно, следующий пост сделаем именно по вашей боли👇
🔥20👍5