<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Pletor Tech Blog (en)</title><description>Engineering notes from the Pletor team on product, security, data, and operations.</description><link>https://tech.pletor.kr/</link><item><title>Even When AI Writes the Code, Software Still Needs Revision</title><link>https://tech.pletor.kr/en/posts/ai-coding-software-revision/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/ai-coding-software-revision/</guid><description>Why usable applications still require domain understanding, review, and repeated refinement in the age of vibe coding.</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><category>ai</category><category>software-development</category><category>engineering</category><category>workflow</category></item><item><title>The Kafka Partition Looks Fine, but the Disk Is Full</title><link>https://tech.pletor.kr/en/posts/kafka-log-dirs-free-space/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-log-dirs-free-space/</guid><description>Kafka 4.3 adds Partition Size Percentage metrics for retention pressure, but Kafka operators still need physical free-space monitoring for log.dirs.</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><category>kafka</category><category>storage</category><category>monitoring</category><category>operations</category><category>testing</category></item><item><title>AI Learned Code, but Software Learns in Operation</title><link>https://tech.pletor.kr/en/posts/software-learns-in-operation/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/software-learns-in-operation/</guid><description>AI can absorb enormous written knowledge, but usable software improves through running instances, operational feedback, and production reality.</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><category>ai</category><category>software-development</category><category>operations</category><category>observability</category></item><item><title>Kafka Streams After 4.2: Two Changes That Make Failures Less Painful</title><link>https://tech.pletor.kr/en/posts/kafka-streams-dlq-rebalance/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-streams-dlq-rebalance/</guid><description>Kafka Streams operations often hurt around bad records and rebalances. This post explains how DLQ support and the Streams Rebalance Protocol change the operating model after Kafka 4.2.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>kafka</category><category>kafka-streams</category><category>dlq</category><category>rebalance</category><category>operations</category></item><item><title>Before Removing a Kafka Broker, Cordon First</title><link>https://tech.pletor.kr/en/posts/kafka-cordoned-log-dirs/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-cordoned-log-dirs/</guid><description>Apache Kafka 4.3 introduced cordoned.log.dirs. This post explains what it means, how to use it, and why disk or broker decommissioning should start by blocking new replica placement.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><category>kafka</category><category>operations</category><category>storage</category><category>decommission</category><category>maintenance</category></item><item><title>Kafka 4.0 Consumer Rebalance: Coordination Moves to the Broker</title><link>https://tech.pletor.kr/en/posts/kafka-4-consumer-rebalance-protocol/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-4-consumer-rebalance-protocol/</guid><description>Apache Kafka 4.0 made the new rebalance protocol generally available. This post explains what changes from the old protocol, why broker-side assignment matters, and what it means operationally.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>consumer</category><category>rebalance</category><category>operations</category><category>architecture</category></item><item><title>Kafka Streams and the EIP Aggregator: Finishing Is Harder Than Grouping</title><link>https://tech.pletor.kr/en/posts/kafka-streams-eip-aggregator/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-streams-eip-aggregator/</guid><description>When implementing the EIP Aggregator pattern with Kafka Streams, the hard parts are not groupBy and aggregate. They are correlation keys, state stores, completion conditions, and late-event policy.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>kafka-streams</category><category>eip</category><category>architecture</category><category>stream-processing</category></item><item><title>Why Kafka Fits Between Outbox and Inbox Patterns</title><link>https://tech.pletor.kr/en/posts/kafka-outbox-inbox/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-outbox-inbox/</guid><description>This post explains why Outbox and Inbox patterns matter in asynchronous MSA flows, and why Kafka is a strong fit as the message path between them.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>msa</category><category>architecture</category><category>messaging</category><category>reliability</category></item><item><title>Trace Should Not Break When Kafka Is in the Middle</title><link>https://tech.pletor.kr/en/posts/kafka-trace-context-propagation/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-trace-context-propagation/</guid><description>When Kafka sits inside an MSA flow, tracing does not continue automatically like synchronous HTTP calls. This post explains how to propagate trace context through Kafka headers and how to think about producer and consumer instrumentation.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>tracing</category><category>opentelemetry</category><category>observability</category><category>msa</category></item><item><title>Why Did Kafka OOM When Memory Was Still Available?</title><link>https://tech.pletor.kr/en/posts/kafka-direct-buffer-memory/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-direct-buffer-memory/</guid><description>Kafka broker memory is not just heap and page cache. Direct buffers can fail allocation even when system memory and heap graphs still look healthy.</description><pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>memory</category><category>jvm</category><category>operations</category><category>performance</category></item><item><title>Why Turn Immutable YAML Logs into Full Objects?</title><link>https://tech.pletor.kr/en/posts/yaml-log-streaming/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/yaml-log-streaming/</guid><description>A practical look at why stream/event-based YAML processing can be a better fit than building a full DOM or object tree when high-volume YAML logs only need filtering.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>yaml</category><category>logging</category><category>performance</category><category>streaming</category><category>operations</category></item><item><title>Docker Compose Is Convenient. Plain .env Secrets Are Not.</title><link>https://tech.pletor.kr/en/posts/envoyage-compose-secrets/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/envoyage-compose-secrets/</guid><description>Introducing Envoyage, Pletor&apos;s open source tool for reducing plaintext secret env files in Docker Compose workflows without turning every small deployment into a full secret-management project.</description><pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate><category>docker</category><category>configuration</category><category>security</category><category>open-source</category></item><item><title>JVM Metrics Alone Cannot Explain a Container</title><link>https://tech.pletor.kr/en/posts/node-metrics-agent/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/node-metrics-agent/</guid><description>Introducing Pletor node-metrics-agent, an open source JVM agent that exposes host and container node metrics through JMX and works well with Prometheus JMX exporter.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>java</category><category>jmx</category><category>prometheus</category><category>containers</category><category>observability</category></item><item><title>Can Kafka Client Metrics Really Close the Observability Gap?</title><link>https://tech.pletor.kr/en/posts/kafka-client-telemetry-limits/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-client-telemetry-limits/</guid><description>A practical look at Kafka client telemetry from KIP-714: how it works, which metrics it can collect, how to configure it, and where the operational limits are.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>observability</category><category>monitoring</category><category>operations</category></item><item><title>The Large Payload Kafka Handles Well, and the One It Should Not Carry</title><link>https://tech.pletor.kr/en/posts/kafka-large-files-storage-amplification/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-large-files-storage-amplification/</guid><description>Kafka is strong at high-volume event streams, but large file payloads can create storage amplification across the whole system.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>storage</category><category>architecture</category><category>operations</category></item><item><title>The Kafka Broker Slowed Down, but Kafka Was Not the Cause</title><link>https://tech.pletor.kr/en/posts/kafka-storage-path-isr/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-storage-path-isr/</guid><description>A practical incident-style walkthrough of a Kafka broker throughput drop, follower replicas falling out of ISR, and the storage path contention below the VM.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>operations</category><category>storage</category><category>observability</category></item><item><title>From Env to Config: The Last Mile of Container Configuration</title><link>https://tech.pletor.kr/en/posts/container-config-gomplate/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/container-config-gomplate/</guid><description>A practical gomplate pattern for turning container environment variables into the configuration files applications actually read.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>containers</category><category>configuration</category><category>gomplate</category><category>kubernetes</category></item><item><title>Your Kafka Looks Balanced. Your Brokers Disagree</title><link>https://tech.pletor.kr/en/posts/kafka-broker-load-balance/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-broker-load-balance/</guid><description>Leader partition counts can look even while Kafka brokers carry very different network and storage load. This post explains how to read balancing through partition weight.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>operations</category><category>load-balancing</category><category>monitoring</category></item><item><title>Where Kafka&apos;s Disk Is Going: Object Storage and the New Streaming Layer</title><link>https://tech.pletor.kr/en/posts/kafka-object-storage-layer/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-object-storage-layer/</guid><description>A practical look at WarpStream, AutoMQ, Apache Fluss, and Kafka Diskless Topics as the Kafka ecosystem moves durable storage away from broker-local disks.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>storage</category><category>object-storage</category><category>architecture</category></item><item><title>Consumer Groups Are Not Queues: What Kafka Share Groups Change</title><link>https://tech.pletor.kr/en/posts/kafka-share-groups/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-share-groups/</guid><description>Why Kafka Share Groups were added, how they differ from traditional Consumer Groups, and when to use them.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>operations</category><category>consumer</category><category>queue</category></item><item><title>Run Konduo Community with Docker Compose in 10 Minutes</title><link>https://tech.pletor.kr/en/posts/konduo-docker-compose-quickstart/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/konduo-docker-compose-quickstart/</guid><description>Start Konduo Community with Docker Compose and try a local operations stack for Redis, PostgreSQL, Kafka, and other managed targets with the optional manual, Prometheus, and first login.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>konduo</category><category>docker</category><category>quickstart</category><category>prometheus</category></item><item><title>Five Roles Redis Plays in AI Applications</title><link>https://tech.pletor.kr/en/posts/redis-roles-in-ai-applications/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/redis-roles-in-ai-applications/</guid><description>A practical look at how Redis supports AI applications as a cache, session store, retrieval helper, async work layer, and operational control plane.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>redis</category><category>ai</category><category>architecture</category><category>operations</category></item><item><title>Consumer Lag Is Not a Health Score: Thinking in Kafka Consuming Pressure</title><link>https://tech.pletor.kr/en/posts/kafka-consuming-pressure/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-consuming-pressure/</guid><description>A practical way to read Kafka Consumer Lag together with producer rate and consumer group capacity instead of treating lag as an absolute health signal.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>observability</category><category>operations</category><category>monitoring</category></item><item><title>Not Every Consumer Group Consumes: How Kafka Nodes Find Each Other</title><link>https://tech.pletor.kr/en/posts/kafka-coordination-groups/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/kafka-coordination-groups/</guid><description>A practical look at how Kafka Connect and Schema Registry use Kafka group coordination for membership, leader election, and distributed work.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><category>kafka</category><category>kafka-connect</category><category>schema-registry</category><category>coordination</category></item><item><title>When Logging Becomes the Bottleneck: Keeping Heavy Appender Work Off the Request Path</title><link>https://tech.pletor.kr/en/posts/log4j2-custom-appender/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/log4j2-custom-appender/</guid><description>A practical guide to Log4j2 Custom Appenders through hot-path protection, bounded queues, AsyncAppender, throttling, and operational trade-offs.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><category>java</category><category>log4j2</category><category>logging</category><category>observability</category></item><item><title>A publishing workflow for AI-assisted engineering posts</title><link>https://tech.pletor.kr/en/posts/publishing-workflow/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/publishing-workflow/</guid><description>The review steps and PR-based publishing process we use when drafting with Codex or Claude Code.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><category>ai</category><category>editorial</category><category>workflow</category></item><item><title>Still Using Redis Only as a Cache? A Practical Look at Redis Streams</title><link>https://tech.pletor.kr/en/posts/redis-streams-beyond-cache/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/redis-streams-beyond-cache/</guid><description>A practical look at Redis Streams as an append-only event log with consumer groups, pending messages, acknowledgements, and lightweight event processing.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><category>redis</category><category>streams</category><category>messaging</category><category>operations</category></item><item><title>Starting the Pletor Tech Blog</title><link>https://tech.pletor.kr/en/posts/welcome/</link><guid isPermaLink="true">https://tech.pletor.kr/en/posts/welcome/</guid><description>Our first publishing principles for using tech.pletor.kr as the source of truth in both Korean and English.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><category>engineering</category><category>blog</category><category>workflow</category></item></channel></rss>