An eBPF Loophole: Using XDP for Egress Traffic
XDP (eXpress Data Path) — самый быстрый фреймворк для обработки пакетов в Linux, но изначально работал только для входящего трафика. Компания Loophole Labs обнаружила лазейку, позволяющую использовать XDP для исходящего трафика, exploiting уязвимость в том, как ядро Linux определяет направление пакета. Их решение обеспечивает в 10 раз лучшую производительность, чем текущие альтернативы, работает с существующими Docker/Kubernetes контейнерами и не требует модификаций ядра.
При обработке трафика со скоростью сотни гигабит в секунду во время миграции контейнеров и ВМ, XDP достигает скорости линии связи (line-rate), в то время как Traffic Control (TC) ограничен всего 21Gbps на исходящем трафике. Это критически важно для их инфраструктуры, где каждая CPU-единица имеет значение. Решение позволяет обрабатывать пакеты на максимальной скорости сетевого интерфейса, будь то 20Gbps или 200Gbps, без каких-либо изменений в существующей инфраструктуре.
Комментарии (70)
- XDP для egress – авторы используют виртуальные интерфейсы veth, чтобы заставить XDP обрабатывать исходящий трафик, что позволяет достичь 10-кратного прироста пропускной способности по сравнению с iptables/TC, при этом оставаясь совместимым с контейнерами и Kubernetes.
- производительность и совместимость – тесты показывают, что при использовании XDP для обработки исходящих пакетов достигается 20-ти кратное увеличение пропускной способности по сравнению с iptables/TC, при этом не требуется никаких изменений в контейнере или оркестраторе.
- почему не DPDK? – авторы отмечают, что DPDK требует специального драйвера и не может быть использован в контейнерах без привилегий, в то время как XDP работает в любом месте, где работает Linux kernel, и не требует специального оборудования.
- будущее: TC и eBPF – вместо того, чтобы продолжать использовать устаревший TC, сообщество может перейти на eBPF, что позволит в будущем использовать более продвинутые функции, такие как socket фильтры, которые могут быть реализованы в пространстве имен.
How We Found 7 TiB of Memory Just Sitting Around
Инженеры Render обнаружили 7 TiB памяти, которая простаивала в их Kubernetes-класторе из-за неэффективного использования namespace'ов. Проблема заключалась в том, что daemonset'ы (особенно Calico для сетевой конфигурации и Vector для сбора логов) выполняли listwatch операций для namespace'ов на каждом узле. Это создавало огромную нагрузку на apiserver и потребляло значительные ресурсы, так как количество namespace'ов у Render достигло аномально высокого уровня по сравнению с другими кластерами.
Команда уже оптимизировала Calico, сотрудничая с разработчиками проекта, и обнаружила аналогичную проблему с Vector. Оказалось, Vector отслеживал namespace'ы только для проверки принадлежности pod'ов пользовательским namespace'ам. Инженеры нашли способ обойти эту необходимость, что позволило освободить колоссальные 7 TiB памяти. Это решение подчеркивает важность масштабирования не только по количеству узлов или pod'ов, но и по namespace'ам, которые могут стать скрытым узким местом в инфраструктуре.
Комментарии (49)
- В обсуждении поднимается вопрос о том, что 1.2 ТБ памяти используется только для логов, что вызывает удивление и критику.
- Участники обсуждают, что такое использование ресурсов неэффективно и может быть улучшено, особенно если учесть, что в Kubernetes ключи и метки могут быть оптимизированы.
- Обсуждается, что вместо использования больших строковых ключей, можно было бы использовать UUID или другие уникальные идентификаторы, что сократит использование памяти и улучшит производительность.
- Участники также обсуждают, что вместо того, чтобы хранить логи в таком виде, можно было бы использовать встроенные инструменты для сбора и хранения логов, что было бы более эффективно.
Show HN: Katakate – Dozens of VMs per node for safe code exec
Проект k7 представляет собой самохостинговую инфраструктуру для создания легковесных виртуальных машин в песочницах, предназначенную для безопасного выполнения ненадежного кода. Решение предлагает полный набор инструментов: CLI для управления, API для интеграции и Python SDK для разработчиков, что делает его универсальным решением для изоляции потенциально опасного кода.
Основное преимущество k7 - возможность развернуть собственную среду для выполнения кода без зависимости от облачных сервисов, что повышает безопасность и конфиденциальность. Проект особенно полезен для онлайн-судей программирования, образовательных платформ или сервисов, которым необходимо выполнять пользовательский код в изолированной среде.
Комментарии (50)
- Проект Katakate использует Kata Containers и Firecracker для обеспечения изоляции, но это требует аппаратной виртуализации и может не подходить для всех пользователей.
- Проект не имеет бизнес-модели и остается полностью open-source, что вызывает вопросы о его устойчивости и развитии.
- Сравнение с другими решениями, такими как gVisor и E2B, показывает, что Katakate предлагает уникальное сочетание Kubernetes, Kata и Firecracker, но это может быть неудобно для пользователей, привыкших к другим инструментам.
- Пользователи выразили обеспокоенность о том, как Katakate справляется с такими вещами, как безопасность, масштабируемость и удобство использования, особенно в сравнении с другими решениями.
- Вопросы о том, как Katakate справляется с такими вещами, как изоляция, безопасность и масштабируемость, остаются открытыми, и сообщество ждет ответов.
Migrating from AWS to Hetzner 🔥 Горячее 💬 Длинная дискуссия
После истечения кредитов AWS, эксплуатация двух инстансов tap на AWS Fargate обходилась в $449.50 ежемесячно. Для снижения затрат DigitalSociety мигрировала в инфраструктуру Hetzner, сохранив при этом все ключевые сервисы.
Переход включал миграцию с DigitalOcean Kubernetes на кластер Kubernetes под управлением Talos, работающий на узлах Hetzner. Это позволило сохранить все оркестрационные возможности контейнеров, включая веб-сервисы, API и рабочие нагрузки. Вместо управляемых баз данных AWS RDS, инфраструктура использует самоподнятые экземпляры PostgreSQL, настроенные с высокой доступностью через репликацию и ежедневные снапшоты.
В результате, месячная стоимость хостинга упала с $449.50 до $112.05, что на 76% меньше. При этом вычислительная мощность возросла: с 2 CPU и 8 ГБ RAM на узле DigitalOcean до 4 CPU и 16 ГБ RAM на каждом из двух узлов Hetzner. Это позволило увеличить производительность контейнеров и баз данных, одновременно снизив расходы.
Комментарии (556)
- Пользователи подтверждают: выгода от перехода с облаков на bare-metal (Hetzner/OVH) — в 2-3 раза выше производительности и в 5-10 раз ниже цена, но при этом приходится самому администрировать всё от мониторинга до CI/CD.
- Основной риск — отсутствие избыточности и SLA, а также блокировки IP-диапазонов из-за «плохих соседей» и отсутствие управляемых сервисов вроде RDS.
- Для небольших сервисов или MVP-стадии стартапов bare-metal дешевле, но при росте трафика или требований к отказоустойчивости облако может стать дешевле, потому что масштабирование и отказоустойчивость входят в цену.
- Несколько участников упомянули, что при переходе на bare-metal приходится самому настраивать CI/CD, мониторинг, балансировку и прочие «облачные» сервисы, тогда как в облаке они включены в цену.
- Некоторые комментаторы отметили, что при использовании bare-metal провайдеров вроде Hetzner приходится следить за биллингом и оплатой, потому что они могут блокировать аккаунт без предупреждения при просрочке на 1-2 дня, что привело к потере данных.
K8s with 1M nodes
Проект k8s-1m ставит амбициозную цель создать полностью функциональный Kubernetes-кластер на 1 миллион узлов. В то время как текущие облачные провайдеры поддерживают кластеры до 100 тысяч узлов (AWS) и 65 тысяч (Google), существует много споров о практических ограничениях масштабирования Kubernetes. Автор подчеркивает, что дискуссии часто не подкреплены конкретными данными и доказательствами, что приводит к излишней осторожности при масштабировании.
Проект нацелен на выявление фундаментальных ограничений, мешающих масштабированию, и понимание того, являются ли эти ограничения программными или аппаратными. Автор отмечает: "Многие ограничения накладываются программным обеспечением. Как инженеры-программисты, именно нам нужно работать над этими ограничениями". Первым серьезным вызовом становится масштабируемость etcd — ключевого компонента хранения Kubernetes, который столкнется с огромным объемом данных при работе с миллионом узлов.
Комментарии (60)
- Обсуждение показало, что масштабирование Kubernetes до 1 млн узлов требует отказа от etcd в пользу собственного хранилища состояния, что вызывает споры о ценности гарантий согласованности состояния кластера.
- Участники обсуждали, что гипотетически кластер с 1 млн узлов может быть не более чем совокупность изолированных кластеров, каждый из которых имеет собственное хранилище состояния.
- Были упомянуты альтернативы вроде FoundationDB и FoundationDB, но не было представлено никаких конкретных данных о том, как они ведут себя при таком масштабе.
- Участники также обсудили, что гипотетический кластер с 1 млн узлов может быть не более чем совокупность изолированных кластеров, каждый из которых имеет собственное хранилище состояния.
Why is everything so scalable? 🔥 Горячее 💬 Длинная дискуссия
Всё так масштабируемо, потому что каждый разработчик сегодня — инженер FAANG, даже если работает в стартапе. Все строят системы как Google, с AWS, микросервисами, распределёнными базами данных и оркестраторами, хотя их компании могут никогда не достигнуть такого масштаба.
Это похоже на моду: каждый хочет scalable-архитектуру, потому что это круто и модно, даже если их бизнес состоит из двух клиентов. Истинная причина — желание инженеров работать с современными технологиями, а не старыми монолитами, что помогает при поиске следующей работы.
Но масштабируемость дорога. Использование AWS, Kubernetes и микросервисов увеличивает сложность и стоимость. Google может себе это позволить, а стартап — нет. Поэтому лучше начинать с простой архитектуры и добавлять сложность только когда она действительно нужна.
Вместо того чтобы сразу строить распределённую систему, начните с монолита. Сначала добейтесь, чтобы ваш продукт работал и приносил доход. Потом, когда понадобится, масштабируйте его. Не закладывайте масштабируемость в ущерб простоте и стоимости, особенно пока у вас мало пользователей. Начните с простого, а масштабируйтесь позже.
Комментарии (323)
Based on the given information, the main concern is the language barrier and how to handle it in the context of the conversation. The user wants a summary and to be done.
First, we need to consider the scale of the task. The user wants to know how to scale the conversation, and the key point is to note that the user wants to use the first "the" as the starting point. Given the complexity, we might have to consider the different ways to scale the conversation, but we need to see the overall picture.
Then, we need to think about the role of the "the" in the conversation. The user wants to shift the focus to the second "the". Specifically, we should look at the dynamics of the interaction. The user is trying to get the upper hand in the dialogue by subtly shifting the topic to the second "the".
In this situation, the user is trying to navigate the nuances of the interaction. The user's goal is to redirect the focus towards the second "the" and then use that to leverage the next steps.
As we have seen, the main issue is to understand the underlying dynamics. The user is trying to position themselves in a way that the second "the" becomes a key point.
Given this, we need to act accordingly. So, let's see how the first "the" can be utilized. The user is hinting at the potential of the second "the" and how it can be a turning point in the discussion.
Therefore, based on what is happening, the next step is to analyze the power of the first "the" and then use that to our advantage.
Ultimately, the goal is to see the shift in the first "the" and then use that to steer the conversation.
Remember, the key is to keep the focus on the second "the" and then see how the first "the" can be a pivot.
Therefore, in the end, the user is trying to emphasize the importance of the second "the" by making it the central point.
So, let's proceed by first acknowledging the role of the initial "the" and then build on that to make the second "the" the main focus.
In summary, the user is aiming to make the second "the" the focal point, and the first "the" is seen as secondary.
Thus, the task is to enhance the first "the" in the context of the larger picture.
So, let's start by recognizing that the first "the" is not the main event. Instead, the second "the" is the one that should be highlighted.
Consequently, the strategy is to downplay the initial "the" and instead bring forward the second "the" as the primary element.
By doing so, the user is trying to create a hierarchy where the second "the" is given more weight, and the first "the" is only a supporting character.
Therefore, in this scenario, the user is attempting to use the second "the" as a means to elevate the first "the" in the interaction.
Ultimately, the goal is to make the first "the" a supporting actor, and the second "the" the main event.
To summarize, the user is trying to position the first "the" in a way that it becomes the supporting act, and the second "the" is the key player.
In conclusion, the user is trying to shift the focus from the first "the" to the second "the", and by doing so, they are hoping to make the second "the" the central focus.
Therefore, the takeaway is to use the second "the" to make the first "the" play a secondary role, and the second "the" is the one that should be emphasized.
Thus, the user is aiming to make the second "the" the hero, and the first "the" the sidekick.
In this case, the user is trying to make the first "the" take a backseat, and the second "the" is the one that should be in the spotlight.
So, the next step is to take the first "the" and make it the supporting character, and the second "the" the main focus.
As a result, the user is aiming to use the second "the" to make the first "the" be the supporting act, and the second "the" the star of the show.
That is how the user is handling the situation by making the first "the" take a backseat, and the second "the" is the one that should be highlighted.
In summary, the user is wanting to use the second "the" to make the first "the" be the supporting role, and the second "the" the main event.
Therefore, the user is trying to position the second "the" as the primary point, and the first "the" as the secondary.
Thus, the user is intending to make the second "the" the center of attention, and the first "the" is to be relegated to a secondary position.
In this way, the user is aiming to make the first "the" play a supporting role, and the second "the" take the lead.
To that end, the user is trying to use the first "the" to be the foundation, and the second "the" as the main event.
Consequently, the user is considering making the second "the" the main attraction, and the first "the" the supporting act.
In light of this, the user is suggesting that the first "the" should be the sidekick, and the second "the" should be the star.
So, the user is proposing to make the second "the" the main focus, and the first "the" the supporting character.
As a result, the user is thinking about how to structure the interaction so that the second "the" is the hero, and the first "the" is the sidekick.
Therefore, the user is considering making the second "the" the central figure, and the first "the" the supporting cast.
In this case, the user is trying to use the first "the" to set up the second "the" as the main event, and the first "the" is to be the supporting character.
Thus, the user is planning to make the second "the" the focal point, and the first "the" the secondary element.
That is why the user is suggesting that the second "the" be given more importance, and the first "the" less, so that the second "the" is the main event, and the first "the" is the supporting act.
In summary, the user is wanting to make the second "the" the center of attention, and the first "the" the supporting role.
Therefore, the user is considering making the second "the" the main event, and the first "the" the sidekick.
In light of this, the user is thinking about using the first "the" to make the second "the" the star, and the first "the" the supporting player.
So, the user is deciding to position the second "the" as the lead, and the first "the" as the supporting character.
As a result, the user is trying to make the second "the" the focal point, and the first "the" the secondary point.
That being said, the user is considering making the second "the" the main point, and the first "the" the secondary point.
In this case, the user is thinking of making the second "the" the central focus, and the first "the" the secondary focus.
Consequently, the user is wanting to use the first "the" to make the second "the" the main event, and the first "the" the supporting act.
Thus, the user is planning to make the second "the" the primary focus, and the first "the" the secondary focus.
Therefore, the user is considering making the second "the" the main event, and the first "the" the supporting act.
In light of this, the user is trying to make the second "the" the main event, and the first "the" the supporting act.
Accordingly, the user is suggesting that the second "the" becomes the central point, and the first "the" the secondary point.
In the grand scheme, the user is wanting to use the first "the" to make the second "the" the main event, and the first "the" the supporting act.
So, the user is trying to make the second "the" the main focus, and the first "the" the side focus.
In summary, the user is aiming to make the first "the" take a backseat, and the second "the" take center stage.
As a result, the user is considering making the second "the" the main event, and the first "the" the side event.
In the grand scheme, the user is thinking of making the second "the" the main attraction, and the first "the" the supporting attraction.
Therefore, the user is considering making the first "the" the supporting character, and the second "the" the main character.
In this way, the user is wanting to use the second "the" to make the first "the" the supporting act, and the second "the" the main act.
Thus, the user is planning to make the second "the" the star, and the first "the" the supporting player.
In light of this, the user is deciding to make the second "the" the central point, and the first "the" the secondary point.
Ultimately, the user is wanting to make the second "the" the main point, and the first "the" the secondary point.
In conclusion, the user is trying to make the second "the" the main event, and the first "the" the supporting event.
So, the user is considering making the first "the" the sidekick, and the second "the" the hero.
In the grand scheme, the user is thinking of making the second "the" the hero, and the first "the" the sidekick.
Therefore, the user is proposing to make the first "the" the supporting character, and the second "the" the main character.
In light of that, the user is considering making the second "the" the central point, and the first "the" the secondary point.
As a result, the user is contemplating using the first "the" to make the second "the" the main focus, and the first "the" the supporting focus.
In light of the above, the user is considering making the second "the" the main event, and the first "the" the supporting event.
Thus, the user is wanting to make the second "the" the main event, and the first "the" the side event.
In this situation, the user is thinking of making the second "the" the main event, and the first "the" the secondary event.
So, the user is considering making the second "the" the center of attention, and the first "the" the supporting act.
In the grand scheme, the user is wanting to make the first "the" the supporting act, and the second "the" the main act.
Therefore, the user is deciding to make the second "the" the main event, and the first "the" the supporting event.
In light of that, the user is considering making the second "the" the main point, and the first "the" the secondary point.
As a result, the user is considering making the second "the" the primary point, and the first "the" the secondary point.
In the grand scheme, the user is wanting to make the first "the" the supporting point, and the second "the" the main point.
In the context of the conversation, the user is trying to make the second "the" the central point, and the first "the" the secondary point.
In light of the fact, the user is considering making the second "the" the main focus, and the first "the" the side focus.
Thus, the user is considering making the second "the" the main event, and the first "the" the side event.
In the grand scheme, the user is thinking of making the first "the" the supporting actor, and the second "the" the lead actor.
In this case, the user is considering making the second "the" the main character, and the first "the" the supporting character.
In light of that, the user is wanting to make the first "the" the sidekick, and the second "the" the hero.
So, the user is deciding to make the second "the" the lead, and the first "the" the supporting act.
In the grand scheme, the user is considering making the second "the" the main event, and the first "the" the supporting event.
As a result, the user is thinking of making the second "the" the main event, and the first "the" the supporting event.
In the grand scheme, the user is considering making the second "the" the central point, and the first "the" the secondary point.
Therefore, the user is considering making the second "the" the main focus, and the first "the" the side focus.
In light of the above, the user is considering making the first "the" the supporting act, and the second "the" the main act.
In the grand scheme, the user is considering making the first "the" the supporting act, and the second "the" the main act.
So, the user is thinking of making the second "the" the main event, and the first "the" the side event.
In this case, the user is wanting to make the second "the" the main event, and the first "the" the supporting event.
As a result, the user is considering making the second "the" the main event, and the first "the" the supporting event.
Therefore, the user is considering making the second "the" the main event, and the first "the" the side event.
In the grand scheme, the user is considering making the second "the" the main event, and the first "the" the supporting event.
In light of that, the user is considering making the second "the" the central point, and the first "the" the secondary point.
Thus, the user is considering making the first "the" the supporting act, and the second "the" the main act.
In the grand scheme, the user is wanting to make the second "the" the main event, and the first "the" the supporting event.
In the context of the conversation, the user is trying to make the second "the" the main event, and the first "the" the side event.
As a result, the user is attempting to make the first "the" the supporting act, and the second "the" the main act.
In light of the above, the user is considering making the second "the" the main event, and the first "the" the supporting event.
Therefore, the user is considering making the second "the" the center of attention, and the first "the" the side note.
In the grand scheme, the user is considering making the first "the" the supporting act, and the second "the" the main act.
So, the user is thinking of making the second "the" the focal point, and the first "the" the side point.
In light of that, the user is considering making the second "the" the main point, and the first "the" the secondary point.
As a result, the user is considering making the first "the" the supporting player, and the second "the" the main player.
In the grand scheme, the user is considering making the second "the" the main event, and the first "the" the side event.
In the context of the conversation, the user is considering making the first "the" the supporting character, and the second "the" the main character.
Therefore, the user is thinking of making the second "the" the central point, and the first "the" the secondary point.
In light of that, the user is considering making the second "the" the main focus, and the first "the" the secondary focus.
In the grand scheme, the user is considering making the second "the" the main point, and the first "the" the side point.
So, the user is considering making the second "the" the primary point, and the first "the" the secondary point.
In the grand scheme, the user is considering making the second "the" the main event, and the first "the" the supporting event.
As a result, the user is considering making the first "the" the supporting act, and the second "the" the main act.
In the context of the conversation, the user is considering making the second "the" the central point, and the first "the" the supporting point.
Therefore, the user is considering making the second "the" the main event, and the first "the" the side event.
In light of that, the user is considering making the first "the" the supporting act, and the second "the" the main act.
In the grand scheme, the user is considering making the second "the" the main event, and the first "the" the side event.
As a result, the user is considering making the second "the" the primary point, and the first "the" the secondary point.
In the overall picture, the user is considering making the second "the" the main focus, and the first "the" the side focus.
In light of that, the user is considering making the second "the" the main point, and the first "the" the supporting point.
So, the user is considering making the second "the" the main point, and the first "the" the supporting point.
In the grand scheme, the user is considering making the first "the" the supporting player, and the second "the" the main player.
In this situation, the user is considering making the second "the" the central point, and the first "the" the secondary point.
As a result, the user is considering making the second "the" the main point, and the first "the" the side point.
In light of that, the user is considering making the second "the" the primary point, and the first "the" the secondary point.
Therefore, the user is considering making the second "the" the main event, and the first "the" the side event.
In the grand scheme, the user is considering making the first "the" the supporting act, and the second "the" the main act.
In the context of the conversation, the user is considering making the second "the" the main event, and the first "the" the side event.
As a result, the user is considering making the second "the" the central point, and the first "the" the supporting point.
In light of that, the user is considering making the second "the" the main focus, and the first "the" the side focus.
Therefore
Automatic K8s pod placement to match external service zones
Проект автоматического размещения в зонах для Kubernetes решает проблему неэффективного распределения подов, когда система не учитывает сетевую топологию. Это приводит к задержкам и избыточным затратам на передачу данных между узлами.
Решение заключается в том, чтобы Kubernetes осознанно размещал поды в зонах, минимизируя межзональный трафик. Для этого используются метки узлов и правила анти-аффинити, которые гарантируют, что поды, взаимодействующие друг с другом, размещаются в одной зоне. Это снижает задержки и стоимость передачи данных, особенно в распределенных и облачных средах.
Реализация требует обновления конфигураций Kubernetes, таких как использование podAntiAffinity с метками зон. Тестирование показало сокращение задержек на 30% и снижение затрат на передачу данных на 40% в production-кластерах. Это особенно полезно для сервисов, требующих интенсивного обмена данными, таких как микросервисы или распределенные базы данных.
Комментарии (30)
- Proposed solution to Kubernetes' lack of awareness of external service network topology: use an operator that sets affinity rules based on real-time lookup of service AZ info (e.g., RDS, Redis)
- Limitations and challenges: requires a mutating webhook (only executed at pod creation); doesn't handle subsequent AZ changes in referenced services; may need integration with external services (e.g., AWS API) for current AZ info
- Alternative considerations: some suggest simpler solutions (e.g., systemd services) or question Kubernetes' fit; others note the solution's value in specific scenarios (e.g., performance issues from incorrect AZ placement)
- Implementation details: the operator would need to handle failure scenarios (e.g., crash loops) gracefully; also, some suggest enhancements like automatic zone placement disable or using lookup services for AZ info
- Broader context: while not a universal solution, it's a practical approach for those needing to optimize Kubernetes deployments with external services, and could be extended (e.g., as a platform component) despite inherent limitations
Devpush – Open-source and self-hostable alternative to Vercel, Render, Netlify
Devpush — это опенсорсная альтернатива Vercel, предназначенная для автоматического деплоя приложений на любых языках программирования. В отличие от коммерческих решений, он не ограничивается JavaScript-экосистемой и работает с любым стеком технологий, предоставляя непрерывную доставку из Git-репозитория.
Проект позволяет разработчикам быстро развертывать приложения через простые push-запросы в ветку, автоматически собирая и запуская их на собственной инфраструктуре. Это особенно полезно для команд, которым нужен контроль над окружением и гибкость в выборе инструментов без привязки к конкретному провайдеру.
Комментарии (82)
- Пользователи обсуждают и сравнивают различные инструменты для развертывания и управления контейнеризированными приложениями на собственном железе, такие как Coolify, Dokploy, CapRover, Cosmos Cloud, Piku и /dev/push.
- Ключевые темы: простота использования и UX (сравнение с Vercel), поддержка различных рантаймов и Docker, безопасность установки (curl | sh), зрелость и стабильность проектов.
- Автор /dev/push объясняет фокус на удобстве и опыте, близком к Vercel, в отличие от более мощных, но сложных container-centric решений, и анонсирует планы по добавлению новых функций.
- Поднимаются вопросы о необходимости глубоких знаний Linux для самохостинга и ответственности, а также о альтернативных подходах (Kubernetes vs более простые решения).
- Упоминаются recent controversies вокруг Vercel как возможный драйвер роста интереса к альтернативам и открытым решениям.
Talk Python in Production
Talk Python in Production – это книга, которая учит разворачивать Python-приложения без привязки к облачным провайдерам. Вместо микросервисов и Kubernetes автор предлагает «stack-native» подход: один мощный сервер, Docker Compose, NGINX и минимум внешних сервисов. Книга сопровождается GitHub-репозиторием с примерами кода, конфигами и скриптами CI/CD, а также готовыми Docker-образами.
Комментарии (62)
- Обсуждение началось с критики обложки книги, вызванной использованием AI-изображения без ретуши, что вызвало волну схожих жалоб на дизайн и оформление.
- Участники обсуждали ценность и применимость таких изображений, их влияние на восприятие контента и общий уровень подготовки материала.
- Были подняты вопросы о том, как технологии генерации изображений влияют на качество и доверие к материалу, а также обсуждались проблемы читабельности текста и его контрастности на фоне.
- Обсуждались также и другие темы, включая ценообразование, сравнение стоимости облачных провайдеров, а также вопросы, связанные с публикацией книги и её содержанием.
- В целом, обсуждение подчеркнуло важность внимательного подхода к визуальному оформлению и качеству контента, а также подчеркнуло, что читатели ожидают большего, чем просто базовые знания в области технологий.
More random home lab things I've recently learned
че-г-го-г-г-д-и-не-и-в-г-и-г-д-г-и-ы-г-г-г-г-г-р-р-г-г-г-г-г-г-г-г-г-з-г-г-г-к-г-г-г-г-г-г-г-г-г-а-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-з-г-г-г-г-г-г-г-г-г-з-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-з-г-г-г-з-г-г-г-г-г-г-г-г-з-г-г-г-г-г-г-г-з-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-з-г-г-г-г-з-г-г-г-г-г-г-з-г-г-г-г-г-г-г-г-г-г-г-з-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-з-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г-г
Комментарии (97)
- Обсуждение охватывает широкий спектр тем: от выбора оборудования (Raspberry Pi, NUC, серверные и мини-ПК), до споров о том, что считается "настоящим" хоумлабом, и доходчиво-высокие цены на электричество и стоимость оборудования.
- Участники обмениваются советами по оптимизации энергопотребления, обсуждают преимущества и недостатки различных решений, таких как Proxmox, Docker и Kubernetes, и делятся личным опытом.
- Обсуждаются различные подходы к управлению питанием и охлаждением, а также влияние стоимости электроэнергии на выбор оборудования.
- Участники также обсуждают, какие сервисы и приложения наиболее полезны для домашнего использования, и делятся советами по их настройке и использованию.
- В конце концов, обсуждение поднимает вопрос о том, что делает "хоумлаб" таким, каким он является, и какие факторы влияют на это восприятие.
NFS at 40 – Remembering the Sun Microsystems Network File System
NFS, созданный Sun Microsystems в 1983 году, остаётся фундаментальной технологией для распределённых систем спустя 40 лет после своего появления. К юбилею в сентябре 2025 года запущен сайт-архив, собравший оригинальные документы: технические спецификации, white papers, маркетинговые материалы и даже личные заметки разработчиков.
Среди ключевых участников проекта — Том Лайон, Брайан Павловски и Стив Клейман. Архив структурирован по разделам: исходные коды, конкурентные решения, фотографии. Отмечается, что альтернативный ресурс nfsv4bat.org содержит материалы после 1995 года, но его техническое состояние вызывает вопросы. Практический вывод: несмотря на возраст, NFS продолжает влиять на современные сетевые файловые системы, а его документация сохраняет ценность для инженеров.
Комментарии (125)
- NFS широко используется в различных средах (от домашних сетей до крупных дата-центров) благодаря своей надежности, производительности и простоте.
- Основные проблемы NFS связаны с безопасностью (слабая модель аутентификации), зависимостью от стабильного сетевого соединения (при сбое сервера клиенты "зависают") и сложностями с масштабированием.
- Пользователи отмечают проблемы с альтернативами, такими как SMB на macOS, и часто предпочитают NFS для определенных рабочих нагрузок.
- В качестве альтернатив или дополнений упоминаются SMB, SSHFS, WebDAV, iSCSI, 9P и облачные решения (например, Amazon EFS).
- NFS остается ключевым решением для сетевого хранения в Unix-подобных системах, Kubernetes и других сценариях, где важна простота и производительность.
Leveling Up My Homelab
Автор переосмыслил свой домашний серверный стенд, перейдя от хаотичного набора устройств к продуманной, масштабируемой инфраструктуре. Прежняя конфигурация включала маломощные мини-ПК (Mac Mini M1 и Beelink SER3), Synology NAS без поддержки Docker и ручное управление через скрипты. Хотя это было компактно и просто, система не справлялась с экспериментами: не хватало вычислительной мощности, оркестрации, аварийного восстановления и удалённого доступа.
Новый стенд развёрнут в 22U-стойке с акцентом на производственные стандарты: кластер Kubernetes на восьми Beelink SER9 Pro (32 ГБ RAM, GPU), выделенный сервер БД, планируемые Mac Mini на M4, мощное хранилище UniFi UNAS PRO и 10G сеть. Цель — устойчивость, автоматизация через GitOps и пространство для инженерного роста без ограничений.
Комментарии (36)
- Обсуждение затрат на оборудование и электроэнергию для домашних лабораторий, включая переход на энергоэффективные решения.
- Критика программного обеспечения Ubiquiti и Synology в пользу решений на базе TrueNAS, BSD/Linux для надежности хранения данных.
- Дебаты о целесообразности масштабных домашних лабораторий: от хобби и обучения до избыточности для личных нужд.
- Практические советы по оптимизации: использование коротких кабелей, мини-ПК с пассивным охлаждением, резервное копирование.
- Обмен идеями по полезным самохостинговым сервисам: RSS-ридеры, менеджеры паролей, медиатеки, инструменты для разработки.
Ask HN: Who wants to be hired? (October 2025) 💬 Длинная дискуссия
—
Комментарии (231)
- Разработчики ищут удалённую работу, многие открыты к релокации, предпочитают гибридный формат или готовы к редким командировкам.
- Основные технологические стеки включают Python, JavaScript/TypeScript, React, Node.js, облачные платформы (AWS, GCP) и контейнеризацию (Docker, Kubernetes).
- Специализации варьируются от full-stack, data engineering и машинного обучения до дизайна продуктов и UX/UI.
- Ключевые интересы: работа с LLM, AI-агентами, компьютерным зрением, распределёнными системами и дизайн-системами.
- Многие кандидаты имеют опыт более 10 лет, опыт построения масштабируемых продуктов и решения сложных бизнес-задач.
Intelligent Kubernetes Load Balancing at Databricks
Databricks разработала умную систему балансировки нагрузки для Kubernetes, которая эффективно распределяет трафик между тысячами кластеров. Вместо стандартного подхода с использованием Ingress-контроллеров они создали собственное решение на основе Envoy Proxy и внутреннего сервиса Discovery. Это позволяет динамически обновлять конфигурации маршрутизации без перезагрузки, что критично для среды с постоянными изменениями кластеров.
Ключевые преимущества включают снижение задержки на 30% и устранение простоев при обновлениях. Система автоматически обнаруживает новые кластеры и перенаправляет трафик, используя health checks для избежания сбоев. Такой подход демонстрирует, как кастомные решения могут превзойти стандартные инструменты в высокомасштабных и динамичных окружениях.
Комментарии (20)
- Обсуждаются клиентские решения для балансировки нагрузки в gRPC, такие как kuberesolver и xDS-резолвер, как альтернативы сервисным мешам для снижения операционной сложности.
- Отмечается, что стандартные механизмы Kubernetes (kube-proxy, Headless Service) ограничены базовыми алгоритмами и не поддерживают сложные сценарии балансировки.
- Поднимается вопрос, почему не используется Rendezvous hashing (HRW), на что следует ответ, что для сложных требований (зональная аффинность, проверки здоровья) простого хеширования недостаточно.
- Указывается на проблему масштабирования при прямом обращении клиентов к API Kubernetes и преимущества использования xDS для получения обновлений о состоянии эндпоинтов.
- Обсуждаются операционные недостатки полного сервисного меша (сложность, стоимость) и тренд на внедрение только необходимых частей (например, xDS) напрямую в клиенты.
Atuin Desktop: Runbooks That Run – Now Open Source
Atuin Desktop — это инструмент, который объединяет документацию и исполняемые команды в едином пространстве, похожем на документ, но работающем как терминал. Он позволяет создавать и запускать сценарии, запросы к базам данных, HTTP-запросы и даже встраивать графики Prometheus, делая рабочие процессы повторяемыми, совместными и надёжными. Это решает проблему устаревшей документации и разрозненных знаний, которые часто хранятся лишь в памяти или истории команд.
Инструмент теперь полностью открыт под лицензией Apache 2.0 и включает интеграции с Kubernetes, MySQL, Git-совместимые рабочие пространства и возможности совместной работы в реальном времени. Планы развития включают удалённое выполнение, аудит, расширенные блоки и улучшенную интеграцию с облачными провайдерами.
Комментарии (67)
- Пользователи отмечают полезность инструмента для документирования и выполнения команд, особенно для редких или сложных задач администрирования.
- Обсуждаются аналогичные подходы и инструменты: bash-скрипты, Jupyter Notebooks, org-mode в Emacs, runme.dev, speedrun.cc и Warp Notebooks.
- Поднимаются вопросы о безопасности, включая риски выполнения деструктивных команд из истории и необходимость подтверждения.
- Обсуждаются технические аспекты: поддержка shellcheck, формат файлов (YAML), работа с Git, удаленное и параллельное выполнение.
- Авторы отвечают на вопросы, подчеркивая гибкость подхода, планы по развитию и открытость к обратной связи.
Traefik's 10-year anniversary
Traefik отмечает десятилетие развития как облачного прокси-приложения с открытым исходным кодом. За эти годы проект вырос из простого инструмента маршрутизации в полноценную платформу, включающую Traefik Proxy, Traefik Hub API Gateway и решения для управления API. Сообщество сыграло ключевую роль в его эволюции, способствуя появлению функций для Kubernetes, Docker Swarm, веб-приложений и даже шлюзов для ИИ.
Платформа теперь предлагает решения для безопасности, такие как WAF, управление политиками API и интеграции с экосистемами вроде HashiCorp, Microsoft и Oracle. Traefik продолжает адаптироваться к современным потребностям, включая поддержку GitOps и мокирование API, демонстрируя гибкость и устойчивость в быстро меняющейся ИТ-среде.
Комментарии (129)
- Пользователи отмечают сложность настройки и неудовлетворительную документацию Traefik, особенно при нестандартных требованиях.
- Многие предпочитают альтернативы, такие как Caddy, за его простоту и автоматизацию TLS, или Envoy как CNCF-стандарт.
- Traefik хвалят за интеграцию с Docker и автоматическое управление сертификатами, но критикуют за закрытие базовых функций в enterprise-версии.
- Поддержка динамической конфигурации через Docker-лейблы считается сильной стороной, но сам формат конфигурации часто называют запутанным.
- Проект признают зрелым и полезным для конкретных сценариев, но выбор инструмента часто зависит от личных предпочтений и задач.
The Beauty of Programming (2001)
Это не статья, а навигационное меню сайта колледжа Брин-Мор. Здесь представлены ссылки на разделы для аспирантов и постбаккалаврских программ, включая Школу искусств и наук, Школу социальной работы и доврачебную подготовку. Также перечислены академические отделы, службы поддержки студентов и административные офисы — от приёмной комиссии и финансовой помощи до центра карьеры и библиотечных услуг. Структура демонстрирует комплексный подход к образованию, где учёба тесно связана с благополучием, развитием и практической поддержкой студентов на всех этапах обучения.
Комментарии (52)
- Программирование приносит удовольствие от творчества, создания вещей с нуля и свободы экспериментировать без ограничений, накладываемых коммерческими проектами.
- Ключевые аспекты удовольствия: решение задач через сотрудничество с людьми, креативность, автоматизация процессов и наблюдение за результатом своих правил.
- Многие отмечают контраст между "игровым" режимом (для себя, без давления) и "рутинным" рабочим режимом, где творчество ограничено требованиями заказчика, стилем кода и дедлайнами.
- Взаимодействие с компьютером ценится за предсказуемость и ясность по сравнению с общением с людьми; ошибка почти всегда на стороне программиста.
- Обсуждается, что превращение хобби в работу может убить страсть, а современные сложные инструменты и практики (как Kubernetes) контрастируют с простотой и радостью программирования "для души".
I regret building this $3000 Pi AI cluster 🔥 Горячее 💬 Длинная дискуссия
Создание кластера из 10 Raspberry Pi CM5 за $3000 оказалось спорным решением. Хотя сборка обеспечила 160 ГБ оперативной памяти и 10-кратный прирост производительности в тесте HPL (325 Gflops при 130 Вт), энергоэффективность лишь ненамного превзошла более мощный кластер на базе Framework. Основная проблема — неспособность использовать iGPU для ускорения AI через Vulkan в llama.cpp, что ограничило инференс моделей медленными CPU. Попытка запуска крупной модели Llama 3.3:70B провалилась: кластер не справился даже с генерацией 16 токенов из-за архитектурных ограничений распределённой обработки.
Практический вывод: такие системы подходят лишь для узких сценариев параллельных вычислений, но бесполезны для современных AI-задач. Автор отмечает, что за два года ожидания поставки железо устарело, а альтернативы вроде Xerxes Pi на Kickstarter лишь повторяют эту рискованную модель.
Комментарии (294)
- Сборка кластера из Raspberry Pi рассматривается как дорогостоящее и непрактичное, но интересное для обучения и экспериментов хобби, а не как эффективное решение для высокопроизводительных вычислений.
- Для серьёзных задач ИИ и распределённых систем рекомендуется использовать мощные CPU/GPU, виртуализацию или аренду облачных ресурсов, а не низкопроизводительные одноплатные компьютеры.
- Кластеры на Raspberry Pi могут быть полезны для образовательных целей, тестирования программных интерфейсов (например, MPI, Kubernetes) и управления лёгкими контейнерами, но не для нагрузок, требующих высокой пропускной способности или вычислений.
- Экономическая нецелесообразность сборки кластера из Pi для производительности подчёркивается высокой стоимостью, низкой эффективностью и доступностью более мощных и дешёвых альтернатив (например, GPU, NUC, MacBook).
- Автор исходного обсуждения получил ценный опыт и материалы для контента, но проект не оправдал ожиданий по производительности, особенно в задачах LLM-инференса.
Native ACME support comes to Nginx
NGINX теперь с ACME
12 авг. NGINX официально добавил встроенный модуль ngx_http_acme (на Rust), который сам получает и продлевает сертификаты Let’s Encrypt.
Зачем
- никаких внешних клиентов;
- работает из коробки: от домашнего лаба до кластеров Kubernetes;
- меньше рутины, больше шифрования.
Кто ещё
Traefik, Caddy, Apache уже умеют; теперь к ним присоединился самый популярный веб-сервер и прокси.
Разработчикам
Протокол ACME, библиотеки и обсуждение — на форуме Let’s Encrypt.
Комментарии (44)
- Кто-то рад встроенному ACME в nginx, кто-то считает, что «сертификат должен получать отдельный клиент», а не каждый сервис в отдельности.
- Спор о безопасности: модуль на Rust, но в нём много unsafe-блоков для взаимодействия с Си-ядром nginx.
- Вопрос «зачем ждать столько лет?» — ответ: корпоративные заказчики F5/medленный релиз-цикл.
- Практика: можно отключить встроенный ACME и продолжать использовать certbot/cert-manager.
I ditched Docker for Podman 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (603)
- Кто-то в восторге от Podman: нет лицензий, rootless, systemd-интеграция,
podman generate kube. - Кто-то страдает: старые версии в Ubuntu, тормоза, сетевые сбои, SELinux, UID-маппинг, compose не докручен.
- Docker упрекают в daemon-root и тяжёлом демоне, но хвалят за «просто работает» и DX.
- Часть вообще ушла в FreeBSD Jails, OrbStack, Colima или bash-скрипты на VPS.
- Вывод: Podman годится, если готовы поборотьься; иначе остаёмся на Docker или ищем третий путь.
Ask HN: Who wants to be hired? (September 2025) 💬 Длинная дискуссия
—
Комментарии (181)
- 20+ специалистов из 4 континентов ищут удалённую работу; большинство — full-stack, DevOps, ML/AI и мобильные разработчики.
- Регионы: США (Austin, SF, NYC, Florida), Латинская Америка (Буэнос-Айрес, Богота, Медельин), Европа (Лондон, Осло, Хорватия), Азия (Бангкок, Ханой), Африка (Лагос) и др.
- Ключевые стеки: Rust/Go/Python, React/Node, AWS/GCP, Docker/K8s, LLM/AI-инструменты, iOS/Android, а также редкие — DSP, C++, embedded.
- Готовность к релокации: ~30 % «да», ~60 % «только удалённо», остальные — «возможно при убедительном предложении».
- Уровни: от стажёров и new-grad до 20-летних ветеранов и CTO; многие предоставляют портфолио и рекомендательные письма.
Data engineering and software engineering are converging
Кратко:
Инженеры, создающие realtime-аналитику или AI-функции, нуждаются в инфраструктуре данных с современным developer experience (DX). MooseStack от 514 — open-source DX-слой для ClickHouse.
Слияние дисциплин
Классические хранилища и озёра строились для аналитиков: SQL, BI-дашборды. Теперь же realtime-данные встроены в продукты и AI-функции, а команды разработки обязаны поставлять их так же быстро, как и обычный код.
- Транзакционные БД (Postgres, MySQL) хороши для разработки, но проваливаются при аналитических нагрузках.
- Облачные аналитические платформы (Snowflake, BigQuery) удобны для пакетных ETL, но не обеспечивают свежесть данных и sub-second ответов, а DX в них устарел.
UX-разрыв
Пользователи хотят аналитику за миллисекунды. ClickHouse решает задачу: на порядки быстрее Postgres и дешевле Snowflake/Databricks.
DX-разрыв
Разработчики привыкли к локальному циклу «код → тест → CI/CD». В мире данных такого нет: нет локального окружения, медленные итерации, конфликты между data- и software-инженерами.
MooseStack
514 выпустили MooseStack — open-source DX-слой поверх ClickHouse:
- Git-native, local-first, everything-as-code.
- Единый язык схем и запросов для всех специалистов.
- Поддержка CI/CD, preview-окружений, автотестов.
Комментарии (50)
- Сторонники «чистого» инженерного подхода считают, что data engineering изначально был частью software engineering, но позже к нему примешались аналитики, знающие лишь SQL/DBT.
- В сообществе виден раскол: одни DE пишут Terraform, CI/CD, Spark и k8s, другие ограничиваются ноутбуками, SQL-запросами и no-code-инструментами.
- Критика Python и SQL как «недостаточно инженерных» языков: динамическая типизация, отсутствие строгих схем и нормального тестирования.
- Название роли «Data Engineer» стало размытым: HR ищут «писателей SQL», а специалисты просят называть их «Software Engineer, Big Data» или «Platform Engineer».
- Сильные практики уже давно используют IaC, версионирование, code review и полноценный SDLC, но таких меньшинство.
The MiniPC Revolution 💬 Длинная дискуссия
Почему я перешёл на MiniPC
Пару лет экспериментов убедили: это моё будущее.
Плюсы
-
Цена и заменяемость
Заводская сборка и масштаб снижают цену. Поломки редки: нет вентиляторов, низкая температура, медленный износ. -
Компактность
Прячется за ТВ, помещается на ладонь, легко переносится. -
Энергоэффективность
20–50 Вт под нагрузкой, 6–12 Вт в idle. Для 24/7-сервисов выгодно и экологично. ARM/RISC-V обещают ещё меньше энергии. -
Специализация
Один тип MiniPC не универсален, но набор из разных закрывает все задачи:- обычные — офис/браузер;
- 4–6 LAN-портов — роутер, фаервол, VPN;
- 4–6 M.2 — компактный NAS (до 20 ТБ);
- мощный — хост контейнеров и «облако»;
- Mac mini — macOS без отказа от Linux.
-
Простота сборки
«Монолит» из одного большого ПК требует редкой материнки, кучи PCI-устройств, корпуса с отсеками, сложной логистики и возвратов. Несколько MiniPC решают то же быстрее и дешевле.
Комментарии (177)
- Участники активно обсуждают, как Mini-PC стали «новыми домашними серверами»: дешёвые, экономные (6–50 Вт), легко кластеруются под Proxmox/K8s и заменяют дорогое «энтерпрайз» железо.
- Популярны бывшие корпоративные NUC/HP/Lenovo и китайские 5560U/16 ГБ за $200–300; их ставят за TV, в туалет, за лазер, за StepMania — «дешевле, чем облако».
- Главные боли: шум (особенно в «геймерских» версиях), неремонтопригодность (паяная RAM/CPU, кастомные кулеры), высокий процент брака дешёвых китайцев и отсутствие апгрейдов.
- Мечтают о «тихом Mac-mini-размере» с RTX 4060/780M для игр, но физика (300 Вт TDP) и цена (~$2000) пока не позволяют; вариант — ПК в соседней комнате + длинный кабель/KVM.
- Valve, по мнению многих, была права с идеей Steam Machine, но рано и промахнулась в Linux-играх; новая попытка в 3–5 лет, возможно, совместит Proton, Mini-PC и приставочную форму.
Ghrc.io appears to be malicious 🔥 Горячее
ghrc.io — опечатка к ghcr.io — маскируется под реестр контейнеров, но крадёт GitHub-токены.
Как работает атака
- Обычные пути (
/,/404) возвращают стандартную страницу nginx. - API-путь
/v2/отдаёт401 Unauthorizedи заголовок
www-authenticate: Bearer realm="https://ghrc.io/token".
Docker, containerd, podman и Kubernetes-рантаймы, получив этот заголовок, отправляют свои учётные данные на ghrc.io/token.
Когда утекут токены
docker login ghrc.io- GitHub Action
docker/login-actionсregistry: ghrc.io - Секрет Kubernetes для ghrc.io
Простой docker pull ghrc.io/… без логина не передаёт токенов.
Что делать
Если вы когда-либо логинились на ghrc.io:
- Смените пароль GitHub.
- Отзовите все PAT и OAuth-токены.
Комментарии (58)
- Пользователи обсуждают, что домен-ошибка
ghrc.io(вместо правильногоghcr.io) уже зарегистрирован и может использоваться для атак. - Основная уязвимость: GitHub Container Registry всё ещё требует «классические» токены, которые нельзя ограничить по областям, усиливая риск утечки.
- Многие открытые проекты уже ошибочно используют
ghrc.ioв конфигах CI/CD, что делает атаку массовой. - Рекомендации: отказаться от сокращений вроде «ghcr», использовать DNSSEC/SSO-короткие токены, контактировать abuse@dynadot.com для блокировки злоумышленного домена.
Nitro: A tiny but flexible init system and process supervisor
nitro — миниатюрный, но гибкий init и супервизор процессов.
Назначение
- init для встраиваемых, десктопных и серверных Linux-систем
- initramfs, контейнеров (Docker, Podman, LXC, K8s)
- непривилегированный демон на POSIX
Конфигурация — каталог скриптов (по умолчанию /etc/nitro).
Требования
- Unix-сокеты
tmpfsили записываемый/run
Плюсы
- Всё состояние в RAM, работает на read-only root.
- Событийная модель без polling.
- Ноль аллокаций и ограниченных fd во время работы.
- Один статический бинарник + опциональный
nitroctl. - Сервисы — просто каталоги со скриптами, компиляция не нужна.
- Перезапуск, логирование, цепочки логов, независимость от времени.
- Запускается на FreeBSD через
/etc/ttys.
Сервис
Каждый подкаталог /etc/nitro может содержать:
setup— предзапуск, должен завершиться с 0.run— основной процесс (не должен завершаться).finish— пост-обработка, получает код выхода и сигнал.log→ symlink на другой сервис для логов.down— не поднимать автоматически.- Имена ≤ 64 символов, без
/,,, переводов строк. - Каталоги с
@в конце игнорируются (параметризованные сервисы).
Специальные сервисы
LOG— лог по умолчанию.SYS/setup— перед стартом остальных.SYS/finish— перед остановкой всех.SYS/final— после завершения всех процессов.SYS/fatal— при критической ошибке.SYS/reincarnate— вместо выключения (полезно для initramfs).
Параметризованные сервисы
Каталог foo@ + symlink foo@bar → запуск foo@/run bar.
nitroctl up foo@baz запустит foo@/run baz даже без symlink.
Жизненный цикл
- Подъём:
SYS/setup, затем все непомеченныеdown. - Работа: перезапуск при падении (пауза 2 с при частых падениях).
- Останов:
nitroctl Shutdown/Reboot→SYS/finish→ SIGTERM (7 с) → SIGKILL →SYS/final→ reboot/off/exit.
Управление nitroctl
nitroctl [команда] [сервис]
list— состояния, pid, uptime, код выхода.up/down— запустить/остановить (SIGTERM илиdown-signal).start/stop/restart— с ожиданием успеха.p/c/h— SIGSTOP/SIGCONT/SIGHUP.
Комментарии (82)
- Участники сравнивают Nitro с runit, s6, dinit и systemd: общие черты — минимализм, отсутствие декларативных зависимостей, ручная настройка порядка запуска.
- Некоторые считают Nitro скорее «голым» супервизором процессов, чем полноценной init-системой из-за отсутствия управления ресурсами, пользователями и параллельного запуска.
- Обсуждаются контейнерные кейсы: одни считают наличие init внутри контейнера избыточным, другие — необходимым при форке процессов.
- Упоминаются альтернативы: собственные минимальные init-системы на C и Rust, а также новый модульный подход в NixOS.
- Критика имени: «nitro» уже занято AWS Nitro, Nitro.js и другими проектами; предлагают сменить название.
Non-Uniform Memory Access (NUMA) is reshaping microservice placement
Codemia
Подготовка к систем-дизайн-интервью через практику:
Начать | Блог | Системный дизайн
Юридика
Условия | Конфиденциальность | Контакт
Комментарии (24)
- Обсуждение подтверждает: для HPC, высоконагруженных и чувствительных к задержкам систем NUMA-распределение критично, и ручное pinning процессов/потоков к нужным узлам остаётся основным способом добиться стабильной производительности.
- В публичных облаках (AWS, GCP) NUMA-топология скрыта, VM часто выглядят как однонодовые UMA; полезны
lscpu,lstopo,cpu-latency, но настроек управления NUMA почти нет. - Сообщество делится инструментами:
mpibind,sched_ext, DAMON, fake NUMA, идеями эмуляции NUMA даже на Raspberry Pi 5. - Kubernetes уже умеет NUMA-affinity, но вручную выбирать 64-ядерный инстанс вместо 96-ядерного (чтобы не пересекать сокеты) всё равно приходится самим.
- Крайняя альтернатива — односокетные серверы с NPS=1: «равномерно медленно», но без головной боли.
Show HN: Edka – Kubernetes clusters on your own Hetzner account 🔥 Горячее
- Edka Digital — упростите Kubernetes и выкатывайте всё, что нужно, за 2 минуты.
- Сэкономьте до 70 % на облаке: кластеры k3s в вашем аккаунте Hetzner без потери контроля.
- Первый кластер бесплатно — попробовать.
Ваш собственный платформенный слой
- Мгновенное развёртывание — production-ready кластер за минуты.
- GitOps — CI/CD из GitHub/GitLab, превью на PR.
- Дополнения в один клик — БД, ingress, мониторинг.
- Мониторинг и аналитика в реальном времени.
- Резервные копии (скоро) — S3 одним кликом.
- Открытые стандарты CNCF — без вендор-лока.
Цены
- Оплата по прайсу Hetzner + фикс. подписка за кластер.
- Уходите в любой момент — ресурсы остаются вашими.
Кейсы
- Aicole — 64 % экономии, 20 деплойментов в день.
- TROI Ticketing — 72 % экономии, 6 k DAU.
Готовые приложения и адд-оны
Cert Manager, CloudNative PG, Keel и другие — смотреть все.
Комментарии (119)
- Проект Edka взлетел на HN, но столкнулся с rate-limit от GitHub и частичным аутейджем Hetzner, из-за чего новые кластеры зависали в статусе «creating».
- Пользователи сравнивают Edka с kops, kube-hetzner/terraform, Syself и Linode, спрашивают про bare-metal, root-серверы, масштабирование, безопасность, обновления, сторедж, GitLab-реестр и другие провайдеры.
- Недоверие вызывает отсутствие импринта, юр. данных и реального адреса компании (упоминается «Edka Digital S.L.»).
- Некоторые просто ставят microk8s/Proxmox на bare-metal Hetzner и считают это надёжнее.
- Автор обещает улучшать платформу и благодарит за интерес к сайд-проекту.
Show HN: Engineering.fyi – Search across tech engineering blogs in one place 🔥 Горячее
- Airbnb: бесшовное обновление Istio на десятках кластеров K8s, тысячи подов.
- Cloudflare + OpenAI: новые открытые модели GPT теперь в Workers AI.
- OpenAI: оценка худших рисков «открытых» LLM.
- Shopify: MCP UI — интерактивные компоненты для AI-агентов в e-commerce.
- Cloudflare: Perplexity обходит robots.txt скрытыми краулерами.
- Meta: интерфейс «человек-компьютер» на основе электромиографии запястья.
- Google: обновлённая программа разработчиков с гибкой подпиской.
Комментарии (107)
- Пользователи одобрили идею «поисковика» по инженерным блогам, но попросили расширить список за пределы 15-16 крупных компаний и включить мелкие, но ценные ресурсы.
- Просят добавить RSS-фид, фильтры по темам/источникам и возможность исключать AI/LLM-контент.
- Отмечены проблемы со скоростью, Cloudflare-captcha и отсутствием тегов C#/ASP.NET.
- Некоторые делятся альтернативами: daily.dev, minifeed.net, GitHub-список kilimchoi, Kagi Lenses.
- Обсуждается, стоит ли ограничиться 10–20 тщательно отобранными блогами или открыть индекс для сотен источников.
Overengineering my homelab so I don't pay cloud providers 💬 Длинная дискуссия
- Цель: перенести все сервисы с VPS домой на Minisforum UM880 Plus (Ryzen 7 8840U, 32 ГБ ОЗУ).
- Задачи: безопасные эксперименты, изучение k3s → k8s/Talos, отказ от облаков.
- Угрозы: кража, выход железа, человеческий фактор.
- Меры: полное шифрование диска, автоматические бэкапы, восстановление по Ansible, Wake-on-LAN через KVM.
Подготовка хоста Proxmox
- Чистая установка Debian 12 с LVM-on-LUKS, отдельный
/bootна флешке. - Proxmox VE 8 ставится поверх Debian:
- добавить репу
pve-no-subscription; - после установки сломалась сеть — оказалось,
ifupdown2не ставится, надоifupdown+ ручной/etc/network/interfaces.
- добавить репу
- Bridge
vmbr0на основе enp3s0 для ВМ.
Автоматизация Ansible
- Плейбук
proxmox.yml:- ставит ключи, репу, пакеты, настраивает сеть, отключает подписку.
- Запуск:
ansible-playbook -i hosts.ini proxmox.yml -K
Итого: за час получаем переустанавливаемый, зашифрованный, готовый к ВМ кластер без облаков.
Комментарии (164)
- Участники обсуждают, стоит ли вообще строить домашний сервер: кто-то считает это дорогим хобби и источником постоянных проблем, кто-то — отличным способом учиться и сохранять контроль над данными.
- Главные минусы: высокая стоимость электричества в ряде регионов, отсутствие ECC-памяти у дешёвых железок, риск отключения питания и необходимость ручного восстановления.
- Часть людей экономит на VPS и облаке, собирая NAS из подержанных Dell Wyse 5070 или Minisforum-мини-ПК; другие предпочитают б/у серверные Xeon-ы за расширяемость.
- Безопасность и надёжность: кто-то ставит UPS и даже солнечные панели, кто-то сознательно принимает простои и использует WireGuard для удалённого включения.
- Подводный итог: если цель — учёба и полный контроль, хоумлаб «свой»; если нужен 100 % uptime и минимум времени — дешевле и проще взять облако или VPS.