Новое начало
Сегодня был последний рабочий день на старой работе.
Забрали ноут, отдали доки и провели полный расчет. Когда увидел сумму стало приятно, а потом понял, что весь летний отпуск, который я планировал потратить дачу, накрылся медным тазом. Тупая ситуация, когда деньги чинить дачу есть, а времени нет.
Очень жалею, что приходится с этой работой расставаться, потому что команда там просто пушка. Всегда было очень весело, без всякой официозности, по-дружески.
Две недели крайне активно собеседовался.
Прошел 7 технических собеседований, но только по 5 получил оффер. К счастью, не из-за скиллов, а из-за того, что компании медленно думали - сами технички проходили очень даже хорошо.
Дожидаться до конца всех не стал потому как предложили святой грааль пхпшника - финтех, микросервисы, хайлоад, с возможностью иногда делать задачки на go.
Вы спросите в чем подвох? Все очень просто - сфера специфическая - микрокредитная организация. Для кого-то это морально спорный момент, а я себя поймал на мысли, что если бы позвали пилить порносайт, то я бы и от этого не отказался.
В резюме я выставил, что я Middle+. На собесе в компании, куда я ухожу, спросили почему Middle+, а не Senior. Я ответил, что это психологический барьер.
А через пару дней подумал - а правда, какого это черта я не могу написать, что я сеньер? Ну и написал :D
И после этого просмотры резюме на хх поперли как сумасшедшие, жаль только, что уже поздно было - принял оффер. Интересная, однако, ситуация получается на рынке.
Сегодня был последний рабочий день на старой работе.
Забрали ноут, отдали доки и провели полный расчет. Когда увидел сумму стало приятно, а потом понял, что весь летний отпуск, который я планировал потратить дачу, накрылся медным тазом. Тупая ситуация, когда деньги чинить дачу есть, а времени нет.
Очень жалею, что приходится с этой работой расставаться, потому что команда там просто пушка. Всегда было очень весело, без всякой официозности, по-дружески.
Две недели крайне активно собеседовался.
Прошел 7 технических собеседований, но только по 5 получил оффер. К счастью, не из-за скиллов, а из-за того, что компании медленно думали - сами технички проходили очень даже хорошо.
Дожидаться до конца всех не стал потому как предложили святой грааль пхпшника - финтех, микросервисы, хайлоад, с возможностью иногда делать задачки на go.
Вы спросите в чем подвох? Все очень просто - сфера специфическая - микрокредитная организация. Для кого-то это морально спорный момент, а я себя поймал на мысли, что если бы позвали пилить порносайт, то я бы и от этого не отказался.
В резюме я выставил, что я Middle+. На собесе в компании, куда я ухожу, спросили почему Middle+, а не Senior. Я ответил, что это психологический барьер.
А через пару дней подумал - а правда, какого это черта я не могу написать, что я сеньер? Ну и написал :D
И после этого просмотры резюме на хх поперли как сумасшедшие, жаль только, что уже поздно было - принял оффер. Интересная, однако, ситуация получается на рынке.
🔥6
Красивое начало
У меня с самого начала как я собрал печку были постоянные фризы и краши. Почти всегда проблема была в ошибках доступа к памяти.
Полгода жил, иногда перезагружая комп, но недавно решил выяснить что же все-таки не так.
Накатил чистейший дебиан, обновил биос до самой свежей версии, в самом биосе выставил огромную кучу настроек, но ничего не помогало.
Решил проверить мемтестом - оставил на 3-4 часа и мне вывалило огромную кучу ошибок. Понес в сервис, сказали проверят, но скорее всего проблема в процессоре и его модуле управления памятью :(
Сегодня из-за того что забрали рабочий ноут очень резко потребовалось продолжить работу на компе, поэтому пришлось ехать покупать оперативу.
У нас в городе, оказывается, с этим беда какая-то. Нормальная память была только в одном отделении DNS в жопе города.
Купил цветастую, на 32 гига, 6ГГц. Отдал за нее аж целых 14 косарей. Жалко, но что поделать, подработка не терпит ожиданий, а денег она принесет явно куда больше, чем траты на оперативку.
И что же произошло? Правильно! Абсолютно ничего, комп работает с 11 утра и еще ни разу не застыл, не упал, не выдал ошибок. Я в восторге. Надеюсь, теперь вообще никогда не придется вырубать комп.
А через пару часов после покупки мне позвонили из сервиса и сказали, что с памятью все ок, можно забирать. Похоже, она просто не подходит то ли к материнке, то ли к процу.
У меня с самого начала как я собрал печку были постоянные фризы и краши. Почти всегда проблема была в ошибках доступа к памяти.
Полгода жил, иногда перезагружая комп, но недавно решил выяснить что же все-таки не так.
Накатил чистейший дебиан, обновил биос до самой свежей версии, в самом биосе выставил огромную кучу настроек, но ничего не помогало.
Решил проверить мемтестом - оставил на 3-4 часа и мне вывалило огромную кучу ошибок. Понес в сервис, сказали проверят, но скорее всего проблема в процессоре и его модуле управления памятью :(
Сегодня из-за того что забрали рабочий ноут очень резко потребовалось продолжить работу на компе, поэтому пришлось ехать покупать оперативу.
У нас в городе, оказывается, с этим беда какая-то. Нормальная память была только в одном отделении DNS в жопе города.
Купил цветастую, на 32 гига, 6ГГц. Отдал за нее аж целых 14 косарей. Жалко, но что поделать, подработка не терпит ожиданий, а денег она принесет явно куда больше, чем траты на оперативку.
И что же произошло? Правильно! Абсолютно ничего, комп работает с 11 утра и еще ни разу не застыл, не упал, не выдал ошибок. Я в восторге. Надеюсь, теперь вообще никогда не придется вырубать комп.
А через пару часов после покупки мне позвонили из сервиса и сказали, что с памятью все ок, можно забирать. Похоже, она просто не подходит то ли к материнке, то ли к процу.
Сектор go на барабане
Вот сидишь такой спокойно в понедельник вечером, смотришь ютуб, как вдруг тебя как в жопу жалит и ты ставишь себе компилятор голанга
В следующий раз очнешься через 3 часа, когда сделал малюсенькое веб-приложение и начал пилить cli-утилиту
Опасно
А если серьезно, то на подработке мне недавно попалась задача по импорту адресов из базы ГАР ФИАС
И так она мне засела в душу и так долго* выполнялась на пхп, что я решил попробовать в жизни что-нибудь новенькое и переписать ее на голанге
* Под "долго" подразумевается 43 секунды на полный цикл импорта
Вот сейчас закончил приборку в проекте и голанг мне выдал 30 секунд на все
Каюсь, я выбрал плохую задачу - она на 80% полагается на базу (инсерты батчами по 50к строк)
Но разница в 13 секунд все равно очень радует
И это я еще не распараллеливал импорт, руки не дошли пока
Мне очень понравилось, что там из коробки нормально работает хттп-сервер и аргументы cli-скриптов
А еще прям супер легко организовать потоковое чтение из xml файла и парсинг отдельных его кусков в структуры
Бесит только каждый раз ребилдить, очень непривычно
Я когда только знакомился с голангом, то он мне показался несуразным каким-то, но сейчас почему-то вкатывает, посмотрим что дальше будет
Вот сидишь такой спокойно в понедельник вечером, смотришь ютуб, как вдруг тебя как в жопу жалит и ты ставишь себе компилятор голанга
В следующий раз очнешься через 3 часа, когда сделал малюсенькое веб-приложение и начал пилить cli-утилиту
Опасно
А если серьезно, то на подработке мне недавно попалась задача по импорту адресов из базы ГАР ФИАС
И так она мне засела в душу и так долго* выполнялась на пхп, что я решил попробовать в жизни что-нибудь новенькое и переписать ее на голанге
* Под "долго" подразумевается 43 секунды на полный цикл импорта
Вот сейчас закончил приборку в проекте и голанг мне выдал 30 секунд на все
Каюсь, я выбрал плохую задачу - она на 80% полагается на базу (инсерты батчами по 50к строк)
Но разница в 13 секунд все равно очень радует
И это я еще не распараллеливал импорт, руки не дошли пока
Мне очень понравилось, что там из коробки нормально работает хттп-сервер и аргументы cli-скриптов
А еще прям супер легко организовать потоковое чтение из xml файла и парсинг отдельных его кусков в структуры
Бесит только каждый раз ребилдить, очень непривычно
Я когда только знакомился с голангом, то он мне показался несуразным каким-то, но сейчас почему-то вкатывает, посмотрим что дальше будет
👍2
Посвящение в красноглазики
Я убил Debian
Не специально, конечно, но кто же знал, что если у тебя KDE и ты решил поставить Gnome Disk Manager, то твоей системе, простите, пиздец?
Ничего не предвещало беды, но когда отказал блютус я понял, что дело пахнет жареным
Попытался как можно скорее закоммитить изменения, но оказалось, что команды
Пришлось по старинке паковать проекты в архив и кидать себе на почту :D
Практически сразу после этого меня выкинуло из системы и больше зайти я уже не смог
Вот здесь и начинается самый прикол - никакого компа, кроме основного у меня нет. Макбук со старой работы уже забрали, а на ноуте с новой работы еще нет системы (DOS не в счет)
... так я думал, пока не вспомнил, что у меня есть мой замечательный Raspberry Pi 5
Вот только проблема в том, что на нем нет экрана, а единственное устройство с которого можно подключить по ssh - мой телефон
Поэтому пришлось как настоящему админу заливать образ убунты на флешку, имея доступ только к терминалу
Опыт прекрасный, повторять больше не хочу
Хотя на самом деле я сам удивился насколько легко стало общаться с терминалом за последние годы
Я убил Debian
Не специально, конечно, но кто же знал, что если у тебя KDE и ты решил поставить Gnome Disk Manager, то твоей системе, простите, пиздец?
Ничего не предвещало беды, но когда отказал блютус я понял, что дело пахнет жареным
Попытался как можно скорее закоммитить изменения, но оказалось, что команды
git не существует! Весело!Пришлось по старинке паковать проекты в архив и кидать себе на почту :D
Практически сразу после этого меня выкинуло из системы и больше зайти я уже не смог
Вот здесь и начинается самый прикол - никакого компа, кроме основного у меня нет. Макбук со старой работы уже забрали, а на ноуте с новой работы еще нет системы (DOS не в счет)
... так я думал, пока не вспомнил, что у меня есть мой замечательный Raspberry Pi 5
Вот только проблема в том, что на нем нет экрана, а единственное устройство с которого можно подключить по ssh - мой телефон
Поэтому пришлось как настоящему админу заливать образ убунты на флешку, имея доступ только к терминалу
Опыт прекрасный, повторять больше не хочу
Хотя на самом деле я сам удивился насколько легко стало общаться с терминалом за последние годы
Очередной первый месяц
26го числа уже месяц как работаю в новой компании
За последний год я повторяю эту фразу уже третий раз xD
В целом все отлично, тимлид доволен, я тоже
Одной из первых на меня прилетела задача со статусом "крит", которая была в бэклоге уже 4 месяца👍
Потом была долгая задача по наведению кодстайла в одном из проектов. Долгая потому, что пришлось со всей командой этот кодстайл согласовывать.
Все эти наработки щас уехали уже на прод и остальные коллеги будут потихоньку у себя на сервисах тоже внедрять. Красота
Но только я расслабился как мне дали уже реальный крит по разработке нового микросервиса
Как заправский монолитчик я наворотил там очень серьезную структуру папок и абстракций, но на деле так делать не надо было
Вообще, интересная смена парадигмы. Все всё время говорят, что надо прям изолироваться как следует, а когда ты по-настоящему изолирован на уровне инфраструктуры, то в коде на изоляцию уже как-то пофиг. Главное, чтобы тесты было удобно писать и чтобы запускались они без боли.
Ну и конечно, как же не оторваться на новом сервисе? Каких только линтеров туда не завезли. Вот прям красотища.
Жизнь продолжается, вроде пока уволнять не собираются :)
26го числа уже месяц как работаю в новой компании
За последний год я повторяю эту фразу уже третий раз xD
В целом все отлично, тимлид доволен, я тоже
Одной из первых на меня прилетела задача со статусом "крит", которая была в бэклоге уже 4 месяца👍
Потом была долгая задача по наведению кодстайла в одном из проектов. Долгая потому, что пришлось со всей командой этот кодстайл согласовывать.
Все эти наработки щас уехали уже на прод и остальные коллеги будут потихоньку у себя на сервисах тоже внедрять. Красота
Но только я расслабился как мне дали уже реальный крит по разработке нового микросервиса
Как заправский монолитчик я наворотил там очень серьезную структуру папок и абстракций, но на деле так делать не надо было
Вообще, интересная смена парадигмы. Все всё время говорят, что надо прям изолироваться как следует, а когда ты по-настоящему изолирован на уровне инфраструктуры, то в коде на изоляцию уже как-то пофиг. Главное, чтобы тесты было удобно писать и чтобы запускались они без боли.
Ну и конечно, как же не оторваться на новом сервисе? Каких только линтеров туда не завезли. Вот прям красотища.
Жизнь продолжается, вроде пока уволнять не собираются :)
👍2
Я кстати себе офис снял отдельный
Я никогда не знал вообще, что это такое, когда ты приходишь на работу и ты один. Всегда рядом были люди, в последние пару месяцев вообще семья
А тут благодать - можно творить что угодно и никто ничего не скажет. И про барабаны тоже :)
Единственный минус, что кофе приходится отдельно покупать и микроволновки нет
Я никогда не знал вообще, что это такое, когда ты приходишь на работу и ты один. Всегда рядом были люди, в последние пару месяцев вообще семья
А тут благодать - можно творить что угодно и никто ничего не скажет. И про барабаны тоже :)
Единственный минус, что кофе приходится отдельно покупать и микроволновки нет
😁4🔥1
Давайте-ка я кое в чём сознаюсь
После того как переехал работать в офис дома остался только ноут
Так как живу я не один, да и самому иногда надо, на ноуте поставлена винда 11
Вместе с этим никуда не делась подработка, которую зачастую приходится делать дома
И вот, честно говоря, разница с линуксом была только в том, что пришлось поставить WSL2 и Docker Desktop. Все!
В остальном все абсолютно такое же, даже просадок по производительности нет:
- докер работает
- дебаггер работает
- терминал в шторме открывается сразу внутри WSL2
- проблем с правами нет
- порты из докер композа автоматом пробрасываются в винду и в браузере доступно все, что кодишь в WSL2
Да, у меня простое рабочее окружение на подработке, там нет даже кубера, но думаю и с этим проблем бы не возникло
Учитывая то, каким говном иногда бывает gnome на дебиане, страшные мысли о переезде на винду иногда закрадываются в голову...
После того как переехал работать в офис дома остался только ноут
Так как живу я не один, да и самому иногда надо, на ноуте поставлена винда 11
Вместе с этим никуда не делась подработка, которую зачастую приходится делать дома
И вот, честно говоря, разница с линуксом была только в том, что пришлось поставить WSL2 и Docker Desktop. Все!
В остальном все абсолютно такое же, даже просадок по производительности нет:
- докер работает
- дебаггер работает
- терминал в шторме открывается сразу внутри WSL2
- проблем с правами нет
- порты из докер композа автоматом пробрасываются в винду и в браузере доступно все, что кодишь в WSL2
Да, у меня простое рабочее окружение на подработке, там нет даже кубера, но думаю и с этим проблем бы не возникло
Учитывая то, каким говном иногда бывает gnome на дебиане, страшные мысли о переезде на винду иногда закрадываются в голову...
👍5🤡1
Обожаю подобную мазафаку
Помню как выпал, когда первый раз увидел, что в С можно в структурах хранить указатели на функции и пользоваться ими как методами
https://youtu.be/6Riy9hVIFDE?si=XwRbWXaKxIvAc_jF
Помню как выпал, когда первый раз увидел, что в С можно в структурах хранить указатели на функции и пользоваться ими как методами
https://youtu.be/6Riy9hVIFDE?si=XwRbWXaKxIvAc_jF
YouTube
OOP in Pure C
Streamed Live on Twitch: https://twitch.tv/tsoding
Enable CC for Twitch Chat
Panim Playlist: https://www.youtube.com/playlist?list=PLpM-Dvs8t0VYH2HouIXMjFFuz7G1FrXiB
Support:
- BTC: bc1qj820dmeazpeq5pjn89mlh9lhws7ghs9v34x9v9
- Pay for my VPS: https://zap…
Enable CC for Twitch Chat
Panim Playlist: https://www.youtube.com/playlist?list=PLpM-Dvs8t0VYH2HouIXMjFFuz7G1FrXiB
Support:
- BTC: bc1qj820dmeazpeq5pjn89mlh9lhws7ghs9v34x9v9
- Pay for my VPS: https://zap…
Ребята, я стал лидом
В среду мне позвонил СТО, сказал, что я закончил испытательный срок
После этого вывалил мне супер инфу о том, что меня назначают лидом, дают команду и большой проект, а сегодня рассказал об этом всем на дейлике
Что думать - я пока хз; пока что просто непонятно как это все будет происходить, опыта-то нет
Вообще, я рад, но я очень надеюсь, что не уйду совсем в менеджерство, слишком люблю кодить
В среду мне позвонил СТО, сказал, что я закончил испытательный срок
После этого вывалил мне супер инфу о том, что меня назначают лидом, дают команду и большой проект, а сегодня рассказал об этом всем на дейлике
Что думать - я пока хз; пока что просто непонятно как это все будет происходить, опыта-то нет
Вообще, я рад, но я очень надеюсь, что не уйду совсем в менеджерство, слишком люблю кодить
🔥15🫡2
Из-за леса, из-за гор
... прилетела задача по перевозу 13 приложений на выделенную бд.
Когда мы на подработке только начинали пилить все эти приложения, я и подумать не мог, что их столько будет
Поэтому, для каждого приложения в докер композе была завернута база
Ну а что? Это как минимум удобно. И нет, вопросы производительности нас бы не коснулись - масштаб не тот
Но приложений меньше не становится, а смотреть на вывод docker ps становится страшно
Да и бэкапы бы не помешало делать, желательно не через костыли
А хуже всего то, что я не могу через IDE залезть в базу приложения на дев/прод контурах и посмотреть что творится - приходится лезть через ssh на сервак и там уже в контейнере шариться в БД
Поэтому было принято простое решение - сделать выделенный сервак с БД и загнать туда все БД всех приложений
Сказано - сделано. Осталось только в конфигах поменять домен для подключения и можно спокойно жить дальше
Но проблема в том, что мне на месте не сидится и вместе с переездом БД я решил полностью перелопатить раскатывание приложений на проде, деве и локалке
Вышло-то на самом деле очень даже ничего:
1. удобно - вся раскатка делается одной командой
2. нет мусора - теперь есть всего один корневой docker-compose.yml, а вот доп настройки к нему цепляются через docker-compose.override.yml, которые соответствуют нужному окружению
3. универсально - проекты теперь раскатываются и выглядят в плане деплоя как один
4. на всех приложениях теперь php8.2 + jit + opcache
5. редис был успешно везде заменен на файловый кеш (если вообще использовался; было такое, что редис поднят, а коннекта к нему нет)
Без провалов не обошлось - один раз накатил тестовую базу на прод. Но это мелочи :)
В общем и целом опыт очень крутой. Всегда приятно заниматься стандартизацией и улучшением DX
... прилетела задача по перевозу 13 приложений на выделенную бд.
Когда мы на подработке только начинали пилить все эти приложения, я и подумать не мог, что их столько будет
Поэтому, для каждого приложения в докер композе была завернута база
Ну а что? Это как минимум удобно. И нет, вопросы производительности нас бы не коснулись - масштаб не тот
Но приложений меньше не становится, а смотреть на вывод docker ps становится страшно
Да и бэкапы бы не помешало делать, желательно не через костыли
А хуже всего то, что я не могу через IDE залезть в базу приложения на дев/прод контурах и посмотреть что творится - приходится лезть через ssh на сервак и там уже в контейнере шариться в БД
Поэтому было принято простое решение - сделать выделенный сервак с БД и загнать туда все БД всех приложений
Сказано - сделано. Осталось только в конфигах поменять домен для подключения и можно спокойно жить дальше
Но проблема в том, что мне на месте не сидится и вместе с переездом БД я решил полностью перелопатить раскатывание приложений на проде, деве и локалке
Вышло-то на самом деле очень даже ничего:
1. удобно - вся раскатка делается одной командой
2. нет мусора - теперь есть всего один корневой docker-compose.yml, а вот доп настройки к нему цепляются через docker-compose.override.yml, которые соответствуют нужному окружению
3. универсально - проекты теперь раскатываются и выглядят в плане деплоя как один
4. на всех приложениях теперь php8.2 + jit + opcache
5. редис был успешно везде заменен на файловый кеш (если вообще использовался; было такое, что редис поднят, а коннекта к нему нет)
Без провалов не обошлось - один раз накатил тестовую базу на прод. Но это мелочи :)
В общем и целом опыт очень крутой. Всегда приятно заниматься стандартизацией и улучшением DX
🔥5
Подумал, что давно очень ничего не писал сюда
А что писать? Каждый день теперь это пороховая бочка
Каждый день прилетают задачи, что все горит и уже вчера надо было сдать огромный кусок функционала
Как делать задачи? Да кто знает) последний чел, который знал уже месяц как не работает :D
Звучит как пиздец? Возможно
Но я поймал себя на мысли, что мне этого давно не хватало
Это какой-то особенный азарт решать нерешаемые жопы в краткие сроки и выходить победителем
Да, все пока очень спонтанно и все такое, но мы в начале пути к светлому будущему
А что писать? Каждый день теперь это пороховая бочка
Каждый день прилетают задачи, что все горит и уже вчера надо было сдать огромный кусок функционала
Как делать задачи? Да кто знает) последний чел, который знал уже месяц как не работает :D
Звучит как пиздец? Возможно
Но я поймал себя на мысли, что мне этого давно не хватало
Это какой-то особенный азарт решать нерешаемые жопы в краткие сроки и выходить победителем
Да, все пока очень спонтанно и все такое, но мы в начале пути к светлому будущему
🔥6🤝1
Ну и на десерт ссылочка на абсолютно рандомную статью про генераторы в пхп, из которой я впервые узнал про yield from
https://qirolab.com/posts/php-generators-efficient-data-handling-and-iteration-techniques
https://qirolab.com/posts/php-generators-efficient-data-handling-and-iteration-techniques
Qirolab
PHP Generators: Efficient Data Handling and Iteration Techniques | Qirolab
PHP Generators offer a powerful and memory-efficient way to handle large datasets and complex iteration scenarios in your applications. They provide a more elegant solution compared (...)
Черная полоса вроде закончилась, началась прикольная
Меня недавно добавили в чат, где есть люди из разных областей компании
Разрабы, ПМы, а главное - непосредственные пользователи наших внутренних приложений (операторы)
У последних, как не трудно догадаться, - всегда все горит, ужасно тормозит, работать невозможно, клиенты массово жалуются и тд
Иногда это паника, иногда это реальность
Как раз последние пару дней я разгребал именно реальный случай, когда проду становится плохо
Заходишь в логи, а там бескрайнее море записей с уровнем emergency, в каждой из которых написано про таймаут
Какой-то из 4 сервисов наотрез отказывался укладываться в 20 секунд с ответом
Беда в том, что запросы делались асинхронно, через multicurl и при выбросе исключения не было никакой информации о том, кто именно уходит в таймаут
Спустя какое-то время все же нашел виновника и полез смотреть почему не успевает
А не успевал он по простой причине - на один апи запрос делалось 100500 запросов в базу и в среднем запрос работал около 44-48 секунд
И ладно бы это просто было простыней из вызовов к базе, но нет, все куда хуже
Там тянулась сущность из базы, а потом передавалась в экстратор
Экстрактор в нашем случае это такая шляпа, которой ты даешь список атрибутов, а он их каким-то образом тянет из сущности
И большая часть атрибутов - смежные сущности, за которыми доктрина каждый раз ходила в базу
Решение немного экстремальное, но я просто вытягивал все данные по сущности разом
Да, там много джоинов; да, там жирнющий селект
Но быстрее на стороне пхп эту кучу данных растолкать по сущностям, чем каждый раз ходить в базу
Результат в итоге с одной стороны неплохой - прирост х8 (с 48 секунд до 6 секунд)
С другой - это все равно 6 секунд :(
Но лучшее враг хорошего, поэтому такой результат нас устроит пока что
Меня недавно добавили в чат, где есть люди из разных областей компании
Разрабы, ПМы, а главное - непосредственные пользователи наших внутренних приложений (операторы)
У последних, как не трудно догадаться, - всегда все горит, ужасно тормозит, работать невозможно, клиенты массово жалуются и тд
Иногда это паника, иногда это реальность
Как раз последние пару дней я разгребал именно реальный случай, когда проду становится плохо
Заходишь в логи, а там бескрайнее море записей с уровнем emergency, в каждой из которых написано про таймаут
Какой-то из 4 сервисов наотрез отказывался укладываться в 20 секунд с ответом
Беда в том, что запросы делались асинхронно, через multicurl и при выбросе исключения не было никакой информации о том, кто именно уходит в таймаут
Спустя какое-то время все же нашел виновника и полез смотреть почему не успевает
А не успевал он по простой причине - на один апи запрос делалось 100500 запросов в базу и в среднем запрос работал около 44-48 секунд
И ладно бы это просто было простыней из вызовов к базе, но нет, все куда хуже
Там тянулась сущность из базы, а потом передавалась в экстратор
Экстрактор в нашем случае это такая шляпа, которой ты даешь список атрибутов, а он их каким-то образом тянет из сущности
И большая часть атрибутов - смежные сущности, за которыми доктрина каждый раз ходила в базу
Решение немного экстремальное, но я просто вытягивал все данные по сущности разом
Да, там много джоинов; да, там жирнющий селект
Но быстрее на стороне пхп эту кучу данных растолкать по сущностям, чем каждый раз ходить в базу
Результат в итоге с одной стороны неплохой - прирост х8 (с 48 секунд до 6 секунд)
С другой - это все равно 6 секунд :(
Но лучшее враг хорошего, поэтому такой результат нас устроит пока что
👍3❤1
с отпуском меня!
до свидания программирование и привет дача!
p.s. а еще нас уже 50😊
до свидания программирование и привет дача!
p.s. а еще нас уже 50😊
🎉10
Локальное окружение в кубере с k3s
Когда я пришел в ферале на текущую работу, то все окружение разворачивалось в minikube.
Я уж не знаю какие именно проблемы с ним были (я их не заметил), но мой, на тот момент, тимлид принял решение переезжать на k3s, подсмотрев удачный опыт у одного из разрабов в компании.
Мне тогда было поручено локально поставить k3s и попробовать развернуть в нем пару сервисов, попутно обновив в них readme.
Собственно, с задачей я справился. Вот только выбранное решение было очень кривым, да еще и ломало dns при включенном корпоративном впне из-за того, что приходилось ставить dnsmasq. Зачем? На тот момент я думал, что общаться между сервисами очень надо через домены вида service-name.dev.loc (просто потому что по-другому я не знал как, а все примеры обращений из гугла не работали). И dnsmasq позволял это делать и оно даже работало в подах кубера. Но, как у любой задачи типа “было бы прикольно”, приоритет выполнения был минимальный и потому она быстро затерялась в недрах личного бэклога.
Прошло полгода, у меня честно говоря от кривости работы локального окружения уже порядком горела жопа. Более того, ко мне приходили разрабы и спрашивали - как вы локально разворачиваетесь? У вас то куча репозиториев с docker-compose’ами, то какой-то кубер, то еще что. И вот случился отпуск, а значит шанс снести к чертям собачим всю систему и начать с нуля.
В этот раз я решил вообще не использовать ничего, кроме самого k3s. И это помогло. Из коробки по прошлой инструкции у меня вообще не работал dns - из пода даже в гугл сходить нельзя было. Я начал копать и понял, что не использовал важную (в моем случае) опцию при установке k3s. А именно -
Мне и в голову не приходило, что в кубере может быть удобный способ для общения между подами, как в docker compose, например (там можно обращаться к контейнеру по его имени внутри одной сети). Нет, я конечно видел и читал про CoreDNS, даже в конфиги какие-то лазил. Но почему-то в голове выключатель не щелкал.
После всего этого пришлось еще ставить сайдкар на базе нгинкса, чтобы поды могли обрабатывать запросы напрямую от других подов. Но там уже честно говоря не так интересно. Там просто мрак в виде go’шных шаблонов для helm.
Итого, я вроде как меньше стал бояться кубера. Теперь этот зверь кажется более-менее дружелюбным и начинает закрепляться реальное понимание того как там все работает.
Когда я пришел в ферале на текущую работу, то все окружение разворачивалось в minikube.
Я уж не знаю какие именно проблемы с ним были (я их не заметил), но мой, на тот момент, тимлид принял решение переезжать на k3s, подсмотрев удачный опыт у одного из разрабов в компании.
Мне тогда было поручено локально поставить k3s и попробовать развернуть в нем пару сервисов, попутно обновив в них readme.
Собственно, с задачей я справился. Вот только выбранное решение было очень кривым, да еще и ломало dns при включенном корпоративном впне из-за того, что приходилось ставить dnsmasq. Зачем? На тот момент я думал, что общаться между сервисами очень надо через домены вида service-name.dev.loc (просто потому что по-другому я не знал как, а все примеры обращений из гугла не работали). И dnsmasq позволял это делать и оно даже работало в подах кубера. Но, как у любой задачи типа “было бы прикольно”, приоритет выполнения был минимальный и потому она быстро затерялась в недрах личного бэклога.
Прошло полгода, у меня честно говоря от кривости работы локального окружения уже порядком горела жопа. Более того, ко мне приходили разрабы и спрашивали - как вы локально разворачиваетесь? У вас то куча репозиториев с docker-compose’ами, то какой-то кубер, то еще что. И вот случился отпуск, а значит шанс снести к чертям собачим всю систему и начать с нуля.
В этот раз я решил вообще не использовать ничего, кроме самого k3s. И это помогло. Из коробки по прошлой инструкции у меня вообще не работал dns - из пода даже в гугл сходить нельзя было. Я начал копать и понял, что не использовал важную (в моем случае) опцию при установке k3s. А именно -
--flannel-backend=wireguard-native . После указания опции все заработало. В гугл теперь можно было ходить, а самое главное - теперь поды могли общаться друг с другом просто через свои имена. Например, my-service-name.application.Мне и в голову не приходило, что в кубере может быть удобный способ для общения между подами, как в docker compose, например (там можно обращаться к контейнеру по его имени внутри одной сети). Нет, я конечно видел и читал про CoreDNS, даже в конфиги какие-то лазил. Но почему-то в голове выключатель не щелкал.
После всего этого пришлось еще ставить сайдкар на базе нгинкса, чтобы поды могли обрабатывать запросы напрямую от других подов. Но там уже честно говоря не так интересно. Там просто мрак в виде go’шных шаблонов для helm.
Итого, я вроде как меньше стал бояться кубера. Теперь этот зверь кажется более-менее дружелюбным и начинает закрепляться реальное понимание того как там все работает.
