<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fh="http://purl.org/syndication/history/1.0"><channel><title>Marek Reinhold | Blog</title><description>Senior Java backend engineer and tech lead writing about running software in production — blog and tested runbooks for AWS, Terraform and Kubernetes.</description><link>https://reinhold.co/</link><language>en</language><fh:complete/><atom:link rel="self" href="https://reinhold.co/blog/rss.xml"/><item><title>Going deeper on how software runs in production</title><link>https://reinhold.co/blog/2026-10-27-going-deeper-on-production/</link><guid isPermaLink="true">https://reinhold.co/blog/2026-10-27-going-deeper-on-production/</guid><description>For 8 years I&apos;ve built backend systems in Java. The hardest problems often sat just past the code.</description><pubDate>Tue, 27 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For 8 years I’ve built backend systems in Java. The code is the part I know best.&lt;/p&gt;
&lt;p&gt;But the hardest problems I’ve worked on often sat just past the code: how a service is deployed, how it’s secured, how we see what it’s doing, and how fast we can recover when something breaks.&lt;/p&gt;
&lt;p&gt;So I’m going deeper on that side, about 10 hours a week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AWS the way it’s run in production: multi-account, SSO, guard rails, budgets&lt;/li&gt;
&lt;li&gt;Infrastructure as code, rebuilt from scratch on a timer&lt;/li&gt;
&lt;li&gt;Kubernetes on my own hardware: an old laptop and two Raspberry Pi 5s&lt;/li&gt;
&lt;li&gt;Observability, SLOs and restores I’ve actually timed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One rule: every step ends with evidence — what I built, how I checked it, what broke.&lt;/p&gt;
&lt;p&gt;I write the interesting parts here, mostly the failures. The step-by-step versions live under &lt;a href=&quot;https://reinhold.co/runbooks/&quot;&gt;Runbooks&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>aws</category><category>kubernetes</category><category>learning</category></item><item><title>No human uses AWS root</title><link>https://reinhold.co/blog/2026-10-22-no-human-uses-aws-root/</link><guid isPermaLink="true">https://reinhold.co/blog/2026-10-22-no-human-uses-aws-root/</guid><description>An AWS setup where nobody signs in as root or as an IAM user — what I built, how I checked it, and what broke.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; an AWS setup where nobody signs in as root or as an IAM user — the foundation for every later AWS lab.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Built:&lt;/strong&gt; an organization with a management account and two member accounts (&lt;code dir=&quot;auto&quot;&gt;dev&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;prod&lt;/code&gt;) in a &lt;code dir=&quot;auto&quot;&gt;workloads&lt;/code&gt; OU; IAM Identity Center with MFA on every sign-in; two service control policies; a $50 budget with three alerts in each account; three SSO profiles on my Mac.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verified:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;both member accounts report &lt;em&gt;no root credentials present&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;zero IAM users in all three accounts, no access keys on my machine;&lt;/li&gt;
&lt;li&gt;an EC2 call to a region I don’t use is denied by a service control policy — I made that call on purpose to see it fail.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Broke and fixed:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The CLI returned exit code 0 and printed nothing. The output pager was swallowing it; &lt;code dir=&quot;auto&quot;&gt;--no-cli-pager&lt;/code&gt; proved it, &lt;code dir=&quot;auto&quot;&gt;AWS_PAGER=&quot;&quot;&lt;/code&gt; fixed it. My checks now look for expected output, not just a zero exit code.&lt;/li&gt;
&lt;li&gt;I found a forgotten third guard-rail policy from an earlier attempt, still attached. Exactly the drift Terraform will catch in Stage 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Decision:&lt;/strong&gt; the region guard rail applies only to the &lt;code dir=&quot;auto&quot;&gt;workloads&lt;/code&gt; OU; the management account runs nothing but billing, Organizations and SSO.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Next:&lt;/strong&gt; A1 — cross-account roles and least privilege.&lt;/p&gt;
&lt;p&gt;Runbook: &lt;a href=&quot;https://reinhold.co/runbooks/aws/a0-aws-organization/&quot;&gt;A0 — An AWS organization nobody logs into as root&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>aws</category><category>security</category><category>lab</category></item></channel></rss>