<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jorge Aurelio de la Flor Argandoña</title>
    <description>The latest articles on DEV Community by Jorge Aurelio de la Flor Argandoña (@frostcore).</description>
    <link>https://dev.to/frostcore</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4091113%2Fb9d40eb1-eef5-476f-8219-f5d17238fe1d.jpg</url>
      <title>DEV Community: Jorge Aurelio de la Flor Argandoña</title>
      <link>https://dev.to/frostcore</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frostcore"/>
    <language>en</language>
    <item>
      <title>Speaker - Designing Systems That Contain Failure - CS Week Perú 2026</title>
      <dc:creator>Jorge Aurelio de la Flor Argandoña</dc:creator>
      <pubDate>Fri, 28 Aug 2026 03:39:56 +0000</pubDate>
      <link>https://dev.to/frostcore/designing-systems-that-contain-failure-cs-week-peru-2026-2703</link>
      <guid>https://dev.to/frostcore/designing-systems-that-contain-failure-cs-week-peru-2026-2703</guid>
      <description>&lt;h1&gt;
  
  
  Designing Systems That Contain Failure — CS Week Perú 2026
&lt;/h1&gt;

&lt;p&gt;On August 13, 2026, I had the opportunity to speak at &lt;strong&gt;CS Week Perú 2026&lt;/strong&gt;, an event organized by IEEE Computer Society student chapters across Peru.&lt;/p&gt;

&lt;p&gt;My session was:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Isolation and Trust Boundaries in Production: Designing Systems That Contain Failure”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The talk explored how production systems can be designed to limit the impact of failures through explicit trust boundaries, architectural invariants, and evidence-based validation.&lt;/p&gt;

&lt;p&gt;The central idea was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The goal isn't to prevent every failure. The goal is to control its blast radius.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Production systems fail. Requests overlap, processes crash, memory is exhausted, credentials can be compromised, and dependencies can become unavailable.&lt;/p&gt;

&lt;p&gt;Reliable engineering is not about assuming that none of these things will happen.&lt;/p&gt;

&lt;p&gt;It is about deciding &lt;strong&gt;what can be affected when they do&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Unit Tests to System Properties
&lt;/h2&gt;

&lt;p&gt;A green unit-test suite demonstrates that the tested units behave correctly under the conditions we defined.&lt;/p&gt;

&lt;p&gt;But it does not necessarily demonstrate that the system as a whole preserves its architectural properties under concurrency, multiple tenants, resource exhaustion, or real deployment conditions.&lt;/p&gt;

&lt;p&gt;A function can be correct in isolation while the system still violates an important invariant.&lt;/p&gt;

&lt;p&gt;That led to one of the central questions of the talk:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What properties must never be violated?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Trust Boundaries
&lt;/h2&gt;

&lt;p&gt;I used the concept of a &lt;strong&gt;Trust Boundary&lt;/strong&gt; to make architectural assumptions explicit.&lt;/p&gt;

&lt;p&gt;For each boundary, we can ask three questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;What are we protecting?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What is allowed to cross the boundary?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What happens if the condition is violated?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From there, we can define &lt;strong&gt;invariants&lt;/strong&gt;: properties that the system must preserve under the conditions established by its design.&lt;/p&gt;

&lt;p&gt;In the architecture discussed during the session, three dimensions were particularly important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context → Logical isolation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identity → Cryptographic isolation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Execution → Physical/process isolation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each addresses a different class of failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Context — Logical Isolation
&lt;/h2&gt;

&lt;p&gt;In asynchronous runtimes, multiple executions can share the same process.&lt;/p&gt;

&lt;p&gt;Using global mutable state for request-specific information can therefore create context contamination.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;Request A → tenant = A&lt;/p&gt;

&lt;p&gt;Request A awaits I/O&lt;/p&gt;

&lt;p&gt;Request B → tenant = B&lt;/p&gt;

&lt;p&gt;Request A resumes&lt;/p&gt;

&lt;p&gt;Which tenant does it see?&lt;/p&gt;

&lt;p&gt;The process can be shared.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The logical context shouldn't be.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Python, &lt;code&gt;ContextVar&lt;/code&gt; provides an execution-context mechanism that can help maintain request-specific state across asynchronous execution.&lt;/p&gt;

&lt;p&gt;But there is an important boundary:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;ContextVar is logical isolation, not process isolation.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It does not create a memory sandbox or protect the process from resource exhaustion.&lt;/p&gt;

&lt;p&gt;That distinction becomes important when we move to the next boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Identity — Cryptographic Isolation
&lt;/h2&gt;

&lt;p&gt;The second question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How do we ensure that an operation belongs to the expected tenant?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A single shared cryptographic secret creates a broad trust domain.&lt;/p&gt;

&lt;p&gt;A more constrained architecture can derive tenant-specific cryptographic material from a protected root of trust.&lt;/p&gt;

&lt;p&gt;The important property is not simply “using HMAC”.&lt;/p&gt;

&lt;p&gt;The important property is &lt;strong&gt;reducing the cryptographic blast radius&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If one derived key is compromised, that compromise should not automatically expose the keys belonging to other tenants or reveal the root key.&lt;/p&gt;

&lt;p&gt;There is another important detail here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HMAC does not prevent replay by itself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Authenticity and integrity are different from freshness.&lt;/p&gt;

&lt;p&gt;A robust request-validation scheme can therefore combine mechanisms such as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HMAC + Timestamp / Acceptance Window + Nonce / Replay Detection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each mechanism protects a different property.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Execution — Process Boundaries
&lt;/h2&gt;

&lt;p&gt;Eventually, logical isolation reaches its limits.&lt;/p&gt;

&lt;p&gt;Imagine a tenant submits work that consumes excessive memory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ContextVar&lt;/code&gt; cannot protect the rest of the application from an out-of-memory condition.&lt;/p&gt;

&lt;p&gt;This is where a stronger execution boundary becomes useful.&lt;/p&gt;

&lt;p&gt;The control plane can delegate potentially expensive or unreliable work to an independent worker process or container with its own execution lifecycle and explicit resource limits.&lt;/p&gt;

&lt;p&gt;If that worker crashes or is terminated because it exceeds its limits, the control plane can remain available.&lt;/p&gt;

&lt;p&gt;This reduces the blast radius of the failure.&lt;/p&gt;

&lt;p&gt;But again, the boundary has limits.&lt;/p&gt;

&lt;p&gt;A process boundary does not automatically protect against:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;queue saturation&lt;/li&gt;
&lt;li&gt;database exhaustion&lt;/li&gt;
&lt;li&gt;network congestion&lt;/li&gt;
&lt;li&gt;shared infrastructure failures&lt;/li&gt;
&lt;li&gt;excessive request rates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A boundary contains specific classes of failure. It does not eliminate failure.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Invariants Must Survive Production
&lt;/h2&gt;

&lt;p&gt;This is where architecture becomes engineering.&lt;/p&gt;

&lt;p&gt;A design isn't fully validated because it works on a developer laptop.&lt;/p&gt;

&lt;p&gt;The environment where the system actually runs is part of the system.&lt;/p&gt;

&lt;p&gt;For the system discussed in the session, the architecture is deployed on &lt;strong&gt;Azure Functions&lt;/strong&gt;, so the validation had to account for real execution conditions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;concurrent invocations&lt;/li&gt;
&lt;li&gt;process reuse&lt;/li&gt;
&lt;li&gt;external services&lt;/li&gt;
&lt;li&gt;ephemeral execution&lt;/li&gt;
&lt;li&gt;real authentication and cryptographic material&lt;/li&gt;
&lt;li&gt;production infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The validation process can be summarized as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Invariant → Implementation → Deployment → End-to-End Validation → Observable Evidence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The objective isn't to claim that a test suite proves a system is perfect.&lt;/p&gt;

&lt;p&gt;The objective is to obtain &lt;strong&gt;observable evidence that the defined properties remain true under the conditions we evaluated&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  61 Checks in a Real Deployment
&lt;/h2&gt;

&lt;p&gt;For this system, the integration suite runs against the deployed environment rather than only against local mocks.&lt;/p&gt;

&lt;p&gt;The suite currently contains &lt;strong&gt;61 checks&lt;/strong&gt; covering different integration and execution scenarios, including external services, webhooks, MCP interactions, errors, concurrency, and other production-oriented cases.&lt;/p&gt;

&lt;p&gt;The result:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;61 / 61 PASSED&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That number doesn't mean the system is mathematically proven to be perfect.&lt;/p&gt;

&lt;p&gt;It means that, under the scenarios covered by the suite, the expected properties held in the deployed environment.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tests provide evidence. They don't provide absolute certainty.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Question That Changes the Design
&lt;/h2&gt;

&lt;p&gt;One of the ideas I wanted to leave with the audience was this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A boundary doesn't eliminate risk. It defines how we contain it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of asking only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can this component fail?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“What can this component affect when it fails?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question changes how we think about architecture.&lt;/p&gt;

&lt;p&gt;It makes us consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;where state lives&lt;/li&gt;
&lt;li&gt;where identity is established&lt;/li&gt;
&lt;li&gt;where resources are bounded&lt;/li&gt;
&lt;li&gt;where processes begin and end&lt;/li&gt;
&lt;li&gt;what happens when a boundary is violated&lt;/li&gt;
&lt;li&gt;how we can verify those assumptions in production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to build systems where nothing ever fails.&lt;/p&gt;

&lt;p&gt;The goal is to build systems where &lt;strong&gt;failures have defined boundaries&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prevent what you can. Contain what you can't.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  CS Week Perú 2026
&lt;/h2&gt;

&lt;p&gt;I'm grateful to the &lt;strong&gt;CS Week Perú&lt;/strong&gt; community and the IEEE Computer Society chapters involved in the event for the opportunity to share these ideas and discuss production systems, security boundaries, and software architecture with other engineers and technology professionals.&lt;/p&gt;

&lt;p&gt;This talk also represents a direction I'm increasingly interested in: engineering systems at the intersection of &lt;strong&gt;software, distributed systems, embedded computing, and Cyber-Physical Systems&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'll continue documenting that work here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Original event information
&lt;/h2&gt;

&lt;p&gt;The original event information and speaker details are available through the official CS Week Perú 2026 channels.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical deep dive
&lt;/h2&gt;

&lt;p&gt;I also wrote a detailed technical article about the architecture, trust boundaries, invariants, and production validation discussed in this session.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://jafa.dev/md_pages/talks/csweek-2026/" rel="noopener noreferrer"&gt;Isolation and Trust Boundaries in Production — Technical Deep Dive&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Want to explore more of my work?
&lt;/h2&gt;

&lt;p&gt;I document my work and ideas on software, systems, embedded engineering, and Cyber-Physical Systems on my personal blog.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://jafa.dev/md_pages/posts/" rel="noopener noreferrer"&gt;jafa.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>python</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Speaker - Building a Multi-Tenant Python Runtime on Azure Functions - Microsoft Build 2026 Community Event</title>
      <dc:creator>Jorge Aurelio de la Flor Argandoña</dc:creator>
      <pubDate>Sun, 23 Aug 2026 19:40:59 +0000</pubDate>
      <link>https://dev.to/frostcore/speaker-microsoft-build-2026-community-event-2ano</link>
      <guid>https://dev.to/frostcore/speaker-microsoft-build-2026-community-event-2ano</guid>
      <description>&lt;p&gt;On June 6, 2026, I had the opportunity to speak at the Microsoft Build 2026 Community Event, held at IDAT Lima Centro as part of the Azure User Group Latam community.&lt;/p&gt;

&lt;p&gt;The event brought together developers and technology professionals to explore topics related to Microsoft Build 2026, including generative AI, enterprise agents, and AI-native architectures on Azure.&lt;/p&gt;

&lt;p&gt;My session was: "Building a Multi-Tenant Python Runtime on Azure Functions”&lt;/p&gt;

&lt;p&gt;During the session, I shared some of the architectural challenges and engineering decisions involved in building multi-tenant systems using Python and Azure Functions.&lt;/p&gt;

&lt;p&gt;The session focused on topics such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-tenant runtime architecture&lt;/li&gt;
&lt;li&gt;Context isolation&lt;/li&gt;
&lt;li&gt;Execution boundaries&lt;/li&gt;
&lt;li&gt;Serverless architecture&lt;/li&gt;
&lt;li&gt;Python on Azure Functions&lt;/li&gt;
&lt;li&gt;Reliability and production considerations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was a valuable opportunity to share part of the work I've been building, exchange ideas with developers and cloud professionals, and contribute to the technology community.&lt;/p&gt;

&lt;h2&gt;
  
  
  Event details
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Event&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Microsoft Build 2026 Community Event&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;June 6, 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IDAT Lima Centro, Lima, Peru&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Community&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Azure User Group Latam&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Session&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multi-Tenant Python Runtime on Azure Functions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Role&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Speaker&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Original event announcement
&lt;/h2&gt;

&lt;p&gt;The original announcement and event information are available here: &lt;a href="https://lnkd.in/p/eS6ZFa7Y" rel="noopener noreferrer"&gt;Microsoft Build 2026 Community Event - Original Post&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical deep dive
&lt;/h2&gt;

&lt;p&gt;I also wrote a detailed technical article about the architecture, challenges, and lessons learned while building the multi-tenant Python runtime behind this session.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://jafa.dev/md_pages/talks/microsoft-build-2026/" rel="noopener noreferrer"&gt;Building a Multi-Tenant Python Runtime on Azure Functions — Technical Deep Dive&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Want to explore more of my work?
&lt;/h2&gt;

&lt;p&gt;I document my work and ideas on software, systems, embedded engineering, and Cyber-Physical Systems on my personal blog.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://jafa.dev/md_pages/posts/" rel="noopener noreferrer"&gt;jafa.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>productivity</category>
      <category>python</category>
    </item>
  </channel>
</rss>
