ΠΠ° ΠΎΡΠ½ΠΎΠ²Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π²Π·ΡΡ Π°Π½Π³Π»ΠΎΡΠ·ΡΡΠ½ΡΠΉ Run Book Template. ΠΡΠΎ Π²ΠΎΠ»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ + Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ Π½ΡΠΆΠ΄Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π΅Ρ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π° ΡΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π΅.
Π ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°, Π΄Π°ΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠ³ΠΎ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΠΊΠΈ ΠΎΡΠΊΠ°Π·Π° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π° ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΏΡΠΎΡΡΠΈΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΎΠ΄Π° Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π² ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π΄Π»Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ email ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ 24/7
ΠΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠ΅ΡΠ²ΠΈΡ? ΠΠ°ΠΊΡΡ ΡΠ΅Π½Π½ΠΎΡΡΡ ΠΎΠ½ Π½Π΅ΡΠ΅Ρ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅ΡΠ°? ΠΠ°ΠΊΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΆΠ΄Π΅Ρ Π±ΠΈΠ·Π½Π΅Ρ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°?
ΠΠ΅Π»Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ email ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ, ΠΈΠ·Π±Π΅Π³Π°Π΅ΠΌ ΠΏΠΎΠΏΠ°Π΄Π΅Π½ΠΈΡ Π² ΠΏΠ°ΠΏΠΊΡ spam ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌ ΠΎΠΊΠΎΠ»ΠΎ 100%-ΡΡ Π΄ΠΎΡΡΠΎΠ²Π»ΡΠ΅ΠΌΠΎΡΡΡ Π΄Π΅ΡΡΡΠΊΠ°ΠΌ ΡΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
ΠΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΡΠ΅ΡΠ²ΠΈΡΠ°? ΠΠΎΠ½ΠΎΠ»ΠΈΡ ΠΈΠ»ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ? API backend ΠΈΠ»ΠΈ background tasks processing? ΠΠ½ΠΎΠ³ΠΎΡΡΠΎΠ½ΡΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ΄Π½Ρ Π·Π°Π΄Π°ΡΡ? ΠΠ΄Π΅ Ρ ΡΠ°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅?
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ email ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· SQS ΠΈ ΠΎΠ±ΡΠ°Π΅ΡΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ email-Π³Π΅ΠΉΡΠ°ΠΌΠΈ, ΡΠΎΡΠΌΠ°Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ΅ΡΠ΅Π· protobuf, Ρ ΡΠ°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π² postgresql
ΠΠ°ΠΊΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΠ±Π½ΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ?
Π‘Π΅ΡΠ²ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ 100% Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΡΠΈ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π΅ΡΠ΅ ΡΠ°Π·, rabbitmq Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΡ ΡΠ°Π½Π½ΠΎΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ/ΠΠ΅ΠΌΠΎΠ½Ρ/Π‘Π΅ΡΠ²ΠΈΡΡ/Middleware/ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠ· ΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π΄Π΅ΠΌΠΎΠ½ΠΎΠ², middlerware ΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΡΠΎΡΡΠΎΠΈΡ Π²Π°Ρ ΡΠ΅ΡΠ²ΠΈΡ?
ruby ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ + sidekiq Π΄Π΅ΠΌΠΎΠ½ + rabbitmiq Π΄Π΅ΠΌΠΎΠ½ + postgresql@12 + elasticsearch@6 + statsd Π΄Π΅ΠΌΠΎΠ½
ΠΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π² cΠΈΡΡΠ΅ΠΌΠ΅? Π§ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠΈΠ³Π³Π΅ΡΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ?
ΠΏΡΡΠΌΡΠ΅ http Π·Π°ΠΏΡΠΎΡΡ ΠΊ api, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² rabbitmq/sqs, everyday Π΄ΠΆΠΎΠ±Ρ ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅
ΠΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π°Π²Π°ΡΠΈΠΉΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ? ΠΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ?
kubernetes ΠΊΠ»Π°ΡΡΠ΅Ρ, master-slave postgresql ΠΊΠ»Π°ΡΡΠ΅Ρ, ΡΠΆΠ΅Π΄Π½Π΅Π²Π½ΡΠ΅ Π±ΡΠΊΠ°ΠΏΡ Π² 21:00
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΡΠ΅ΡΠ²ΠΈΡ Π±ΡΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ³Π°ΡΠ΅Π½? ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΊΠ΅ΠΉΠ»ΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ ΠΊΠΎΠ»-Π²ΠΎ Π½ΠΎΠ΄ Π² ΡΠ΅ΡΠΈ?
Π‘Π΅ΡΠ²ΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, Π° Π·Π½Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ΄Π½Π° Π½ΠΎΠ΄Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΠΊΠΎΠ»ΠΎ 1500 ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ.
Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠ²/Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΄Π΅ΡΠΆΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ? Π§ΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ·ΠΊΠΈΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΡΡΠΎ ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΊΠ΅ΠΉΠ»ΠΈΠ½Π³Ρ?
Π‘ΠΊΠ΅ΠΉΠ»ΠΈΠ½Π³ ΡΠΏΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠΌΠ΅ΡΠΊΠ΅ Π² ~ 10 Π½ΠΎΠ΄, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π±ΠΎΡΡΠ»Π½Π΅ΠΊΠΎΠΌ ΡΡΠ°Π½Π΅Ρ ΠΊΠΎΠ΄-Π²ΠΎ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠ² ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ .
Π ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠΈΡ production ΠΈ staging ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°? Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π²Π΅ΡΠ°ΠΌΠΈ Π½Π° staging'Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ Π·Π°ΡΡΠΎΠ½ΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΌΠΈΡ?
Π staging ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΡΠΌΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡ ΠΎΠ΄ΠΈΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΌΠΈΡ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π² ΡΠ°Π·Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² consule
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΡΠΎΡΠΌΠ°ΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
json Π»ΠΎΠ³ΠΈ ΠΏΠΈΡΡΡΡΡ Π² STDOUT, Π·Π°ΡΠ΅ΠΌ Π·Π°Π±ΠΈΡΠ°ΡΡΡΡ Π² Π½Π°Ρ elasticsearch
Π»ΠΎΠ³ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ "app":"ΠΈΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ"
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΌΡΡ Π²Π°ΠΆΠ½ΡΡ ΠΌΠ΅ΡΡΠΈΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ°
- email_messages.sent
- email_messsages.failed
ΠΡΠ±ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°
Π Π°Π±ΠΎΡΠΎΡΠΏΠΎΡΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎ ΡΡΠ»Ρ /health, ΡΡΠ°ΡΡΡ 200 Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ ΡΡΠΎ ΡΠ΅ΡΠ²ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ (ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ΅ΡΡΠΈΡΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ )