Ваня инженер 🇸🇪
Kanalga Telegram’da o‘tish
Заметки про IT, развитие и жизненные радости из Швеции. Дзен канала: без назиданий, только моё мнение и опыт. За оскорбления в комментариях предупреждение и бан. Написать мне t.me/skatromb
Ko'proq ko'rsatishRossiya465 430Toif belgilanmagan
658
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kun
+230 kun
Postlar arxiv
Девелоперский туллсет для Python
Наткнулся на классную подборку тулов для разработки на Python, которая дарует с небес приятный и автоматизированный Developer Experience. Из списка я использую всё кроме Nox (я не тестирую на работе код под разные версии питона), и недавно поставил под сомнение авто форматтер black, который иногда уродует списки (но пока не отказался от него).
А если вам мало и хочется настоящего хардкора, предлагаю попробовать лютый линтер wemake-python-styleguide. Его написал крутейший русский питонист-опенсорсер Никита Соболев, мейнтейнер статического тайпчекера mypy, автор курсов по тестированию и типизации в Python. Линтер wps — это по сути огромная коллекция линтеров, усложняющая процесс написания кода до уровня дьяблы на сложности Hell. Как говорится, suffer, bitch 😈.
Если вы продержитесь несколько дней, впитаете с потом и кровью способность писать ультимативно лаконичный код.
Шо за биг дата?
Алексаднр Сайков — мой коллега по дата инженерному цеху, выступил с презентацией про биг дату — что это вообще такое, чем там занимаются, на кой нужон дата инженер и вот это вот всё.
Если тема интересует, а маркетинговые видосы с баззвордами надоели — смотрите запись его годного выступления на ютубе!
Чё писать?
Последние месяцы у меня парадоксальная ситуация с бложиком: в загашнике много тем, про что написать, при этом «руки никак не доходят» приоритеты всё время другие. Вроде и написать пост дело не такое долгое, но чувствую, что чего-то не хватает.
Так как обычно меня больше всего прёт, когда написанное оказывается кому-то полезным, хочу спросить в этот раз у вас.
Напишите в коммент к посту, про что вам было бы интересно прочитать в канале? Это может быть и что-то конкретное, а может быть и просто широкой темой, типа «про айти», «про миграцию», или просто чтобы я поделился великими мыслями великих людей.
Крипта
Переводы за рубеж или обратно
Всё это время в вопросах крипты я чувствовал себя дедом, просящим скачать ему интернетов на дискету. Люди уже лет пять как вкатились в крипту, купили себе две бэхи и квартиру в центре Торжка, а я даже аккаунт на бинансе не завёл.
И вот, в самый разгар моих раздумий на тему «Как перевести деньги из России на счёт в Швеции, чтобы мой банк не забанил меня за грязные русские деньги», один парень в шведском чатике вдохновил меня словами «а я вывел деньги из РФ криптой и даже задекларировал их в шведской налоговой и без проблем ваще». Тут я понял — пора.
Дальше я пропал из семьи на месяц, заводя десятки аккаунтов на разных криптобиржах, заказывая криптокарты и исследуя маршруты переводов денег, чтобы найти тот самый простой и экономичный способ.
Букв по меркам поста в тележку получилось много, потому что мне хотелось не просто написать пошаговый гайд, но и объяснить, что вообще происходит. Буду рад любым вопросам и уточнениям — они помогут сделать гайд ещё лучше :)
Читайте 👇
skatromb.github.io/sweden-migrant-guide/crypto/transfer.html
Повысили зарплату. Потом догнали и ещё повысили.
Сначала немного экономического контекста. Инфляция в 2022 году в Швеции 8.4%, что много по сравнению с бывшими на протяжении двадцати лет 0-2% (не считая 21 года). Валюта упала на ~10% к евро. В общем, экономический фон грустный, впрочем, как и в большинстве стран неподалёку. Чтобы не разгонять инфляцию, профсоюзы договорились о рекомендуемой индексации зарплаты на 4% в этом и 3% — в следующем году. Эх.
В прошлом году я вовсе не рассчитывал на инексацию — ведь я присоединился к компании только в августе. Известие об индексации на 8% было приятным сюрпризом, ведь я не не ожидал её от слова совсем 🙂
В этом году напротив я очень ждал этого момента — ведь я проработал уже полный год, сильно прокачался, собрал хорошую обратную связь от коллег и руководителей. И... «Поздравляю Иван, 6%, ты счастлив?». Ну как бы вам сказать...
Раньше я всегда соглашался с тем, что дают, даже если озвученное меня расстраивало. Проблема только в том, что потом внутреннее недовольство, как далеко его не запихивай, нагоняло, съедало мотивацию, энергию, довольство компанией, и я сначала мысленно, а потом и физически уходил в другую.
Но с Фишбрейном у меня впервые была ситауция, когда мне настолько нравится работа в компании, что я решил переступить свою невротическую скромность и дерзнуть. Тем более, что я был уверен в своём профессионализме и в том, что рынок предлагает больше. И что немаловажно, я подготовился к разговору: подумал, какая сумма меня устроит, какая нет, и что я буду делать, если не получу желаемого.
Я прямо ответил, что я расстроен увеличением. Продолжил с хорошего: что мне очень нравится работать в компании, её культура, моя роль, менеджеры, коллеги и что единственное, что меня расстраивает — это зарплата, и очень не хотелось бы однажды уйти из компании только из-за неё. Затем зашёл со стороны компании, ведь для неё это тоже нерационально, мы оба знаем, как тяжело найти хорошего специалиста, что нанять его займёт полгода, затем минимум полгода он будет выходить на нормальную производительность. И что в итоге ему заплатят рыночную зарплату, которую я и просил, но время будет потеряно! Сказал про рынок, предлагающий больше и мои навыки и ценность, увеличившуюся за прошедший год.
И получилось! Нет, я не получил столько, сколько просил, но по крайней мере 6% превратились в 10%, и это уже была приемлемая для меня сумма. Но самое приятное — что я смог наконец прямо и экологично скоммуницировать своё недовольство, и что оно было услышано. И в этом, конечно, большая заслуга Фишбрейн: я доверяю людям здесь и чувствую, что меня слушают и слышат.
Надеюсь, в следующем году будет больше 😀️️️️️️
Год велосипеда в Швеции
Нет, это не астрологи объявили, это я уже год катаю по Швеции на велике: и когда жили в Стокгольме, и в Густавсберге, и сейчас в Нючёпинге. Это было топовым решением, ведь пока я работаю один в семье, машину иметь дороговато, а ходить пешком медленно. Велик же, наоборот, экономит деньги на проезд, тренирует ноги и дарит кайфы и идеи для путешествий.
Велоинфраструктура в Швеции великолепна, причём как в Стокгольме, так и в подстокгольмье и даже в нашем отдалённом Нючёпинге. Куда бы ни поехал, (включая путешествия по окружающим деревням) 80-100% дороги будет с велодорожкой. А даже если её нет, с местными водителями ездить по одной дороге куда комфортнее и безопаснее, чем в Москве или Подмосковье.
В нашем пригородном поезде до Стокгольма можно провозить велосипед, благодаря этому можно доехать от дома до станции, а затем от станции до офиса на велике, потратив по 10-15 минут. Самый же длинный мой трип был на 70 км за день преимущественно по автомобильной дороге в местную усадьбу Nynäs Slott на сжигание зимы 🙂
А ещё, я впервые прокатался всю зиму. В России как-то все вокруг говорили, что будешь вязнуть в снегу и вообще холодно, а я верил 🥴. Но, во-первых, снега почти не было, а если и был, то на короткие дистанции и по снегу норм. Во-вторых, мороза тоже особо не было, максимум -12, и то несколько дней. Никто же боится замёрзнуть на лыжах в –15-20, — хотя по большому счёту это то же самое. И я не один такой: по ощущениям, зимой продолжает кататься процентов 30 велосипедистов.
Кубер
Ну штош, вот и я своими ручонками добрался до хайпа последних лет, кубера. Не то, чтобы я очень хотел хайпануть, однако текущая архитектура чем дальше, тем больше меня пугала.
Дело в том, что у нас чуть меньше сотни разных дата джоб(ов?), и все они работают из под базового докер образа шедулера — Airflow. Это простое и прекрасно подходящее для маленького масштаба решение, however, с ростом разнообразия джобов замечаешь, как файл с зависимостями уже перестаёт помещаться на один пролёт экрана, потом на другой... Затем при обновлении Airflow обнаруживаешь, как автоматом обновляется десяток-другой библиотек, которые требуют тестирования и изменения кода. Потом падает какая-нибудь интеграция из-за депрекейта текущей версии, а чтобы её обновить, приходится обновить весь эйрфлоу с вышеупомянутыми последствиями. В итоге, вместо одного дня это занимает неделю, а всё это время джоба лежит. И вишенка: если нужно заскейлить по памяти или процу воркера, на котором запускается весь этот зоопарк, приходится скейлить всю ноду навсегда, хотя мог бы запустить джобу на on-demand compute на часик и отпустить ресурсы.
Так встал вопрос: что с этим делать? Довольно очевидным стало докеризировать каждую джобу в свой контейнер, собирать её в CI/CD, чтобы перестать растить базовый образ Airflow и иметь гибкость в обновлении отдельных джоб. Но где запускать получившиеся контейнеры? Вариантов на рассмотрение попалось несколько: запускать код на cloud function, перейти на использование всяких proprietary SaaS, типа spark cluster as service или запилить кубер.
Вариант с облачными функциями изначально нравился больше всего из-за простоты, но испугали: небольшой максимальный размер ноды (32 гб оперативки, для данных бывает нужно МНОГО), малые возможности кастомизации (по ресурсам, сети, и т.п.).
SaaS был бы следующим по простоте, но с ним две проблемы: он довольно жёстко биндит к SaaS провайдеру + он специфичен под каждый тип задачи. Под спарк нужно осваивать Spark SaaS, под другой тип задач, нужно осваивать другой SaaS, а в случае необходимости перехода к другому SaaS провайдеру... Suffer.
Кубер больше всего пугал ненужным оверхедом сложности: ведь мне нужно просто шедулить джобы поверх CPU/RAM, а ты в комплекте получаешь весь этот цирк с ямлами с сервисами/деплойментами, ментейном кубер-кластера 🤮... Но! Это оказалось относительно неплохо решаемым в мире GCP и Airflow. Во-первых, у GCP есть Autopilot версия k8s кластера, в которой он скейлится сам, и тебе ничего не нужно для этого делать вообще. Во-вторых, у Airflow есть из коробки k8s-operator'ы, которые позволяют ничего не знать про yml-файлы кубера, а просто описать, какой докер имедж на каких ресурсах ты хочешь запустить, и ОНО РАБОТАЕТ. 3 месяца, полёт нормальный.
Самая трудозатратная часть оказалась написать CI/CD пайплайн, собирающий докер-образы и пушащий их в репозиторий — отчасти потому, что я никогда этого не делал, отчасти потому, что там вылезло много мелких нюансов: от авторизаций, до запуска авто-тестов и матчинга имени докер образа при его билде и потом при вызове в кубере.
Доволен ли я получившимся? И да, и нет. Работает оно хорошо. Однако, времени на CI/CD и проектирование архитектуры ушло много: всё это я пилил несколько месяцев.
Интересно ваше мнение: как бы вы предпочли решать подобную проблему?
Позавчера я узнал, что у нас рядом с Нючёпингом пройдёт этап раллийного чемпионата. Человек, потративший сотни часов на игру в Colin McRae Rally 2.0, не мог пропустить этого
Теперь о минусах:
– Доступность медицины. Она бесплатная (кроме зубов), хорошая, только вот получить её не всегда легко. У шведов собственное представление о срочности твоих болячек и есть чувство, что если ты не умираешь, они пытаются тебя слить и отправить пить чай с медком, угрожая годовым ожиданием места в очереди. Впрочем,с непосредственно врачами (а вернее, lekar'ями 👩🏼⚕️) опыт пока хороший.
– Родные и друзья. Это грусть и одиночество. Конечно же, никто не переехал вслед за нами, и мы оказались одни в стране с другим языком и без школьных/институтских друзей. У меня ещё хотя бы есть работа, а жене, конечно, с этим труднее.
Дальше есть три варианта развития событий: ты страдаешь и ноешь, что в России было лучше; ты страдаешь и пытаешься переизобрести коммуникацию с близкими, пользуясь видеочатиками и встречаясь пару раз в год на нейтральной территории; ты страдаешь и пытаешься познакомиться с кем-нибудь из местных и сознательно уделаешь внимание и время развитию новых знакомств (что большинство из нас разучилось делать с началом взрослой жизни).
– Отсутствие поддержки. Ещё один пункт, связанный с самим переездом больше, чем со Швецией. В России мы знали, что всегда найдётся кому отдать кошку на время отпуска, отдавали ребёнка бабушкам/дедушкам на выходные, чтобы поехать по своим делам. Здесь же такой возможности нет, приходится рассчитывать только друг на друга. Даже просто съездить на панк-концерт вдвоём или в барчике посидеть оказывается иногда нерешаемой задачей: и вы либо тащите ребёнка в бар и общаетесь/гуляете с ребёнком по очереди, либо не едете вообще, потому что «ой, ну всё так сложно».
Суммируя, 1 год полёт хороший. Пока в планах оставаться и дожидаться гражданства. Впрочем, в 23 году строить планы даже на год кажется наивным.
Спрашивайте в комментах, что волнует вас в (или останавливает вас от) переезда?
Год в Швеции
9 мая прошёл год с нашего переезда в Швецию. Вот промежуточные итоги и слепок нашего эмоционального состояния:
– В целом мы рады нашему переезду, хоть есть и отдельные моменты, которые бесят/расстраивают. О них отдельно ниже.
– Мы собирались уезжать ещё из России образца 21 года. В 22 году всё стало только хуже. Возвращаться жить на родину при нынешней власти не хочется. И на самом деле, как бы ни была хороша Швеция, — именно это основная причина, почему мы здесь 🙁
– Швеция классная, разумная, спокойная страна. Мне нравится, что здесь не принимают репрессивных законов, люди верят в выборы и ходят на них (явка 84%), и в целом ты доверяешь, что в правительстве не натворят хуйни, а сделают что-то целесообразное. А когда они ошибаются, это случается хотя бы не злонамеренно, и потом законы фиксят.
– Экология 😍. Мусор на улицах встречается, но уровень гармонии человека с природой просто несравненный. Чистый воздух (даже в центре Стокгольма), чистая вода, переработка мусора, электрокары, велосипеды, реюз, секонд-хенды, и это повсеместно.
– Природа. Гранитные скалы, сосны, мхи, озёра каждые пару сотен метров; неожиданно много солнечных дней. Куча троп для трекинга и велосипеда. Выглядит всё так, как если бы ты жил в горах Кавказа без снега, хотя ты не горах) Кайф.
– Культура. Шведы довольно близки мне по культуре: уважительны к чужим границам, но теплы и приветливы при общении; хамства так и вовсе почти не встречал (что не мешает им учтиво отказывать мне в госструктурах. Но по крайней мере я не чувствую себя униженным).
– Ребёнок. С детьми в Швеции хорошо: бесплатный садик (100 евро в месяц, компенсируемые выплатой на ребёнка), бесплатная медицина. В садике классно: первые две недели идёт адаптация, когда ты вместе с ребёнком приходишь в сад, участвуя во всех движах. И родителю даёт успокоиться, и ребёнку проникнуться доверием. Даже несмотря на отсутствие языка у сына, ему нравится туда ходить.
– Деньги. Мы значительно просели в финансах. По ощущениям, как будто тебе сократили зп в полтора раза. Раньше я эти 50% «лишних» процентов откладывал и копил, сейчас же мы живём практически в ноль, откладывая 0-500 евро в месяц. Но мы знали, на что идём и не страдаем) С другой стороны, если жена найдёт работу, получать она будет в разы больше, чем на родине, и положение кардинально изменится.
Год в Швеции
9 мая прошёл год с нашего переезда в Швецию. Подведу промежуточные итоги и сделаю слепок эмоционального состояния:
– В целом мы
Договориться нельзя посраться
Сейчас тут будет опыт от турбовип-переговорщика с 40-летним стажем. Чтобы вы прочувствовали уровень моих компетенций в теме, до сих пор моя стратегия на любые переговоры на работе была такая: «Либо они дают, что ты хочешь, либо обижайся и меняй компанию».
На этот раз я схлестнулся с командой платформы (читай, девопсы). В Fishbrain используются два облака: AWS, обмазанный платной поддержкой с SLA-ми для продакшн серверов, и GCP с BigQuery для всего, связанного с данными и аналитикой.
AWS нежно обожаем девопсами — там ими наразработано куча тулзов, большая часть инфры занесена в Terraform, прикручен DataDog и всё такое остальное. В GCP же инфраструктура настроена по-старинке тыками мыши по админке. Разумеется, девопсы очень не любят GCP, потому что в нём нафигачено кто во что горазд + они его просто плохо знают.
Меня же, наборот, подташнивает от одного вида веб-интерфейсов AWS в стиле web 1.0, от его зачастую неполной документации, неинтуитивных интерфейсов и API-шек, и некоторых откровенно криво реализованных продуктов (привет, AWS Glue!). У гуглооблака на мой вкус по всем этим пунктам дела обстоят лучше.
И вот, решил я поддаться моде и развернуть кубернетис, чтобы запускать в нём дата джобы. Разумеется, в гуглооблаке: я его люблю, плюс BigQuery под рукой, не надо кросс-облачных перегрузок городить. Одна загвоздка — чтобы дата джобы могли тянуть данные из прода, нужно настроить нетворкинг между GCP и AWS. И я ваще нуб в этом. Пошёл с челобитной к девопсам, прочитал в их глазах осуждение и получил ответ — так в AWS же есть прекрасный кубер, не хочешь ли использовать его? Ох... тут я погрузился на дно прокрастинации, так как запахло конфликтом, в котором (считано по интонации) ни одна сторона не хочет уступать. С одной стороны, я не люблю и не умею давить на других людей, с другой — я предчувствовал, что с высокой долей вероятности я получу несколько месяцев работы с кубером от AWS и захочу уволиться.
Но так или иначе задачу решать надо было, так что организовали митинг, мол, чё будем делать. Как строить переговоры? Долго думал и решил принять максимально нейтральную позицию: защищать не свои интересы, рискуя получить аналогичную защитную позицию со стороны девопсов, но защищать интересы компании. И о чудо, после первых сдеражнных тычков друг в друга, пошёл довольно контруктивный диалог.
Что разумнее с точки зрения компании, технической архитектуры? В AWS много тулзов девопсов. С другой стороны, для кубера они малоприменимы. Плюс, все дата джобы грузят в/из BigQuery, который в гугловском облаке, так что с гуглокубером не будет трат на межоблачный нетворкинг + меньше зависимостей (не надо тащить AWS библиотеки). По факту, единственный сильный аргумент в сторону AWS был в уже настроенной сети с продом, но это вопрос решаемый.
В итоге сошлись на том, что мы начнём заносить гуглооблако в Terraform, наводить в нём порядок, и в качестве первой задачи девопсы как раз настроят нетворкинг и всё что для него необходимо через Terraform. Со своей стороны я пообещал помочь, консультируя по гуглооблаку и повыпиливать из него мусор.
Победа, но не над коллегами, а вместе с ними!
DoiT — красавчики
На прошлой неделе я впервые катал на айтишное онлайн обучение: ребята из DoiT (компания оказывает подержку по гуглооблаку) устраивали бесплатный оффлайн курс "Kubernetes in Google Cloud: foundamentals" (ясное дело с пиццей и афтерпивом).
Дело было в Амстердаме, и это чертовски красивый город. Если любите кирпичные дома, обилие деталей, смотрели «Залечь на дно в Брюгге» и вам понравилось — город доставит. Фоточки города будут внизу, но сегодня речь о самих DoiT.
Раньше мы пилили в компании всякие фичи вокруг гугловского облака, и не было у нас никакой поддержки. И тут, уже больше года назад, аккаунт из гугла внезапно написал, мол: «Давайте встретимся, познакомимся я продам вам кучу ненужной хери?». Я был настроен скептично, но вай нот, как говорится, договорились о созвоне.
Сперва я удивился тому, что они ничего нам не пытались продать, потом я совсем не поверил ушам: услышав, что у нас нет поддержки, они предложили нам запартнёриться с компанией DoiT. Причём для нас стоимость услуг останется прежней, но появится премиальная поддержка от DoiT + такая же поддержка Гугла. «В чём наколка?» — резонно спросили мы. «А нет никакой наколки», — было отвечено. Мы, конечно, до конца не поверили, но опять же, вай нот, давай попробуем.
И это решение стало одним из лучших для меня, постоянно пилящего и изучающего гуглооблако. Мало того, что ребята оказывают очень шуструю и качественную поддержку; они запилили удобный личный кабинет с простым интерфейсом для просмотра трат в облаке (например, можно посмотреть, топ-50 самых дорогих запросов в BigQuery), консультируют по архитектурным вопросам; так они ещё и периодически выкатывают классные и бесплатные обучалки, которые ведут шарящие спецы. За последний месяц я постетил две обучалки по kubernetes + одну по изменениям прайсинга в BigQuery — и это сэкономило мне несколько дней копания в документации.
Так что если вы в гуглооблаке, однозначный рекомендасьон запартнёриться с ними. И да, это не реклама, от души ❤️.
