ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช

ื›ื ื™ืกื”

ื”ื™ื™!

ื‘ืžืืžืจ ื–ื” ืืฉืชืฃ ืืช ื”ื ื™ืกื™ื•ืŸ ืฉืœื™ ื‘ื‘ื ื™ื™ืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžื™ืงืจื•-ืฉื™ืจื•ืช ืœืคืจื•ื™ืงื˜ ื‘ืืžืฆืขื•ืช ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช.

ื‘ื•ืื• ื ื“ื‘ืจ ืขืœ ื“ืจื™ืฉื•ืช ื”ืืจื›ื™ื˜ืงื˜ื•ืจื”, ื ืกืชื›ืœ ืขืœ ื“ื™ืื’ืจืžื•ืช ืžื‘ื ื™ื•ืช ืฉื•ื ื•ืช, ื ื ืชื— ื›ืœ ืื—ื“ ืžื”ืžืจื›ื™ื‘ื™ื ืฉืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื”ืžื•ื’ืžืจืช, ื•ื’ื ื ืขืจื™ืš ืืช ื”ืžื“ื“ื™ื ื”ื˜ื›ื ื™ื™ื ืฉืœ ื”ืคืชืจื•ืŸ.

ืชื”ื ื” ืงืจื™ืื”!

ื›ืžื” ืžื™ืœื™ื ืขืœ ื”ื‘ืขื™ื” ื•ืคืชืจื•ื ื”

ื”ืจืขื™ื•ืŸ ื”ืžืจื›ื–ื™ ื”ื•ื ืœื”ืขืจื™ืš ืืช ื”ืื˜ืจืงื˜ื™ื‘ื™ื•ืช ืฉืœ ืื“ื ืขืœ ืกื•ืœื ืฉืœ ืขืฉืจ ื ืงื•ื“ื•ืช ืขืœ ืกืžืš ืชืžื•ื ื”.

ื‘ืžืืžืจ ื–ื” ื ืชืจื—ืง ืžืชื™ืื•ืจ ื”ืŸ ืืช ื”ืจืฉืชื•ืช ื”ืขืฆื‘ื™ื•ืช ื‘ื”ืŸ ื ืขืฉื” ืฉื™ืžื•ืฉ ื•ื”ืŸ ืืช ืชื”ืœื™ืš ื”ื›ื ืช ื”ื ืชื•ื ื™ื ื•ื”ื”ื›ืฉืจื”. ืขื ื–ืืช, ื‘ืื—ื“ ืžื”ืคืจืกื•ืžื™ื ื”ื‘ืื™ื ื‘ื”ื—ืœื˜ ื ื—ื–ื•ืจ ืœื ืชื— ืืช ืฆื™ื ื•ืจ ื”ื”ืขืจื›ื” ื‘ืจืžื” ืžืขืžื™ืงื”.

ื›ืขืช ื ืขื‘ื•ืจ ืขืœ ืฆื™ื ื•ืจ ื”ื”ืขืจื›ื” ื‘ืจืžื” ื”ืขืœื™ื•ื ื”, ื•ื ืชืžืงื“ ื‘ืื™ื ื˜ืจืืงืฆื™ื” ืฉืœ ืฉื™ืจื•ืชื™ ืžื™ืงืจื• ื‘ื”ืงืฉืจ ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืคืจื•ื™ืงื˜ ื”ื›ื•ืœืœืช. 

ื‘ืžื”ืœืš ื”ืขื‘ื•ื“ื” ืขืœ ืฆื™ื ื•ืจ ื”ืขืจื›ืช ื”ืื˜ืจืงื˜ื™ื‘ื™ื•ืช, ื”ืžืฉื™ืžื” ืคื•ืจืงื” ืœืžืจื›ื™ื‘ื™ื ื”ื‘ืื™ื:

  1. ื‘ื—ื™ืจืช ืคืจืฆื•ืคื™ื ื‘ืชืžื•ื ื•ืช
  2. ื“ื™ืจื•ื’ ืฉืœ ื›ืœ ืื“ื
  3. ืขื‘ื“ ืืช ื”ืชื•ืฆืื”

ื”ืจืืฉื•ืŸ ื ืคืชืจ ืขืœ ื™ื“ื™ ื”ื›ื•ื—ื•ืช ืฉืœ ืžืื•ืžื ื™ื ืžืจืืฉ MTCNN. ืขื‘ื•ืจ ื”ืฉื ื™, ืจืฉืช ื ื•ื™ืจื•ื ื™ื ืงื•ื ื‘ื•ืœื•ืฆื™ื•ื ื™ืช ืื•ืžื ื” ืขืœ PyTorch, ื‘ืืžืฆืขื•ืช 34. ResNetXNUMX - ืžื”ืื™ื–ื•ืŸ "ืื™ื›ื•ืช / ืžื”ื™ืจื•ืช ืžืกืงื ื•ืช ืขืœ ื”ืžืขื‘ื“"

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช

ืชืจืฉื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ ืฉืœ ืฆื™ื ื•ืจ ื”ืขืจื›ื”

ื ื™ืชื•ื— ื“ืจื™ืฉื•ืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืคืจื•ื™ืงื˜

ื‘ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ML ืฉืœื‘ื™ ื”ืขื‘ื•ื“ื” ื‘ืคืจื•ื™ืงื˜ ืขืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ื”ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืคืจื™ืกืช ื”ืžื•ื“ืœื™ื ื”ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืžื”ื–ืžืŸ ื•ื”ืžืฉืื‘ื™ื ื”ื“ื•ืจืฉื™ื ื‘ื™ื•ืชืจ.

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช

ืžื—ื–ื•ืจ ื—ื™ื™ื ืฉืœ ืคืจื•ื™ืงื˜ ML

ื”ืคืจื•ื™ืงื˜ ื”ื–ื” ืื™ื ื• ื™ื•ืฆื ืžืŸ ื”ื›ืœืœ - ื”ื•ื—ืœื˜ ืœืขื˜ื•ืฃ ืืช ืฆื™ื ื•ืจ ื”ื”ืขืจื›ื” ื‘ืฉื™ืจื•ืช ืžืงื•ื•ืŸ, ืฉื“ืจืฉ ืœืฉืงื•ืข ื‘ืืจื›ื™ื˜ืงื˜ื•ืจื”. ื–ื•ื”ื• ื”ื“ืจื™ืฉื•ืช ื”ื‘ืกื™ืกื™ื•ืช ื”ื‘ืื•ืช:

  1. ืื—ืกื•ืŸ ื™ื•ืžื ื™ื ืžืื•ื—ื“ - ื›ืœ ื”ืฉื™ืจื•ืชื™ื ืฆืจื™ื›ื™ื ืœื›ืชื•ื‘ ื™ื•ืžื ื™ื ื‘ืžืงื•ื ืื—ื“, ื”ื ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ื ื•ื—ื™ื ืœื ื™ืชื•ื—
  2. ืืคืฉืจื•ืช ืงื ื” ืžื™ื“ื” ืื•ืคืงื™ ืฉืœ ืฉื™ืจื•ืช ื”ื”ืขืจื›ื” - ื›ืฆื•ื•ืืจ ื”ื‘ืงื‘ื•ืง ื”ืกื‘ื™ืจ ื‘ื™ื•ืชืจ
  3. ื™ืฉ ืœื”ืงืฆื•ืช ืืช ืื•ืชื” ื›ืžื•ืช ืžืฉืื‘ื™ ืžืขื‘ื“ ืœื”ืขืจื›ืช ื›ืœ ืชืžื•ื ื” ืขืœ ืžื ืช ืœืžื ื•ืข ื—ืจื™ื’ื™ื ื‘ื—ืœื•ืงืช ื”ื–ืžืŸ ืœื”ืกืงืช ืžืกืงื ื•ืช
  4. ืคืจื™ืกื” ืžื”ื™ืจื” (ืžื—ื“ืฉ) ื”ืŸ ืฉืœ ืฉื™ืจื•ืชื™ื ืกืคืฆื™ืคื™ื™ื ื•ื”ืŸ ืฉืœ ื”ืžื—ืกื ื™ืช ื›ื•ืœื”
  5. ื”ื™ื›ื•ืœืช, ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ืœื”ืฉืชืžืฉ ื‘ืื•ื‘ื™ื™ืงื˜ื™ื ื ืคื•ืฆื™ื ื‘ืฉื™ืจื•ืชื™ื ืฉื•ื ื™ื

ืื“ืจื™ื›ืœื•ืช

ืœืื—ืจ ื ื™ืชื•ื— ื”ื“ืจื™ืฉื•ืช, ื”ืชื‘ืจืจ ื›ื™ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืžื™ืงืจื•-ืฉื™ืจื•ืช ืžืชืื™ืžื” ื›ืžืขื˜ ื‘ืฆื•ืจื” ืžื•ืฉืœืžืช.

ืขืœ ืžื ืช ืœื”ื™ืคื˜ืจ ืžื›ืื‘ื™ ืจืืฉ ืžื™ื•ืชืจื™ื, ื ื‘ื—ืจ ื”-API ืฉืœ Telegram ื›-frontend.

ืจืืฉื™ืช, ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื”ื“ื™ืื’ืจืžื” ื”ืžื‘ื ื™ืช ืฉืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื”ืžื•ื’ืžืจืช, ืœืื—ืจ ืžื›ืŸ ื ืขื‘ื•ืจ ืœืชื™ืื•ืจ ืฉืœ ื›ืœ ืื—ื“ ืžื”ืจื›ื™ื‘ื™ื, ื•ื’ื ื ื ืกื— ืืช ื”ืชื”ืœื™ืš ืฉืœ ืขื™ื‘ื•ื“ ืชืžื•ื ื” ืžื•ืฆืœื—.

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช

ืชืจืฉื™ื ืžื‘ื ื™ ืฉืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื”ืžื•ื’ืžืจืช

ื‘ื•ืื• ื ื“ื‘ืจ ื‘ืคื™ืจื•ื˜ ืจื‘ ื™ื•ืชืจ ืขืœ ื›ืœ ืื—ื“ ืžืžืจื›ื™ื‘ื™ ื”ืชืจืฉื™ื, ื•ื ืฆื™ื™ืŸ ืื•ืชื ืื—ืจื™ื•ืช ื™ื—ื™ื“ื” ื‘ืชื”ืœื™ืš ื”ืขืจื›ืช ืชืžื•ื ื”.

Microservice "attrai-telegram-bot"

ืฉื™ืจื•ืช ืžื™ืงืจื• ื–ื” ืžืงืคืœ ืืช ื›ืœ ื”ืื™ื ื˜ืจืืงืฆื™ื•ืช ืขื ื”-API ืฉืœ Telegram. ื™ืฉื ื 2 ืชืจื—ื™ืฉื™ื ืขื™ืงืจื™ื™ื: ืขื‘ื•ื“ื” ืขื ืชืžื•ื ื” ืžื•ืชืืžืช ืื™ืฉื™ืช ื•ืขื‘ื•ื“ื” ืขื ืชื•ืฆืื” ืฉืœ ืฆื™ื ื•ืจ ื”ืขืจื›ื”. ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืฉื ื™ ื”ืชืจื—ื™ืฉื™ื ื‘ืžื•ื ื—ื™ื ื›ืœืœื™ื™ื.

ื‘ืขืช ืงื‘ืœืช ื”ื•ื“ืขื” ืžื•ืชืืžืช ืื™ืฉื™ืช ืขื ืชืžื•ื ื”:

  1. ืžืชื‘ืฆืข ืกื™ื ื•ืŸ, ื”ืžื•ืจื›ื‘ ืžื”ื‘ื“ื™ืงื•ืช ื”ื‘ืื•ืช:
    • ื–ืžื™ื ื•ืช ืฉืœ ื’ื•ื“ืœ ืชืžื•ื ื” ืื•ืคื˜ื™ืžืœื™
    • ืžืกืคืจ ืชืžื•ื ื•ืช ื”ืžืฉืชืžืฉ ืฉื›ื‘ืจ ื ืžืฆืื•ืช ื‘ืชื•ืจ
  2. ื›ืืฉืจ ืขื•ื‘ืจื™ื ืืช ื”ืกื™ื ื•ืŸ ื”ืจืืฉื•ื ื™, ื”ืชืžื•ื ื” ื ืฉืžืจืช ื‘ื•ื•ืœื™ื•ื ื”ื“ื•ืงืจ
  3. ืžื•ืคืงืช ืžืฉื™ืžื” ื‘ืชื•ืจ "ืœื”ืขืจื™ืš" ื”ื›ื•ืœืœืช ื‘ื™ืŸ ื”ื™ืชืจ ืืช ื”ื ืชื™ื‘ ืœืชืžื•ื ื” ืฉื ืžืฆืืช ื‘ื›ืจืš ืฉืœื ื•
  4. ืื ื”ืฉืœื‘ื™ื ืฉืœืขื™ืœ ื™ื•ืฉืœืžื• ื‘ื”ืฆืœื—ื”, ื”ืžืฉืชืžืฉ ื™ืงื‘ืœ ื”ื•ื“ืขื” ืขื ื–ืžืŸ ืขื™ื‘ื•ื“ ื”ืชืžื•ื ื” ื”ืžืฉื•ืขืจ, ืืฉืจ ืžื—ื•ืฉื‘ ืขืœ ืกืžืš ืžืกืคืจ ื”ืžืฉื™ืžื•ืช ื‘ืชื•ืจ. ืื ืžืชืจื—ืฉืช ืฉื’ื™ืื”, ื”ืžืฉืชืžืฉ ื™ืงื‘ืœ ื”ื•ื“ืขื” ืžืคื•ืจืฉืช ืขืœ ื™ื“ื™ ืฉืœื™ื—ืช ื”ื•ื“ืขื” ืขื ืžื™ื“ืข ืขืœ ืžื” ืฉืขืœื•ืœ ืœื”ืฉืชื‘ืฉ.

ื›ืžื• ื›ืŸ, ืฉื™ืจื•ืช ื”ืžื™ืงืจื• ื”ื–ื”, ื›ืžื• ืขื•ื‘ื“ ืกืœืจื™, ืžืื–ื™ืŸ ืœืชื•ืจ "ืื—ืจื™_ื”ืขืจื›ื”", ืฉืžื™ื•ืขื“ ืœืžืฉื™ืžื•ืช ืฉืขื‘ืจื• ื‘ืฆื™ื ื•ืจ ื”ื”ืขืจื›ื”.

ื›ืืฉืจ ืžืงื‘ืœื™ื ืžืฉื™ืžื” ื—ื“ืฉื” ืž-"after_estimate":

  1. ืื ื”ืชืžื•ื ื” ืžืขื•ื‘ื“ืช ื‘ื”ืฆืœื—ื”, ืื ื• ืฉื•ืœื—ื™ื ืืช ื”ืชื•ืฆืื” ืœืžืฉืชืžืฉ; ืื ืœื, ืื ื• ืžื•ื“ื™ืขื™ื ืขืœ ืฉื’ื™ืื”.
  2. ื”ืกืจืช ื”ืชืžื•ื ื” ืฉื”ื™ื ืชื•ืฆืื” ืฉืœ ืฆื™ื ื•ืจ ื”ื”ืขืจื›ื”

ื”ืขืจื›ื” microservice "attrai-estimator"

ืฉื™ืจื•ืช ื”ืžื™ืงืจื• ื”ื–ื” ื”ื•ื ืขื•ื‘ื“ ืกืœืจื™ ื•ืžื›ื™ืœ ื‘ืชื•ื›ื• ืืช ื›ืœ ืžื” ืฉืงืฉื•ืจ ืœืฆื™ื ื•ืจ ื”ืขืจื›ืช ื”ืชืžื•ื ื•ืช. ื™ืฉ ื›ืืŸ ืจืง ืืœื’ื•ืจื™ืชื ืขื•ื‘ื“ ืื—ื“ - ื‘ื•ืื• ื ื ืชื— ืื•ืชื•.

ื›ืืฉืจ ืžืงื‘ืœื™ื ืžืฉื™ืžื” ื—ื“ืฉื” ืž-"to_estimate":

  1. ื‘ื•ืื• ื ืขื‘ื™ืจ ืืช ื”ืชืžื•ื ื” ื“ืจืš ืฆื™ื ื•ืจ ื”ื”ืขืจื›ื”:
    1. ื˜ืขื™ื ืช ื”ืชืžื•ื ื” ืœื–ื™ื›ืจื•ืŸ
    2. ืื ื• ืžื‘ื™ืื™ื ืืช ื”ืชืžื•ื ื” ืœื’ื•ื“ืœ ื”ื ื“ืจืฉ
    3. ืžืฆื™ืืช ื›ืœ ื”ืคื ื™ื (MTCNN)
    4. ืื ื• ืžืขืจื™ื›ื™ื ืืช ื›ืœ ื”ืคืจืฆื•ืคื™ื (ืื ื• ืขื•ื˜ืคื™ื ืืช ื”ืคืจืฆื•ืคื™ื ืฉื ืžืฆืื• ื‘ืฉืœื‘ ื”ืื—ืจื•ืŸ ื‘ืืฆื•ื•ื” ื•ืžืกื™ืงื™ื ืืช ResNet34)
    5. ืขื‘ื“ ืืช ื”ืชืžื•ื ื” ื”ืกื•ืคื™ืช
      1. ื‘ื•ืื• ื ืฆื™ื™ืจ ืืช ื”ืชื™ื‘ื•ืช ื”ืชื•ื—ืžื•ืช
      2. ืฆื™ื•ืจ ื”ืจื™ื™ื˜ื™ื ื’
  2. ืžื—ื™ืงืช ืชืžื•ื ื” ืžื•ืชืืžืช ืื™ืฉื™ืช (ืžืงื•ืจื™ืช).
  3. ืฉืžื™ืจืช ื”ืคืœื˜ ืžืฆื™ื ื•ืจ ื”ื”ืขืจื›ื”
  4. ืฉืžื ื• ืืช ื”ืžืฉื™ืžื” ื‘ืชื•ืจ "ืœืื—ืจ_ื”ืขืจื›ื”", ืืœื™ื• ืžืงืฉื™ื‘ื™ื ื”ืžื™ืงืจื•-ืฉื™ืจื•ืช "attrai-telegram-bot" ืฉื ื“ื•ืŸ ืœืขื™ืœ.

Graylog (+ mongoDB + Elasticsearch)

ื’ืจื™ื™ืœื•ื’ ื”ื•ื ืคืชืจื•ืŸ ืœื ื™ื”ื•ืœ ื™ื•ืžื ื™ื ืžืจื›ื–ื™ื™ื. ื‘ืคืจื•ื™ืงื˜ ื–ื” ื ืขืฉื” ื‘ื• ืฉื™ืžื•ืฉ ืœืžื˜ืจื” ื”ืžื™ื•ืขื“ืช ืœื•.

ื”ื‘ื—ื™ืจื” ื ืคืœื” ืขืœื™ื•, ื•ืœื ืขืœ ื”ืจื’ื™ืœื” ื“ึดื™ืฉืื•ึนืŸ ืžื—ืกื ื™ืช, ื‘ืฉืœ ื”ื ื•ื—ื•ืช ื‘ืขื‘ื•ื“ื” ืื™ืชื• ืž-Python. ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ื›ื“ื™ ืœื”ื™ื›ื ืก ืœ-Graylog ื”ื•ื ืœื”ื•ืกื™ืฃ ืืช GELFTCPHandler ืžื”ื—ื‘ื™ืœื” ืืคื•ืจ ืœืฉืืจ ื”ืžื˜ืคืœื™ื ื‘-Root Loger ืฉืœ ืžื™ืงืจื•-ืฉื™ืจื•ืช ื”ืคื™ืชื•ืŸ ืฉืœื ื•.

ื›ืžื™ ืฉืขื‘ื“ ื‘ืขื‘ืจ ืจืง ืขื ืžื—ืกื ื™ืช ื”-ELK, ื”ื™ื™ืชื” ืœื™ ื—ื•ื•ื™ื” ื—ื™ื•ื‘ื™ืช ื‘ืกืš ื”ื›ืœ ื‘ื–ืžืŸ ื”ืขื‘ื•ื“ื” ืขื Graylog. ื”ื“ื‘ืจ ื”ื™ื—ื™ื“ ืฉืžื“ื›ื ื”ื•ื ื”ืขืœื™ื•ื ื•ืช ืฉืœ ืชื›ื•ื ื•ืช Kibana ืขืœ ืคื ื™ ืžืžืฉืง ื”ืื™ื ื˜ืจื ื˜ ืฉืœ Graylog.

RabbitMQ

RabbitMQ ื”ื•ื ืžืชื•ื•ืš ื”ื•ื“ืขื•ืช ื”ืžื‘ื•ืกืก ืขืœ ืคืจื•ื˜ื•ืงื•ืœ AMQP.

ื‘ืคืจื•ื™ืงื˜ ื–ื” ื”ื•ื ืฉื™ืžืฉ ื› ื”ื™ืฆื™ื‘ ื‘ื™ื•ืชืจ ื•ื”ืžื‘ื—ืŸ ื‘ื–ืžืŸ ืžืชื•ื•ืš ืขื‘ื•ืจ ืกืœืจื™ ื•ืขื‘ื“ ื‘ืžืฆื‘ ืขืžื™ื“.

Redis

Redis ื”ื•ื NoSQL DBMS ืฉืขื•ื‘ื“ ืขื ืžื‘ื ื™ ื ืชื•ื ื™ื ืฉืœ ืขืจืš ืžืคืชื—

ืœืคืขืžื™ื ื™ืฉ ืฆื•ืจืš ืœื”ืฉืชืžืฉ ื‘ืื•ื‘ื™ื™ืงื˜ื™ื ื ืคื•ืฆื™ื ื”ืžื™ื™ืฉืžื™ื ืžื‘ื ื™ ื ืชื•ื ื™ื ืžืกื•ื™ืžื™ื ื‘ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ Python ืฉื•ื ื™ื.

ืœื“ื•ื’ืžื”, Redis ืžืื—ืกื ืช ืžืคืช hash ื‘ืฆื•ืจืช "telegram_user_id => ืžืกืคืจ ื”ืžืฉื™ืžื•ืช ื”ืคืขื™ืœื•ืช ื‘ืชื•ืจ", ื”ืžืืคืฉืจืช ืœื”ื’ื‘ื™ืœ ืืช ืžืกืคืจ ื”ื‘ืงืฉื•ืช ืžืžืฉืชืžืฉ ืื—ื“ ืœืขืจืš ืžืกื•ื™ื ื•ื‘ื›ืš ืœืžื ื•ืข ื”ืชืงืคื•ืช DoS.

ื‘ื•ืื• ื ื ืกื— ืืช ื”ืชื”ืœื™ืš ืฉืœ ืขื™ื‘ื•ื“ ืชืžื•ื ื” ืžื•ืฆืœื—

  1. ื”ืžืฉืชืžืฉ ืฉื•ืœื— ืชืžื•ื ื” ืœื‘ื•ื˜ ื”ื˜ืœื’ืจื
  2. "attrai-telegram-bot" ืžืงื‘ืœ ื”ื•ื“ืขื” ืžื”-API ืฉืœ Telegram ื•ืžื ืชื— ืื•ืชื”
  3. ื”ืžืฉื™ืžื” ืขื ื”ืชืžื•ื ื” ืžืชื•ื•ืกืคืช ืœืชื•ืจ ื”ืืกื™ื ื›ืจื•ื ื™ "ืœื”ืขืจื›ื”"
  4. ื”ืžืฉืชืžืฉ ืžืงื‘ืœ ื”ื•ื“ืขื” ืขื ื–ืžืŸ ื”ื”ืขืจื›ื” ื”ืžืชื•ื›ื ืŸ
  5. "attrai-estimator" ืœื•ืงื— ืžืฉื™ืžื” ืžื”ืชื•ืจ ืฉืœ "ืœื”ืขืจื™ืš", ืžืจื™ืฅ ืืช ื”ื”ืขืจื›ื•ืช ื“ืจืš ื”ืฆื™ื ื•ืจ ื•ืžืคื™ืง ืืช ื”ืžืฉื™ืžื” ืœืชื•ืจ "ืื—ืจื™_ื”ืขืจื›ื”"
  6. "attrai-telegram-bot" ืžืื–ื™ืŸ ืœืชื•ืจ "ืื—ืจ_ื”ืขืจื›ื”", ืฉื•ืœื— ืืช ื”ืชื•ืฆืื” ืœืžืฉืชืžืฉ

ื“ื•ืคื™ื

ืœื‘ืกื•ืฃ, ืœืื—ืจ ืกืงื™ืจืช ื”ืืจื›ื™ื˜ืงื˜ื•ืจื”, ืชื•ื›ืœื• ืœืขื‘ื•ืจ ืœื—ืœืง ื”ืžืขื ื™ื™ืŸ ืœื ืคื—ื•ืช โ€“ DevOps

ื ื—ื™ืœ ื“ื•ืงืจ

 

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช

ื ื—ื™ืœ ื“ื•ืงืจ  - ืžืขืจื›ืช ืืฉื›ื•ืœื•ืช, ืฉื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉืœื” ืžื™ื•ืฉืžืช ื‘ืชื•ืš Docker Engine ื•ื–ืžื™ื ื” ืžื”ืงื•ืคืกื”.

ื‘ืืžืฆืขื•ืช "ื ื—ื™ืœ", ื ื™ืชืŸ ืœื—ืœืง ืืช ื›ืœ ื”ืฆืžืชื™ื ื‘ืืฉื›ื•ืœ ืฉืœื ื• ืœ-2 ืกื•ื’ื™ื - ืขื•ื‘ื“ ื•ืžื ื”ืœ. ื‘ืžื›ื•ื ื•ืช ืžื”ืกื•ื’ ื”ืจืืฉื•ืŸ ื ืคืจืกื•ืช ืงื‘ื•ืฆื•ืช ืฉืœ ืžื›ื•ืœื•ืช (ืขืจื™ืžื•ืช), ืžื›ื•ื ื•ืช ืžื”ืกื•ื’ ื”ืฉื ื™ ืื—ืจืื™ื•ืช ืขืœ ืงื ื” ืžื™ื“ื”, ืื™ื–ื•ืŸ ื• ืชื›ื•ื ื•ืช ืžื’ื ื™ื‘ื•ืช ืื—ืจื•ืช. ืžื ื”ืœื™ื ื”ื ื’ื ืขื•ื‘ื“ื™ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ.

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช

ืืฉื›ื•ืœ ืขื ืžื ื”ืœ ืžื ื”ื™ื’ ืื—ื“ ื•ืฉืœื•ืฉื” ืขื•ื‘ื“ื™ื

ื’ื•ื“ืœ ื”ืืฉื›ื•ืœ ื”ืžื™ื ื™ืžืœื™ ื”ืืคืฉืจื™ ื”ื•ื ืฆื•ืžืช ืื—ื“; ืžื›ื•ื ื” ื‘ื•ื“ื“ืช ืชืคืขืœ ื‘ื• ื–ืžื ื™ืช ื›ืžื ื”ืœ ืžื ื”ื™ื’ ื•ืขื•ื‘ื“. ื‘ื”ืชื‘ืกืก ืขืœ ื’ื•ื“ืœ ื”ืคืจื•ื™ืงื˜ ื•ื“ืจื™ืฉื•ืช ื”ืžื™ื ื™ืžื•ื ืœืกื•ื‘ืœื ื•ืช ืชืงืœื•ืช, ื”ื•ื—ืœื˜ ืœื”ืฉืชืžืฉ ื‘ื’ื™ืฉื” ื–ื•.

ื‘ืžื‘ื˜ ืงื“ื™ืžื”, ืื’ื™ื“ ืฉืžืื– ืืกืคืงืช ื”ื™ื™ืฆื•ืจ ื”ืจืืฉื•ื ื”, ืฉื”ื™ื™ืชื” ื‘ืืžืฆืข ื™ื•ื ื™, ืœื ื”ื™ื• ื‘ืขื™ื•ืช ื”ืงืฉื•ืจื•ืช ืœืืจื’ื•ืŸ ื”ืืฉื›ื•ืœ ื”ื–ื” (ืื‘ืœ ื–ื” ืœื ืื•ืžืจ ืฉืืจื’ื•ืŸ ื›ื–ื” ืžืงื•ื‘ืœ ื‘ืฉื•ื ืื•ืคืŸ ื‘ื›ืœ ื‘ื™ื ื•ื ื™-ื’ื“ื•ืœ ืคืจื•ื™ืงื˜ื™ื, ื”ื›ืคื•ืคื™ื ืœื“ืจื™ืฉื•ืช ืกื•ื‘ืœื ื•ืช ืชืงืœื•ืช).

Docker Stack

ื‘ืžืฆื‘ ื ื—ื™ืœ, ื”ื•ื ืื—ืจืื™ ืขืœ ืคืจื™ืกืช ืขืจื™ืžื•ืช (ืกื˜ื™ื ืฉืœ ืฉื™ืจื•ืชื™ ืขื’ื™ื ื”) ืžื—ืกื ื™ืช docker

ื”ื•ื ืชื•ืžืš ื‘ืชืฆื•ืจื•ืช docker-compose, ืžื” ืฉืžืืคืฉืจ ืœืš ืœื”ืฉืชืžืฉ ื‘ื ื•ืกืฃ ื‘ืืคืฉืจื•ื™ื•ืช ื”ืคืจื™ืกื”.  

ืœื“ื•ื’ืžื”, ื‘ืืžืฆืขื•ืช ืคืจืžื˜ืจื™ื ืืœื•, ื”ืžืฉืื‘ื™ื ืขื‘ื•ืจ ื›ืœ ืื—ื“ ืžืžื•ืคืขื™ ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ ื”ื”ืขืจื›ื” ื”ื™ื• ืžื•ื’ื‘ืœื™ื (ืื ื• ืžืงืฆื™ื N ืœื™ื‘ื•ืช ืœ-N ืžื•ืคืขื™ื, ื‘ืฉื™ืจื•ืช ื”ืžื™ืงืจื•-ืขืฆืžื• ืื ื• ืžื’ื‘ื™ืœื™ื ืืช ืžืกืคืจ ื”ืœื™ื‘ื•ืช ื‘ืฉื™ืžื•ืฉ ืขืœ-ื™ื“ื™ PyTorch ืœืื—ืช)

attrai_estimator:
  image: 'erqups/attrai_estimator:1.2'
  deploy:
    replicas: 4
    resources:
      limits:
        cpus: '4'
    restart_policy:
      condition: on-failure
      โ€ฆ

ื—ืฉื•ื‘ ืœืฆื™ื™ืŸ ืฉ- Redis, RabbitMQ ื•- Graylog ื”ื ืฉื™ืจื•ืชื™ื ืžืžืœื›ืชื™ื™ื ื•ืœื ื ื™ืชืŸ ืœื”ืชืื™ื ืื•ืชื ื‘ืงืœื•ืช ื›ืžื• "ืื•ืžื“ืŸ ืื˜ืจืงื˜ื™ื‘ื™"

ืžื‘ืฉืจืช ืืช ื”ืฉืืœื” - ืœืžื” ืœื Kubernetes?

ื ืจืื” ืฉืฉื™ืžื•ืฉ ื‘-Kubernetes ื‘ืคืจื•ื™ืงื˜ื™ื ืงื˜ื ื™ื ื•ื‘ื™ื ื•ื ื™ื™ื ื”ื•ื ืชืงื•ืจื”; ื ื™ืชืŸ ืœื”ืฉื™ื’ ืืช ื›ืœ ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ื“ืจื•ืฉื” ืž-Docker Swarm, ืฉื”ื•ื ื“ื™ ื™ื“ื™ื“ื•ืชื™ ืœืžืฉืชืžืฉ ืขื‘ื•ืจ ืžืชื–ืžืจ ืžื›ื•ืœื•ืช ื•ื™ืฉ ืœื• ื’ื ืžื—ืกื•ื ื›ื ื™ืกื” ื ืžื•ืš.

ืชืฉืชื™ืช

ื›ืœ ื–ื” ื ืคืจืก ืขืœ VDS ืขื ื”ืžืืคื™ื™ื ื™ื ื”ื‘ืื™ื:

  • ืžืขื‘ื“: ืžืขื‘ื“ 4 ืœื™ื‘ื•ืช Intelยฎ Xeonยฎ Gold 5120 @ 2.20GHz
  • RAM: 8 GB
  • SSD: 160 ื’'ื™ื’ื”-ื‘ืชื™ื

ืœืื—ืจ ื‘ื“ื™ืงื•ืช ืขื•ืžืก ืžืงื•ืžื™ื•ืช, ื ืจืื” ื”ื™ื” ืฉืขื ื–ืจื ืจืฆื™ื ื™ ืฉืœ ืžืฉืชืžืฉื™ื, ื”ืžื›ื•ื ื” ื”ื–ื• ืชืกืคื™ืง.

ืื‘ืœ, ืžื™ื“ ืœืื—ืจ ื”ืคืจื™ืกื”, ืคืจืกืžืชื™ ืงื™ืฉื•ืจ ืœืื—ื“ ืžืœื•ื—ื•ืช ื”ืื™ืžื’' ื”ืคื•ืคื•ืœืจื™ื™ื ื‘ื™ื•ืชืจ ื‘-CIS (ื›ืŸ, ืื•ืชื• ืื—ื“), ืœืื—ืจ ืžื›ืŸ ืื ืฉื™ื ื”ืชืขื ื™ื™ื ื• ื•ืชื•ืš ืžืกืคืจ ืฉืขื•ืช ื”ืฉื™ืจื•ืช ืขื™ื‘ื“ ื‘ื”ืฆืœื—ื” ืขืฉืจื•ืช ืืœืคื™ ืชืžื•ื ื•ืช. ื™ื—ื“ ืขื ื–ืืช, ื‘ืจื’ืขื™ ืฉื™ื, ืžืฉืื‘ื™ ืžืขื‘ื“ ื•-RAM ืœื ื”ื™ื• ื‘ืฉื™ืžื•ืฉ ืืคื™ืœื• ืœืžื—ืฆื”.

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช
ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช

ืขื•ื“ ืงืฆืช ื’ืจืคื™ืงื”

ืžืกืคืจ ื”ืžืฉืชืžืฉื™ื ื”ื™ื™ื—ื•ื“ื™ื™ื ื•ื‘ืงืฉื•ืช ื”ืขืจื›ื” ืžืื– ื”ืคืจื™ืกื”, ืชืœื•ื™ ื‘ื™ื•ื

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช

ื”ืชืคืœื’ื•ืช ื–ืžืŸ ืžืกืงื ืช ืฆื™ื ื•ืจ ื”ืขืจื›ื”

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืฉื™ืจื•ืช ืœื”ืขืจื›ืช ืžืจืื” ื”ืžื‘ื•ืกืกืช ืขืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช

ืžืžืฆืื™ื

ืœืกื™ื›ื•ื, ืื ื™ ื™ื›ื•ืœ ืœื•ืžืจ ืฉื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ื”ื’ื™ืฉื” ืœืชื–ืžื•ืจ ืฉืœ ืžื›ื•ืœื•ืช ื”ืฆื“ื™ืงื• ืืช ืขืฆืžืŸ ื‘ืžืœื•ืืŸ - ื’ื ื‘ืจื’ืขื™ ื”ืฉื™ื ืœื ื”ื™ื• ื ืคื™ืœื•ืช ืื• ื ืคื™ืœื•ืช ื‘ื–ืžืŸ ื”ืขื™ื‘ื•ื“. 

ืื ื™ ื—ื•ืฉื‘ ืฉืคืจื•ื™ืงื˜ื™ื ืงื˜ื ื™ื ื•ื‘ื™ื ื•ื ื™ื™ื ื”ืžืฉืชืžืฉื™ื ื‘ื”ืกืงื” ื‘ื–ืžืŸ ืืžืช ืฉืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช ืขืœ ื”ืžืขื‘ื“ ื‘ืชื”ืœื™ืš ืฉืœื”ื ื™ื›ื•ืœื™ื ืœืืžืฅ ื‘ื”ืฆืœื—ื” ืืช ื”ืคืจืงื˜ื™ืงื•ืช ื”ืžืชื•ืืจื•ืช ื‘ืžืืžืจ ื–ื”.

ืื•ืกื™ืฃ ื›ื™ ื‘ืชื—ื™ืœื” ื”ืžืืžืจ ื”ื™ื” ืืจื•ืš ื™ื•ืชืจ, ืืš ื›ื“ื™ ืœื ืœืคืจืกื ืงืจื™ืื” ืืจื•ื›ื”, ื”ื—ืœื˜ืชื™ ืœื”ืฉืžื™ื˜ ื›ืžื” ื ืงื•ื“ื•ืช ื‘ืžืืžืจ ื–ื” - ื ื—ื–ื•ืจ ืืœื™ื”ืŸ ื‘ืคืจืกื•ืžื™ื ืขืชื™ื“ื™ื™ื.

ืืชื” ื™ื›ื•ืœ ืœืชืงื•ืข ืืช ื”ื‘ื•ื˜ ื‘ื˜ืœื’ืจื - @AttraiBot, ื–ื” ื™ืขื‘ื•ื“ ืœืคื—ื•ืช ืขื“ ืกื•ืฃ ืกืชื™ื• 2020. ื”ืจืฉื• ืœื™ ืœื”ื–ื›ื™ืจ ืœื›ื ืฉืœื ืžืื•ื—ืกื ื™ื ื ืชื•ื ื™ ืžืฉืชืžืฉ - ืœื ื”ืชืžื•ื ื•ืช ื”ืžืงื•ืจื™ื•ืช, ื•ืœื ื”ืชื•ืฆืื•ืช ืฉืœ ืฆื™ื ื•ืจ ื”ื”ืขืจื›ื” - ื”ื›ืœ ื ื”ืจืก ืœืื—ืจ ืขื™ื‘ื•ื“.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”