Serverless 2021
Статья в стиле "ссылочная комната" про мир serverless в 2021-ом. Вкусная находка для тех, кто хочет поглубже вникнуть в Serveless подход построения приложений. А для тех, кто впервые слышит - прочитайте сперва эту вводную коротенькую статью, ну или хотя бы текст ниже.
В общем, сеньоры направо, джуны налево 😃
Что такое Serverless?
Если совсем коротко - эволюция использования ресурсов хостинга для ваших приложений. Это как каршеринг - плати только за время проведённое непосредственно за рулём (pay-as-you-go). Удобно и не нужно покупать свой авто.
Если не в двух словах, а в трёх - давайте на выдуманном примере. Вот есть у вас, допустим какой-то скрипт. Допустим новостной. Допустим, он ходит раз в час на сайт news.com, собирает все ссылочки и скидывает вам в Telegram. Ну и попутно ... в базу кладёт. Прекрасно.
А дальше-то что, куда скрипт засунуть? Не будете же вы его запускать на вашем ноуте каждый час, верно? Вам нужен сервер-хостинг. Маленький такой. Но сервер. Ну и базу бы хорошо. Сохранять куда-то же нужно всё это счастье.
Идёте вы на какой-нибудь хостинг, а-ля DigitalOcean, покупаете там самый дешёвый инстанс за 5$. Ну и базу допустим разворачиваете не там же, а на ещё одном инстансе (просто для примера).
Вот у вас работает скрипт, всё хорошо. 24 раза в сутки ходит за новостями. Однако, очевидно, что это не самое рациональное использование ресурсов сервера, т.к. за 24 часа хорошо, если он будет работать в сумме хотя бы полчаса. А скорее всего - минуту-две в день. Всё остальное время сервер простаивает и ждёт следующего цикла запуска. Не супер круто, правда?
Serveless подход как раз про это. Вы шагаете, допустим, в AWS => деплоите свой код на Amazon Lambda => делаете пару магических пассов в виде настройки доступов и cloud watch, который будет дёргать вашу лямбду раз в час. А базу ... юзаете тоже амазоновскую - nosql DynamoDB к примеру. Красота!
Но... зачем? А затем, что теперь вы будете платить ... примерно ничего. Ну или около пары центов в месяц за пример выше. А по факту, это вообще будет бесплатно, т.к. у амазона есть free tier т.е. бесплатные лимиты и скорее всего вы в них уложитесь.
Чем сложнее приложение, тем тут больше нюансов - всё нужно "считать" по итогу, но serverless и правда позволяет сильно сократить затраты для пет-проектов (и не только) и не держать развёрнутую инфраструктуру при отсутствии траффика.
Уже года полтора пользую подобным образом и вам советую. Оно есть не только на амазоне, а во всех "приличныхдомах Парижа облаках".
Так что если до сих пор не в теме - выделите часик-другой и почитайте что за зверь 😉
#habr #авторское
Статья в стиле "ссылочная комната" про мир serverless в 2021-ом. Вкусная находка для тех, кто хочет поглубже вникнуть в Serveless подход построения приложений. А для тех, кто впервые слышит - прочитайте сперва эту вводную коротенькую статью, ну или хотя бы текст ниже.
В общем, сеньоры направо, джуны налево 😃
Что такое Serverless?
Если совсем коротко - эволюция использования ресурсов хостинга для ваших приложений. Это как каршеринг - плати только за время проведённое непосредственно за рулём (pay-as-you-go). Удобно и не нужно покупать свой авто.
Если не в двух словах, а в трёх - давайте на выдуманном примере. Вот есть у вас, допустим какой-то скрипт. Допустим новостной. Допустим, он ходит раз в час на сайт news.com, собирает все ссылочки и скидывает вам в Telegram. Ну и попутно ... в базу кладёт. Прекрасно.
А дальше-то что, куда скрипт засунуть? Не будете же вы его запускать на вашем ноуте каждый час, верно? Вам нужен сервер-хостинг. Маленький такой. Но сервер. Ну и базу бы хорошо. Сохранять куда-то же нужно всё это счастье.
Идёте вы на какой-нибудь хостинг, а-ля DigitalOcean, покупаете там самый дешёвый инстанс за 5$. Ну и базу допустим разворачиваете не там же, а на ещё одном инстансе (просто для примера).
Вот у вас работает скрипт, всё хорошо. 24 раза в сутки ходит за новостями. Однако, очевидно, что это не самое рациональное использование ресурсов сервера, т.к. за 24 часа хорошо, если он будет работать в сумме хотя бы полчаса. А скорее всего - минуту-две в день. Всё остальное время сервер простаивает и ждёт следующего цикла запуска. Не супер круто, правда?
Serveless подход как раз про это. Вы шагаете, допустим, в AWS => деплоите свой код на Amazon Lambda => делаете пару магических пассов в виде настройки доступов и cloud watch, который будет дёргать вашу лямбду раз в час. А базу ... юзаете тоже амазоновскую - nosql DynamoDB к примеру. Красота!
Но... зачем? А затем, что теперь вы будете платить ... примерно ничего. Ну или около пары центов в месяц за пример выше. А по факту, это вообще будет бесплатно, т.к. у амазона есть free tier т.е. бесплатные лимиты и скорее всего вы в них уложитесь.
Чем сложнее приложение, тем тут больше нюансов - всё нужно "считать" по итогу, но serverless и правда позволяет сильно сократить затраты для пет-проектов (и не только) и не держать развёрнутую инфраструктуру при отсутствии траффика.
Уже года полтора пользую подобным образом и вам советую. Оно есть не только на амазоне, а во всех "приличных
Так что если до сих пор не в теме - выделите часик-другой и почитайте что за зверь 😉
#habr #авторское
Хабр
Боты, работа с логами и обзоры инструментов: что было интересного про Serverless за год
Привет, Хабр! Меня зовут Антон Черноусов, я куратор хаба Serverless. В этом посте я расскажу, что интересного тут было про бессерверные технологии за год. Разложил их по нескольким группам и выстроил...
Радио-Т 767
Umputun, Bobuk, Gray, Ksenks, Alek.sys
Айтито́ту скоро автоматизируют VS джуны вопасносте ^^
Переслушиваю ранние подкасты #РадиоТ (этот отрывок из августа 2021), и вот ребята делятся впечатлениями об OpenAI Codex. Вырезка на 15 минут - весьма советую к прослушиванию, это супер завораживает. Ну и пугает немношк, чего уж.
Codex - разработка от MS, ноги которой растут из GPT-3 (3-е поколение нейронки по обработке естественного языка). И вот она уже намекает нам всем, что будущее автоматизации IT как профессии не сильно-то и за горами.
На ютубе есть англоязычная демка с демонстрацией возможностей.
Ух! Дуров, вернистену всё как было!
Переслушиваю ранние подкасты #РадиоТ (этот отрывок из августа 2021), и вот ребята делятся впечатлениями об OpenAI Codex. Вырезка на 15 минут - весьма советую к прослушиванию, это супер завораживает. Ну и пугает немношк, чего уж.
Codex - разработка от MS, ноги которой растут из GPT-3 (3-е поколение нейронки по обработке естественного языка). И вот она уже намекает нам всем, что будущее автоматизации IT как профессии не сильно-то и за горами.
На ютубе есть англоязычная демка с демонстрацией возможностей.
Ух! Дуров, верни
Так ребят, переписываем и передаём дальше, в глубь опенспейса. И смуззи не пролейте!
#humor
#humor
Небольшая стори о том как мучают джунов. Расследование!
И о том как у сеньора немного подгорело с джуновского задания xD
История :
Есть у меня подруга, которая подалась в QA (тестирование), проходит сейчас стажировочку в одной конторе и вот дали ей задание, звучащее примерно следующим образом :
Понять как работает http заголовок
Задание в целом как задание, если бы не одно но. Пишет мне, что уже пол дня убила и не понимает ничерта. Теорию вычитала. Разобралась как через Fiddler "подменить" этот заголовок на нужный. Но почему-то не работает. Классика, явно просто какую-то мелочь пропустила, подумал я и взялся помочь.
И так. Как работает этот заголовок можно прочитать тут. Есть некий сервер и картинки на нём. В ответе картинки сервер отдаёт
Значит.... если мы в запросе к серверу добавим
Проверяем. Делаем запросик прям в браузере, меняем его "on-the-fly" и ..... и правда не работает. Странно. Ок, думаю - может я чего не понимаю. Открываем postman, эмулируем запрос там и ... ситуация та же. То ли лыжи не едут, то ли я пхпшник.
Копаем причину!
Даже могучий stackoverflow мне тут не помогает. Думаем. Открываем бутылочку пива. Снова думаем. Какой-то shit, ну чесн-слово. Где-то тут я уже начинаю сомневаться в своей синьористости. Подруга тоже 😂
Окей. По ответу сервера видим так же, что у нас есть заголовок
Смотрим на версию nginx'а. 1.18. Гуглим и оказывается, что релиз этой версии был в .... 2012. Что в целом меня тоже не сильно удивляет, конечно, но ... десять лет назад. Смотрим описание ченджлога, а там как раз в новых версиях что-то написано про импрувмент
Нет, ну не может же это быть таким драматическим совпадением, верно? Идём на сайт вики, где установлена последняя версия, проверяем на картинке с их лого - Нет, ну [censored] - всё работает как и ожидается. По пути нагугливаем сайт https://last-modified.com/ru/if-modified-since.html, единственной задачей которого проверить - работает ли
Выводы :
1) Если у вас так себе "курсы" - имейте ввиду, что вам просто в теории могут дать кривое задание. Поэтому очень важно учиться у проверенных ребят, иначе и без того сложные задания могут вообще не поддаться. По идее, это супер-редкость, но как видите... шанс есть :)
2) Не стесняйтесь дёргать ваших кураторов, если что-то не получается. Ну или ваших друзей-синьоров. Ну или - хотя бы ребят в айтишных специализированных чатах.
3) Магии нигде в айти нет, всё можно "раскопать". Ну.. кроме нейронок 😂
ps. Забавным открытием было, что nginx настолько умный, что просто поменять, к примеру, месяц - не меняя день недели - не катит. Он валидирует дату не только по формату, но и на логику самой даты. Никаких ошибок в ответе вы конечно же не увидите. Ну и "11 Sep" заменив на "9 Sep", допустим - тоже не катит. Нужно писать "09". кек
Удачи всем в обучении/познании и да прибудет с вами 🍺
#авторское
И о том как у сеньора немного подгорело с джуновского задания xD
История :
Есть у меня подруга, которая подалась в QA (тестирование), проходит сейчас стажировочку в одной конторе и вот дали ей задание, звучащее примерно следующим образом :
Понять как работает http заголовок
Last-Modified и If-Modified-Since, а так же продемонстрировать в рамках "картинок с учебного сайта" работу этого хедера.Задание в целом как задание, если бы не одно но. Пишет мне, что уже пол дня убила и не понимает ничерта. Теорию вычитала. Разобралась как через Fiddler "подменить" этот заголовок на нужный. Но почему-то не работает. Классика, явно просто какую-то мелочь пропустила, подумал я и взялся помочь.
И так. Как работает этот заголовок можно прочитать тут. Есть некий сервер и картинки на нём. В ответе картинки сервер отдаёт
Last-Modified в формате "Wed, 11 Sep 2019 09:41:31 GMT". Оке, гуд. Значит.... если мы в запросе к серверу добавим
If-Modified-Since со значением "Wed, 11 Sep 2019 10:41:31 GMT", т.е. просто добавив +1 минуту к Last-Modified, то сервер должен отдать нам 304-ый status code, что можно интерпретировать как "дружок, картинка не менялась, возьми-ка её из кеша своего локального". И наоборот, если отнимем минуту - сервер должен нам вернуть 200-ый статус с самой картинкой.Проверяем. Делаем запросик прям в браузере, меняем его "on-the-fly" и ..... и правда не работает. Странно. Ок, думаю - может я чего не понимаю. Открываем postman, эмулируем запрос там и ... ситуация та же. То ли лыжи не едут, то ли я пхпшник.
Копаем причину!
Даже могучий stackoverflow мне тут не помогает. Думаем. Открываем бутылочку пива. Снова думаем. Какой-то shit, ну чесн-слово. Где-то тут я уже начинаю сомневаться в своей синьористости. Подруга тоже 😂
Окей. По ответу сервера видим так же, что у нас есть заголовок
server, который сообщает нам, что на сервере отдаёт статику "nginx/1.18.0 (Ubuntu)". Ничего необычного. Nginx - это классика отдачи статики. Сысоеву привет ^^ (это создатель nginx'а. Недавно была новость, что он покинул проект :( ).Смотрим на версию nginx'а. 1.18. Гуглим и оказывается, что релиз этой версии был в .... 2012. Что в целом меня тоже не сильно удивляет, конечно, но ... десять лет назад. Смотрим описание ченджлога, а там как раз в новых версиях что-то написано про импрувмент
If-Modified-Since! Нет, ну не может же это быть таким драматическим совпадением, верно? Идём на сайт вики, где установлена последняя версия, проверяем на картинке с их лого - Нет, ну [censored] - всё работает как и ожидается. По пути нагугливаем сайт https://last-modified.com/ru/if-modified-since.html, единственной задачей которого проверить - работает ли
If-Modified-Since на сервере. И что мы видим ...Результат: проваленоНет, ну это прекрасно. Т.е. джуну дали невыполнимое задание, получается. Красиво!
Сайт отдал время последней модификации, но не отреагировал на If-Modified-Since. Запрошенное время: Wed, 11 Sep 2019 09:42:11 GMT.
Выводы :
1) Если у вас так себе "курсы" - имейте ввиду, что вам просто в теории могут дать кривое задание. Поэтому очень важно учиться у проверенных ребят, иначе и без того сложные задания могут вообще не поддаться. По идее, это супер-редкость, но как видите... шанс есть :)
2) Не стесняйтесь дёргать ваших кураторов, если что-то не получается. Ну или ваших друзей-синьоров. Ну или - хотя бы ребят в айтишных специализированных чатах.
3) Магии нигде в айти нет, всё можно "раскопать". Ну.. кроме нейронок 😂
ps. Забавным открытием было, что nginx настолько умный, что просто поменять, к примеру, месяц - не меняя день недели - не катит. Он валидирует дату не только по формату, но и на логику самой даты. Никаких ошибок в ответе вы конечно же не увидите. Ну и "11 Sep" заменив на "9 Sep", допустим - тоже не катит. Нужно писать "09". кек
Удачи всем в обучении/познании и да прибудет с вами 🍺
#авторское
Немного про отказы на собеседованиях. Принимайте это легко. Как путь.
Весьма часто компания ищет по своим внутренним критериям, которые известны только им. Вы можете иметь одни сильные стороны, а компании нужны другие - это абсолютно нормально. Плюс собеседования отлично качают ваши слабые стороны. В общем, одни плюсы в отказах 😉
Грустно, не если вам отказывают, а если принимают "абы как" в "абы куда" писать "абы что" с такими же "абы какими" коллегами на галеру с названием "DPHv". И вы только через полгода узнаете, что DPHv это аббревиатура к "da po [censured] vse".
Так что не бойтесь отказов, это часть процесса 😉
#habr
Весьма часто компания ищет по своим внутренним критериям, которые известны только им. Вы можете иметь одни сильные стороны, а компании нужны другие - это абсолютно нормально. Плюс собеседования отлично качают ваши слабые стороны. В общем, одни плюсы в отказах 😉
Грустно, не если вам отказывают, а если принимают "абы как" в "абы куда" писать "абы что" с такими же "абы какими" коллегами на галеру с названием "DPHv". И вы только через полгода узнаете, что DPHv это аббревиатура к "da po [censured] vse".
Так что не бойтесь отказов, это часть процесса 😉
#habr
🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Нейроночка для оживления лиц на фото.
Наткнулся на онлайн сервис, который позволяет анимировать любое лицо на фото. А-ля deep fake, но для изображений.
Впечатляет, чёрт подери!
Сайт даст возможность загрузить 3-4 ваших фото бесплатно, после чего попросит ввести карточку и даст trial на 14 дней. Это если захочется больше фоток загрузить (мне захотелось). Ну и ... в течении этого периода можно просто отменить подписку, пхх. Ну кх кх, да, если не понравится сервис. Вы всё сами понимаете )) ах да, там еще и попросит телефон ввести - можно просто нажать "далее" и пропустить этот шаг.Всё сложно
Под капотом используется алгоритм First Order Motion Model (эт не точно).
На хабре есть детальная статья с описанием его работы.
Осторожно, #залипалово то ещё :)
Скидывайте в комменты ваши результаты (можно любые лица гуглить и играться) ^^ Я там еще парочку своих оставлю )
Наткнулся на онлайн сервис, который позволяет анимировать любое лицо на фото. А-ля deep fake, но для изображений.
Впечатляет, чёрт подери!
Сайт даст возможность загрузить 3-4 ваших фото бесплатно, после чего попросит ввести карточку и даст trial на 14 дней. Это если захочется больше фоток загрузить (мне захотелось). Ну и ... в течении этого периода можно просто отменить подписку, пхх. Ну кх кх, да, если не понравится сервис. Вы всё сами понимаете )) ах да, там еще и попросит телефон ввести - можно просто нажать "далее" и пропустить этот шаг.
На хабре есть детальная статья с описанием его работы.
Осторожно, #залипалово то ещё :)
Скидывайте в комменты ваши результаты (можно любые лица гуглить и играться) ^^ Я там еще парочку своих оставлю )
Пришло тут да́веча улыбательное предложение поработать сеньором на галере.
Во времена, когда нужно придумывать какой-то креатив для завлекания сотрудников на собесы, почему-то эта компания, к слову не маленькая (>3000 локальной айтитоты), решила провести АКЦИЮ 😂
(sic!)
(sic!)(sic!)
(sic!)(sic!)(sic!)простите. Вышли такие 12 гребцов и ... ждут розыгрыша. Или принял ты такой офер, а ближайшие 11 коллег примерно через ... год устроятся 😂 Как компания себе это вообще представляет ))
((sic!)(sic!))²
В общем, настроение подняли, спасибо 🚣
Во времена, когда нужно придумывать какой-то креатив для завлекания сотрудников на собесы, почему-то эта компания, к слову не маленькая (>3000 локальной айтитоты), решила провести АКЦИЮ 😂
(sic!)
РАЗЫГРАТЬ . Про welcome бонус не слышали, конечно же. Ага :) Зачем.(sic!)(sic!)
ПОЕЗДКУ В ДУБАЙ. Супер-ликвидный приз, кек. В ковидные времена-то. Макбук топовый (или что там в тренде нынче) еще ладно, но ДУБАЙ...(sic!)(sic!)(sic!)
Каждому 12-ому ??? Ахаха, ((sic!)(sic!))²
После принятия ОФФЕРА. Честно, я сходу подумал, что это розыгрыш для тех, кто пройдёт, допустим - первое интервью с hr и среди всех, кого допустили до технического - вот среди них и разыграть. Было бы ещё в целом валидно. Но нет :)В общем, настроение подняли, спасибо 🚣
😁5
Супер коротенькое фановое видео (8 минут) о том что такое тесты, какие бывают и для чего нужны в вашем коде.
https://youtu.be/-pDSFQSB5Ac
level : #Junior
https://youtu.be/-pDSFQSB5Ac
level : #Junior
YouTube
Вкатываемся в тестирование кода
🔥 Онлайн-университет JavaRush – лучший способ научиться программировать на Java: https://javarush.ru/s/ExtremeCode
Промокод -50% на первый месяц обучения в JavaRush Университете: ExtremeCode. Промокод действителен только для новых пользователей до 31 марта…
Промокод -50% на первый месяц обучения в JavaRush Университете: ExtremeCode. Промокод действителен только для новых пользователей до 31 марта…
🔥2👍1
Крутое интервью от @dimych_samurai 👍 Собеседник молодца, скоро станет профессиональным гребцом. Инфа сотка
https://youtu.be/REQomn58VwE
#video
https://youtu.be/REQomn58VwE
#video
YouTube
Из армии в IT | Как стать программистом после армии: front-end разработчик в 24 года с нуля
Как Костя стал программистом после армии? С какими сложностями столкнулся? Успешный успех - но только не сразу!
Кто ещё пошел в IT сразу после службы?
https://it-incubator.eu/education - человекоориентированное, честное и профессиональное обучение front…
Кто ещё пошел в IT сразу после службы?
https://it-incubator.eu/education - человекоориентированное, честное и профессиональное обучение front…
🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Подкаст здорового человека 🇺🇦 ❤️ #радиоТ
❤2
Решил просканить топ статей с хабра за последнюю неделю. Удивительно, но из 10 страниц топа, всего ОДНА статья, хоть как-то КОСВЕННО касается текущих реалий айтишки в РФ. Наводит на определенные выводы. Даже, если учесть, что хабр - вне политики, очевидно, что сверху включена цензура даже на этом уровне.
Штош, скриншоты как раз с этой единственной статьи : Отрасль IT в России поставили на паузу.
Выводы делайте сами что будет с IT сектором (и не только) в РФ в ближайшее время.
#habr
Штош, скриншоты как раз с этой единственной статьи : Отрасль IT в России поставили на паузу.
Выводы делайте сами что будет с IT сектором (и не только) в РФ в ближайшее время.
#habr
😢2
Проект "На коленке" vs "По красоте"?
Вот недавно друг спросил "Слушай, а вот ты там бота какого-то делаешь, хобби проектик. Сложно вообще сделать нормально? Чё там, команду принял, обработал, ответ вернул в бота - десять строк кода".
Тут я улыбнулся.
Разница между "тяп ляп и готово" и "продашн-реди" - пропасть. Хотя по внешним признакам "на глаз" и не определить что там на бэке крутится.
Давайте на реальном примере. Окей, давайте подумаем - а что там нужно-то для простейшего Telegram бота.
Вариант "MVP на коленке"
Пишите какой-то скрипт, заливаете это всё на какой-нибудь serverless AWS Lambda и ... если опустить настройку этого всего, изучение api Telegram, настройку AWS - в целом это дело пары часов для знающего человека. Работает как-то, чет отвечает по сценарию и хорошо. Кушает ресурсов мало, пока пользуешься сам и пара друзей. Красиво
Вариант "Продакшон-реди"
А теперь представим, что ботом начинают пользоваться слегка больше людей, чем два.
Поехали.
1) Нам бы базу. Хранить данные юзверя, какой-то стейт. Окей, поддержка своего сервера с бд - дело непростое, а потерять данные - очень больно. Покупаем managed postgres/mongodb, стоит от 5$ в месяц - недорого, безопасно и с возможностью вертикально/горизонтально заскейлить в случае нагрузки. Пойдёт.
2) Нам бы не крутить скрипт на лямбде. Лямбды удобные и стабильные, но дорогие, если там выполнять какие-то "жирненькие" скрипты. А своей api-gateway подымать пока рано, да в целом и не нужно. Поэтому будем лямбду всё же как-то использовать только для "проброски/хранения" вебхука от телеграма.
3) Будем класть все вебхуки в ... очередь. AWS SQS, допустим. Довольно бюджетно и не даст нам потерять сообщения в случае падения бэкэндов за ними. Ну или если нужно зачем-то отключить бэк, допустим для апдейтов. Очередь просто будет пухнуть, юзеры ждать - не критично. Как только бэки запустятся - они разгребут очередь, запросы не потеряются. Эдакий демпфер. Удобно!
4) Очередь нужно чем-то разгребать (не веслом желательно, да). Окей, давайте-ка напишем что-то, что будет в бесконечном цикле крутиться и бегать в очередь за сообщениями. и обрабатывать. Хорошо бы еще это в докере запускать. И как-то деплоить не сильно руками. Пишем пачечку деплой-скриптов. Берём 1 минимальный инстанс на Digital Ocean за 5 баксов и вот у нас уже в целом какое-никакое а работающее решение, подменяющее "MVP на коленке" . И даже с заделом на скейл.
5) Окей, еще бы понимать что вообще происходит на бэке в текущий момент времени. Нужен мониторинг. Если юзать какой-нибудь AWS CloudWatch - можно быстро выйти за рамки бюджета. А бюджет нам важен. Поэтому нам нужен сервер хранения и отображения метрик. Можно какой-нибудь ELK стек (elastic, logstash, kibana) поднять, но тут уже кому что ближе. Идём на тот же DO, устанавливаем ubuntu, а поверх - prometheus. К прометеусу прикручиваем pushgateway. Поверх этого всего Grafana - для графиков и каких-то алертов. Настраиваем это всё, вешаем через nginx аутентификацию (чтобы уши prometheus'а не торчали во внешку. Из коробки он, увы, так не умеет). Теперь и метрики есть и графики и алерты в telegram/slack.
6) Ну а логи ж ещё, точно. А давайте-ка тут не терять много времени и просто заюзаем NewRelic, у них там вполне себе демократичные цены для старта, и возможностей вагон. Подключаем к коду
7) Так. Что мы еще забыли... Ах да. Чтобы нам не мешали абьюзеры-боты своими частыми реквестами - давайте-ка напишем реквест-троттлер ("резальщик" частых запросов). Но под ним должно что-то быть. Что-то managed и быстрое. Конечно же Redis. 15$ в месяц, пару кликов на конфигурацию и вот уже маленький кластер на DO готов к бою.
8) Обмазываем весь код метриками, логами, бизнес-логику распихиваем по слоям, пропиливаем тесты, заводим Postman, хранилище образов, гитхаб.
И вот это уже в целом можно назвать приличным решением для старта. Конечно, всё как всегда от целей и бюджета зависит - с корпоративными деньгами можно было бы хоть всю систему на лямбдах спроектировать, кек.
#авторское
Вот недавно друг спросил "Слушай, а вот ты там бота какого-то делаешь, хобби проектик. Сложно вообще сделать нормально? Чё там, команду принял, обработал, ответ вернул в бота - десять строк кода".
Тут я улыбнулся.
Разница между "тяп ляп и готово" и "продашн-реди" - пропасть. Хотя по внешним признакам "на глаз" и не определить что там на бэке крутится.
Давайте на реальном примере. Окей, давайте подумаем - а что там нужно-то для простейшего Telegram бота.
Вариант "MVP на коленке"
Пишите какой-то скрипт, заливаете это всё на какой-нибудь serverless AWS Lambda и ... если опустить настройку этого всего, изучение api Telegram, настройку AWS - в целом это дело пары часов для знающего человека. Работает как-то, чет отвечает по сценарию и хорошо. Кушает ресурсов мало, пока пользуешься сам и пара друзей. Красиво
Вариант "Продакшон-реди"
А теперь представим, что ботом начинают пользоваться слегка больше людей, чем два.
Поехали.
1) Нам бы базу. Хранить данные юзверя, какой-то стейт. Окей, поддержка своего сервера с бд - дело непростое, а потерять данные - очень больно. Покупаем managed postgres/mongodb, стоит от 5$ в месяц - недорого, безопасно и с возможностью вертикально/горизонтально заскейлить в случае нагрузки. Пойдёт.
2) Нам бы не крутить скрипт на лямбде. Лямбды удобные и стабильные, но дорогие, если там выполнять какие-то "жирненькие" скрипты. А своей api-gateway подымать пока рано, да в целом и не нужно. Поэтому будем лямбду всё же как-то использовать только для "проброски/хранения" вебхука от телеграма.
3) Будем класть все вебхуки в ... очередь. AWS SQS, допустим. Довольно бюджетно и не даст нам потерять сообщения в случае падения бэкэндов за ними. Ну или если нужно зачем-то отключить бэк, допустим для апдейтов. Очередь просто будет пухнуть, юзеры ждать - не критично. Как только бэки запустятся - они разгребут очередь, запросы не потеряются. Эдакий демпфер. Удобно!
4) Очередь нужно чем-то разгребать (не веслом желательно, да). Окей, давайте-ка напишем что-то, что будет в бесконечном цикле крутиться и бегать в очередь за сообщениями. и обрабатывать. Хорошо бы еще это в докере запускать. И как-то деплоить не сильно руками. Пишем пачечку деплой-скриптов. Берём 1 минимальный инстанс на Digital Ocean за 5 баксов и вот у нас уже в целом какое-никакое а работающее решение, подменяющее "MVP на коленке" . И даже с заделом на скейл.
5) Окей, еще бы понимать что вообще происходит на бэке в текущий момент времени. Нужен мониторинг. Если юзать какой-нибудь AWS CloudWatch - можно быстро выйти за рамки бюджета. А бюджет нам важен. Поэтому нам нужен сервер хранения и отображения метрик. Можно какой-нибудь ELK стек (elastic, logstash, kibana) поднять, но тут уже кому что ближе. Идём на тот же DO, устанавливаем ubuntu, а поверх - prometheus. К прометеусу прикручиваем pushgateway. Поверх этого всего Grafana - для графиков и каких-то алертов. Настраиваем это всё, вешаем через nginx аутентификацию (чтобы уши prometheus'а не торчали во внешку. Из коробки он, увы, так не умеет). Теперь и метрики есть и графики и алерты в telegram/slack.
6) Ну а логи ж ещё, точно. А давайте-ка тут не терять много времени и просто заюзаем NewRelic, у них там вполне себе демократичные цены для старта, и возможностей вагон. Подключаем к коду
7) Так. Что мы еще забыли... Ах да. Чтобы нам не мешали абьюзеры-боты своими частыми реквестами - давайте-ка напишем реквест-троттлер ("резальщик" частых запросов). Но под ним должно что-то быть. Что-то managed и быстрое. Конечно же Redis. 15$ в месяц, пару кликов на конфигурацию и вот уже маленький кластер на DO готов к бою.
8) Обмазываем весь код метриками, логами, бизнес-логику распихиваем по слоям, пропиливаем тесты, заводим Postman, хранилище образов, гитхаб.
И вот это уже в целом можно назвать приличным решением для старта. Конечно, всё как всегда от целей и бюджета зависит - с корпоративными деньгами можно было бы хоть всю систему на лямбдах спроектировать, кек.
#авторское
👍7