рдореЗрд░рд╛ рдирд╛рдо рдУрд▓реЗрдЧ рдПрд░реНрдордХреЛрд╡ рд╣реИ, рдореИрдВ Yandex.Taxi рдХреЗ рдмреИрдХрдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджреИрдирд┐рдХ рд╕реНрдЯреИрдВрдб-рдЕрдк рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рджрд┐рди рдХреЗ рджреМрд░рд╛рди рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ ...
рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдп рдХрд╛рдлреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИрдВ!12:45 рдкрд░, рдкреВрд░реА рдЯреАрдо рдореАрдЯрд┐рдВрдЧ рд░реВрдо рдореЗрдВ рдЗрдХрдЯреНрдард╛ рд╣реЛрддреА рд╣реИред рдкрд╣рд▓рд╛ рд╢рдмреНрдж рдЯреНрд░реЗрдиреА рдбреЗрд╡рд▓рдкрд░ рдЗрд╡рд╛рди рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╡рд╛рди:
рдореИрдВрдиреЗ рдЙрди рд╕рднреА рд░рд╛рд╢рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕рдВрднрд╡ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рдо рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬреЛ рдпрд╛рддреНрд░реА рдХреЛ рдпрд╛рддреНрд░рд╛ рдХреА рдЬреНрдЮрд╛рдд рд▓рд╛рдЧрдд рдкрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рджреЗ рд╕рдХрддреЗ рдереЗред рдХрд╛рд░реНрдп рдХрд╛рдлреА рдкреНрд░рд╕рд┐рджреНрдз рд╣реИ - рдЗрд╕реЗ "рд╕рд┐рдХреНрдХреЛрдВ рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдХрдИ рдЕрдиреБрдХреВрд▓рди рдЬреЛрдбрд╝реЗред рдореИрдВрдиреЗ рдХрд▓ рд╕реЗ рдПрдХ рджрд┐рди рдкрд╣рд▓реЗ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдкреВрд▓ рдЕрдиреБрд░реЛрдз рджрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рддрдм рд╕реЗ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЕрдиреНрдирд╛ рдХреА рд╕рдВрддреБрд╖реНрдЯ рдореБрд╕реНрдХрд╛рди рд╕реЗ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЗрд╡рд╛рди рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд┐рд╕рдХреА рд╕рд╣реА рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрд╕рдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдиреНрдпреВрдирддрдо рдЕрдкрдШрдЯрди рдХрд┐рдпрд╛, рдФрд░ рд╡рд╣ рдЪрд╛рд▓рд╛рдХреА рд╕реЗ рдмреИрдВрдХрдиреЛрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рдерд╛ред рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рд╕рдВрднрд╡ рдмреИрдВрдХрдиреЛрдЯреНрд╕ рдХреЛ рдХреЛрдб рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛, рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдкрд╛рдардХ рдЬрд▓реНрджреА рд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХреЗ:
for exception in self.exceptions[banknote]: exc_value = value + exception.delta if exc_value - cost >= banknote: continue if exc_value > cost >= exception.banknote: banknote_results.append(exc_value)
рдЦреИрд░, рдмреЗрд╢рдХ, рдореИрдВрдиреЗ рдмрд╛рдХреА рд╕рдордп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдХреЛрдб рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдпрд╛ред
RUB = [1, 2, 5, 10, 50, 100, 200, 500, 1000, 2000, 5000] CUSTOM_BANKNOTES = [1, 3, 7, 11] @pytest.mark.parametrize( 'cost, banknotes, expected_changes', [
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд░ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛ рдЬреЛ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕реЗ рдкреВрд░реНрдг рдмрд╕реНрдЯ рдорд╛рдирддреЗ рд╣реИрдВ)ред рдкрд╣рд▓реЗ 10 рд╣рдЬрд╛рд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдирддреАрдЬрд╛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЖрдЗрдП, рд╕реНрдЯреИрдВрдб-рдЕрдк рд╕реЗ рдзреНрдпрд╛рди рд╣рдЯрд╛рдиреЗ рдФрд░ рдЗрд╡рд╛рди рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╣реЗ рдЧрдП рд╣рд░ рдЪреАрдЬрд╝ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВред рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп, рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рд╣реИред рдЗрд╕ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдкреВрд░реЗ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:
- рдкрд░рдорд╛рдгреБ рд╡рд┐рдЦрдВрдбрди рдореЗрдВ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХрд╛ рд╡рд┐рд░реЛрдз рдХрд░реЗрдВред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЗ рдХреИрдирд╡рд╛рд╕ рдХреЛ рджреЗрдЦрдиреЗ рдкрд░ рдкрдардиреАрдпрддрд╛ рдЬрдЯрд┐рд▓ рд╣реЛрддреА рд╣реИред
- рдХреЛрдб рдХреЗ "рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓" рднрд╛рдЧреЛрдВ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ рд╣рдорд╛рд░реА рдЯреАрдо рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ: рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫрд╛ рдЧрдпрд╛ рд╣реИ (рд╡реЗ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ), рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмреЗрд╣рддрд░ рдЕрднреА рддрдХ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╕реЛрдЪреЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝реЗрдВред
- рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдореБрдЦреНрдп рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВред рдЯреЗрд╕реНрдЯ рди рдХреЗрд╡рд▓ рдХреЛрдб рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред рд╡реЗ рдЕрднреА рднреА рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдХрд╛рд╢, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдЕрдиреБрднрд╡ рд╡рд╛рд▓реЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдЗрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдмреИрдХрдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╕реНрдХреВрд▓ рдЬреЛ рд╣рдо рдЕрднреА рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЫрд╛рддреНрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓реА рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХреМрд╢рд▓ рд╣рд╛рд╕рд┐рд▓ рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░рд╛ рджреВрд╕рд░рд╛ рд▓рдХреНрд╖реНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдкреНрд░рд╕рд╛рд░ рдХрд░рдирд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рд╕реНрдЯреИрдВрдб-рдЕрдк рдХреЗ рд▓рд┐рдПред рдЗрд╡рд╛рди рдХреЗ рдмрд╛рдж, рдЕрдиреНрдирд╛ рдмреЛрд▓рддрд╛ рд╣реИред
рдЕрдиреНрдирд╛:
рдореИрдВ рдкреНрд░рдЪрд╛рд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реМрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдЗрдХреНрд░реЛ-рд╕реЗрд╡рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рд╕реЗрд╡рд╛ рдиреЗ рд╢реБрд░реВ рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рдбреЗрдЯрд╛-рд╕реНрдЯрдмреНрд╕ рджрд┐рдпрд╛ рдерд╛ред рддрдм рдкрд░реАрдХреНрд╖рдХреЛрдВ рдиреЗ рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛, рдФрд░ рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛, рдФрд░ рдЕрдм рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХреА рд╡рд╛рдкрд╕реА рдХреЗ рд╕рд╛рде рдПрдХ "рдИрдорд╛рдирджрд╛рд░" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ 10.9)ред рд╡рд┐рдШрдЯрди, рдореВрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд, рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рдорджрдж рдХреА, рдЬрд┐рд╕рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛ рд╕реНрд░реЛрдд (рдЪрд╛рд╣реЗ рд╡рд╣ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдмрд╛рд╣рд░реА рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд░рд╡рд░реНрдХ рд╣реЛ) рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рд▓реЛрдб рдХреЗ рддрд╣рдд рд▓рд┐рдЦрд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреА рдЬрд╛рдВрдЪ рдХреА, рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬрд╛рдиреЗ рдкрд░ рд╣реИрдВрдбрд▓ рддреЗрдЬреА рд╕реЗ рдмреНрд░реЗрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рддрдХ рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рдЧрдпрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред
Vadim:
рдФрд░ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЕрдиреБрд░реЛрдз?
Anya:
OR рдХреЗ рддрд╣рдд рджреЛ рд╢рд░реНрддреЗрдВ:
SELECT * FROM table_1 JOIN table_2 ON table_1.some_id = table_2.some_id WHERE (table_2.attr1 = 'val' OR table_1.attr2 IN ('val1', 'val2')) AND table_1.deleted_at IS NULL AND table_2.deleted_at IS NULL ORDER BY table_2.created_at
рдХреНрд╡реЗрд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ 2 рдХреЗ attr1 рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ table_1 рдХреЗ attr2 рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
Vadim:
MySQL рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛, рд╕рдорд╕реНрдпрд╛ OR рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, att2 рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред рдФрд░ рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рд╕реАрдХ рд╕реНрдХреИрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ - рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкреВрд░реНрдг рдкрд╛рд╕ред рдЕрдиреБрд░реЛрдз рдХреЛ рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдмреИрдХрдПрдВрдб рдкрдХреНрд╖ рдкрд░ рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдФрд░ рдлреНрд░реАрдЬ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рд▓реЗрдирджреЗрди рдореЗрдВ рдЗрди рджреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ, рдпрд╛ рдпреВрдирд┐рдЕрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдзрд╛рд░ рдкрдХреНрд╖ рдкрд░:
SELECT * FROM table_1 JOIN table_2 ON table_1.some_id = table_2.some_id WHERE (table_2.attr1 = 'val') AND table_1.deleted_at IS NULL AND table_2.deleted_at IS NULL ORDER BY table_2.created_at SELECT * FROM table_1 JOIN table_2 ON table_1.some_id = table_2.some_id WHERE (table_1.attr2 IN ('val1' , 'val2')) AND table_1.deleted_at IS NULL AND table_2.deleted_at IS NULL ORDER BY table_2.created_at
Anya:
рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ ^ _ ^ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛
рдлрд┐рд░ рд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
- рд▓рдЧрднрдЧ рд╕рднреА рдЙрддреНрдкрд╛рдж рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдп рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ (рд╕реЗрд╡рд╛рдУрдВ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕) рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЕрдкрдШрдЯрди рдХреЗ рдореБрджреНрджреЗ рдкрд░ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рдХрдХреНрд╖рд╛рдПрдВ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреАред
- рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЛ рд╕рдордЭреЗрдВред
рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдХрд┐рд╕реА рднреА рдмреИрдХрдПрдВрдб рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИред рд╕реНрдХреВрд▓ рд╕реЗрд╡рд╛рдУрдВ (рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ) рдХреА рдмрд╛рддрдЪреАрдд рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдЧрд╛ред рдЫрд╛рддреНрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╕реАрдЦреЗрдВрдЧреЗ - рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдкрд░реАрдХреНрд╖рдгред
рдмреЛрд▓рдиреЗ рдХрд╛ рдЖрдЦрд┐рд░реА рд╕рдордп рд╡рд╛рджрд┐рдо рд╣реИред
Vadim:
рдореИрдВ рдПрдХ рд╣рдлреНрддреЗ рдХреЗ рд▓рд┐рдП рдбреНрдпреВрдЯреА рдкрд░ рдерд╛, рдШрдЯрдирд╛рдУрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рд╕реБрд▓рдЭрд╛ рд▓рд┐рдпрд╛ред рдХреЛрдб рдореЗрдВ рдПрдХ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдЧрд▓рддреА рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдордп рд▓реЗрддреА рд╣реИ: рдареЗрд╕ рдореЗрдВ рдорд╛рдВрдЧ рдкрд░ рдХреЛрдИ рд▓реЙрдЧ рдирд╣реАрдВ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдирдХреА рд░рдЪрдирд╛ рдХреЛрдб рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдереАред
рдЙрдкрд╕реНрдерд┐рдд рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд╢реЛрдХрдкреВрд░реНрдг рдореМрди рд╕реЗ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ ред
рдЕрдиреБрд░реЛрдз рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, request_id рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ:
log_extra рдЕрдиреБрд░реЛрдз рдХреА рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╣реИ, рдЬрд┐рд╕рдХреА рдХреБрдВрдЬреА рдФрд░ рдореВрд▓реНрдп рд▓реЙрдЧ рдХреЛ рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗред рд▓реЙрдЧрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП log_extra рдкрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛, рд░рд┐рдХреЙрд░реНрдб рдЕрдиреНрдп рд╕рднреА рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ request_id рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ рд╕реЗрд╡рд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдерд╛, рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд░реЛрд▓ рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдШрдЯрдирд╛ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдерд╛ред рдРрд╕рд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдФрд░ log_extra рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдирдХ рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд▓рд┐рдЦрд╛:
async def handle(self, request, handler): log_extra = request['log_extra'] log_extra_manager.set_log_extra(log_extra) return await handler(request)
рдпрд╣ рддрдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ log_extra рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рджреЛ рд╡рд┐рдХрд▓реНрдк рдереЗред рдкрд╣рд▓реЗ asyncio рд╕реЗ Eventloop рдХреЗ рд▓рд┐рдП task_factory рдмрджрд▓рдирд╛ рд╣реИ:
class LogExtraManager: __init__(self, context: Any, settings: typing.Optional[Dict[str, dict]], activations_parameters: list) -> None: loop = asyncio.get_event_loop() task_factory = loop.get_task_factory() if task_factory is None: task_factory = _default_task_factory @functools.wraps(task_factory) def log_extrad_factory(ev_loop, coro): child_task = task_factory(ev_loop, coro) parent_task = asyncio.Task.current_task(loop=ev_loop) log_extra = getattr(parent_task, LOG_EXTRA_CONTEXT_KEY, None) setattr(child_task, LOG_EXTRA_CONTEXT_KEY, log_extra) return child_task
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдЬрдЧрд░ 3.7 рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЛ "рдзрдХреНрдХрд╛" рдХрд░рдирд╛ рд╣реИ:
log_extra_var = contextvars.ContextVar(LOG_EXTRA_CONTEXT_KEY) class LogExtraManager: def set_log_extra(log_extra: dict): log_extra_var.set(log_extra)
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рдЖрдЧреЗ рдпрд╣ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ log_extra рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛ред
class LogExtraFactory(logging.LogRecord):
рдкрд░рд┐рдгрд╛рдо:
- Yandex.Taxi рдореЗрдВ (рдФрд░ рд╣рд░ рдЬрдЧрд╣ Yandex рдореЗрдВ) asyncio рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рди рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рднреА рд╕рдордЭрдирд╛ рд╣реИред
- рднрд╛рд╖рд╛ рдХреЗ рд╕рднреА рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЪреИрдВрдЬ рдкрдврд╝рдиреЗ рдХреА рдЖрджрдд рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ, рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдк рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреА рдорджрдж рд╕реЗ рдЕрдкрдиреЗ рдФрд░ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдХреИрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
- рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕рдордЭрдиреЗ рд╕реЗ рдбрд░реЛ рдорддред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдХреМрд╢рд▓ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдирдИ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдмреИрдХреЗрдВрдб рд╕реНрдХреВрд▓ рдХреЗ рд╢рд┐рдХреНрд╖рдХреЛрдВ рдиреЗ рдПрдХ
рдкрд╛рдЙрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирдордХ рдЦрд╛рдпрд╛ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╢рдВрдХреБ рднрд░ рджрд┐рдПред рд╡реЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реНрддрд░ рдкрд░ рдФрд░ рдкреИрдХреЗрдЬ рдЗрдВрдЯрд░реНрдирд▓ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ - рдкрд╛рдпрдерди рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВрдЧреЗред
рдХрд┐рддрд╛рдмреЗрдВ рдФрд░ рд▓рд┐рдВрдХ
рдЕрдЬрдЧрд░ рд╕реАрдЦрдирд╛ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
- рддреАрди рдкреБрд╕реНрддрдХреЗрдВ: рдкрд╛рдпрдерди рдХреБрдХрдмреБрдХ , рдкрд╛рдпрдерди 3 рдореЗрдВ рдбрд╛рдЗрд╡рд┐рдВрдЧ, рдФрд░ рдкрд╛рдпрдерди рдЯреНрд░рд┐рдХреНрд╕ ред
- рд░реЗрдордВрдб рд╣реЗрдЯрд┐рдВрдЧрд░ рдФрд░ рдбреЗрд╡рд┐рдб рдмреЗрд╕реНрд▓реА рдЬреИрд╕реЗ рдЖрдИрдЯреА рдЙрджреНрдпреЛрдЧ рдХреЗ рд╕реНрддрдВрднреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡реАрдбрд┐рдпреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛рдиред рдкрд╣рд▓реЗ рдПрдХ рдХреЗ рд╡реАрдбрд┐рдпреЛ рд▓реЗрдХреНрдЪрд░ рд╕реЗ, рд░рд┐рдкреЛрд░реНрдЯ "рдмрд┐рдпреЙрдиреНрдб рдкреАрдИрдкреА 8 - рд╕реБрдВрджрд░ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЕрднреНрдпрд╛рд╕" рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрдЬрд╝рд▓реЗ рдЖрдкрдХреЛ рдПрд╕рд┐рдВрдХреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рд╕рдордЭ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рддрд╛рдмреЗрдВ рдкрдврд╝реЗрдВ:
- "рдЕрддреНрдпрдзрд┐рдХ рднрд░реЗ рд╣реБрдП рдЕрдиреБрдкреНрд░рдпреЛрдЧ ред " рдпрд╣рд╛рдВ, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдбреЗрдЯрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ, рд╡рд┐рддрд░рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо, рдкреНрд░рддрд┐рдХреГрддрд┐, рд╡рд┐рднрд╛рдЬрди, рд▓реЗрдирджреЗрди, рдЖрджрд┐)ред
- "Mikroservisyред рд╡рд┐рдХрд╛рд╕ рдФрд░ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдкреИрдЯрд░реНрди ред тАЭ рдпрд╣ рдкреБрд╕реНрддрдХ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрд░реНрдлрд╝ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ, рдХрдорд┐рдпреЛрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдЬреЛ рдПрдХ рдореЛрдиреЛрд▓рд┐рде рд╕реЗ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯ рдореЗрдВ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЖрдк рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд░реБрдЭрд╛рдиреЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗ рдФрд░ рдХреЛрдб рдЕрдкрдШрдЯрди рдХреА рдореВрд▓ рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд╕реАрдЦреЗрдВрдЧреЗред
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреМрд╢рд▓ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХреЛ рдкрдврд╝ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдЪрд╛рдирдХ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рд╣реА рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдирдП рд▓реЛрдХрдкреНрд░рд┐рдп
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рджреЗрдЦрдиреЗ рдХреА рдЖрджрдд рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рд╕реНрдЯреИрдВрдб-рдЕрдк рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛, рд╕рдм рд▓реЛрдЧ рдХрд╛рдо рдкрд░ рдЪрд▓реЗ рдЧрдПред