Forwarded from Мамкін Архітектор
Ну шо, трошки хайпанемо на чужій біді (хоча вона не така вже і чужа — багато хто відчув її на собі). Шо ж сталось з амазоном?
Це може прозвучати смішно, але цього разу знову проблеми з DNS. У пост мортемі є деталі, але там якось дуже багато тексту мілким шрифтом, тому ось вам TL;DR;
Є ціла екосистема, що керує DNS записами для dynamoDB. Там постійно створюються і прибиваються лоад балансери, аби контролювати навантаження, за ними слідкує такий собі DNS planner, він робить плани (по суті список актуальних балансерів), ці плани підхоплюють так звані enactors, які закидають їх в Route53. Енакторів по одному на зону доступності, тобто три, і в них відбувся рейс кондішен.
Один з них почав повільно працювати, в той час інший швиденько все оновив, а потім хтось з них щось десь перезатер і в результаті
Тобто dynamoDB тупо зникло для усіх сервісів, що його використовують (а це більшість). На відновлення знадобилось біля трьох годин. Але це було ще не все.
Поки лежала дінама, підсистема планування EC2, визначила, що більшість дроплетів (поставте лайк, якщо ви теж не знали, що дроплети не лише в digital ocean), недоступні. Бо їхні статуси "зайнятий / можна віддать комусь" зберігались в дінамо, яка була в комі. А коли дінама повернулась, то велика кількість EC2 інстансів, який треба було маркнути як "доступний", призвела до того, що запити падали з таймаутами, і відповідно, інстанси не видавались.
Інженери AWS розрулили це тротлінгом запитів, в результаті все запрацювало ОК через 12 годин після початку інциденту.
Ну і на останок були приколи з мережою, там network manager залип, розбираючи апдейти мережі, що накопичились за час, поки все лежало. Ще + 5 годин і + 3 на фінальні зняття обмежень.
Пікантності ситуації додало ще те, що us-east-1 це не простий регіон. В ньому знаходяться критичні сервіси, що впливають на роботу усього AWS, наприклад, логін сторінка на портал. Тому були проблеми і в інших регіонах.
Ось така історія, дуже цікаво, як це все відбувалось всередині, і які з цього будуть висновки.
Це може прозвучати смішно, але цього разу знову проблеми з DNS. У пост мортемі є деталі, але там якось дуже багато тексту мілким шрифтом, тому ось вам TL;DR;
Є ціла екосистема, що керує DNS записами для dynamoDB. Там постійно створюються і прибиваються лоад балансери, аби контролювати навантаження, за ними слідкує такий собі DNS planner, він робить плани (по суті список актуальних балансерів), ці плани підхоплюють так звані enactors, які закидають їх в Route53. Енакторів по одному на зону доступності, тобто три, і в них відбувся рейс кондішен.
Один з них почав повільно працювати, в той час інший швиденько все оновив, а потім хтось з них щось десь перезатер і в результаті
dynamodb.us-east-1.amazonaws.com позбувся усіх IP адрес. Тобто dynamoDB тупо зникло для усіх сервісів, що його використовують (а це більшість). На відновлення знадобилось біля трьох годин. Але це було ще не все.
Поки лежала дінама, підсистема планування EC2, визначила, що більшість дроплетів (поставте лайк, якщо ви теж не знали, що дроплети не лише в digital ocean), недоступні. Бо їхні статуси "зайнятий / можна віддать комусь" зберігались в дінамо, яка була в комі. А коли дінама повернулась, то велика кількість EC2 інстансів, який треба було маркнути як "доступний", призвела до того, що запити падали з таймаутами, і відповідно, інстанси не видавались.
Інженери AWS розрулили це тротлінгом запитів, в результаті все запрацювало ОК через 12 годин після початку інциденту.
Ну і на останок були приколи з мережою, там network manager залип, розбираючи апдейти мережі, що накопичились за час, поки все лежало. Ще + 5 годин і + 3 на фінальні зняття обмежень.
Пікантності ситуації додало ще те, що us-east-1 це не простий регіон. В ньому знаходяться критичні сервіси, що впливають на роботу усього AWS, наприклад, логін сторінка на портал. Тому були проблеми і в інших регіонах.
Ось така історія, дуже цікаво, як це все відбувалось всередині, і які з цього будуть висновки.
👍3
Сподіваюся робочий тиждень у всіх почався добре!
Ось смішне з твітеру:
https://x.com/0xgaut/status/2011099638817018345
Але, сам вже з півроку користуюся cursor, і звик! Задачі типу «перепиши все, щоб було добре» це поки занадто, але конкретні реалізації невеличких частин коду він робить переважно добре. По моїм відчуттям економить багато часу, який був би витрачений на пошук документації і у документації, та й на знайомство з кодовою базою. Хто не спробував ще - спробуйте, може й вам буде до помочі
Ось смішне з твітеру:
https://x.com/0xgaut/status/2011099638817018345
Але, сам вже з півроку користуюся cursor, і звик! Задачі типу «перепиши все, щоб було добре» це поки занадто, але конкретні реалізації невеличких частин коду він робить переважно добре. По моїм відчуттям економить багато часу, який був би витрачений на пошук документації і у документації, та й на знайомство з кодовою базою. Хто не спробував ще - спробуйте, може й вам буде до помочі
X (formerly Twitter)
gaut (@0xgaut) on X
"yea I'm a full stack engineer"
the stack:
the stack:
Це просто шикарно (з просторів лінкедіну):
During a 1:1 at Amazon my manager said:
"If you want to grow in tech, you need visibility. The best way to achieve this is to take initiative."
So I rebooted the production database without being asked.
Now I’m known across teams.
:)
During a 1:1 at Amazon my manager said:
"If you want to grow in tech, you need visibility. The best way to achieve this is to take initiative."
So I rebooted the production database without being asked.
Now I’m known across teams.
:)
😁12
◆ THE UNIX WAY ◆
Episode 05: The Original Microservices
grep was written in 1973. awk in 1977. sed in 1974. sort, uniq, cut, wc: all before 1980. Each does one thing. Each takes text in and puts text out. Each composes with any other through a pipe.
The industry spent the last decade building vastly more complex solutions for what these tools have done all along. Then it called the pattern "Microservices." Quite.
■ The Pattern
Every microservices tutorial teaches the same principles. Unix had them in 1973:
Single responsibility: each tool does one thing. grep filters. sort sorts. uniq deduplicates. No tool tries to do two things.
API contract: stdin and stdout. Text in, text out. The universal interface. No schema registry, no versioning endpoint, no contract testing framework.
Message queue: the pipe. One process writes, the next reads. Backpressure built in. Zero configuration.
Service discovery: $PATH. The shell knows where every tool lives. No Consul, no etcd, no DNS sidecar.
Orchestration: the shell script. Sequential, parallel (xargs -P), conditional (exit codes). A few lines, not a YAML cathedral.
Observability: tee. Tap into any data stream between any two services, live, without modifying either one. No agent, no $23/host/month.
■ The Example
grep 404 access.log | cut -d' ' -f7 | sort | uniq -c | sort -rn | head -20
Six services. One pipeline. Each stateless, each composable, each replaceable. 10,000 requests analysed, top 20 error paths, sorted by frequency. Milliseconds. FreeBSD, Debian, macOS: it is already installed.
The industry sells you ELK for this. Elasticsearch alone: 4-8 GB heap. grep: 2 MB. One might call that a markup.
■ The Repackaging
Docker took cgroups and namespaces (kernel features since the 1990s) and added a daemon, a hub, and a subscription. FreeBSD jails did this in 2000, thirteen years earlier: 2-4 MB overhead vs 50 MB Alpine, no daemon between you and the kernel.
Kubernetes buried iptables, cgroups, and etcd under 12-24 GB of control plane RAM. Marvellous engineering, that: making reliable things unreliable, then selling the fix.
■ THE POINT
These tools are compiled, optimised, battle-tested for half a century. They implement the microservices pattern in its purest form: small, stateless, composable through a universal interface.
Nothing wrong with selling good solutions. But these created more problems than they solve. Larger attack surface. Hardware costs multiplied by factors the originals never required. New roles hired to maintain what needed no maintaining. Staff sent through certification programmes so they can operate licenced products that replicate what the kernel already provides.
The industry did not ignore the Unix philosophy. It repackaged it, not to make it more accessible, but to make it more billable. Everything underneath was already there.
The tools are there. They always were. Rather patiently waiting, one might add.
Зкопійовано звідси: https://www.linkedin.com/posts/vvoss_theunixway-freebsd-linux-activity-7431627385630007297-8Fdl
Episode 05: The Original Microservices
grep was written in 1973. awk in 1977. sed in 1974. sort, uniq, cut, wc: all before 1980. Each does one thing. Each takes text in and puts text out. Each composes with any other through a pipe.
The industry spent the last decade building vastly more complex solutions for what these tools have done all along. Then it called the pattern "Microservices." Quite.
■ The Pattern
Every microservices tutorial teaches the same principles. Unix had them in 1973:
Single responsibility: each tool does one thing. grep filters. sort sorts. uniq deduplicates. No tool tries to do two things.
API contract: stdin and stdout. Text in, text out. The universal interface. No schema registry, no versioning endpoint, no contract testing framework.
Message queue: the pipe. One process writes, the next reads. Backpressure built in. Zero configuration.
Service discovery: $PATH. The shell knows where every tool lives. No Consul, no etcd, no DNS sidecar.
Orchestration: the shell script. Sequential, parallel (xargs -P), conditional (exit codes). A few lines, not a YAML cathedral.
Observability: tee. Tap into any data stream between any two services, live, without modifying either one. No agent, no $23/host/month.
■ The Example
grep 404 access.log | cut -d' ' -f7 | sort | uniq -c | sort -rn | head -20
Six services. One pipeline. Each stateless, each composable, each replaceable. 10,000 requests analysed, top 20 error paths, sorted by frequency. Milliseconds. FreeBSD, Debian, macOS: it is already installed.
The industry sells you ELK for this. Elasticsearch alone: 4-8 GB heap. grep: 2 MB. One might call that a markup.
■ The Repackaging
Docker took cgroups and namespaces (kernel features since the 1990s) and added a daemon, a hub, and a subscription. FreeBSD jails did this in 2000, thirteen years earlier: 2-4 MB overhead vs 50 MB Alpine, no daemon between you and the kernel.
Kubernetes buried iptables, cgroups, and etcd under 12-24 GB of control plane RAM. Marvellous engineering, that: making reliable things unreliable, then selling the fix.
■ THE POINT
These tools are compiled, optimised, battle-tested for half a century. They implement the microservices pattern in its purest form: small, stateless, composable through a universal interface.
Nothing wrong with selling good solutions. But these created more problems than they solve. Larger attack surface. Hardware costs multiplied by factors the originals never required. New roles hired to maintain what needed no maintaining. Staff sent through certification programmes so they can operate licenced products that replicate what the kernel already provides.
The industry did not ignore the Unix philosophy. It repackaged it, not to make it more accessible, but to make it more billable. Everything underneath was already there.
The tools are there. They always were. Rather patiently waiting, one might add.
Зкопійовано звідси: https://www.linkedin.com/posts/vvoss_theunixway-freebsd-linux-activity-7431627385630007297-8Fdl
LinkedIn
#theunixway #freebsd #linux #devops #unix | Vivian Voss | 57 comments
◆ THE UNIX WAY ◆
Episode 05: The Original Microservices
grep was written in 1973. awk in 1977. sed in 1974. sort, uniq, cut, wc: all before 1980. Each does one thing. Each takes text in and puts text out. Each composes with any other through a pipe.
The…
Episode 05: The Original Microservices
grep was written in 1973. awk in 1977. sed in 1974. sort, uniq, cut, wc: all before 1980. Each does one thing. Each takes text in and puts text out. Each composes with any other through a pipe.
The…
❤4
Пан Альтман, звичайно, хайпує і просто привертає до openAI увагу, але імхо не безпідставно. Якась доля правди в його словах, мабуть, є.
https://futurism.com/artificial-intelligence/sam-altman-thanks-programmers-over
https://futurism.com/artificial-intelligence/sam-altman-thanks-programmers-over
Futurism
Sam Altman Thanks Programmers for Their Effort, Says Their Time Is Over
Sam Altman argued it was "already feels difficult to remember how much effort it really took" for coders to write software.
Ні, не жарт
https://arstechnica.com/ai/2026/03/entire-claude-code-cli-source-code-leaks-thanks-to-exposed-map-file/
Репозиторій: https://github.com/nirholas/claude-code
https://arstechnica.com/ai/2026/03/entire-claude-code-cli-source-code-leaks-thanks-to-exposed-map-file/
Репозиторій: https://github.com/nirholas/claude-code
Ars Technica
Entire Claude Code CLI source code leaks thanks to exposed map file
512,000 lines of code that competitors and hobbyists will be studying for weeks.
👍3
Якщо все ще маєте трішки часу у вихідний день - можна завершити цим відео з інтерв’ю з Мартіном Клепманом:
https://m.youtube.com/watch?v=SVOrURyOu_U
https://m.youtube.com/watch?v=SVOrURyOu_U
👍3
Почув нещодавно про cmux - хайповий термінал, зроблений під використання усіляких АІ агентів, такий от продукт свого часу. Імхо варто спробувати - ідея з нотифікаціямм та воркспейсами уже норм сама по собі. Ділюся посиланнями.
Коротеньке демо:
https://youtu.be/i-WxO5YUTOs
Сторінка:
https://cmux.com/uk
Коротеньке демо:
https://youtu.be/i-WxO5YUTOs
Сторінка:
https://cmux.com/uk
YouTube
cmux - the terminal built for multitasking
https://cmux.dev
https://github.com/manaflow-ai/cmux
I run a lot of Claude Code and Codex sessions in parallel. I was using Ghostty with a bunch of split panes, and relying on native macOS notifications to know when an agent needed me. But Claude Code's…
https://github.com/manaflow-ai/cmux
I run a lot of Claude Code and Codex sessions in parallel. I was using Ghostty with a bunch of split panes, and relying on native macOS notifications to know when an agent needed me. But Claude Code's…
❤2👍1