02 рдорд╛рд░реНрдЪ 2025┬╖8 рдорд┐рдирдЯ рдкрдврд╝рдиреЗ рдореЗрдВ

dev, staging, prod рдХреЗ рд▓рд┐рдП рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди

рдбрд┐рд╡реЗрд▓рдкрдореЗрдВрдЯ, рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдФрд░ рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдореИрдиреЗрдЬ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВ тАФ API рдХреАрдЬрд╝, SMTP рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕, рдФрд░ webhook рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдмрд┐рдирд╛ рд▓реАрдХ рд╣реБрдП рдХреИрд╕реЗ рд░рдЦреЗрдВред

dev, staging, prod рдХреЗ рд▓рд┐рдП рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди

рд╣рдо рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рд╕рд┐рдХрд░реЗрдЯреНрд╕ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди рдХрд╛ рдорддрд▓рдм рд╣реИ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд╛рдиреЛрдВ рдХреЛ рдЙрди рдЬрдЧрд╣реЛрдВ рд╕реЗ рджреВрд░ рд░рдЦрдирд╛ рдЬрд╣рд╛рдБ рд╡реЗ рдЧрд▓рддреА рд╕реЗ рдХреЙрдкреА, рдХреИрд╢, рдпрд╛ рд╕рд╛рдЭрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рд╕реАрдХреНрд░реЗрдЯ рдХреЛрдИ рднреА рдРрд╕реА рдЪреАрдЬрд╝ рд╣реИ рдЬреЛ рдПрдХреНрд╕реЗрд╕ рджреЗрддреА рд╣реИ рдпрд╛ рдкрд╣рдЪрд╛рди рд╕рд╛рдмрд┐рдд рдХрд░рддреА рд╣реИ тАФ рдЬреИрд╕реЗ API рдХреА, рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╛рд╕рд╡рд░реНрдб, SMTP рд▓реЙрдЧрд┐рди, рдпрд╛ webhook рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯред рд╕рд╛рдорд╛рдиреНрдп рдХреЙрдиреНреЮрд┐рдЧ рд╡реЛ рдорд╛рди рд╣реИ рдЬреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рдкрд╣реБрдБрдЪрд╛рддрд╛, рдЬреИрд╕реЗ рдлреАрдЪрд░ рдлреНрд▓реИрдЧ рдХрд╛ рдирд╛рдо, рдЯрд╛рдЗрдордЖрдЙрдЯ, рдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рдЗрдЯ рдХрд╛ рдмреЗрд╕ URLред

Dev, staging, рдФрд░ prod рдХреЛ рдЕрд▓рдЧ рдорд╛рдиреЛрдВ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдЕрд▓рдЧ рд╣реИрдВред Dev рддреЗрдЬрд╝ iteration рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред Staging рдХреЛ prod рдЬреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдкрд░ рдЕрд▓рдЧ-рдерд▓рдЧ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред Prod рдХреЛ рд▓реЙрдХрдбрд╛рдЙрди, рдСрдбрд┐рдЯреЗрдмрд▓ рдФрд░ рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рд╣рд░ рдЬрдЧрд╣ рдПрдХ рд╣реА рд╕реАрдХреНрд░реЗрдЯ reuse рдХрд░рддреЗ рд╣реИрдВ, рддреЛ dev рдореЗрдВ рд▓реАрдХ рд╣реЛрдирд╛ prod рдореЗрдВ рдмреНрд░реЗрдХ-рдЗрди рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

тАЬрдмрд┐рд▓реНрдбреНрд╕ рдореЗрдВ рд▓реАрдХ рд╣реЛрдирд╛тАЭ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реАрдХреНрд░реЗрдЯ рдХрд┐рд╕реА рдкреИрдХреЗрдЬреНрдб рдЪреАрдЬрд╝ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╢реЗрдпрд░ рд╣реЛрддреА рд╣реИ тАФ рдЬреИрд╕реЗ compiled backend рдмрд╛рдЗрдирд░реА, рдореЛрдмрд╛рдЗрд▓ рдРрдк рдмрдВрдбрд▓, рдпрд╛ рдлреНрд░рдВрдЯ-рдПрдВрдб рдмрдВрдбрд▓ред рдПрдХ рдмрд╛рд░ рд╕реАрдХреНрд░реЗрдЯ build artifact рдореЗрдВ рдЖ рдЬрд╛рдП, рддреЛ рд╡рд╣ рдЙрди рдЬрдЧрд╣реЛрдВ рддрдХ рдлреИрд▓ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рди рдкрд░ рдЖрдкрдХрд╛ рдХрдВрдЯреНрд░реЛрд▓ рдирд╣реАрдВ рд╣реИред

рдЧрд▓рддреА рд╕реЗ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд▓реАрдХ рдЖрдорддреМрд░ рдкрд░ рдХреБрдЫ рдЕрдиреБрдорд╛рдирд┐рдд рд░рд╛рд╕реНрддреЛрдВ рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВ:

  • рд╕реЛрд░реНрд╕ рдХреЛрдб, рд╕реИрдВрдкрд▓, рдпрд╛ рдХрдореЗрдВрдЯреНрд╕ рдореЗрдВ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдирд╛
  • рд▓реЛрдХрд▓ .env рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдХреЙрдиреНреЮрд┐рдЧ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХреЛ рд░рд┐рдкреЛ рдореЗрдВ рдХрдорд┐рдЯ рдХрд░рдирд╛
  • рдлреНрд░рдВрдЯ-рдПрдВрдб рдпрд╛ рдореЛрдмрд╛рдЗрд▓ рдмрд┐рд▓реНрдбреНрд╕ рдореЗрдВ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдмреЗрдХ рдХрд░рдирд╛ рдЬреЛ рдпреВрдЬрд╝рд░ рдбрд┐рд╡рд╛рдЗрд╕реЗрдЬрд╝ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ
  • рд▓реЙрдЧреНрд╕, рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯреНрд╕, рдпрд╛ рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдкреНрд░рд┐рдВрдЯ рд╣реЛрдирд╛
  • тАЬрдЬрд▓реНрджреА рдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдПтАЭ рдкреНрд░реЛрдбрдХреНрд╢рди рд╡реИрд▓реНрдпреВрдЬрд╝ рдХреЛ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг: рдПрдХ рдбреЗрд╡рд▓рдкрд░ SMTP рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдХреЙрдиреНреЮрд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ тАЬрдИрдореЗрд▓ рдХрд╛рдо рдХрд░ рд╕рдХреЗ,тАЭ рдлрд┐рд░ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдХрдорд┐рдЯ рдпрд╛ рд░рд┐рд▓реАрдЬрд╝ рдмрд┐рд▓реНрдб рдореЗрдВ рдкреИрдХреЗрдЬ рд╣реЛ рдЬрд╛рддреА рд╣реИред рднрд▓реЗ рд╣реА рдЖрдк рдмрд╛рдж рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рд░реЛрдЯреЗрдЯ рдХрд░ рджреЗрдВ, рдкреБрд░рд╛рдирд╛ рдмрд┐рд▓реНрдб CI рдХреИрд╢, рдРрдк рд╕реНрдЯреЛрд░ рдЕрдкрд▓реЛрдб, рдпрд╛ рдХрд┐рд╕реА рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдЕрднреА рднреА рд░рд╣ рд╕рдХрддрд╛ рд╣реИред

рд▓рдХреНрд╖реНрдп рд╕реАрдзрд╛ рд╣реИ: рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рдХреЛрдб рдФрд░ рдмрд┐рд▓реНрдбреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рд░рдЦреЗрдВ, рдФрд░ рд╣рд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдорд╛рди рд░рдирдЯрд╛рдЗрдо рдкрд░ рдпрд╛ рдХрд┐рд╕реА рд╕реБрд░рдХреНрд╖рд┐рдд рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рд╕реНрдЯреЗрдк рдХреЗ рдЬрд░рд┐рдП рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВред

рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реАрдХ рд░реЛрдХрдиреЗ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рджреНрдзрд╛рдВрдд

рдЬреНрдпрд╛рджрд╛рддрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреБрдЫ рдЖрджрддреЛрдВ рд╕реЗ рдЖрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╣рд░ рдмрд╛рд░ рдЕрдкрдирд╛рдПрдБред

рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рдХреЛрдб рдФрд░ рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рджреВрд░ рд░рдЦреЗрдВред рдХреЛрдб рдлреИрд▓рддрд╛ рд╣реИ тАФ рдХреЙрдкреА рд╣реЛрддрд╛ рд╣реИ, рд░рд┐рд╡реНрдпреВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЙрдЧ рд╣реЛрддрд╛ рд╣реИ, рдХреИрд╢ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдкрд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред рдмрд┐рд▓реНрдбреНрд╕ рднреА рдлреИрд▓рддреЗ рд╣реИрдВ: рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯреНрд╕ CI рд▓реЙрдЧреНрд╕, рдРрдк рдмрдВрдбрд▓реНрд╕, рдХрдВрдЯреЗрдирд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдЬрд╝, рдпрд╛ рд╕рд╛рдЭрд╛ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреЛ рдХреБрдЫ рднреА рдХрдорд┐рдЯ рдпрд╛ рдХрдВрдкрд╛рдЗрд▓ рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдордЭреЗрдВред

рд╣рд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ- рдЕрд▓рдЧ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд░рдЦреЗрдВ (least privilege)ред рдЖрдкрдХреА dev рдХреА рдХреЗрд╡рд▓ dev рдореЗрдВ рдХрд╛рдо рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдПрдБ рд╕реАрдорд┐рдд рд╣реЛрдВред рдЕрдЧрд░ рдХреЛрдИ рдХреА рд▓реИрдкрдЯреЙрдк рдпрд╛ рдЯреЗрд╕реНрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рд▓реАрдХ рд╣реЛрддреА рд╣реИ рддреЛ рдиреБрдХрд╕рд╛рди-contained рд░рд╣реЗред рдпрд╣реА рд╡рд┐рдЪрд╛рд░ SMTP рдпреВрдЬрд╝рд░реНрд╕, рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╛рд╕рд╡рд░реНрдбреНрд╕, рдФрд░ webhook рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рд░реЛрдЯреЗрд╢рди рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдЖрд╕рд╛рди рдмрдирд╛рдПрдВред рдорд╛рдирд┐рдП рдХрд┐ рдЖрдк рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд░реЛрдЯреЗрдЯ рдХрд░реЗрдВрдЧреЗ тАФ рдХреНрдпреЛрдВрдХрд┐ рдХрд░реЗрдВрдЧреЗ рд╣реАред рдРрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдмрд┐рдирд╛ рдХреЛрдб рдПрдбрд┐рдЯ рдХрд┐рдП рдФрд░ рдмрд┐рдирд╛ рд╣рд░ рдРрдк рдХреЛ рд░реАрдмрд┐рд▓реНрдб рдХрд┐рдП рдорд╛рди рдмрджрд▓ рд╕рдХреЗрдВред рдХрдИ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕реАрдХреНрд░реЗрдЯ рдкрдврд╝рдирд╛ (рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдпрд╛ рд╕реАрдХреНрд░реЗрдЯ рд╕реНрдЯреЛрд░ рд╕реЗ) рдФрд░ рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рди рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рд╕реАрдХреНрд░реЗрдЯ рд╕рдкреЛрд░реНрдЯ рдХрд░рдирд╛ред

рдПрдХреНрд╕реЗрд╕ рд╕реАрдорд┐рдд рдФрд░ рд▓реЙрдЧ рд░рдЦреЗрдВред рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЗрд╡рд▓ рдЙрд╕ рд╕рд░реНрд╡рд┐рд╕ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝реЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЙрдирдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕реА рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореЗрдВ рдЬрд╣рд╛рдБ рд╡рд╣ рдЪрд▓рддреА рд╣реИред рдорд╛рдирд╡ рдПрдХреНрд╕реЗрд╕ рджреБрд░реНрд▓рдн, рд╕рдордп-рд╕реАрдорд┐рдд рдФрд░ рдСрдбрд┐рдЯ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдЫреЛрдЯреА рдирд┐рдпрдо-рд╕рдВрдЧреНрд░рд╣ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ:

  • рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рдХрдорд┐рдЯ рди рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЯрд┐рдХрдЯреНрд╕, рдЪреИрдЯреНрд╕, рдпрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯреНрд╕ рдореЗрдВ рдкреЗрд╕реНрдЯ рди рдХрд░реЗрдВред
  • Dev, staging, рдФрд░ prod рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред
  • рдЗрдореЗрдЬреЗрдЬрд╝ рдпрд╛ рдореЛрдмрд╛рдЗрд▓ рдмрд┐рд▓реНрдбреНрд╕ рдореЗрдВ рд╡реИрд▓реНрдпреВрдЬрд╝ рдмреЗрдХ рдХрд░рдиреЗ рдХреА рдмрдЬрд╛рдп рд░рдирдЯрд╛рдЗрдо рдХреЙрдиреНреЮрд┐рдЧ рдкрд╕рдВрдж рдХрд░реЗрдВред
  • рдХрд┐рд╕реА рднреА рд╕рдВрджрд┐рдЧреНрдз рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдХреЗ рдмрд╛рдж рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╢реЗрдбреНрдпреВрд▓ рдкрд░ рд░реЛрдЯреЗрдЯ рдХрд░реЗрдВред
  • рдХрд┐рд╕реЗ рдФрд░ рдХреНрдпрд╛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ рд╕реАрдорд┐рдд рдХрд░реЗрдВ, рдФрд░ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рд░рдЦреЗрдВред

рдпреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХреЛрдб рд╕реНрдЯреИрдХ рдпрд╛ no-code рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЬреИрд╕реЗ AppMaster рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╛рд╕реНрддрд╛ рд╡рд╣реА рд╣реИ: рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рдмрд┐рд▓реНрдб рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦреЗрдВ рдФрд░ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рд╣реЛ рд╡рд╣реАрдВ рд╕реАрдорд┐рдд рд░рдЦреЗрдВред

рдЬрд╣рд╛рдБ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реАрдХ рд╣реЛрддреЗ рд╣реИрдВ

рдЕрдзрд┐рдХрддрд░ рд▓реАрдХ тАЬрд╣реИрдХтАЭ рдирд╣реАрдВ рд╣реЛрддреЗред рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рд╣реЛрддреЗ рд╣реИрдВ: рдПрдХ рддреЗрдЬрд╝ рдЯреЗрд╕реНрдЯ, рдПрдХ рдорджрджрдЧрд╛рд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ, рдПрдХ рдмрд┐рд▓реНрдб рдЬреЛ рдмрд╣реБрдд рдХреБрдЫ рдкреНрд░рд┐рдВрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рдЖрд░рдВрднрд┐рдХ рдХрджрдо рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реИ рдХрд┐ рдпреЗ рдЫреЛрдЯреЗ-рдЫреЛрдЯреЗ рдлрд┐рд╕рд▓рди рдЖрдорддреМрд░ рдкрд░ рдХрд╣рд╛рдБ рд╣реЛрддреА рд╣реИрдВред

Source control рдХреНрд▓рд╛рд╕рд┐рдХ рдХрд╛рд░рдг рд╣реИред рдХреЛрдИ API рдХреА рдХрд┐рд╕реА рдХреЙрдиреНреЮрд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ тАЬрдЕрднреА рдХреЗ рд▓рд┐рдПтАЭ рдкреЗрд╕реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдХрдорд┐рдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмреНрд░рд╛рдВрдЪреЗрд╕, рдкреБрд▓ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯреНрд╕, рдФрд░ рдХреЛрдб рд░рд┐рд╡реНрдпреВ рдХрдореЗрдВрдЯреНрд╕ рдореЗрдВ рдлреИрд▓ рдЬрд╛рддрд╛ рд╣реИред рднрд▓реЗ рд╣реА рдЖрдк рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рд╣рдЯрд╛рдПрдБ, рд╕реАрдХреНрд░реЗрдЯ рд╣рд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдпрд╛ рдХрд┐рд╕реА рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдкреИрдЪ рдореЗрдВ рд╣рдореЗрд╢рд╛ рд░рд╣ рд╕рдХрддрд╛ рд╣реИред

рдЬреЛ рдХреБрдЫ рдЖрдк рдпреВрдЬрд╝рд░реНрд╕ рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВ рд╡рд╣ рднреА рдмрдбрд╝рд╛ рд░рд┐рд╕реНрдХ рд╣реИред рдлреНрд░рдВрдЯ-рдПрдВрдб рдмрдВрдбрд▓реНрд╕ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдРрдк рдмрд╛рдЗрдирд░реАрдЬрд╝ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрдВрд╕реНрдкреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рд╕реАрдХреНрд░реЗрдЯ JavaScript, iOS/Android рдРрдк, рдпрд╛ тАЬрдмреЗрдХреНрдбтАЭ рдХреЙрдиреНреЮрд┐рдЧ рдореЗрдВ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдордЭреЗрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдкреНрд╕ рдкрдмреНрд▓рд┐рдХ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░реНрд╕ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХреАрдЬрд╝ рдирд╣реАрдВред

рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдСрдЯреЛрдореЗрд╢рди рдФрд░ рд╕рдкреЛрд░реНрдЯ рдХреЗ тАЬрд╣реЗрд▓реНрдкрдлреБрд▓ рдиреЙрдЗрдЬрд╝тАЭ рдХреЗ рдХрд╛рд░рдг рднреА рд▓реАрдХ рд╣реЛрддреЗ рд╣реИрдВред рдХреЙрдорди рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ CI рд▓реЙрдЧреНрд╕ рдЬреЛ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ echo рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдбрд┐рдмрдЧ рдкреНрд░рд┐рдиреНрдЯреНрд╕ рдЬрд┐рдирдореЗрдВ SMTP рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдЬреЛ рдХреЙрдиреНреЮрд┐рдЧ рдФрд░ рдЖрдЙрдЯрдмрд╛рдЙрдВрдб рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреИрдкреНрдЪрд░ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬреЗрдЬрд╝ рдФрд░ рдмрд┐рд▓реНрдб рдХреИрд╢ рдЬреЛ рдЧрд▓рддреА рд╕реЗ .env рдлрд╛рдЗрд▓реЗрдВ рд╕реНрдЯреЛрд░ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдкреЛрд░реНрдЯ рдЯрд┐рдХрдЯреНрд╕ рдЬрд┐рдирдореЗрдВ рд▓реЙрдЧреНрд╕ рдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреЗрдЬ рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯреНрд╕ рдХреЙрдкреА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рд╕реАрдХреНрд░реЗрдЯ рдмрд┐рд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдЖ рдЬрд╛рдП, рддреЛ рд╡рд╣ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдХреЙрдкреА рд╣реЛрдХрд░ рдХрдИ рдЬрдЧрд╣ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХрдВрдЯреЗрдирд░ рд▓реЗрдпрд░, рдХреИрд╢реНрдб рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ, рд▓реЙрдЧ, рдФрд░ рдЯрд┐рдХрдЯред рд╣рд▓ рдЖрдорддреМрд░ рдкрд░ рд╕рд┐рд░реНрдл рдПрдХ рдЯреВрд▓ рдХрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ тАФ рдпрд╣ рдЖрджрдд рдХреА рдмрд╛рдд рд╣реИ: рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рдХреЛрдб, рдмрд┐рд▓реНрдб, рдФрд░ рдорд╛рдирд╡реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЪреИрдЯ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рджреВрд░ рд░рдЦреЗрдВред

рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдХреНрд░реЗрдЯ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЙрдирдХреЗ рдЬреЛрдЦрд┐рдо

рдпрд╣ рдЬрд╛рдирдирд╛ рдорджрджрдЧрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╕реАрдХреНрд░реЗрдЯ рджреЗрдЦрдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдЧрд░ рдпрд╣ рд▓реАрдХ рд╣реЛ рдЬрд╛рдП рддреЛ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд╣рд╛рдБ рдХрднреА рдирд╣реАрдВ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

API рдХреАрдЬрд╝ (Stripe, maps, analytics, рдЖрджрд┐) рдЕрдХреНрд╕рд░ "рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЗрд╡рд▓" рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд╣реЛрддреА рд╣реИрдВред рд╡реЗ рдЖрдкрдХреЗ рдРрдк рдХреЛ рдкрд╣рдЪрд╛рдирддреА рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдБ рдХрд░рдиреЗ рджреЗрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд╛рд░реНрдб рдЪрд╛рд░реНрдЬ рдХрд░рдирд╛ рдпрд╛ рдпреВрдЬрд╝реЗрдЬрд╝ рд╕реНрдЯреИрдЯреНрд╕ рдкрдврд╝рдирд╛ред рдпреЗ рдпреВрдЬрд╝рд░ рдЯреЛрдХрди рдирд╣реАрдВ рд╣реИрдВред рдХрдИ API рдХреАрдЬрд╝ рдЕрдкрдиреЗ рдЖрдк expire рдирд╣реАрдВ рд╣реЛрддреАрдВ, рдЗрд╕рд▓рд┐рдП рд▓реАрдХ рд╣реЛрдиреЗ рдкрд░ рдиреБрдХрд╕рд╛рди рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

SMTP рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдЖрдорддреМрд░ рдкрд░ рдпреВрдЬрд╝рд░рдиреЗрдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╣реЛрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдпреЗ рд▓реАрдХ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рдЖрдкрдХреЗ рдбреЛрдореЗрди рд╕реЗ рд╕реНрдкреИрдо рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбрд┐рд▓рд┐рд╡рд░реЗрдмрд┐рд▓рд┐рдЯреА рдЦрд░рд╛рдм рд╣реЛ рд╕рдХрддреА рд╣реИред API-рдЖрдзрд╛рд░рд┐рдд рдИрдореЗрд▓ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХрдЪреНрдЪреЗ SMTP рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЬрдЧрд╣ API рдХреАрдЬрд╝ рдФрд░ рд╕реНрдХреЛрдкреНрдб рдкрд░рдорд┐рд╢рдиреНрд╕ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░ рдЬреЛрдЦрд┐рдо рддрдм рднреА рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ рдЬрдм рдХреА рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реЛред

Webhook рд╕реАрдХреНрд░реЗрдЯреНрд╕ (рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯ рдпрд╛ рд╡реЗрд░реАрдлрд┐рдХреЗрд╢рди рдХреА) рдЗрдирдмрд╛рдЙрдВрдб рд░рд┐рдХреНрд╡реЗрд╕реНрдЯреНрд╕ рдХреЛ рдкреНрд░реЛрдЯреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯ рд▓реАрдХ рд╣реЛ рдЬрд╛рдП рддреЛ рдХреЛрдИ "payment succeeded" рдпрд╛ "subscription canceled" рдЬреИрд╕реЗ рдлреЙрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЗрд╡реЗрдВрдЯ рднреЗрдЬ рдХрд░ рдЖрдкрдХрд╛ рд╕рд┐рд╕реНрдЯрдо рднреНрд░рд╛рдордХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рд╡рд╛ рд╕рдХрддрд╛ рд╣реИред рдЦрддрд░рд╛ рд╕рд┐рд░реНрдл рдбреЗрдЯрд╛ рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ тАФ рдпрд╣ рдлрд░реНрдЬреА рдЗрд╡реЗрдВрдЯреНрд╕ рдкрд░ рдмрд┐рдЬрдиреЗрд╕ рд▓реЙрдЬрд┐рдХ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реИред

рдЕрдиреНрдп рд╣рд╛рдИ-рдЗрдореНрдкреИрдХреНрдЯ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ URLs (рдЕрдХреНрд╕рд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде embedded), рд╕рд░реНрд╡рд┐рд╕ рдЕрдХрд╛рдЙрдВрдЯ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕, рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреАрдЬрд╝ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдПрдХ рд▓реАрдХ рдбреЗрдЯрд╛рдмреЗрд╕ URL рдХрд╛ рдорддрд▓рдм рдкреВрд░рд╛ рдбреЗрдЯрд╛ рдЪреЛрд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд▓реАрдХ рд╣реБрдП рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреА рд╕реЗ рдкрд┐рдЫрд▓рд╛ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХрд╛ рдбреЗрдЯрд╛ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд░реЛрдЯреЗрд╢рди рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЗрдореНрдкреИрдХреНрдЯ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рд╕реЛрдЪрдирд╛ рдЖрд╕рд╛рди рддрд░реАрдХрд╛:

  • рдкреИрд╕рд╛ рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдкреЗрдореЗрдВрдЯ рдХреАрдЬрд╝, рдПрдбрдорд┐рди API рдХреАрдЬрд╝, webhook рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯреНрд╕
  • рдЖрдкрдХреА рдирдХрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: SMTP рдкрд╛рд╕рд╡рд░реНрдбреНрд╕, рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдХреАрдЬрд╝, рдореИрд╕реЗрдЬрд┐рдВрдЧ рдмреЛрдЯ рдЯреЛрдХрдиреНрд╕
  • рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕, рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрд╡рд┐рд╕ рдЕрдХрд╛рдЙрдВрдЯреНрд╕
  • рдкреНрд░рд╛рдЗрд╡реЗрд╕реА рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ: рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреАрдЬрд╝, рд╕рд╛рдЗрдирд┐рдВрдЧ рдХреАрдЬрд╝
  • рдЕрдХреНрд╕рд░ рд╢рд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП publishable рдХреАрдЬрд╝ (рдлрд┐рд░ рднреА рдбреЛрдореЗрди/рдРрдк рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдХрд░реЗрдВ)

рдХрднреА рднреА рдпреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдкреНрд╕ рдореЗрдВ рди рд░рдЦреЗрдВ: рд╕реАрдХреНрд░реЗрдЯ API рдХреАрдЬрд╝, SMTP рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕, рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╛рд╕рд╡рд░реНрдбреНрд╕, рд╕рд░реНрд╡рд┐рд╕ рдЕрдХрд╛рдЙрдВрдЯреНрд╕, рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреАрдЬрд╝, рдФрд░ webhook рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯреНрд╕ред рдЕрдЧрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА API рдХреЙрд▓ рдХрд░рдиреА рд╣реА рд╣реИ рддреЛ рдЙрд╕реЗ рдЕрдкрдиреЗ рдмреИрдХрдПрдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕реАрдХреНрд░реЗрдЯ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╣реА рд░рд╣реЗред

рдмрд┐рд▓реНрдбреНрд╕ рдореЗрдВ рди рдбрд╛рд▓рдиреЗ рдХреЗ рдкреИрдЯрд░реНрди

рд░реЛрдЯреЗрд╢рди рдХреЛ config рдмрджрд▓рд╛рд╡ рдмрдирд╛рдПрдВ
рдХреАрдЬрд╝ рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдРрдкреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрд┐рд▓реНрдб рди рдХрд░реЗрдВ тАФ рд░рдирдЯрд╛рдЗрдо рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ redeploy рдХрд░реЗрдВред
рд╢реБрд░реВ рдХрд░реЗрдВ

рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд░рд▓ рд╣реИ: рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдореЗрдВ рдмреЗрдХ рди рдХрд░реЗрдВ рдЬреЛ рдХрдореНрдкрд╛рдЗрд▓, рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдпрд╛ рд╢реЗрдпрд░ рд╣реЛрддреА рд╣реИред рдмрд┐рд▓реНрдбреНрд╕ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рд╕рдордЭреЗрдВ, рднрд▓реЗ рд╣реА рд╡реЗ рдирд┐рдЬреА рд▓рдЧрддреЗ рд╣реЛрдВред

рд╣рд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХрдВрдЯреЗрдирд░ рдЪреБрдиреЗрдВ

рд▓реЛрдХрд▓ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЙрдиреНреЮрд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдареАрдХ рд╣реИ рдЕрдЧрд░ рд╡рд╣ рд╡рд░реНрд╢рди рдХрдВрдЯреНрд░реЛрд▓ рд╕реЗ рдмрд╛рд╣рд░ рд░рд╣реЗ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓реА рдЬрд╛ рд╕рдХреЗ (рдЬреИрд╕реЗ рд▓реЛрдХрд▓-only .env рд╕реНрдЯрд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓)ред Staging рдФрд░ Production рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдЕрд╕рд▓реА рд╕реАрдХреНрд░реЗрдЯ рд╕реНрдЯреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХрд╛ secret manager, рдПрдХ рдбреЗрдбрд┐рдХреЗрдЯреЗрдб vault, рдпрд╛ рдЕрдкрдиреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдкреНрд░реЛрдЯреЗрдХреНрдЯреЗрдб environment settingsред

рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕рд╛рдорд╛рдиреНрдпрдд: рдЕрдЪреНрдЫрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрдиреНрд╣реЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдХреЛрдбрдмреЗрд╕ рд╕реЗ рдЕрд▓рдЧ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХрдм рдЗрдВрдЬреЗрдХреНрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИ: рд░рдирдЯрд╛рдЗрдо рдЗрдВрдЬреЗрдХреНрд╢рди рдмрд┐рд▓реНрдб-рдЯрд╛рдЗрдо рдЗрдВрдЬреЗрдХреНрд╢рди рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдХреНрд░реЗрдЯ рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рдмрдирддрд╛ред

рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╡рд┐рднрд╛рдЬрди рдЬреЛ рдХрдИ рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  • рд▓реЛрдХрд▓ dev: рд▓реЛрдХрд▓ env vars рдпрд╛ рд▓реЛрдХрд▓ рд╕реАрдХреНрд░реЗрдЯ рдлрд╝рд╛рдЗрд▓, рдкреНрд░рддрд┐ рдбреЗрд╡рд▓рдкрд░ рдпреВрдирд┐рдХ
  • Staging: рдПрдХ рд╕реАрдХреНрд░реЗрдЯ рдореИрдиреЗрдЬрд░ рдпрд╛ рдкреНрд░реЛрдЯреЗрдХреНрдЯреЗрдб environment settings, рд╕рд┐рд░реНрдлрд╝ staging рдХреЗ рд▓рд┐рдП
  • Production: рдПрдХ рд╕реНрдЯреНрд░рд┐рдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рд╡рд╛рд▓рд╛ рд╕реАрдХреНрд░реЗрдЯ рдореИрдиреЗрдЬрд░, рдСрдбрд┐рдЯ рд▓реЙрдЧ рдФрд░ рд░реЛрдЯреЗрд╢рди

рдирд╛рдордХрд░рдг рдФрд░ рд╕реАрдорд╛рдПрдБ рд╕реБрд╕рдВрдЧрдд рд░рдЦреЗрдВ

рд╣рд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореЗрдВ рдПрдХ рд╣реА рдХреА рдирд╛рдо рд░рдЦреЗрдВ рддрд╛рдХрд┐ рдРрдк рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдПрдХ рдЬреИрд╕рд╛ рд░рд╣реЗ: SMTP_HOST, SMTP_USER, SMTP_PASS, STRIPE_SECRET_KEY, WEBHOOK_SIGNING_SECRET. рд╕рд┐рд░реНрдлрд╝ рд╡реИрд▓реНрдпреВрдЬрд╝ рдмрджрд▓реЗрдВред

рдЬрдм рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХреА рдЕрд╣рдорд┐рдпрдд рдмрдврд╝реЗ (рдкреЗрдореЗрдВрдЯреНрд╕, рдИрдореЗрд▓, рд╡реЗрдмрд╣реБрдХ), рддреЛ рдЬрд╣рд╛рдБ рд╕рдВрднрд╡ рд╣реЛ рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдпрд╛ рдХреНрд▓рд╛рдЙрдб рдЕрдХрд╛рдЙрдВрдЯ рд░рдЦреЗрдВ рддрд╛рдХрд┐ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдЧрд▓рддреА рд╕реЗ рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рди рдХрд░ рд╕рдХреЗред

рдЕрдЧрд░ рдЖрдк AppMaster рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗ deploy рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмреИрдХрдПрдВрдб рд╕рд░реНрд╡рд┐рд╕реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо environment settings рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╣реА рд░рд╣реЗрдВ рдФрд░ рдПрдХреНрд╕рдкреЛрд░реНрдЯреЗрдб рдХреЛрдб рдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдкреНрд╕ рдореЗрдВ рдПрдореНрдмреЗрдб рди рд╣реЛрдВред

dev, staging, рдФрд░ prod рдХреЗ рдмреАрдЪ рд╕реНрдЯреЗрдк-рдмрд╛рдп-рд╕реНрдЯреЗрдк рд╕реЗрдЯрдЕрдк

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ webhook endpoints рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреЗрдВ
рд╡рд╣ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдЬреЛ environment settings рдореЗрдВ рд╣реИрдВ, рдмреИрдХрдПрдВрдб рд▓реЙрдЬрд┐рдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ webhook рд╕рд┐рдЧреНрдиреЗрдЪрд░реНрд╕ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВред
Webhook рдмрдирд╛рдПрдВ

рдбрд┐рдлреЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рдЗрдПред

  1. рдХреНрдпрд╛-рдХреНрдпрд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдБ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрддрд╛ рд╣реИ рдЗрд╕рдХреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдмрдирд╛рдЗрдПред API рдХреАрдЬрд╝, SMTP рдпреВрдЬрд╝рд░рдиреЗрдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб, webhook рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯреНрд╕, рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╛рд╕рд╡рд░реНрдб, JWT рд╕рд╛рдЗрдирд┐рдВрдЧ рдХреАрдЬрд╝, рдФрд░ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдЯреЛрдХрдиреНрд╕ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред рд╣рд░ рдПрдХ рдХреЗ рд▓рд┐рдП рдорд╛рд▓рд┐рдХ, рдЬрд┐рд╕ рдХрдВрдкреЛрдиреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (backend, worker, mobile, web), рдФрд░ рд░реЛрдЯреЗрд╢рди рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рдиреЛрдЯ рдХрд░реЗрдВред

  2. Dev, staging, рдФрд░ prod рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╡реИрд▓реНрдпреВрдЬрд╝ рдФрд░ рдЕрд▓рдЧ рдкрд░рдорд┐рд╢рдиреНрд╕ рдмрдирд╛рдПрдБред Dev рдХреАрдЬрд╝ рд▓реИрдкрдЯреЙрдк рдФрд░ рд▓реЛрдХрд▓ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред Staging рдХреЛ prod рдЬреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдкрд░ рдкреНрд░реЛрдб рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд╢реЗрдпрд░ рди рдХрд░реЗрдВред Prod рдХреЗрд╡рд▓ рдкреНрд░реЛрдбрдХреНрд╢рди рд░рдирдЯрд╛рдЗрдо рдкрд╣рдЪрд╛рди рджреНрд╡рд╛рд░рд╛ рдкрдврд╝реА рдЬрд╛ рд╕рдХреЗ тАФ рдорд╛рдирд╡реАрдп рдПрдХреНрд╕реЗрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рди рд░рдЦреЗрдВред

  3. рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рд░рдирдЯрд╛рдЗрдо рдХреЙрдиреНреЮрд┐рдЧ рдореЗрдВ рд░рдЦреЗрдВред рдЕрдЧрд░ рд╕реАрдХреНрд░реЗрдЯ рдмрд┐рд▓реНрдб рдХреЗ рд╕рдордп рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╡рд╣ рдмрд┐рд▓реНрдб рд▓реЙрдЧреНрд╕, Docker рд▓реЗрдпрд░реНрд╕, рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдВрдбрд▓реНрд╕, рдпрд╛ рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИред рд╕рд░рд▓ рдирд┐рдпрдо: рдмрд┐рд▓реНрдб рдРрд╕реЗ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдмрдирд╛рдПрдБ рдЬреЛ рдХреЙрдкреА рдХрд┐рдП рдЬрд╛ рд╕рдХреЗрдВ; рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЗрд╡рд▓ рддрдм рдЗрдВрдЬреЗрдХреНрдЯ рд╣реЛрдВ рдЬрдм рдРрдк рд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реЗред

  4. рдПрдХ рд╕реБрд╕рдВрдЧрдд рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдлрд╝реНрд▓реЛ рдЕрдкрдирд╛рдПрдБред рдПрдХ рддрд░реАрдХрд╛ рдЬреЛ рдЯреАрдореЛрдВ рдХреЛ рдЧрд▓рддреА рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ:

  • рд╣рд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдХреНрд░реЗрдЯ рд╕реНрдЯреЛрд░ рдмрдирд╛рдПрдВ (рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдХрдбрд╝рд╛ namespace)ред
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░рдирдЯрд╛рдЗрдо рдкрд╣рдЪрд╛рди рдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХреЗ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред
  • рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдпрд╛ рдорд╛рдЙрдВрдЯреЗрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ, рдФрд░ рдЗрдиреНрд╣реЗрдВ рдЗрдореЗрдЬреЗрдЬрд╝ рдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдВрдбрд▓реЛрдВ рд╕реЗ рджреВрд░ рд░рдЦреЗрдВред
  • рд╣рд░ рд╕реАрдХреНрд░реЗрдЯ рдХреЗ рд▓рд┐рдП рд░реЛрдЯреЗрд╢рди рдирд┐рдпрдо (expiry dates, owner, reminder cadence) рдЬреЛрдбрд╝реЗрдВред
  • рдПрдХ рдХрдбрд╝рд╛ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВ: рдЕрдЧрд░ рдХреЛрдИ staging deployment рдХрднреА prod рд╕реАрдХреНрд░реЗрдЯ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗ рддреЛ рд╡рд╣ рдлреЗрд▓ рд╣реЛред

рд▓реЙрдХрдбрд╛рдЙрди рдХрд╛ рдорддрд▓рдм рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдХреМрди рдФрд░ рдХреНрдпрд╛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ рдЙрд╕реЗ рдХрдо рдХрд░рдирд╛ред рд╕рд╛рдЭрд╛ рдЕрдХрд╛рдЙрдВрдЯреНрд╕ рд╕реЗ рдмрдЪреЗрдВ, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЯреЛрдХрди рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХреЗ рдЯрд╛рд▓реЗрдВ, рдФрд░ рд░реАрдб рдкрд░рдорд┐рд╢рдиреНрд╕ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╕рдВрдХреБрдЪрд┐рдд рд░рдЦреЗрдВред

рдпрджрд┐ рдЖрдк no-code рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЬреИрд╕реЗ AppMaster рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣реА рддрд░реАрдХрд╛ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ: рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ environment-specific runtime settings рдореЗрдВ рд░рдЦреЗрдВ, рдФрд░ рдЙрддреНрдкрдиреНрди рдмрд┐рд▓реНрдб рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯреНрд╕ рдХреЛ рдЕрдкрдиреА рдЯреАрдо рдХреЗ рдЕрдВрджрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдордЭреЗрдВред рдпрд╣ рдПрдХ рдирд┐рд░реНрдгрдп рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЖрдХрд╕реНрдорд┐рдХ рд▓реАрдХ рд░реЛрдХ рджреЗрддрд╛ рд╣реИред

API рдХреАрдЬрд╝ рдФрд░ SMTP рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреИрдЯрд░реНрдиреНрд╕

рдХрдИ рд▓реАрдХ рддрдм рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдРрдк рдХреЛ тАЬрдХреБрдЫ рднреЗрдЬрдирд╛тАЭ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдлрд┐рдХреНрд╕ рдХреЗ рддреМрд░ рдкрд░ рдХреЛрдИ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдпрд╛ рдХреЙрдиреНреЮрд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдмрдВрдбрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рдпрдо рд╕рд░рд▓ рд╣реИ: рд╡реЗрдм рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрднреА SMTP рдпреВрдЬрд╝рд░рдиреЗрдо, SMTP рдкрд╛рд╕рд╡рд░реНрдб, рдпрд╛ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреАрдЬрд╝ рдЬреЛ рдореЗрд╕реЗрдЬ рднреЗрдЬ рд╕рдХрддреА рд╣реИрдВ, рди рд░рдЦреЗрдВред

рдИрдореЗрд▓ рдХреЗ рд▓рд┐рдП, рдЬрд╣рд╛рдБ рд╕рдВрднрд╡ рд╣реЛ рдИрдореЗрд▓ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреА API рдХреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдмрдЬрд╛рдп рд░реЙ SMTP рдХреЗред API-рдЖрдзрд╛рд░рд┐рдд рднреЗрдЬрдирд╛ рд╕реНрдХреЛрдк рдХрд░рдирд╛, рд░реЛрдЯреЗрдЯ рдХрд░рдирд╛ рдФрд░ рдореЙрдирд┐рдЯрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ SMTP рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╣реА рд░рдЦреЗрдВ рдФрд░ рдмреИрдХрдПрдВрдб рдХреЛ рдореЗрд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдЬрдЧрд╣ рдмрдирд╛рдПрдВред

рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реЗрдЯрдЕрдк рдЬреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рддрд╛ рд╣реИ:

  • рдИрдореЗрд▓ рднреЗрдЬрдирд╛ рдмреИрдХрдПрдВрдб рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рдкреАрдЫреЗ рд░рдЦреЗрдВ (рдЙрджрд╛.: тАЬsend password resetтАЭ рдпрд╛ тАЬsend invoiceтАЭ)ред
  • API рдХреА рдпрд╛ SMTP рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдмреИрдХрдПрдВрдб рдХреЗ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╕реАрдХреНрд░реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рди рдХрд┐ рд╕реЛрд░реНрд╕ рдХреЛрдб рдпрд╛ UI рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВред
  • Dev, staging, рдФрд░ prod рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд░рдЦреЗрдВ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдЕрдХрд╛рдЙрдВрдЯреНрд╕ рдФрд░ sender domains)ред
  • Staging рдореЗрдВ рдПрдХ recipient allowlist рд░рдЦреЗрдВ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдЕрдиреБрдореЛрджрд┐рдд рдкрддреЗ рд╣реА рдореЗрд▓ рдкрд╛ рд╕рдХреЗрдВред
  • рдбрд┐рд▓рд┐рд╡рд░реА рдкрд░рд┐рдгрд╛рдо (message ID, provider response, recipient domain) рд▓реЙрдЧ рдХрд░реЗрдВ рдкрд░ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдпрд╛ рдкреВрд░рд╛ рдореЗрд╕реЗрдЬ рдмреЙрдбреА рдХрднреА рд▓реЙрдЧ рди рдХрд░реЗрдВред

Staging рдФрд░ prod рдХреЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХрд╛ рдорд╣рддреНрд╡ рд▓реЛрдЧ рдХрдо рд╕рдордЭрддреЗ рд╣реИрдВред рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЧрд▓рддреА рд╕реЗ рдЕрд╕рд▓реА рдХрд╕реНрдЯрдорд░реНрд╕ рдХреЛ рд╕реНрдкреИрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рд╡рд╣реА sender рдФрд░ recipient рдирд┐рдпрдо рд╢реЗрдпрд░ рдХрд░реЗред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧрд╛рд░реНрдб рдпрд╣ рд╣реИ: рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдореЗрдВ рдЖрдЙрдЯрдмрд╛рдЙрдВрдб рдИрдореЗрд▓ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрдВ рдЬрдм рддрдХ рд░рд┐рд╕рд┐рдкрд┐рдпрдВрдЯ allowlist рдореЗрдВ рди рд╣реЛред

рдЙрджрд╛рд╣рд░рдг: рдЖрдк AppMaster рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдорд░ рдкреЛрд░реНрдЯрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рдореЛрдмрд╛рдЗрд▓ рдРрдк тАЬemail me a login codeтАЭ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдРрдк рдЖрдкрдХреЗ рдмреИрдХрдПрдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдмреИрдХрдПрдВрдб рдкреНрд░реЛрдб рдпрд╛ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдореЗрд▓ рд╕реАрдХреНрд░реЗрдЯ рдЕрдкрдиреЗ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдИрдореЗрд▓ рднреЗрдЬрддрд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рдЯреЗрд╕реНрдЯрд░ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддреЛ allowlist рдЕрд╕рд▓реА рдХрд╕реНрдЯрдорд░реНрд╕ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рд▓реЙрдЧреНрд╕ рдЕрднреА рднреА рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рднреЗрдЬрдирд╛ рд╕рдлрд▓ рд╣реБрдЖ рдпрд╛ рдирд╣реАрдВ рдмрд┐рдирд╛ рдХреА рдПрдХреНрд╕рдкреЛрдЬрд╝ рдХрд┐рдПред

Webhook рд╕реАрдХреНрд░реЗрдЯреНрд╕: рд╕рд╛рдЗрдирд┐рдВрдЧ, рд╡реЗрд░реАрдлрд┐рдХреЗрд╢рди, рдФрд░ рд░реЛрдЯреЗрд╢рди

рдмрд┐рд▓реНрдб рдХрд░рддреЗ рд╣реБрдП рд╕реАрдХреНрд░реЗрдЯ рдЙрдкрдпреЛрдЧ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝рд┐рдд рдХрд░реЗрдВ
рдбреЗрдЯрд╛, рд▓реЙрдЬрд┐рдХ, рдФрд░ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓реА рдореЙрдбрд▓ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╣рд░ рд╕реАрдХреНрд░реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдкрд╖реНрдЯ рд╣реЛред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░реЗрдВ

Webhook рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдирд┐рдпрдо рд╕рд░рд▓ рд╣реИ: рд╣рд░ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдРрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реАрдХреНрд░реЗрдЯ рдХрднреА рдЖрдкрдХреЗ рдмреИрдХрдПрдВрдб рд╕реЗ рдмрд╛рд╣рд░ рди рдирд┐рдХрд▓реЗред рдЕрдЧрд░ рдХреЛрдИ рд╕реАрдХреНрд░реЗрдЯ рд╡реЗрдм рдпрд╛ рдореЛрдмрд╛рдЗрд▓ рдРрдк рдореЗрдВ рд╢рд┐рдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╡рд╣ рд╕реАрдХреНрд░реЗрдЯ рдЕрдм рд╕реАрдХреНрд░реЗрдЯ рдирд╣реАрдВ рд░рд╣рддрд╛ред

рд╕рд╛рдЗрдирд┐рдВрдЧ рдФрд░ рд╡реЗрд░реАрдлрд┐рдХреЗрд╢рди

рдПрдХ webhook рдХреЛ рдЗрдирдХрдорд┐рдВрдЧ рдХрд╛рд░реНрдб рдкреЗрдореЗрдВрдЯ рдХреА рддрд░рд╣ рдорд╛рдирд┐рдП: рд╡реЗрд░реАрдлрд╝рд╛рдИ рдХрд┐рдП рдмрд┐рдирд╛ рдХреБрдЫ рд╕реНрд╡реАрдХрд╛рд░ рди рдХрд░реЗрдВред рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ payload рдФрд░ рдЖрдкрдХреЗ рд╕рд╛рдЭрд╛ рд╕реАрдХреНрд░реЗрдЯ рд╕реЗ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рд╣реЗрдбрд░ рднреЗрдЬрддрд╛ рд╣реИред рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред

рд╕рд░рд▓ рд╡реЗрд░реАрдлрд┐рдХреЗрд╢рди рдлреНрд▓реЛ:

  • рд░реЙ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдмреЙрдбреА рдХреЛ рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдкрдврд╝реЗрдВ рдЬреИрд╕рд╛ рдорд┐рд▓рд╛ рд╣реИ (рдХреЛрдИ рд░реАрдлреЙрд░реНрдореИрдЯрд┐рдВрдЧ рдирд╣реАрдВ)ред
  • рдЕрдкрдиреЗ webhook рд╕реАрдХреНрд░реЗрдЯ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХрдВрдкреНрдпреВрдЯ рдХрд░реЗрдВред
  • constant-time рддреБрд▓рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рд▓рд╛рди рдХрд░реЗрдВред
  • рдорд┐рд╕рд┐рдВрдЧ рдпрд╛ рдЕрд╡реИрдз рд╕рд┐рдЧреНрдиреЗрдЪрд░реНрд╕ рдХреЛ рд╕реНрдкрд╖реНрдЯ 401 рдпрд╛ 403 рдХреЗ рд╕рд╛рде reject рдХрд░реЗрдВред
  • рдлрд┐рд░ JSON рдкрд╛рд░реНрд╕ рдФрд░ рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░реЗрдВред

Dev, staging, рдФрд░ prod рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ webhook endpoints рдФрд░ рдЕрд▓рдЧ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд░рдЦреЗрдВред рдЗрд╕рд╕реЗ рдПрдХ dev рдЯреВрд▓ рдпрд╛ рдЯреЗрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдб рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпреЗрдЧрд╛ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ contain рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред AppMaster рдореЗрдВ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╣рд░ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ environment рдХреЙрдиреНреЮрд┐рдЧ рдХрд╛ рдорддрд▓рдм рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ webhook рд╕реАрдХреНрд░реЗрдЯ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рд╡реЗрдм рдпрд╛ рдореЛрдмрд╛рдЗрд▓ UI рдореЗрдВред

рд░рд┐рдкреНрд▓реЗ рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рдФрд░ рд░реЛрдЯреЗрд╢рди

рд╕рд╛рдЗрдирдЪрд░реНрд╕ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рд░реЛрдХрддреЗ рд╣реИрдВ, рдкрд░ рд╡реЗ рд╕реНрд╡рддрдГ рд░рд┐рдкреНрд▓реЗ рдирд╣реАрдВ рд░реЛрдХрддреЗред рд╣рд░ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдорд╛рдиреНрдп рдХрд░реЗрдВ рдпрд╛ рдХреЗрд╡рд▓ рдЫреЛрдЯреЗ рд╕рдордп рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рд╡реИрдз рдмрдирд╛рдПрдВред рдЖрдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рд╕рдЦреНрдд рд╕рдордп рд╕реАрдорд╛, рдПрдХ nonce, рдпрд╛ idempotency key рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рд╕реНрдЯреЛрд░ рдХрд░рдХреЗ рджреЛрдмрд╛рд░рд╛ рдкреНрд░реЛрд╕реЗрд╕ рди рдХрд░реЗрдВред

рд░реЛрдЯреЗрд╢рди рдХреА рдпреЛрдЬрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдПрдВред рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкреИрдЯрд░реНрди рдпрд╣ рд╣реИ рдХрд┐ рдереЛрдбрд╝реЗ рдУрд╡рд░рд▓реИрдк рдХреЗ рд▓рд┐рдП рджреЛ рд╕рдХреНрд░рд┐рдп рд╕реАрдХреНрд░реЗрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ: рдЗрд╕ рджреМрд░рд╛рди рджреЛрдиреЛрдВ рд╕реЗ рд╡реЗрд░реАрдлрд┐рдХреЗрд╢рди рдХрд░реЗрдВ рдЬрдм рдЖрдк рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рдлрд┐рд░ рдкреБрд░рд╛рдиреА рдХреЛ рд░рд┐рдЯрд╛рдпрд░ рдХрд░ рджреЗрдВред рд╕реНрдкрд╖реНрдЯ рдХрдЯрдСрдл рд╕рдордп рд░рдЦреЗрдВ рдФрд░ рдкреБрд░рд╛рдиреА рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВред

рд▓реЙрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рд╡рдзрд╛рдиреА рдмрд░рддреЗрдВ тАФ webhook рдкреЗрд▓реЛрдбреНрд╕ рдореЗрдВ рдЕрдХреНрд╕рд░ рдИрдореЗрд▓, рдкрддреЗ, рдпрд╛ рдкреЗрдореЗрдВрдЯ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╡реЗрдВрдЯ IDs, рдкреНрд░рдХрд╛рд░ рдФрд░ рд╡реЗрд░реАрдлрд┐рдХреЗрд╢рди рдкрд░рд┐рдгрд╛рдо рд▓реЙрдЧ рдХрд░реЗрдВ, рдкрд░ рдлреБрд▓ рдкреЗрд▓реЛрдбреНрд╕ рдпрд╛ рд╣реЗрдбрд░реНрд╕ рдкреНрд░рд┐рдВрдЯ рди рдХрд░реЗрдВ рдЬреЛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХреЗрдВред

рдЖрдо рдЧрд▓рддрд┐рдпрд╛рдБ рдФрд░ рдЬрд╛рд▓ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдЙрдкрд╛рдп

рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реАрдХ рдЖрд╕рд╛рди рдЖрджрддреЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рджреМрд░рд╛рди рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ/рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рдХреЙрдкреА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рд▓реЛрдХрд▓ .env рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЬрдЧрд╣ рдорд╛рдирдирд╛ рдПрдХ рдЖрдо рдлрд┐рд╕рд▓рди рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рд▓реИрдкрдЯреЙрдк рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ, рдкрд░ рдЬреИрд╕реЗ рд╣реА рдпрд╣ рд░рд┐рдкреЛ рдореЗрдВ рдХреЙрдкреА рд╣реЛрддреА рд╣реИ рдпрд╛ Docker рдЗрдореЗрдЬ рдореЗрдВ рдЪрд▓реА рдЬрд╛рддреА рд╣реИ, рдпрд╣ рдЦрддрд░рдирд╛рдХ рдмрди рдЬрд╛рддреА рд╣реИред рдЕрдЧрд░ рдЖрдк .env рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╡рд░реНрд╢рди рдХрдВрдЯреНрд░реЛрд▓ рджреНрд╡рд╛рд░рд╛ ignore рд╣реЛ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯреНрд╕ рдореЗрдВ environment settings рд╕реЗ рдмрджрд▓ рджреА рдЬрд╛рдПред

рдПрдХ рд╣реА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд╣рд░ рдЬрдЧрд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рднреА рдЕрдХреНрд╕рд░ рд╕рдорд╕реНрдпрд╛ рдмрдирддрд╛ рд╣реИред рдПрдХ API рдХреА рдЬреЛ dev, staging, рдФрд░ prod рдореЗрдВ рдХрд╛рдо рдХрд░реЗ, рд╡рд╣ рдХрд┐рд╕реА dev рдЧрд▓рддреА рдХреЛ рдкреНрд░реЛрдбрдХреНрд╢рди рдЗрдиреНрд╕рд┐рдбреЗрдВрдЯ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреА рд╣реИред рдЕрд▓рдЧ рдХреАрдЬрд╝ рд░рдЦрдирд╛ рд░реЛрдЯреЗрдЯ, рд░рд┐рд╡реЛрдХ рдФрд░ рдСрдбрд┐рдЯ рдХрд░рдирд╛ рднреА рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

рд╡реЗрдм рдлреНрд░рдВрдЯреЗрдВрдбреНрд╕ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдкрд░ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рдЦрд╝рд╛рд╕ рддреМрд░ рдкрд░ рдЬреЛрдЦрд┐рдорднрд░рд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рд╕реАрдХреНрд░реЗрдЯ рдХрд┐рд╕реА compiled bundle рдпрд╛ app package рдореЗрдВ рдЖ рдЬрд╛рдП рддреЛ рд╕рдордЭ рд▓реЗрдВ рдХрд┐ рдЙрд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлреНрд░рдВрдЯреЗрдВрдбреНрд╕ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреЙрдиреНреЮрд┐рдЧ рд░рдЦреЗрдВ (рдЬреИрд╕реЗ рдмреЗрд╕ API URL)ред рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЪреАрдЬрд╝реЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рд╣реА рд░рдЦреЗрдВред

рд▓реЙрдЧреНрд╕ рдПрдХ рдЪреБрдкрдХреЗ рд╕реЗ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд▓реАрдХ рд╕реНрд░реЛрдд рд╣реИрдВред рдПрдХ "рдЯреЗрдореНрдкрд░реЗрд░реА" рдбрд┐рдмрдЧ рдкреНрд░рд┐рдВрдЯ рдорд╣реАрдиреЗ рднрд░ рдХреЗ рд▓рд┐рдП рд░рд╣ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рд╡реИрд▓реНрдпреВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреА рд╣реИ рддреЛ рдХреЗрд╡рд▓ рдорд╛рд╕реНрдХреНрдб рд╡рд░реНрд╢рди рд▓реЙрдЧ рдХрд░реЗрдВ (рдЙрджрд╛., рдЖрдЦрд╝рд┐рд░реА 4 рдХреИрд░реЗрдХреНрдЯрд░) рдФрд░ рддреБрд░рдВрдд рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣рдЯрд╛рдПрдБред

рд░реЗрдб рдлреНрд▓реИрдЧреНрд╕ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд╕рдорд╕реНрдпрд╛ рдмрддрд╛рддреЗ рд╣реИрдВ

  • рд╕реАрдХреНрд░реЗрдЯреНрд╕ Git рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдмрд╛рдж рдореЗрдВ рд╣рдЯрд╛рдП рдЧрдП рд╣реЛрдВред
  • рдПрдХ рд╣реА рдХреА рд╣рд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред
  • рдХрд┐рд╕реА рдореЛрдмрд╛рдЗрд▓ рдРрдк рдореЗрдВ рд╡реЗрдВрдбрд░ рдХреАрдЬрд╝ рдпрд╛ SMTP рдкрд╛рд╕рд╡рд░реНрдб рдореМрдЬреВрдж рд╣реИрдВред
  • рд╕рдкреЛрд░реНрдЯ рдЯрд┐рдХрдЯреНрд╕ рдореЗрдВ рд╣реЗрдбрд░реНрд╕ рдХреЗ рд╕рд╛рде рдлреБрд▓ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдбрдореНрдкреНрд╕ рд╣реИрдВред
  • рдорд╛рди "рдЫрд┐рдкреЗ" рд╣реБрдП рд╣реИрдВ base64 рдпрд╛ рдлреЙрд░реНрдо рдлреАрд▓реНрдбреНрд╕ рдореЗрдВред

рдПрдиреНрдХреЛрдб рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рд┐рдбрди рдлреАрд▓реНрдбреНрд╕ рдпреВрдЬрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рднреА рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреА рд╣реИрдВред

рдпрджрд┐ рдЖрдк AppMaster рд╕реЗ рдмрд┐рд▓реНрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд╛рди рд╣рд░ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдЯрд╛рд░реНрдЧреЗрдЯ (dev, staging, prod) рдХреЗ environment-level рдХреЙрдиреНреЮрд┐рдЧ рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдкреНрд╕ рдХреЛ рдХреЗрд╡рд▓ рдиреЙрди-рд╕реЗрдВрд╕рд┐рдЯрд┐рд╡ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд╛рд╕ рдХрд░реЗрдВред рдПрдХ рддреНрд╡рд░рд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдЬрд╛рдВрдЪ: рдЕрдЧрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдорд╛рдиреЗрдВред

рд╢рд┐рдк рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рддреНрд╡рд░рд┐рдд рдЪреЗрдХрд▓рд┐рд╕реНрдЯ

рдЗрдВрд╕рд┐рдбреЗрдВрдЯ рд╕реНрдЯреЗрдкреНрд╕ рдХреЛ рдСрдЯреЛрдореЗрд╢рди рдореЗрдВ рдмрджрд▓реЗрдВ
рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдХреЗ рдмрд╛рдж рдХреАрдЬрд╝ revoke рдФрд░ rotate рдХрд░рдиреЗ рдХреЗ рдХрджрдо рдХреЛ Business Process Editor рдореЗрдВ рдСрдЯреЛрдореЗрдЯ рдХрд░реЗрдВред
рдЕрдм рдСрдЯреЛрдореЗрдЯ рдХрд░реЗрдВ

"рдХреНрдпрд╛ рд▓реАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ" рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рдЖрдЦрд╝рд┐рд░реА рдкрд╛рд╕ рдХрд░реЗрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдШрдЯрдирд╛рдПрдБ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣реЛрддреА рд╣реИрдВ: рдЯрд┐рдХрдЯ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХреА рд╣реБрдИ рдХреА, рдПрдХ рдХреЙрдиреНреЮрд┐рдЧ рдкреИрдирд▓ рдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ, рдпрд╛ рдХреЛрдИ рдмрд┐рд▓реНрдб рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдЪреБрдкрдХреЗ рд╕реЗ рд╕реАрдХреНрд░реЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛред

рд╢рд┐рдк рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрди рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ:

  • рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдЖрдкрдХреЗ рд░рд┐рдкреЛ рдЗрддрд┐рд╣рд╛рд╕, рдЗрд╢реНрдпреВрдЬрд╝, рдбреЙрдХреНрдпреВрдореЗрдВрдЯреНрд╕, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯреНрд╕, рдпрд╛ рдЪреИрдЯ рд▓реЙрдЧреНрд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдЕрдЧрд░ рдЖрдкрдиреЗ рдХрднреА рдХрд┐рд╕реА рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдорд╛рди рд▓реАрдЬрд┐рдП рд╡рд╣ рд╕рдордЭреМрддрд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рд░реЛрдЯреЗрдЯ рдХрд░реЗрдВред
  • рдЖрдкрдХреА рд╡реЗрдм рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдмрд┐рд▓реНрдбреНрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ (рдЬреИрд╕реЗ API рдмреЗрд╕ URL рдпрд╛ рдлреАрдЪрд░ рдлреНрд▓реИрдЧреНрд╕)ред рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХреАрдЬрд╝, SMTP рдкрд╛рд╕рд╡рд░реНрдбреНрд╕, рдФрд░ webhook рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдпрд╛ environment-specific secret stores рдореЗрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
  • Staging рдкреНрд░реЛрдбрдХреНрд╢рди рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдЗрд╕реЗ рдЕрдкрдиреЗ API рдХреАрдЬрд╝, SMTP рдЕрдХрд╛рдЙрдВрдЯ, рдФрд░ рдЯреЗрд╕реНрдЯ рдкреЗрдореЗрдВрдЯ/webhook рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред Staging рдХреЛ рдкреНрд░реЛрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдкреНрд░реЛрдб рд╕реАрдХреНрд░реЗрдЯ рдореИрдиреЗрдЬрд░ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • CI рд▓реЙрдЧреНрд╕, рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ, рдФрд░ рдПрд░рд░ рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд╛рди рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░рддреЗред рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ, рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯреНрд╕, рдФрд░ рдбрд┐рдмрдЧ рд▓реЙрдЧреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдЯреЛрдХрдиреНрд╕ рдХреЛ рдорд╛рд╕реНрдХ рдХрд░реЗрдВ рдФрд░ Authorization рдЬреИрд╕реЗ рд╣реЗрдбрд░реНрд╕ рдХреЛ redact рдХрд░реЗрдВред
  • рдЖрдк рдЬрд▓реНрджреА рд░реЛрдЯреЗрдЯ рдФрд░ рд░рд┐рд╡реЛрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдмрд┐рдирд╛ рдХреЛрдб рдмрджрд▓рдиреЗ рдХреЗред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдбрд┐рдкреНрд▓реЙрдп рдЯрд╛рдЗрдо рдкрд░ рдЗрдВрдЬреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ (рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдпрд╛ рд╕реАрдХреНрд░реЗрдЯ рдореИрдиреЗрдЬрд░), рддрд╛рдХрд┐ рдХреА рдмрджрд▓рдирд╛ рдПрдХ рдХреЙрдиреНреЮрд┐рдЧ рдЕрдкрдбреЗрдЯ рд╣реЛ, рдПрдХ рдЗрдорд░рдЬреЗрдВрд╕реА рд░реАрдмрд┐рд▓реНрдб рдирд╣реАрдВред

рдпрджрд┐ рдЖрдк AppMaster рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рдХреАрдЬрд╝ рдХреЛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХреЙрдиреНреЮрд┐рдЧрд░реЗрд╢рди рдорд╛рдиреЗрдВ рдФрд░ UI рд╕реНрдХреНрд░реАрди рдпрд╛ рдПрдХреНрд╕рдкреЛрд░реНрдЯреЗрдб рдмрд┐рд▓реНрдбреНрд╕ рдореЗрдВ рди рд░рдЦреЗрдВред рдПрдХ рдЙрдкрдпреЛрдЧреА рдЕрдВрддрд┐рдо рдЬрд╛рдВрдЪ рдпрд╣ рд╣реИ рдХрд┐ рдХреЙрдореНрдкрд╛рдЗрд▓ рдХрд┐рдП рдЧрдП рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯреНрд╕ рдФрд░ рд▓реЙрдЧреНрд╕ рдореЗрдВ sk_live, Bearer , рдпрд╛ SMTP рд╣реЛрд╕реНрдЯрдиреЗрдо рдЬреИрд╕реЗ рдкреИрдЯрд░реНрди рд╕рд░реНрдЪ рдХрд░реЗрдВред

рд╣рд░ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП "рдХрд┐рд▓ рд╕реНрд╡рд┐рдЪ" рд▓рд┐рдЦрдХрд░ рд░рдЦреЗрдВ: рдХрд┐рд╕ рдЬрдЧрд╣ рдЖрдк рдХреА рдбрд┐рд╕реЗрдмрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреМрди рдЗрд╕реЗ рдкрд╛рдБрдЪ рдорд┐рдирдЯ рд╕реЗ рдХрдо рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рджреГрд╢реНрдп: рдкреЗрдореЗрдВрдЯреНрд╕, рдИрдореЗрд▓, рдФрд░ рд╡реЗрдмрд╣реБрдХ

рдмрд┐рд▓реНрдбреНрд╕ рд╕реЗ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╣рдЯрд╛рдПрдБ
рдмреИрдХрдПрдВрдб AppMaster рдореЗрдВ рдмрдирд╛рдПрдВ рдФрд░ рд╣рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВред
AppMaster рдЖрдЬрд╝рдорд╛рдПрдБ

рдПрдХ рддреАрди-рд╡реНрдпрдХреНрддрд┐ рдЯреАрдо рдПрдХ рдХрд╕реНрдЯрдорд░ рдкреЛрд░реНрдЯрд▓ (рд╡реЗрдм), рдПрдХ рдХрдВрдкреЗрдирд┐рдпрди рдореЛрдмрд╛рдЗрд▓ рдРрдк, рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЬреЙрдм рдЪрд▓рд╛рддреА рд╣реИ рдЬреЛ рд░рд╕реАрджреЗрдВ рднреЗрдЬрддрд╛ рдФрд░ рдбреЗрдЯрд╛ рд╕рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреЗ рддреАрди рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╣реИрдВ: dev (рд▓реИрдкрдЯреЙрдк), staging (QA), рдФрд░ prod (рд░рд┐рдпрд▓ рдпреВрдЬрд╝рд░реНрд╕)ред рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдХрд░реЗрдЯреНрд╕ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдРрд╕рд╛ рд╕реЗрдЯрдЕрдк рд╣реЛ рдЬреЛ рд░реЛрдЬрд╝рдорд░реНрд░рд╛ рдХреЗ рдХрд╛рдо рдХреЛ рдзреАрдорд╛ рди рдХрд░реЗред

Dev рдореЗрдВ, рд╡реЗ рдХреЗрд╡рд▓ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдкреЗрдореЗрдВрдЯ рдХреАрдЬрд╝ рдФрд░ рдПрдХ рдЯреЗрд╕реНрдЯ SMTP рдЕрдХрд╛рдЙрдВрдЯ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рд▓реЛрдХрд▓ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ (рдпрд╛ рдПрдХ рд▓реЛрдХрд▓ рдЕрдирдЯреНрд░реИрдХреНрдб рдлрд╝рд╛рдЗрд▓) рдореЗрдВ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреБрдЫ рднреА рд░рд┐рдкреЛ рдореЗрдВ рди рдЬрд╛рдПред рд╡реЗрдм рдРрдк, рдореЛрдмрд╛рдЗрд▓ рдРрдк, рдФрд░ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЬреЙрдм рд╕рднреА рдПрдХ рдЬреИрд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо рдкрдврд╝рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ PAYMENTS_KEY, SMTP_USER, рдФрд░ WEBHOOK_SECRET, рдкрд░ рд╣рд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореЗрдВ рдорд╛рди рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВред

Staging рдореЗрдВ, CI рдмрд┐рд▓реНрдб рдХреЛ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред Staging рдЕрдкрдиреА рдкреЗрдореЗрдВрдЯ рдЕрдХрд╛рдЙрдВрдЯ, SMTP рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕, рдФрд░ webhook рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред QA рдЕрд╕рд▓реА рдлреНрд▓реЛ рдЯреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдмрд┐рдирд╛ рдкреНрд░реЛрдб рд╕рд┐рд╕реНрдЯрдореНрд╕ рдХреЛ рдЫреБрдПред

Prod рдореЗрдВ, рд╡рд╣реА рдмрд┐рд▓реНрдб рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯреНрд╕ рдбрд┐рдкреНрд▓реЙрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдкрд░ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╕рдорд░реНрдкрд┐рдд рд╕реАрдХреНрд░реЗрдЯ рд╕реНрдЯреЛрд░ (рдпрд╛ рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЗ secret manager) рд╕реЗ рдЖрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рд░рдирдЯрд╛рдЗрдо рд╕рд░реНрд╡рд┐рд╕реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВред рдЯреАрдо tighter permissions рд╕реЗрдЯ рдХрд░рддреА рд╣реИ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЬреЙрдм SMTP рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдкрдврд╝ рд╕рдХреЗ, рдФрд░ рдХреЗрд╡рд▓ webhook рд╣реИрдВрдбрд▓рд░ webhook рд╕реАрдХреНрд░реЗрдЯ рдкрдврд╝ рд╕рдХреЗред

рдЬрдм рдХреЛрдИ рдХреА рдПрдХреНрд╕рдкреЛрдЬрд╝ рд╣реЛрддреА рд╣реИ (рдЙрджрд╛., рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ API рдХреА рджрд┐рдЦ рдЬрд╛рддреА рд╣реИ), рддреЛ рдЙрдирдХрд╛ рдлрд┐рдХреНрд╕реНрдб рдкреНрд▓реЗрдмреБрдХ рдпрд╣ рд╣реИ:

  • рддреБрд░рдВрдд рдПрдХреНрд╕рдкреЛрдЬрд╝ рдХреА рд╣реБрдИ рдХреА revoke рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд░реЛрдЯреЗрдЯ рдХрд░реЗрдВред
  • рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдХреЗ рджреМрд░рд╛рди рд╕рдВрджрд┐рдЧреНрдз рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧреНрд╕ рдЦреЛрдЬреЗрдВред
  • рдирдИ рд╡реИрд▓реНрдпреВрдЬрд╝ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдВ redeploy рдХрд░реЗрдВред
  • рдЬреЛ рд╣реБрдЖ рдЙрд╕рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдПрдВ рдФрд░ рдПрдХ рдЧрд╛рд░реНрдбрд░реЗрд▓ рдЬреЛрдбрд╝реЗрдВ (рдЙрджрд╛., pre-commit рд╕реНрдХреИрди)ред

рд▓реЛрдХрд▓ рдХрд╛рдо рдХреЛ рдЖрд╕рд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдХрднреА рднреА рдкреНрд░реЛрдб рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╢реЗрдпрд░ рдирд╣реАрдВ рдХрд░рддреЗред рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЕрдХрд╛рдЙрдВрдЯреНрд╕ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рд╡реЗ AppMaster рдЬреИрд╕реЗ рдиреЛ-рдХреЛрдб рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ dev, staging, рдФрд░ prod рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ environment рд╡реИрд▓реНрдпреВрдЬрд╝ рд░рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд╣реА рдРрдк рд▓реЙрдЬрд┐рдХ рд╣рд░ рдЬрдЧрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓реЗред

рдЕрдЧрд▓реЗ рдХрджрдо: рдЕрдкрдиреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рд▓рд╛рдпрдХ рдмрдирд╛рдПрдВ

рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХрд╛ рдХрд╛рдо рдПрдХ рд╕реНрд╡рдЪреНрдЫрддрд╛ рдХреА рддрд░рд╣ рдорд╛рдирд┐рдПред рдкрд╣рд▓реА рдмрд╛рд░ рдпрд╣ рдЭрдВрдЭрдЯ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж рдпрд╣ рд░реВрдЯрд┐рди рдЬреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реАрдХреНрд░реЗрдЯ рдореИрдк рд╕рд╛рдзрд╛рд░рдг рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦреЗрдВ рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХреЗ:

  • рд╕реАрдХреНрд░реЗрдЯ рдХреНрдпрд╛ рд╣реИ (API рдХреА, SMTP рдкрд╛рд╕рд╡рд░реНрдб, webhook рд╕реАрдХреНрд░реЗрдЯ)
  • рдпрд╣ рдХрд╣рд╛рдБ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрддрд╛ рд╣реИ (рд╕рд░реНрд╡рд┐рд╕, рдЬреЙрдм, рдореЛрдмрд╛рдЗрд▓ рдРрдк, рд╡реЗрдиреНрдбрд░ рдбреИрд╢рдмреЛрд░реНрдб)
  • рд╣рд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореЗрдВ рдпрд╣ рдХрд╣рд╛рдБ рд╕реНрдЯреЛрд░ рд╣реЛрддрд╛ рд╣реИ (dev, staging, prod)
  • рдХрд┐рд╕рдХреЗ рдкрд╛рд╕ рдПрдХреНрд╕реЗрд╕ рд╣реИ (рдорд╛рдирд╡, CI/CD, рд╕рд┐рд░реНрдл рд░рдирдЯрд╛рдЗрдо)
  • рдЗрд╕реЗ рдХреИрд╕реЗ рд░реЛрдЯреЗрдЯ/рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рд╕реНрдЯреЗрдкреНрд╕ рдФрд░ рдореЙрдирд┐рдЯрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ)

рдлрд┐рд░, рд╣рд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреЛрд░реЗрдЬ рдкреИрдЯрд░реНрди рдЪреБрдиреЗрдВ рдФрд░ рдЙрд╕ рдкрд░ рдбрдЯреЗ рд░рд╣реЗрдВред рд╕реБрд╕рдВрдЧрддрддрд╛ рдЪрддреБрд░рд╛рдИ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг: рдбреЗрд╡рд▓рдкрд░реНрд╕ рд▓реЛрдХрд▓ рд╕реАрдХреНрд░реЗрдЯ рд╕реНрдЯреЛрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдореИрдиреЗрдЬреНрдб рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реАрдорд┐рдд рдПрдХреНрд╕реЗрд╕ рдХрд░реЗ, рдФрд░ рдкреНрд░реЛрдбрдХреНрд╢рди рд╡рд╣реА рдореИрдиреЗрдЬреНрдб рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд▓реЗрдХрд┐рди рдЬрд╝реНрдпрд╛рджрд╛ рдСрдбрд┐рдЯ рдХреЗ рд╕рд╛рдеред

рд░реЛрдЯреЗрд╢рди рд╢реЗрдбреНрдпреВрд▓ рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдЗрдВрд╕рд┐рдбреЗрдВрдЯ рдкреНрд▓рд╛рди рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕реЗ рд▓реЛрдЧ рд╕рдЪрдореБрдЪ рдлреЙрд▓реЛ рдХрд░реЗрдВрдЧреЗ:

  • рдЙрдЪреНрдЪ-рдЬреЛрдЦрд┐рдо рдХреАрдЬрд╝ рдХреЛ рдХреИрд▓реЗрдВрдбрд░ рдкрд░ рд░реЛрдЯреЗрдЯ рдХрд░реЗрдВ (рдФрд░ рд╕реНрдЯрд╛рдлрд╝ рдмрджрд▓рд╛рд╡ рдкрд░ рддреБрд░рдВрдд)ред
  • рдорд╛рдирд┐рдП рд▓реАрдХ рд╣реЛрддреЗ рд╣реИрдВ: revoke, рдмрджрд▓реЗрдВ, рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рд░реАрдХрд╡рд░ рд╣реЛрдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВред
  • рд▓рд┐рдЦрд┐рдП рдХрд┐ рдХрд┐рд╕рдиреЗ рдХрдм рдФрд░ рдХреНрдпреЛрдВ рд░реЛрдЯреЗрдЯ рдХрд┐рдпрд╛ред
  • рдирд┐рд░реНрдгрдп рд▓реЗрдВ рдХрд┐ blasted radius рдЪреЗрдХ рдХреНрдпрд╛ рд╣реЛрдВрдЧреЗ (payments, email sending, webhooks)ред

рдпрджрд┐ рдЖрдк AppMaster (appmaster.io) рд╕реЗ рдмрд┐рд▓реНрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХреАрдЬрд╝ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХреЙрдиреНреЮрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ environment рдХреЗ рдЕрдиреБрд╕рд╛рд░ deploy рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗрдм рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдмрд┐рд▓реНрдбреНрд╕ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдПрдореНрдмреЗрдб рди рдХрд░реЗрдВред рдлрд┐рд░ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрд╕реЗрд╕ рдХреЛ рдПрдХ рдмрд╛рд░ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдВ: рдПрдХ рдХреА рдХреЛ рдПрдВрдб-рдЯреВ-рдПрдВрдб рд░реЛрдЯреЗрдЯ рдХрд░реЗрдВ (рд╕реНрдЯреЛрд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, redeploy рдХрд░реЗрдВ, рдорд╛рдиреНрдп рдХрд░реЗрдВ, рдкреБрд░рд╛рдиреА рдХреА revoke рдХрд░реЗрдВ)ред рдЗрд╕рдХреЗ рдмрд╛рдж рдЕрдЧрд▓реА рд╕реАрдХреНрд░реЗрдЯ рдХреЗ рд▓рд┐рдП рд╡рд╣реА рджреЛрд╣рд░рд╛рдПрдБред

рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди

WhatтАЩs the difference between a secret and normal config?

рдПрдХ рд╕реАрдХреНрд░реЗрдЯ рдХреЛрдИ рднреА рдРрд╕рд╛ рдорд╛рди рд╣реИ рдЬреЛ рдкрд╣рдЪрд╛рди рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдПрдХреНрд╕реЗрд╕ рджреЗрддрд╛ рд╣реИ тАФ рдЬреИрд╕реЗ API рдХреАрдЬрд╝, рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╛рд╕рд╡рд░реНрдб, SMTP рд▓реЙрдЧрд┐рди, рдФрд░ webhook рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯред рдХреЙрдиреНреЮрд┐рдЧ рд╡рд╣ рдорд╛рди рд╣реИ рдЬреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рддрд╛, рдЬреИрд╕реЗ рдЯрд╛рдЗрдордЖрдЙрдЯ, рдлреАрдЪрд░ рдлреНрд▓реИрдЧ рдХрд╛ рдирд╛рдо, рдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рдЗрдЯ рдХрд╛ рдмреЗрд╕ URL.

рдЕрдЧрд░ рдХреЛрдИ рдорд╛рди рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдпрд╛ рд░рд┐рдкреЛ рд╕реЗ рдХреЙрдкреА рд╣реЛрдиреЗ рдкрд░ рдиреБрдХрд╕рд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╕реАрдХреНрд░реЗрдЯ рдорд╛рдирд┐рдПред

Why do dev, staging, and prod need different secrets?

рдЕрд▓рдЧ- рдЕрд▓рдЧ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдиреБрдХрд╕рд╛рди рдХрд╛ рджрд╛рдпрд░рд╛ рдЫреЛрдЯрд╛ рд░рд╣рддрд╛ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА dev рд▓реИрдкрдЯреЙрдк, рдЯреЗрд╕реНрдЯ рд╕рд░реНрд╡рд░, рдпрд╛ staging рдРрдк рд╕реЗ рдХреА рд▓реАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рд╡рд╣реА рдХреА рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЛ рднреА рдЕрдирд▓реЙрдХ рдХрд░ рджреЗред

рдЕрд▓рдЧ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯреНрд╕ рдЖрдкрдХреЛ dev рдФрд░ staging рдореЗрдВ рдХрдо рдЕрдзрд┐рдХрд╛рд░ рдФрд░ prod рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдХрдбрд╝реЗ, рдСрдбрд┐рдЯ рдпреЛрдЧреНрдп рдПрдХреНрд╕реЗрд╕ рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред

How do I stop secrets from leaking into builds?

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЬреЛ рднреА рдмрд┐рд▓реНрдб, рдмрдВрдбрд▓, рдпрд╛ рдЕрдкрд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ рдЙрд╕реЗ рдмрд╛рдж рдореЗрдВ рд▓реЛрдЧ рджреЗрдЦ рд╕рдХреЗрдВред рдЗрд╕рд▓рд┐рдП рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рдФрд░ build-time рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗ рджреВрд░ рд░рдЦреЗрдВ, рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ environment variables рдпрд╛ secret manager рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВред

рдЕрдЧрд░ рдЖрдк рдмрд┐рдирд╛ rebuild рдХрд┐рдП рд╕реАрдХреНрд░реЗрдЯ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрдо рддреМрд░ рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИрдВред

Is using a local .env file okay, or is it always risky?

рдПрдХ рд▓реЛрдХрд▓ .env рдлрд╝рд╛рдЗрд▓ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреАрд╡реЗрд▓рдкрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдХрднреА version control рдореЗрдВ рди рдЬрд╛рдП рдФрд░ рди рд╣реА рдЗрдореЗрдЬ/рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдореЗрдВ рдмреЗрдХ рд╣реЛред рдЗрд╕реЗ .gitignore рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рдЪреИрдЯ/рдЯрд┐рдХрдЯ/рдЬрд╝рд┐рдк рдХреЗ рдЬрд╝рд░рд┐рдП рд╢реЗрдпрд░ рди рдХрд░реЗрдВред

Staging рдФрд░ production рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЗрдХреНрдЯреЗрдб environment settings рдпрд╛ secret manager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдлрд╛рдЗрд▓реНрд╕ рдШреВрдордиреЗ рдкрд░ рдЬреЛрдЦрд┐рдо рди рдмрдврд╝реЗред

What secrets should never be in a web or mobile app?

рдХрд┐рд╕реА рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдк рдореЗрдВ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХреАрдЬрд╝, SMTP рдкрд╛рд╕рд╡рд░реНрдб, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕, рдпрд╛ webhook рд╕рд╛рдЗрдирд┐рдВрдЧ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рди рд░рдЦреЗрдВред рдЕрдЧрд░ рдХреЛрдб рдпреВрдЬрд╝рд░ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣реИ, рддреЛ рд╣рдо рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЕрдЯреИрдХрд░ рд╡рд╣рд╛рдВ рд╕реЗ рд╡реИрд▓реНрдпреВрдЬрд╝ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред

рдЬрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХрд┐рд╕реА рдерд░реНрдб-рдкрд╛рд░реНрдЯреА API рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЕрдкрдиреЗ рдмреИрдХрдПрдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕реАрдХреНрд░реЗрдЯ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╣реА рд░рд╣реЗред

How can I make secret rotation painless?

рд░реЛрдЯреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рд╛рд╡ рдмрдирд╛рдЗрдП, рди рдХрд┐ рдХреЛрдб рдмрджрд▓рд╛рд╡ред рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рдХреЛрдбрдмреЗрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦреЗрдВ, рд╕рд░реНрд╡рд┐рд╕реЗрдЬрд╝ рдХреЛ redeploy рдХрд░реЗрдВ рддрд╛рдХрд┐ рдирдИ рд╡реИрд▓реНрдпреВрдЬрд╝ рдЙрда рдЬрд╛рдПрдБ, рдФрд░ рд╣рд░ рдХреА рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдпрд░ рдУрдирд░ рдФрд░ рд░рд┐рдорд╛рдЗрдВрдбрд░ рдХреИрдбреЗрдВрд╕ рд░рдЦреЗрдВред

рдЬрд╣рд╛рдБ рд╕рдВрднрд╡ рд╣реЛ, рдЫреЛрдЯреЗ рдУрд╡рд░рд▓реИрдк рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рд╕реАрдХреНрд░реЗрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдлрд┐рд░ рдкреБрд░рд╛рдирд╛ рд░рд┐рдЯрд╛рдпрд░ рдХрд░реЗрдВред

How should I verify webhook requests safely?

рд╣рд░ webhook request рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЙрд╕реА рд╕реАрдХреНрд░реЗрдЯ рд╕реЗ рд╡реЗрд░реАрдлрд╛рдИ рдХрд░реЗрдВ рдЬреЛ рдХрднреА рдмреИрдХрдПрдВрдб рд╕реЗ рдмрд╛рд╣рд░ рди рдирд┐рдХрд▓реЗред рд░реЙ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдмреЙрдбреА рдареАрдХ рд╡реИрд╕реА рд╣реА рдкрдврд╝реЗрдВ рдЬреИрд╕реА рдЖрдИ рд╣реИ, рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХрдВрдкреНрдпреВрдЯ рдХрд░реЗрдВ, рдФрд░ рддреБрд▓рдирд╛ constant-time рдореЗрдВ рдХрд░реЗрдВред рдлрд┐рд░ рд╣реА JSON рдкрд╛рд░реНрд╕ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░реЗрдВред

рдЕрд▓рдЧ webhook endpoints рдФрд░ рдЕрд▓рдЧ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд░рдЦреЗрдВ dev, staging, рдФрд░ prod рдХреЗ рд▓рд┐рдП рддрд╛рдХрд┐ рдЯреЗрд╕реНрдЯ рдЗрд╡реЗрдВрдЯреНрд╕ рдкреНрд░реЛрдб рдПрдХреНрд╢рди рди рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХреЗрдВред

WhatтАЩs the safest approach to logging around secrets?

рд╕реАрдХреНрд░реЗрдЯреНрд╕, рдлреБрд▓ рд╣реЗрдбрд░реНрд╕, рдпрд╛ рдлреБрд▓ рдкреЗрд▓реЛрдб рд▓реЙрдЧ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рди рдХрд░реЗрдВред рдЕрдЧрд░ рдбрд┐рдмрдЧ рдХреЗ рд▓рд┐рдП рдЬрд╝рд░реВрд░реА рд╣реЛ, рддреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреИрд╕реЗ рдЗрд╡реЗрдВрдЯ IDs, рд╕реНрдЯреЗрдЯрд╕ рдХреЛрдб, рдФрд░ рдорд╛рд╕реНрдХреНрдб рд╡реИрд▓реНрдпреВрдЬрд╝ рд▓реЙрдЧ рдХрд░реЗрдВ тАФ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдирд╣реАрдВред

рдЯрд┐рдХрдЯ рдпрд╛ рдЪреИрдЯ рдореЗрдВ рдХреЛрдИ рд▓реЙрдЧ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕реЗ redact рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

How do I keep staging realistic without risking production?

Staging рдХреЛ prod рдЬреИрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдкрд░ рдЕрд▓рдЧ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд╣рд╛рдБ рд╕рдВрднрд╡ рд╣реЛ, рдЕрд▓рдЧ vendor accounts рдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рдЦреЗрдВ, рдЕрд▓рдЧ SMTP рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕, рдЕрд▓рдЧ рдкреЗрдореЗрдВрдЯ рдХреАрдЬрд╝, рдФрд░ рдЕрд▓рдЧ webhook рд╕реАрдХреНрд░реЗрдЯреНрд╕ред

рдПрдХ рдЧрд╛рд░реНрдбрд░реЗрд▓ рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдкреНрд░реЛрдбрдХреНрд╢рди рд╕реАрдХреНрд░реЗрдЯ рд╕реНрдЯреЛрд░реНрд╕ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрдврд╝ рди рд╕рдХреЗ, рднрд▓реЗ рд╣реА рдХрд┐рд╕реА рдиреЗ deployment рдорд┐рд╕рдХрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рджрд┐рдпрд╛ рд╣реЛред

How should I handle secrets when building with AppMaster?

AppMaster рдореЗрдВ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд╛рдиреЛрдВ рдХреЛ рд╣рд░ deployment target рдХреЗ рд▓рд┐рдП environment-specific runtime settings рдореЗрдВ рд░рдЦреЗрдВ, рди рдХрд┐ UI рд╕реНрдХреНрд░реАрди рдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЙрдиреНреЮрд┐рдЧ рдореЗрдВред рдЗрд╕рд╕реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЬрдирд░реЗрдЯ рд╣реБрдП рд╡реЗрдм рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдмрд┐рд▓реНрдбреНрд╕ рдореЗрдВ рдХреЗрд╡рд▓ public settings рд░рд╣реЗрдВ, рдФрд░ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╣реА рд░рд╣реЗрдВред

рдЕрдЪреНрдЫреА рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдпрд╣реА рд╣реИ рдХрд┐ dev, staging, рдФрд░ prod рдореЗрдВ рд╡рд╣реА рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо рд░рдЦреЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдорд╛рди рдмрджрд▓реЗрдВред

рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╕рд╛рди
рдХреБрдЫ рдмрдирд╛рдПрдВ рдЕрджреНрднреБрдд

рдлреНрд░реА рдкреНрд▓рд╛рди рдХреЗ рд╕рд╛рде рдРрдкрдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред
рдЬрдм рдЖрдк рддреИрдпрд╛рд░ рд╣реЛрдВрдЧреЗ рддрдм рдЖрдк рдЙрдЪрд┐рдд рд╕рджрд╕реНрдпрддрд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдУ
dev, staging, prod рдХреЗ рд▓рд┐рдП рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди | AppMaster