Skip to content

Instantly share code, notes, and snippets.

@nabinno
Created September 29, 2020 21:19
Show Gist options
  • Save nabinno/286a5c6e95d400e5e89997d0714bb87b to your computer and use it in GitHub Desktop.
Save nabinno/286a5c6e95d400e5e89997d0714bb87b to your computer and use it in GitHub Desktop.
AWS Lambdaの裏側をなるだけ詳しく解説してみる - https://www.keisuke69.net/entry/2020/09/29/131203
@startuml
skinparam monochrome true
skinparam backgroundColor #EEEEEE
control ALB as LB
actor "Front\nEnd" as FE
actor "Counting\nService" as CS
actor "Worker\nManager" as WM
actor Worker as W
actor "Placement\nService" as PS
actor Poller as P
actor "State Manager\nStream Tracker" as SM
actor "Leasing\nService" as LS
collections SQS as Q
group 同期実行
LB -> FE
activate LB
activate FE
FE -> WM: |Request|\n- Reserve Sandbox
deactivate FE
activate WM
alt 初回呼出
WM -> PS
deactivate WM
activate PS
PS -> W
deactivate PS
activate W
end
W -> W: |Invoke|
deactivate W
end
group 非同期実行/スケールアップ
LB -> FE
deactivate LB
activate FE
FE -> Q: |SendMessage|
deactivate FE
activate Q
group スケールアップ
SM -> Q: Workを探索
activate SM
alt 関数の同時実行数の設定が小さい場合
SM -> LS
activate LS
LS -> P: Pollerの割当を作成\n(Poller Assignment Dataに書込)
activate P
else
SM -> Q: 新たにdedicatedなキューを作成
deactivate SM
end
end
LS -> P: ヘルスチェック
deactivate LS
P -> Q: |ReceiveMessage|\n|DeleteMessage|
deactivate Q
P -> FE: |Invoke|
deactivate P
activate FE
group 非同期実行
FE -> WM: |Request|\n- Reserve Sandbox
deactivate FE
activate WM
alt 初回呼出
WM -> PS
deactivate WM
activate PS
PS -> W
deactivate PS
activate W
end
W -> W: |Invoke|
deactivate W
end
end
@enduml
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="979px" preserveAspectRatio="none" style="width:835px;height:979px;background:#EEEEEE;" version="1.1" viewBox="0 0 835 979" width="835px" zoomAndPan="magnify"><defs><filter height="300%" id="f1r0r7o9xo1bto" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="198.6641" style="stroke: #383838; stroke-width: 1.0;" width="10" x="34" y="142.7266"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="48.2656" style="stroke: #383838; stroke-width: 1.0;" width="10" x="81" y="142.7266"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="33.1328" style="stroke: #383838; stroke-width: 1.0;" width="10" x="81" y="341.3906"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="72.3984" style="stroke: #383838; stroke-width: 1.0;" width="10" x="81" y="665.8516"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="38.1328" style="stroke: #383838; stroke-width: 1.0;" width="10" x="230" y="190.9922"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="38.1328" style="stroke: #383838; stroke-width: 1.0;" width="10" x="230" y="738.25"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="46.1328" style="stroke: #383838; stroke-width: 1.0;" width="10" x="300.5" y="243.125"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="46.1328" style="stroke: #383838; stroke-width: 1.0;" width="10" x="300.5" y="790.3828"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="14" style="stroke: #383838; stroke-width: 1.0;" width="10" x="377.5" y="229.125"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="14" style="stroke: #383838; stroke-width: 1.0;" width="10" x="377.5" y="776.3828"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="155.6641" style="stroke: #383838; stroke-width: 1.0;" width="10" x="449" y="510.1875"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="113.5313" style="stroke: #383838; stroke-width: 1.0;" width="10" x="536.5" y="427.7891"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="118.5313" style="stroke: #383838; stroke-width: 1.0;" width="10" x="677" y="465.9219"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="258.1953" style="stroke: #383838; stroke-width: 1.0;" width="10" x="763.5" y="374.5234"/><rect fill="#EEEEEE" filter="url(#f1r0r7o9xo1bto)" height="184.6641" style="stroke: #000000; stroke-width: 2.0;" width="429" x="13" y="119.5938"/><rect fill="#EEEEEE" filter="url(#f1r0r7o9xo1bto)" height="45.1328" style="stroke: #000000; stroke-width: 2.0;" width="240" x="192" y="205.9922"/><rect fill="#EEEEEE" filter="url(#f1r0r7o9xo1bto)" height="540.2578" style="stroke: #000000; stroke-width: 2.0;" width="811" x="13" y="318.2578"/><rect fill="#EEEEEE" filter="url(#f1r0r7o9xo1bto)" height="166.7969" style="stroke: #000000; stroke-width: 2.0;" width="402" x="412" y="389.5234"/><rect fill="#EEEEEE" filter="url(#f1r0r7o9xo1bto)" height="106.5313" style="stroke: #000000; stroke-width: 2.0;" width="382" x="422" y="442.7891"/><rect fill="#EEEEEE" height="31.1328" style="stroke: none; stroke-width: 1.0;" width="382" x="422" y="518.1875"/><rect fill="#EEEEEE" filter="url(#f1r0r7o9xo1bto)" height="170.6641" style="stroke: #000000; stroke-width: 2.0;" width="387" x="55" y="680.8516"/><rect fill="#EEEEEE" filter="url(#f1r0r7o9xo1bto)" height="45.1328" style="stroke: #000000; stroke-width: 2.0;" width="240" x="192" y="753.25"/><line style="stroke: #383838; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="39" x2="39" y1="102.5938" y2="875.5156"/><line style="stroke: #383838; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="86" x2="86" y1="102.5938" y2="875.5156"/><line style="stroke: #383838; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="151" x2="151" y1="102.5938" y2="875.5156"/><line style="stroke: #383838; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="235" x2="235" y1="102.5938" y2="875.5156"/><line style="stroke: #383838; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="305" x2="305" y1="102.5938" y2="875.5156"/><line style="stroke: #383838; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="382" x2="382" y1="102.5938" y2="875.5156"/><line style="stroke: #383838; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="454" x2="454" y1="102.5938" y2="875.5156"/><line style="stroke: #383838; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="541" x2="541" y1="102.5938" y2="875.5156"/><line style="stroke: #383838; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="681.5" x2="681.5" y1="102.5938" y2="875.5156"/><line style="stroke: #383838; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="768" x2="768" y1="102.5938" y2="875.5156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="26" x="23" y="99.292">ALB</text><ellipse cx="39" cy="70.2969" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="12" ry="12" style="stroke: #383838; stroke-width: 2.0;"/><polygon fill="#383838" points="35,58.2969,41,53.2969,39,58.2969,41,63.2969,35,58.2969" style="stroke: #383838; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="26" x="23" y="887.5107">ALB</text><ellipse cx="39" cy="906.8125" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="12" ry="12" style="stroke: #383838; stroke-width: 2.0;"/><polygon fill="#383838" points="35,894.8125,41,889.8125,39,894.8125,41,899.8125,35,894.8125" style="stroke: #383838; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="36" x="65" y="82.9951">Front</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="69.5" y="99.292">End</text><ellipse cx="86" cy="13" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M86,21 L86,48 M73,29 L99,29 M86,48 L73,63 M86,48 L99,63 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="36" x="65" y="887.5107">Front</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="69.5" y="903.8076">End</text><ellipse cx="86" cy="917.1094" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M86,925.1094 L86,952.1094 M73,933.1094 L99,933.1094 M86,952.1094 L73,967.1094 M86,952.1094 L99,967.1094 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="63" x="117" y="82.9951">Counting</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="50" x="123.5" y="99.292">Service</text><ellipse cx="151.5" cy="13" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M151.5,21 L151.5,48 M138.5,29 L164.5,29 M151.5,48 L138.5,63 M151.5,48 L164.5,63 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="63" x="117" y="887.5107">Counting</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="50" x="123.5" y="903.8076">Service</text><ellipse cx="151.5" cy="917.1094" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M151.5,925.1094 L151.5,952.1094 M138.5,933.1094 L164.5,933.1094 M151.5,952.1094 L138.5,967.1094 M151.5,952.1094 L164.5,967.1094 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="49" x="207.5" y="82.9951">Worker</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="60" x="202" y="99.292">Manager</text><ellipse cx="235" cy="13" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M235,21 L235,48 M222,29 L248,29 M235,48 L222,63 M235,48 L248,63 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="49" x="207.5" y="887.5107">Worker</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="60" x="202" y="903.8076">Manager</text><ellipse cx="235" cy="917.1094" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M235,925.1094 L235,952.1094 M222,933.1094 L248,933.1094 M235,952.1094 L222,967.1094 M235,952.1094 L248,967.1094 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="49" x="278" y="99.292">Worker</text><ellipse cx="305.5" cy="29.2969" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M305.5,37.2969 L305.5,64.2969 M292.5,45.2969 L318.5,45.2969 M305.5,64.2969 L292.5,79.2969 M305.5,64.2969 L318.5,79.2969 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="49" x="278" y="887.5107">Worker</text><ellipse cx="305.5" cy="900.8125" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M305.5,908.8125 L305.5,935.8125 M292.5,916.8125 L318.5,916.8125 M305.5,935.8125 L292.5,950.8125 M305.5,935.8125 L318.5,950.8125 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="73" x="343" y="82.9951">Placement</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="50" x="354.5" y="99.292">Service</text><ellipse cx="382.5" cy="13" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M382.5,21 L382.5,48 M369.5,29 L395.5,29 M382.5,48 L369.5,63 M382.5,48 L395.5,63 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="73" x="343" y="887.5107">Placement</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="50" x="354.5" y="903.8076">Service</text><ellipse cx="382.5" cy="917.1094" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M382.5,925.1094 L382.5,952.1094 M369.5,933.1094 L395.5,933.1094 M382.5,952.1094 L369.5,967.1094 M382.5,952.1094 L395.5,967.1094 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="38" x="432" y="99.292">Poller</text><ellipse cx="454" cy="29.2969" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M454,37.2969 L454,64.2969 M441,45.2969 L467,45.2969 M454,64.2969 L441,79.2969 M454,64.2969 L467,79.2969 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="38" x="432" y="887.5107">Poller</text><ellipse cx="454" cy="900.8125" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M454,908.8125 L454,935.8125 M441,916.8125 L467,916.8125 M454,935.8125 L441,950.8125 M454,935.8125 L467,950.8125 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="100" x="488.5" y="82.9951">State Manager</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="105" x="486" y="99.292">Stream Tracker</text><ellipse cx="541.5" cy="13" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M541.5,21 L541.5,48 M528.5,29 L554.5,29 M541.5,48 L528.5,63 M541.5,48 L554.5,63 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="100" x="488.5" y="887.5107">State Manager</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="105" x="486" y="903.8076">Stream Tracker</text><ellipse cx="541.5" cy="917.1094" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M541.5,925.1094 L541.5,952.1094 M528.5,933.1094 L554.5,933.1094 M541.5,952.1094 L528.5,967.1094 M541.5,952.1094 L554.5,967.1094 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="53" x="652.5" y="82.9951">Leasing</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="50" x="654" y="99.292">Service</text><ellipse cx="682" cy="13" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M682,21 L682,48 M669,29 L695,29 M682,48 L669,63 M682,48 L695,63 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="53" x="652.5" y="887.5107">Leasing</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="50" x="654" y="903.8076">Service</text><ellipse cx="682" cy="917.1094" fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" rx="8" ry="8" style="stroke: #383838; stroke-width: 2.0;"/><path d="M682,925.1094 L682,952.1094 M669,933.1094 L695,933.1094 M682,952.1094 L669,967.1094 M682,952.1094 L695,967.1094 " fill="none" filter="url(#f1r0r7o9xo1bto)" style="stroke: #383838; stroke-width: 2.0;"/><rect fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" height="30.2969" style="stroke: #383838; stroke-width: 1.5;" width="43" x="747" y="63.2969"/><rect fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" height="30.2969" style="stroke: #383838; stroke-width: 1.5;" width="43" x="743" y="67.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="29" x="750" y="87.292">SQS</text><rect fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" height="30.2969" style="stroke: #383838; stroke-width: 1.5;" width="43" x="747" y="874.5156"/><rect fill="#F8F8F8" filter="url(#f1r0r7o9xo1bto)" height="30.2969" style="stroke: #383838; stroke-width: 1.5;" width="43" x="743" y="878.5156"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="29" x="750" y="898.5107">SQS</text><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="198.6641" style="stroke: #383838; stroke-width: 1.0;" width="10" x="34" y="142.7266"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="48.2656" style="stroke: #383838; stroke-width: 1.0;" width="10" x="81" y="142.7266"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="33.1328" style="stroke: #383838; stroke-width: 1.0;" width="10" x="81" y="341.3906"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="72.3984" style="stroke: #383838; stroke-width: 1.0;" width="10" x="81" y="665.8516"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="38.1328" style="stroke: #383838; stroke-width: 1.0;" width="10" x="230" y="190.9922"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="38.1328" style="stroke: #383838; stroke-width: 1.0;" width="10" x="230" y="738.25"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="46.1328" style="stroke: #383838; stroke-width: 1.0;" width="10" x="300.5" y="243.125"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="46.1328" style="stroke: #383838; stroke-width: 1.0;" width="10" x="300.5" y="790.3828"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="14" style="stroke: #383838; stroke-width: 1.0;" width="10" x="377.5" y="229.125"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="14" style="stroke: #383838; stroke-width: 1.0;" width="10" x="377.5" y="776.3828"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="155.6641" style="stroke: #383838; stroke-width: 1.0;" width="10" x="449" y="510.1875"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="113.5313" style="stroke: #383838; stroke-width: 1.0;" width="10" x="536.5" y="427.7891"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="118.5313" style="stroke: #383838; stroke-width: 1.0;" width="10" x="677" y="465.9219"/><rect fill="#FFFFFF" filter="url(#f1r0r7o9xo1bto)" height="258.1953" style="stroke: #383838; stroke-width: 1.0;" width="10" x="763.5" y="374.5234"/><path d="M13,119.5938 L114,119.5938 L114,126.5938 L104,136.5938 L13,136.5938 L13,119.5938 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="184.6641" style="stroke: #000000; stroke-width: 2.0;" width="429" x="13" y="119.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="28" y="132.6606">同期実行</text><polygon fill="#383838" points="69,138.7266,79,142.7266,69,146.7266,73,142.7266" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="44" x2="75" y1="142.7266" y2="142.7266"/><polygon fill="#383838" points="218,186.9922,228,190.9922,218,194.9922,222,190.9922" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="86" x2="224" y1="190.9922" y2="190.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="61" x="93" y="168.7935">Request</text><line style="stroke: #000000; stroke-width: 1.0;" x1="93" x2="154" y1="156.7266" y2="156.7266"/><line style="stroke: #000000; stroke-width: 1.0;" x1="93" x2="154" y1="171.8594" y2="171.8594"/><line style="stroke: #000000; stroke-width: 1.0;" x1="93" x2="93" y1="156.7266" y2="171.8594"/><line style="stroke: #000000; stroke-width: 1.0;" x1="154" x2="154" y1="156.7266" y2="171.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="120" x="93" y="185.9263">- Reserve Sandbox</text><path d="M192,205.9922 L256,205.9922 L256,212.9922 L246,222.9922 L192,222.9922 L192,205.9922 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="45.1328" style="stroke: #000000; stroke-width: 2.0;" width="240" x="192" y="205.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="19" x="207" y="219.0591">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="54" x="271" y="218.2026">[初回呼出]</text><polygon fill="#383838" points="365.5,225.125,375.5,229.125,365.5,233.125,369.5,229.125" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="235" x2="371.5" y1="229.125" y2="229.125"/><polygon fill="#383838" points="321.5,239.125,311.5,243.125,321.5,247.125,317.5,243.125" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="315.5" x2="381.5" y1="243.125" y2="243.125"/><line style="stroke: #383838; stroke-width: 1.0;" x1="310.5" x2="352.5" y1="288.2578" y2="288.2578"/><line style="stroke: #383838; stroke-width: 1.0;" x1="352.5" x2="352.5" y1="288.2578" y2="301.2578"/><line style="stroke: #383838; stroke-width: 1.0;" x1="305.5" x2="352.5" y1="301.2578" y2="301.2578"/><polygon fill="#383838" points="315.5,297.2578,305.5,301.2578,315.5,305.2578,311.5,301.2578" style="stroke: #383838; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="48" x="317.5" y="281.1919">Invoke</text><line style="stroke: #000000; stroke-width: 1.0;" x1="317.5" x2="365.5" y1="269.125" y2="269.125"/><line style="stroke: #000000; stroke-width: 1.0;" x1="317.5" x2="365.5" y1="284.2578" y2="284.2578"/><line style="stroke: #000000; stroke-width: 1.0;" x1="317.5" x2="317.5" y1="269.125" y2="284.2578"/><line style="stroke: #000000; stroke-width: 1.0;" x1="365.5" x2="365.5" y1="269.125" y2="284.2578"/><path d="M13,318.2578 L231,318.2578 L231,325.2578 L221,335.2578 L13,335.2578 L13,318.2578 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="540.2578" style="stroke: #000000; stroke-width: 2.0;" width="811" x="13" y="318.2578"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="173" x="28" y="331.3247">非同期実行/スケールアップ</text><polygon fill="#383838" points="69,337.3906,79,341.3906,69,345.3906,73,341.3906" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="39" x2="75" y1="341.3906" y2="341.3906"/><polygon fill="#383838" points="751.5,370.5234,761.5,374.5234,751.5,378.5234,755.5,374.5234" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="86" x2="757.5" y1="374.5234" y2="374.5234"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="103" x="93" y="367.4575">SendMessage</text><line style="stroke: #000000; stroke-width: 1.0;" x1="93" x2="196" y1="355.3906" y2="355.3906"/><line style="stroke: #000000; stroke-width: 1.0;" x1="93" x2="196" y1="370.5234" y2="370.5234"/><line style="stroke: #000000; stroke-width: 1.0;" x1="93" x2="93" y1="355.3906" y2="370.5234"/><line style="stroke: #000000; stroke-width: 1.0;" x1="196" x2="196" y1="355.3906" y2="370.5234"/><path d="M412,389.5234 L555,389.5234 L555,396.5234 L545,406.5234 L412,406.5234 L412,389.5234 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="166.7969" style="stroke: #000000; stroke-width: 2.0;" width="402" x="412" y="389.5234"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="98" x="427" y="402.5903">スケールアップ</text><polygon fill="#383838" points="751.5,423.7891,761.5,427.7891,751.5,431.7891,755.5,427.7891" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="546.5" x2="757.5" y1="427.7891" y2="427.7891"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="70" x="553.5" y="422.7231">Workを探索</text><path d="M422,442.7891 L486,442.7891 L486,449.7891 L476,459.7891 L422,459.7891 L422,442.7891 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="106.5313" style="stroke: #000000; stroke-width: 2.0;" width="382" x="422" y="442.7891"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="19" x="437" y="455.856">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="197" x="501" y="454.9995">[関数の同時実行数の設定が小さい場合]</text><polygon fill="#383838" points="665,461.9219,675,465.9219,665,469.9219,669,465.9219" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="546.5" x2="671" y1="465.9219" y2="465.9219"/><polygon fill="#383838" points="470,506.1875,460,510.1875,470,514.1875,466,510.1875" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="464" x2="676" y1="510.1875" y2="510.1875"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="113" x="476" y="489.9888">Pollerの割当を作成</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="199" x="476" y="505.1216">(Poller Assignment Dataに書込)</text><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="422" x2="804" y1="519.1875" y2="519.1875"/><polygon fill="#383838" points="751.5,537.3203,761.5,541.3203,751.5,545.3203,755.5,541.3203" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="541.5" x2="757.5" y1="541.3203" y2="541.3203"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="193" x="548.5" y="536.2544">新たにdedicatedなキューを作成</text><polygon fill="#383838" points="470,580.4531,460,584.4531,470,588.4531,466,584.4531" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="464" x2="681" y1="584.4531" y2="584.4531"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="91" x="476" y="579.3872">ヘルスチェック</text><polygon fill="#383838" points="756.5,628.7188,766.5,632.7188,756.5,636.7188,760.5,632.7188" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="459" x2="762.5" y1="632.7188" y2="632.7188"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="123" x="466" y="610.52">ReceiveMessage</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="99" x="466" y="625.6528">DeleteMessage</text><line style="stroke: #000000; stroke-width: 1.0;" x1="466" x2="589" y1="598.4531" y2="598.4531"/><line style="stroke: #000000; stroke-width: 1.0;" x1="466" x2="589" y1="613.5859" y2="613.5859"/><line style="stroke: #000000; stroke-width: 1.0;" x1="466" x2="589" y1="628.7188" y2="628.7188"/><line style="stroke: #000000; stroke-width: 1.0;" x1="466" x2="466" y1="598.4531" y2="628.7188"/><line style="stroke: #000000; stroke-width: 1.0;" x1="589" x2="589" y1="598.4531" y2="628.7188"/><polygon fill="#383838" points="102,661.8516,92,665.8516,102,669.8516,98,665.8516" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="96" x2="453" y1="665.8516" y2="665.8516"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="48" x="108" y="658.7856">Invoke</text><line style="stroke: #000000; stroke-width: 1.0;" x1="108" x2="156" y1="646.7188" y2="646.7188"/><line style="stroke: #000000; stroke-width: 1.0;" x1="108" x2="156" y1="661.8516" y2="661.8516"/><line style="stroke: #000000; stroke-width: 1.0;" x1="108" x2="108" y1="646.7188" y2="661.8516"/><line style="stroke: #000000; stroke-width: 1.0;" x1="156" x2="156" y1="646.7188" y2="661.8516"/><path d="M55,680.8516 L170,680.8516 L170,687.8516 L160,697.8516 L55,697.8516 L55,680.8516 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="170.6641" style="stroke: #000000; stroke-width: 2.0;" width="387" x="55" y="680.8516"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="70" x="70" y="693.9185">非同期実行</text><polygon fill="#383838" points="218,734.25,228,738.25,218,742.25,222,738.25" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="86" x2="224" y1="738.25" y2="738.25"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="61" x="93" y="716.0513">Request</text><line style="stroke: #000000; stroke-width: 1.0;" x1="93" x2="154" y1="703.9844" y2="703.9844"/><line style="stroke: #000000; stroke-width: 1.0;" x1="93" x2="154" y1="719.1172" y2="719.1172"/><line style="stroke: #000000; stroke-width: 1.0;" x1="93" x2="93" y1="703.9844" y2="719.1172"/><line style="stroke: #000000; stroke-width: 1.0;" x1="154" x2="154" y1="703.9844" y2="719.1172"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="120" x="93" y="733.1841">- Reserve Sandbox</text><path d="M192,753.25 L256,753.25 L256,760.25 L246,770.25 L192,770.25 L192,753.25 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="45.1328" style="stroke: #000000; stroke-width: 2.0;" width="240" x="192" y="753.25"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="19" x="207" y="766.3169">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="54" x="271" y="765.4604">[初回呼出]</text><polygon fill="#383838" points="365.5,772.3828,375.5,776.3828,365.5,780.3828,369.5,776.3828" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="235" x2="371.5" y1="776.3828" y2="776.3828"/><polygon fill="#383838" points="321.5,786.3828,311.5,790.3828,321.5,794.3828,317.5,790.3828" style="stroke: #383838; stroke-width: 1.0;"/><line style="stroke: #383838; stroke-width: 1.0;" x1="315.5" x2="381.5" y1="790.3828" y2="790.3828"/><line style="stroke: #383838; stroke-width: 1.0;" x1="310.5" x2="352.5" y1="835.5156" y2="835.5156"/><line style="stroke: #383838; stroke-width: 1.0;" x1="352.5" x2="352.5" y1="835.5156" y2="848.5156"/><line style="stroke: #383838; stroke-width: 1.0;" x1="305.5" x2="352.5" y1="848.5156" y2="848.5156"/><polygon fill="#383838" points="315.5,844.5156,305.5,848.5156,315.5,852.5156,311.5,848.5156" style="stroke: #383838; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="48" x="317.5" y="828.4497">Invoke</text><line style="stroke: #000000; stroke-width: 1.0;" x1="317.5" x2="365.5" y1="816.3828" y2="816.3828"/><line style="stroke: #000000; stroke-width: 1.0;" x1="317.5" x2="365.5" y1="831.5156" y2="831.5156"/><line style="stroke: #000000; stroke-width: 1.0;" x1="317.5" x2="317.5" y1="816.3828" y2="831.5156"/><line style="stroke: #000000; stroke-width: 1.0;" x1="365.5" x2="365.5" y1="816.3828" y2="831.5156"/><!--MD5=[77a8a509f79f723eaaed70ed102223d5]
@startuml
skinparam monochrome true
skinparam backgroundColor #EEEEEE
control ALB as LB
actor "Front\nEnd" as FE
actor "Counting\nService" as CS
actor "Worker\nManager" as WM
actor Worker as W
actor "Placement\nService" as PS
actor Poller as P
actor "State Manager\nStream Tracker" as SM
actor "Leasing\nService" as LS
collections SQS as Q
group 同期実行
LB -> FE
activate LB
activate FE
FE -> WM: |Request|\n- Reserve Sandbox
deactivate FE
activate WM
alt 初回呼出
WM -> PS
deactivate WM
activate PS
PS -> W
deactivate PS
activate W
end
W -> W: |Invoke|
deactivate W
end
group 非同期実行/スケールアップ
LB -> FE
deactivate LB
activate FE
FE -> Q: |SendMessage|
deactivate FE
activate Q
group スケールアップ
SM -> Q: Workを探索
activate SM
alt 関数の同時実行数の設定が小さい場合
SM -> LS
activate LS
LS -> P: Pollerの割当を作成\n(Poller Assignment Dataに書込)
activate P
else
SM -> Q: 新たにdedicatedなキューを作成
deactivate SM
end
end
LS -> P: ヘルスチェック
deactivate LS
P -> Q: |ReceiveMessage|\n|DeleteMessage|
deactivate Q
P -> FE: |Invoke|
deactivate P
activate FE
group 非同期実行
FE -> WM: |Request|\n- Reserve Sandbox
deactivate FE
activate WM
alt 初回呼出
WM -> PS
deactivate WM
activate PS
PS -> W
deactivate PS
activate W
end
W -> W: |Invoke|
deactivate W
end
end
@enduml
PlantUML version 1.2019.12(Sun Nov 03 10:24:54 UTC 2019)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 1.8.0_232-heroku-b09
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment