<mxfile host="Electron" version="29.6.1">
  <diagram name="Page-1" id="diagram-managed-flink">
    <mxGraphModel dx="1200" dy="800" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="1400" pageHeight="720" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="title-text" parent="1" style="text;html=1;align=left;verticalAlign=top;fontSize=28;fontStyle=1;fontFamily=Helvetica;fontColor=light-dark(#232F3E,#FFFFFF);" value="Managed Service for Apache Flink — Stateful Path" vertex="1">
          <mxGeometry x="40" y="24" width="1000" height="36" as="geometry" />
        </mxCell>
        <mxCell id="subtitle-text" parent="1" style="text;html=1;align=left;verticalAlign=top;fontSize=14;fontFamily=Helvetica;fontColor=light-dark(#545B64,#D5DBDB);" value="Sources → Flink (KPUs + RocksDB state + checkpoints to S3) → sinks. Prefer Flink when state/event-time matter; Lambda for simple filter/route." vertex="1">
          <mxGeometry x="40" y="62" width="1200" height="28" as="geometry" />
        </mxCell>

        <mxCell id="grp-src" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E6F2FF;strokeColor=#147EBA;fontFamily=Helvetica;verticalAlign=top;fontStyle=1;fontSize=12;fontColor=#232F3E;spacingTop=6;" value="Sources" vertex="1">
          <mxGeometry x="40" y="120" width="280" height="240" as="geometry" />
        </mxCell>
        <mxCell id="ico-kds" parent="1" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3E;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.kinesis_data_streams;" value="Kinesis Data Streams" vertex="1">
          <mxGeometry x="100" y="170" width="48" height="48" as="geometry" />
        </mxCell>
        <mxCell id="ico-msk" parent="1" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3E;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.managed_streaming_for_kafka;" value="Amazon MSK" vertex="1">
          <mxGeometry x="100" y="280" width="48" height="48" as="geometry" />
        </mxCell>

        <mxCell id="grp-flink" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF6E6;strokeColor=#D99903;fontFamily=Helvetica;verticalAlign=top;fontStyle=1;fontSize=12;fontColor=#232F3E;spacingTop=6;" value="Managed Flink" vertex="1">
          <mxGeometry x="380" y="120" width="320" height="240" as="geometry" />
        </mxCell>
        <mxCell id="ico-flink" parent="1" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3E;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.managed_service_for_apache_flink;" value="Flink app (JAR / PyFlink)" vertex="1">
          <mxGeometry x="516" y="190" width="48" height="48" as="geometry" />
        </mxCell>
        <mxCell id="lbl-kpu" parent="1" style="text;html=1;align=center;fontSize=11;fontFamily=Helvetica;fontColor=#232F3E;" value="KPUs = parallelism / ParallelismPerKPU&#xa;+1 orchestration KPU&#xa;checkpoints → S3" vertex="1">
          <mxGeometry x="420" y="280" width="240" height="50" as="geometry" />
        </mxCell>

        <mxCell id="grp-sink" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E9F7EF;strokeColor=#1D8102;fontFamily=Helvetica;verticalAlign=top;fontStyle=1;fontSize=12;fontColor=#232F3E;spacingTop=6;" value="Sinks" vertex="1">
          <mxGeometry x="760" y="120" width="360" height="240" as="geometry" />
        </mxCell>
        <mxCell id="ico-s3" parent="1" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3E;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" value="S3 / Iceberg" vertex="1">
          <mxGeometry x="800" y="190" width="48" height="48" as="geometry" />
        </mxCell>
        <mxCell id="ico-ddb" parent="1" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3E;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.dynamodb;" value="DynamoDB" vertex="1">
          <mxGeometry x="900" y="190" width="48" height="48" as="geometry" />
        </mxCell>
        <mxCell id="ico-os" parent="1" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3E;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elasticsearch_service;" value="OpenSearch" vertex="1">
          <mxGeometry x="1000" y="190" width="48" height="48" as="geometry" />
        </mxCell>

        <mxCell id="e1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#232F3E;" edge="1" source="ico-kds" target="ico-flink">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e2" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#232F3E;" edge="1" source="ico-flink" target="ico-ddb">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="legend" parent="1" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#7D8998;fontFamily=Helvetica;fontSize=11;fontColor=#232F3E;spacing=8;" value="&lt;b&gt;Ops alarms&lt;/b&gt;&lt;br&gt;millisBehindLatest · failed checkpoints · fullRestarts · checkpoint duration&lt;br&gt;Decision matrix: /examples/architecture-blog-2026/managed-flink/flink-vs-lambda-decision-matrix.md" vertex="1">
          <mxGeometry x="40" y="400" width="560" height="90" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
