From cf0e31f0736ab7acc87b251d8571a2af1c573cce Mon Sep 17 00:00:00 2001 From: Alexander Lipatov <lipatov@mindbox.cloud> Date: Sun, 3 Mar 2024 22:21:04 +0300 Subject: [PATCH] docs: Architecture --- docs/Architecture.drawio | 173 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 docs/Architecture.drawio diff --git a/docs/Architecture.drawio b/docs/Architecture.drawio new file mode 100644 index 0000000..7e9e844 --- /dev/null +++ b/docs/Architecture.drawio @@ -0,0 +1,173 @@ +<mxfile host="Electron" modified="2024-03-03T19:19:48.005Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="xGrqFKODrpKXa5rDTzYI" version="23.1.5" type="device"> + <diagram id="23iRSUPoRavnBvh4doch" name="Page-1"> + <mxGraphModel dx="2796" dy="2093" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="xsDj6IwwAKfttmJT4Nek-130" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="43" target="105"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="38" value="Serverless container" style="swimlane;whiteSpace=wrap;html=1;dashed=1;" parent="1" vertex="1"> + <mxGeometry x="-130" y="190" width="490" height="270" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-134" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="38" source="xsDj6IwwAKfttmJT4Nek-133" target="43"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="180" y="110" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-135" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="38" source="xsDj6IwwAKfttmJT4Nek-133" target="45"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="180" y="190" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-133" value="Frontend" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="38"> + <mxGeometry x="60" y="80" width="120" height="140" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-137" value="Backend" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="38"> + <mxGeometry x="265" y="40" width="200" height="200" as="geometry" /> + </mxCell> + <mxCell id="43" value="POST: /movie-recognition" style="whiteSpace=wrap;html=1;" parent="xsDj6IwwAKfttmJT4Nek-137" vertex="1"> + <mxGeometry x="25" y="40" width="150" height="60" as="geometry" /> + </mxCell> + <mxCell id="45" value="GET: /movie-recognition" style="whiteSpace=wrap;html=1;" parent="xsDj6IwwAKfttmJT4Nek-137" vertex="1"> + <mxGeometry x="25" y="120" width="150" height="60" as="geometry" /> + </mxCell> + <mxCell id="51" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="43" target="50" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="500" y="275" as="sourcePoint" /> + </mxGeometry> + </mxCell> + <mxCell id="93" value="Cloud function" style="swimlane;whiteSpace=wrap;html=1;dashed=1;" parent="1" vertex="1"> + <mxGeometry x="420" y="190" width="740" height="220" as="geometry" /> + </mxCell> + <mxCell id="50" value="ReceiveVideoHandler" style="whiteSpace=wrap;html=1;" parent="93" vertex="1"> + <mxGeometry x="10" y="80" width="140" height="60" as="geometry" /> + </mxCell> + <mxCell id="59" value="ProcessVideoHandler" style="whiteSpace=wrap;html=1;" parent="93" vertex="1"> + <mxGeometry x="190" y="80" width="140" height="60" as="geometry" /> + </mxCell> + <mxCell id="58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="93" source="50" target="59" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="330" y="85" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="79" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;" parent="93" source="50" target="59" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="150" y="85" as="sourcePoint" /> + <mxPoint x="230" y="290" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="67" value="RecognizeFrameHandler" style="whiteSpace=wrap;html=1;" parent="93" vertex="1"> + <mxGeometry x="370" y="80" width="160" height="60" as="geometry" /> + </mxCell> + <mxCell id="64" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="93" source="59" target="67" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="650" y="85" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="81" value="AggregateResultsHanlder" style="whiteSpace=wrap;html=1;" parent="93" vertex="1"> + <mxGeometry x="570" y="80" width="160" height="60" as="geometry" /> + </mxCell> + <mxCell id="82" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="93" source="67" target="81" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-110" value="External service" style="swimlane;whiteSpace=wrap;html=1;dashed=1;" vertex="1" parent="1"> + <mxGeometry x="580" y="-51" width="590" height="200" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-106" value="" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB2aWV3Qm94PSIwIDAgNDAwIDQwMCIgeT0iMHB4IiB4PSIwcHgiIGlkPSLQodC70L7QuV8xIiB2ZXJzaW9uPSIxLjEiPiYjeGE7PGcgaWQ9IkJhY2tncm91bmQiPiYjeGE7CSYjeGE7CQk8bGluZWFyR3JhZGllbnQgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCg2LjEyMzIzNGUtMTcgMSAxIC02LjEyMzIzNGUtMTcgMSAwKSIgeTI9IjE5OSIgeDI9IjQwMCIgeTE9IjE5OSIgeDE9IjkuMDk0OTQ3ZS0xMyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGlkPSJTVkdJRF8xXyI+JiN4YTsJCTxzdG9wIHN0eWxlPSJzdG9wLWNvbG9yOiNFNTJEMjciIG9mZnNldD0iMCIvPiYjeGE7CQk8c3RvcCBzdHlsZT0ic3RvcC1jb2xvcjojQkYxNzFEIiBvZmZzZXQ9IjEiLz4mI3hhOwk8L2xpbmVhckdyYWRpZW50PiYjeGE7CTxyZWN0IGhlaWdodD0iNDAwIiB3aWR0aD0iNDAwIiBmaWxsPSJ1cmwoI1NWR0lEXzFfKSIvPiYjeGE7PC9nPiYjeGE7PGcgaWQ9IkxvZ28iPiYjeGE7CTxwYXRoIGQ9Ik0xNzAuNiwxNTkuOWw2My45LDQyLjdsOS00LjZMMTcwLjYsMTU5Ljl6IiBvcGFjaXR5PSIwLjEyIiBpZD0iVGhlX1NoYXJwbmVzcyIvPiYjeGE7CTxnIGlkPSJMb3plbmdlIj4mI3hhOwkJPGc+JiN4YTsJCQk8cGF0aCBkPSJNMzMyLjIsMTQ2LjFjMCwwLTIuNi0xOC42LTEwLjctMjYuOGMtMTAuMi0xMC44LTIxLjgtMTAuOC0yNy0xMS40Yy0zNy44LTIuNy05NC40LTIuNy05NC40LTIuN0gyMDAmIzEwOyYjOTsmIzk7JiM5OyYjOTtjMCwwLTU2LjYsMC05NC40LDIuN2MtNS4zLDAuNi0xNi44LDAuNy0yNywxMS40Yy04LjEsOC4yLTEwLjcsMjYuOC0xMC43LDI2LjhzLTIuNywyMS44LTIuNyw0My43djIwLjVjMCwyMS44LDIuNyw0My43LDIuNyw0My43JiMxMDsmIzk7JiM5OyYjOTsmIzk7czIuNiwxOC42LDEwLjcsMjYuOGMxMC4zLDEwLjgsMjMuNywxMC40LDI5LjcsMTEuNWMyMS42LDIuMSw5MS43LDIuNyw5MS43LDIuN3M1Ni43LTAuMSw5NC41LTIuOGM1LjMtMC42LDE2LjgtMC43LDI3LTExLjQmIzEwOyYjOTsmIzk7JiM5OyYjOTtjOC4xLTguMiwxMC43LTI2LjgsMTAuNy0yNi44czIuNy0yMS44LDIuNy00My43di0yMC41QzMzNC45LDE2Ny45LDMzMi4yLDE0Ni4xLDMzMi4yLDE0Ni4xeiBNMTcyLjEsMjM1di03NS44bDcyLjksMzhMMTcyLjEsMjM1JiMxMDsmIzk7JiM5OyYjOTsmIzk7eiIgZmlsbD0iI0ZGRkZGRiIvPiYjeGE7CQk8L2c+JiN4YTsJPC9nPiYjeGE7PC9nPiYjeGE7PC9zdmc+;" vertex="1" parent="xsDj6IwwAKfttmJT4Nek-110"> + <mxGeometry x="50" y="60" width="100" height="100" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-108" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iNTEycHgiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiBoZWlnaHQ9IjUxMnB4Ij48Zz48cGF0aCBmaWxsPSIjRUQxRjI0IiBkPSJNNTEwLjY4OSw0NzguODU0YzAsMTcuNTYxLTE0LjI3NSwzMS44MzYtMzEuODM2LDMxLjgzNkgzMy4xNDZjLTE3LjU1OSwwLTMxLjgzNi0xNC4yNzUtMzEuODM2LTMxLjgzNiAgIFYzMy4xNDZjMC0xNy41NiwxNC4yNzctMzEuODM2LDMxLjgzNi0zMS44MzZoNDQ1LjcwN2MxNy41NjEsMCwzMS44MzYsMTQuMjc2LDMxLjgzNiwzMS44MzZWNDc4Ljg1NHoiLz48L2c+PHBhdGggaWQ9InBhdGg0MCIgZmlsbD0iI0ZGRkZGRiIgZD0iTTMxMy40NzUsMTA1LjM2NmgtNDUuNjQ4Yy00NC44NTQsMC04Mi44OTIsMzQuMTQyLTgyLjg5MiwxMDAuNDI3ICBjMCwzOS43NjUsMTguNDIsNjkuMDg0LDUxLjI1LDgzLjU0N2wtNjEuMjYyLDExMC44NjljLTIuMDA1LDMuNjE5LDAsNi40MjYsMy4yMDIsNi40MjZoMjguNDMzYzIuNCwwLDQuMDEtMC44MDEsNC44MS0yLjgwNyAgbDU1LjY1OS0xMDguODYzaDIwLjAyMXYxMDguODYzYzAsMS4xOTcsMS4xOTcsMi44MDcsMi43OTksMi44MDdoMjQuODMyYzIuNCwwLDMuMjAzLTEuMjA1LDMuMjAzLTMuMjA1VjEwOS4zODMgIEMzMTcuODgxLDEwNi41NzEsMzE2LjI3OSwxMDUuMzY2LDMxMy40NzUsMTA1LjM2NnogTTI4Ny4wNDcsMjY5LjI2aC0xNi44MThjLTI2LjQyNywwLTUyLjA1My0xOS4yODEtNTIuMDUzLTY3LjQ4MyAgYzAtNTAuMjIsMjQuMDI0LTcwLjcwNSw0OC40NDgtNzAuNzA1aDIwLjQyNFYyNjkuMjZ6Ii8+PC9zdmc+;" vertex="1" parent="xsDj6IwwAKfttmJT4Nek-110"> + <mxGeometry x="247" y="60" width="100" height="100" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-109" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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;" vertex="1" parent="xsDj6IwwAKfttmJT4Nek-110"> + <mxGeometry x="440" y="60" width="100" height="100" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-111" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="50" target="xsDj6IwwAKfttmJT4Nek-106"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="500" y="60" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-113" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="59" target="xsDj6IwwAKfttmJT4Nek-106"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-116" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.425;entryY=1.005;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="67" target="xsDj6IwwAKfttmJT4Nek-108"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-117" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="81" target="xsDj6IwwAKfttmJT4Nek-109"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-119" value="Storage" style="swimlane;whiteSpace=wrap;html=1;dashed=1;" vertex="1" parent="1"> + <mxGeometry x="661" y="460" width="245" height="300" as="geometry" /> + </mxCell> + <mxCell id="106" value="" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;gradientColor=#60A337;gradientDirection=north;fillColor=#277116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" parent="xsDj6IwwAKfttmJT4Nek-119" vertex="1"> + <mxGeometry x="72.5" y="50" width="100" height="100" as="geometry" /> + </mxCell> + <mxCell id="105" value="" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.dynamodb;" parent="xsDj6IwwAKfttmJT4Nek-119" vertex="1"> + <mxGeometry x="72.5" y="180" width="100" height="100" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="59" target="105"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="640" y="665" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-123" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="50" target="105"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="590" y="750" as="targetPoint" /> + <Array as="points"> + <mxPoint x="500" y="690" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-124" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="67" target="106"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="930" y="560" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-126" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="67" target="105"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="930" y="330" /> + <mxPoint x="930" y="665" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-127" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="81"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="834" y="690" as="targetPoint" /> + <Array as="points"> + <mxPoint x="1070" y="690" /> + <mxPoint x="834" y="690" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-128" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="59" target="106"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="640" y="560" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-131" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="45" target="105"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-139" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="xsDj6IwwAKfttmJT4Nek-138" target="xsDj6IwwAKfttmJT4Nek-133"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xsDj6IwwAKfttmJT4Nek-138" value="" style="shape=actor;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="-300" y="270" width="90" height="140" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> -- GitLab