TGViewer
Bite the Byte Bite the Byte @bitethebyte · 3.38K subscribers
Post #132 1.22K
AWS

Пам‘ятаєте попередній пост про те що треба трохи даних обробити та зробити дешборд? Ну авжеж, це ж тільки два тижні тому було. А знаєте, чим я займався ці два тижні?.. Не тільки цим, але я просто в ужасі. Не читайте далі, якщо технічні подробиці вас лякають.

Зробити скрипт, який закидує дані з цсв у постгрес у мене вийшло за день з невеличким. А ось потім щось пішло не так... Чомусь я вирішив замість простої схеми «осьо віртуальний сервер, там все запустили й поїхали», що треба якомога більше managed все мати, щоб потім це не підтримувати. Амазон же ж багато всього пропонує!

Значить вимальовується така схема: завантажуємо файли в S3, це триггерить Lambda, яка файл обробляє і складає в інший бакет, звідки його читає Athena через Glue, а показує дані QuickSight. Я зазвичай дотримуюсь правила «не більше однієї незнайомої технології на проєкт», але цей казався маленьким і гідним того, щоб зробити один раз надійно.

1️⃣ Lambda

Я тут задовбався, але може окремо напишу — в мене вийшло 5 абзаців, а в телеграмі є обмеження на довжину повідомлення. :( З цікавого в результаті: парсинг пайтоном ікселю на 7 мб на ноуті займає 7 секунд, на хецнері за 5 євро - 14, на лямбді - 40-50.

2️⃣ QuickSight

Зібрали дешборд на квіксайті, і виявилося що оновлення буде не дуже в реалтаймі. Ну типу можемо кілька разів на день оновлювати, але часто (або по триггеру з лямбди, що теж потенційно часто) - буде дорого. Ооок, але наче працює, давайте покажемо світу? Хрін там! Публічним квіксайт зробити неможливо!

3️⃣ Athena

У цей момент я психанув, зарентив ec2 і запхав туди метабейз. Для метабейзу є сторонній коннектор для Афіни, тож, думаю, зара буде все супер. Метабейз поїхав, побачив дані, їх схему, єєє, перемога. Зараз все буде.

Тільки дата, за якою я хочу мати фільтр, це строка, а не date чи timestamp. Тому Афіна каже "вибачте, для цього оператор >=" застосовувати неможливо. Окей, знайшов, що схема даних визначається у Glue, змінив на timestamp зі string, як справи? Помилка, каже, Hive таку дату розпарсити не може.

Тож зробив я додаткову колонку, date.timestamp() * 1000 — ну там же ж Хайв, він точно захоче міллісекунди (я такий здогадливий, це жах). Фух, запрацювало!

Повільно тільки... Ну ладно, Metabase вміє кешувати результати, тож у середньому може буде не сильно боляче. Ну і ще фільтрація чутлива до регістру, наче баг в метабейзі — але це можна обійти, переробив запроси на SQL замість конструювання в інтерфейсі.

4️⃣ S3

Ну все, залишилося тільки навчити замовника завантажувати файли в S3. А там теж інтерфейс мрії, купа кнопок, а ще неможливо зробити так, щоб користувач тільки 1 бакет бачив... Написав інструкцію, записав Loom з демкою, і в кінці навіть зідвонилися телефоном — і в неї білий екран замість прогрес-бару аплоаду. Я без дупля, що там за проблема, домовилися на наступний день у зумі подивитися.

Прокинувся зранку і закинув файл: наче все нормально, але трошки форматування цифр у коментарі не подобається. Ок, поправив скрипт, задеплоїв лямбду, закинув файл заново — і помітив, що в метабейзі дублюються дані.

А логіка в мене така: з клієнт-банку будуть окремі файли, і за один період у файла буде завжди одна й та сама назва. Тож я просто заміняю файл з такою ж назвою і тоді дублювання даних немає. От тільки я бачу дивне — у бакеті з результатом два файли з однаковим іменем. По всім докам і обговоренням в інтернеті такого бути не може, але я бачу. Ну жесть.

5️⃣ Інтерфейси

Хочу звернути особливу увагу, що це ж все low-code, тобто гемор. Всі налаштування відбуваються у купі форм на купі сторінок, кожна з яких завантажується мінімум кілька секунд, щось змінити — все ж unbundled — це піти потикатися у три-чотири різних сервіси, а потім у термінал подивитися логи лямбди. Цикл фідбека довжиною у хвилини, просто нереально повільно рухаєшся.

6️⃣ Ми тут

Схоже шо перероблю на шось простіше з постгресом. Бо я хз, хто цим може нормально користуватися. Здається, що AWS тримає людей у заручниках і викликає стокгольмский синдром.
  • 👍 18
  • 🔥 1
More from @bitethebyte
  1. Aug 31, 2026‍Лагідна українізація дісталася до алібаби 😁
  2. Aug 24, 2026Вітаю всіх з днем відновлення незалежності! З цього приводу в ДОУ вийшов спецвипуск подкас…
  3. Aug 23, 2026А ви йдете на пікнік ДОУ? Я от нарешті йду. 😁 Дуже прикольно, що є івент, який якби конфе…
  4. Aug 13, 2026Щось зранку задумався над IBAN’ами, і випадково усвідомив, що вони — це ж така сама адреса…
  5. Jul 16, 2026Ну й відстойні ж новини. :( Нажаль, внутрішня політика знов перемогла здоровий глузд, але…
  6. Jun 10, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →