рд╕рд░реНрд╡рд░рд▓реЗрд╕ / Lambda рдХреЙрд╕реНрдЯ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ?
рдпрд╣ рдЯреВрд▓ AWS Lambda, Google Cloud Functions рдпрд╛ Azure Functions рдЬреИрд╕реЗ рдХрд┐рд╕реА рд╕рд░реНрд╡рд░рд▓реЗрд╕ рдлрдВрдХреНрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдорд╛рд╕рд┐рдХ рд▓рд╛рдЧрдд рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░рд▓реЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЖрдорддреМрд░ рдкрд░ рджреЛ рдЖрдзрд╛рд░реЛрдВ рдкрд░ рдмрд┐рд▓рд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ: рд╣рд░ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ (invocation) рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╢реБрд▓реНрдХ, рдФрд░ GB-рд╕реЗрдХрдВрдб рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрдВрдкреНрдпреВрдЯ рд╢реБрд▓реНрдХ тАФ рдпрд╛рдиреА рдлрдВрдХреНрд╢рди рдХреЛ рджреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ рдЙрд╕рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рд╕рдордп рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ред рдЖрдк рдЕрдкрдирд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ, рдФрд╕рдд рдбреНрдпреВрд░реЗрд╢рди, рдореЗрдореЛрд░реА рд╕рд╛рдЗрдЬрд╝ рдФрд░ рдЕрдкрдиреЗ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреА рдХреАрдорддреЗрдВ рдбрд╛рд▓рдХрд░, рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рд╕рд╛рдлрд╝ рдорд╛рд╕рд┐рдХ рдЕрдиреБрдорд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпреЗ рдХреАрдорддреЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ AWS рдЬреИрд╕реЗ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдп рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реЛрдВ рдХреА рдбреЙрд▓рд░-рдЖрдзрд╛рд░рд┐рдд рджрд░реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд░реАрдЬрди рдФрд░ рдореБрджреНрд░рд╛ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдЬрд╛рдВрдЪ рд▓реЗрдВред
рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреИрд╕реЗ рдХрд░реЗрдВ
рдЕрдкрдиреА рдЕрдиреБрдорд╛рдирд┐рдд рдорд╛рд╕рд┐рдХ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ, рд╣рд░ invocation рдХреА рдФрд╕рдд рдбреНрдпреВрд░реЗрд╢рди (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ), рдФрд░ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА (MB рдореЗрдВ) рджрд░реНрдЬ рдХрд░реЗрдВред рдлрд┐рд░ рдЕрдкрдиреЗ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреА рдкреНрд░рддрд┐ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреАрдордд рдФрд░ рдкреНрд░рддрд┐ GB-рд╕реЗрдХрдВрдб рдХреАрдордд рдбрд╛рд▓реЗрдВред рдпрд╣рд╛рдБ рджрд┐рдЦрд╛рдИ рдЧрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреАрдорддреЗрдВ рдЖрдо AWS Lambda on-demand рджрд░реЛрдВ рдХреЗ рдХрд░реАрдм рд╣реИрдВ (рдкреНрд░рддрд┐ 10 рд▓рд╛рдЦ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ $0.20 рдФрд░ рд▓рдЧрднрдЧ $0.0000166667 рдкреНрд░рддрд┐ GB-рд╕реЗрдХрдВрдб)ред рдЕрдкрдиреЗ рд░реАрдЬрди рдФрд░ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреА рдореМрдЬреВрджрд╛ рдХреАрдорддреЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рдмрд╛рд░ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд▓реЗрдВред
рдлрд╝реЙрд░реНрдореВрд▓рд╛ рд╕рдордЭреЗрдВ
рд▓рд╛рдЧрдд = рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ ├Ч рдкреНрд░рддрд┐-рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреАрдордд + (рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ ├Ч рдбреНрдпреВрд░реЗрд╢рди рд╕реЗрдХрдВрдб рдореЗрдВ ├Ч рдореЗрдореЛрд░реА GB рдореЗрдВ) ├Ч рдкреНрд░рддрд┐ GB-рд╕реЗрдХрдВрдб рдХреАрдорддред рдбреНрдпреВрд░реЗрд╢рди рдХреЛ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕реЗ рд╕реЗрдХрдВрдб рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ (├╖1000) рдФрд░ рдореЗрдореЛрд░реА рдХреЛ MB рд╕реЗ GB рдореЗрдВ (├╖1024)ред рдмреАрдЪ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХреБрд▓ GB-рд╕реЗрдХрдВрдб рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХрдВрдкреНрдпреВрдЯ рдХрд╛ рдмрд┐рд▓ рдЗрд╕реА рдкрд░ рдмрдирддрд╛ рд╣реИред
$$\text{Cost} = R \cdot p_r + \left(R \cdot \frac{d}{1000} \cdot \frac{m}{1024}\right) \cdot p_g$$ $$\text{where}\quad \left\{ \begin{aligned} R &= \text{Monthly Requests} \\ p_r &= \text{Price per Request} \\ d &= \text{Avg Duration (ms)} \\ m &= \text{Memory (MB)} \\ p_g &= \text{Price per GB-second} \end{aligned} \right.$$
рд╣рд▓ рдХрд┐рдпрд╛ рд╣реБрдЖ рдЙрджрд╛рд╣рд░рдг
рдорд╛рди рд▓реАрдЬрд┐рдП 1,000,000 рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ, 200 ms рдФрд╕рдд рдбреНрдпреВрд░реЗрд╢рди, 512 MB рдореЗрдореЛрд░реА, $0.0000002 рдкреНрд░рддрд┐ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ, $0.0000166667 рдкреНрд░рддрд┐ GB-рд╕реЗрдХрдВрдбред рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╢реБрд▓реНрдХ = \(1{,}000{,}000 \times 0.0000002 = \$0.20\)ред GB-рд╕реЗрдХрдВрдб = \(1{,}000{,}000 \times 0.2 \times 0.5 = 100{,}000\)ред рдХрдВрдкреНрдпреВрдЯ рд╢реБрд▓реНрдХ = \(100{,}000 \times 0.0000166667 \approx \$1.67\)ред рдХреБрд▓ \(\approx \$1.87\) рдкреНрд░рддрд┐ рдорд╛рд╣ред
рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╡рд╛рд▓
рдХреНрдпрд╛ рдЗрд╕рдореЗрдВ рдлреНрд░реА рдЯрд┐рдпрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ? рдирд╣реАрдВ тАФ рдпрд╣ рдХреБрд▓ рдХрдЪреНрдЪреА рд▓рд╛рдЧрдд рджрд┐рдЦрд╛рддрд╛ рд╣реИред AWS Lambda рдПрдХ рд╕реНрдерд╛рдпреА рдлреНрд░реА рдЯрд┐рдпрд░ рджреЗрддрд╛ рд╣реИ (рдкреНрд░рддрд┐ рдорд╛рд╣ 10 рд▓рд╛рдЦ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдФрд░ 400,000 GB-рд╕реЗрдХрдВрдб), рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдЕрд▓рдЧ рд╕реЗ рдШрдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдореЗрдореЛрд░реА рдХреЛ 1024 рд╕реЗ рдХреНрдпреЛрдВ рднрд╛рдЧ рджреЗрддреЗ рд╣реИрдВ? рдХреАрдордд рдкреНрд░рддрд┐ GB-рд╕реЗрдХрдВрдб рд╣реЛрддреА рд╣реИ, рдФрд░ 1 GB = 1024 MB, рдЗрд╕рд▓рд┐рдП GB-рд╕реЗрдХрдВрдб рдирд┐рдХрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ MB рдореЗрдВ рджреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ GB рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдпрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рд▓рд╛рдЧрдд рд╢рд╛рдорд┐рд▓ рд╣реИ? рдирд╣реАрдВред рдпрд╣ рд╕рд┐рд░реНрдлрд╝ invocation рдФрд░ рдХрдВрдкреНрдпреВрдЯ рд╢реБрд▓реНрдХ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ; egress, logging рдФрд░ storage рдХрд╛ рдмрд┐рд▓ рдЕрд▓рдЧ рд╕реЗ рдмрдирддрд╛ рд╣реИред