БъздавамС ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ. Час 1

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅ Π½Π° всички. ΠŸΡ€ΠΈΡΡ‚Π΅Π»ΠΈ, сподСлямС с вас ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° статия, ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ спСциално Π·Π° студСнтитС ΠΎΡ‚ курса β€žData Engineerβ€œ. Π”Π° Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅!

БъздавамС ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ. Час 1

Apache Beam ΠΈ DataFlow Π·Π° Ρ€Π΅Π°Π»Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ

Π”Π½Π΅ΡˆΠ½Π°Ρ‚Π° публикация Π΅ Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° Π·Π°Π΄Π°Ρ‡Π°, с която наскоро сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°Ρ… Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. Бях наистина радостСн, Ρ‡Π΅ ΠΌΠΎΠ³Π° Π΄Π° я Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌ ΠΈ Π΄Π° опиша ΡΠ²ΡŠΡ€ΡˆΠ΅Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° Π±Π»ΠΎΠ³ публикация, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° ΠΌΠΈ Π΄Π°Π΄Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌ с Π΄Π°Ρ‚Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠ½Π³, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° направя Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ наистина ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° моя ΠΎΡ‚Π±ΠΎΡ€. НСотдавна ΠΎΡ‚ΠΊΡ€ΠΈΡ…, Ρ‡Π΅ Π² Π½Π°ΡˆΠΈΡ‚Π΅ систСми сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° доста голям потрСбитСлски Π»ΠΎΠ³, ΡΠ²ΡŠΡ€Π·Π°Π½ с Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½ΠΈ. Оказа сС, Ρ‡Π΅ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π» Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π·Π°Ρ‚ΠΎΠ²Π° Π²Π΅Π΄Π½Π°Π³Π° сС заинтСрСсувах ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΡƒΡ‡ΠΈΠΌ, Π°ΠΊΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ Π΄Π° Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π½Π° ΠΏΡŠΡ‚Ρ стояха няколко ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ бСшС, Ρ‡Π΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ…Π° Π² ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ тСкстови Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ бяха Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½ Π°Π½Π°Π»ΠΈΠ·. Вторият ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ бСшС, Ρ‡Π΅ Ρ‚Π΅ бяха Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ Π² Π·Π°Ρ‚Π²ΠΎΡ€Π΅Π½Π° систСма, Π·Π°Ρ‚ΠΎΠ²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ… Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π½ΠΈΡ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΌΠΎΠΈΡ‚Π΅ любими инструмСнти Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Π΄Π°Π½Π½ΠΈ.

Π’Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Ρ€Π΅ΡˆΠ° ΠΊΠ°ΠΊ Π΄Π° направя Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π·Π° нас ΠΏΠΎ-лСсСн ΠΈ Π΄Π° внСса някаква стойност, внСдрявайки Ρ‚ΠΎΠ·ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° Π΄Π°Π½Π½ΠΈ Π² някои ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° взаимодСйствиС с ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ помислих извСстно Π²Ρ€Π΅ΠΌΠ΅, Ρ€Π΅ΡˆΠΈΡ… Π΄Π° изградя ΠΏΠΎΡ‚ΠΎΠΊ Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΠΎΠ±Π»Π°Ρ‡Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π°Π· ΠΈ Π΅ΠΊΠΈΠΏΡŠΡ‚ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ тях ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ някакви ΠΈΠ·Π²ΠΎΠ΄ΠΈ. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠΈΡ… спСциализацията ΠΏΠΎ Data Engineering Π² Coursera ΠΏΡ€Π΅Π΄ΠΈ извСстно Π²Ρ€Π΅ΠΌΠ΅, бях Π½Π΅Ρ‚ΡŠΡ€ΠΏΠ΅Π»ΠΈΠ² Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° някои ΠΎΡ‚ инструмСнтитС ΠΎΡ‚ курса.

Π’Π°ΠΊΠ° Ρ‡Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΎΠ±Π»Π°Ρ‡Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ изглСТдашС Ρ€Π°Π·ΡƒΠΌΠ΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° направя с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€ 2? Π—Π° щастиС, имашС Π½Π°Ρ‡ΠΈΠ½ Π΄Π° прСнСса Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π² срСда, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ… Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ инструмСнти ΠΊΠ°Ρ‚ΠΎ Python ΠΈ Google Cloud Platform (GCP). Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Ρ‚ΠΎΠ²Π° бСшС дълъг процСс, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° направя Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ‡Π°ΠΊΠ°Ρ… ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° прСноса Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅. Π Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π΄ΠΎ ΠΊΠΎΠ΅Ρ‚ΠΎ стигнах, бСшС Π΄Π° създам Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Faker Π² Python. Никога ΠΏΡ€Π΅Π΄ΠΈ Π½Π΅ бях ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π» Ρ‚Π°Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π½ΠΎ Π±ΡŠΡ€Π·ΠΎ ΠΎΡΡŠΠ·Π½Π°Ρ… ΠΊΠΎΠ»ΠΊΠΎ Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π° Π΄Π° пиша ΠΊΠΎΠ΄ ΠΈ Π΄Π° тСствам ΠΏΠΎΡ‚ΠΎΠΊΠ° Π±Π΅Π· Ρ€Π΅Π°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ.

Π‘ ΠΎΠ³Π»Π΅Π΄ Π½Π° всичко ΠΊΠ°Π·Π°Π½ΠΎ Π΄ΠΎΡ‚ΡƒΠΊ, Π² Ρ‚ΠΎΠ·ΠΈ пост Ρ‰Π΅ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ построих описания ΠΏΠΎ-Π³ΠΎΡ€Π΅ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ някои ΠΎΡ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΡ‚Π΅, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² GCP. По-спСциално, Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Apache Beam (Python вСрсия), Dataflow, Pub/Sub ΠΈ Big Query Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° потрСбитСлски ΠΆΡƒΡ€Π½Π°Π»ΠΈ, трансформиранС Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° тях Π² Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·. Π’ моя случай Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΌΠΈ бСшС само ΠΏΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ‚Π° функционалност Π½Π° Beam, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΌΠΈ Π½Π΅ ΠΈΠ΄Π²Π°Ρ…Π° Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Pub/Sub Π½Π΅ бСшС Π½ΡƒΠΆΠ΅Π½. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Ρ‰Π΅ сС спра ΠΈ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ‚Π° вСрсия, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅Ρ‰ΠΎ, с ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС срСщнСтС Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GCP ΠΈ Apache Beam

Google Cloud Platform ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ наистина ΠΏΠΎΠ»Π΅Π·Π½ΠΈ инструмСнти Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ. Π•Ρ‚ΠΎ някои ΠΎΡ‚ инструмСнтитС, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ:

  • Pub/Sub Π΅ услуга Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰Π° ΠΌΠΎΠ΄Π΅Π»Π° Π˜Π·Π΄Π°Ρ‚Π΅Π»-Абонат, която Π½ΠΈ позволява Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅.
  • DataFlow Π΅ услуга, която опростява ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° инфраструктурата, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° сС ΡΡŠΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠΌ само Π²ΡŠΡ€Ρ…Ρƒ написванСто Π½Π° ΠΊΠΎΠ΄Π° Π·Π° нашия ΠΏΠΎΡ‚ΠΎΠΊ.
  • BigQuery Π΅ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ. Ако стС Π·Π°ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈ SQL Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, с BigQuery Π½Π΅ Π±ΠΈ трябвало Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ трудности.
  • И накрая, Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Apache Beam, ΠΏΠΎ-спСциално, Ρ‰Π΅ сС фокусирамС Π²ΡŠΡ€Ρ…Ρƒ вСрсията Π½Π° Python Π·Π° създаванС Π½Π° нашия ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. Π’ΠΎΠ·ΠΈ инструмСнт Ρ‰Π΅ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° създадСм ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π° ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° с GCP. Π’ΠΎΠΉ Π΅ особСно ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Π΅ подходящ Π·Π° Π·Π°Π΄Π°Ρ‡ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅, трансформация ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ (ETL), Ρ‚Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ Π½ΠΈ трябва Π΄Π° прСмСствамС Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Π΅Π΄Π½ΠΎ място Π½Π° Π΄Ρ€ΡƒΠ³ΠΎ с ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° трансформации ΠΈΠ»ΠΈ изчислСния, Beam Π΅ Π΄ΠΎΠ±ΡŠΡ€ ΠΈΠ·Π±ΠΎΡ€.

На GCP ΠΈΠΌΠ° голямо Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΎΡ‚ инструмСнти, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС слСдят всички ΠΈ ΠΊΠ°ΠΊΠ²Π° Π΅ тяхната Ρ†Π΅Π», Π½ΠΎ Π΅Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΠ±Π·ΠΎΡ€ Π·Π° справка.
Π’ GCP ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ инструмСнти, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΎΠ±Ρ…Π²Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° всичкитС, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈΠΌ, ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС слоТно, Π½ΠΎ всС ΠΏΠ°ΠΊ Π΅Ρ‚ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° справка.

Визуализация Π½Π° нашия ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€

НСка Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° нашия ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π° рисунка 1. На високо Π½ΠΈΠ²ΠΎ искамС Π΄Π° ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅, Π΄Π° Π³ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ ΠΈ Π΄Π° Π³ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ Π² BigQuery. Π›ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ взаимодСйстват с ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΉΠΊΠΈ заявки Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΊΠΎΠΈΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° сС рСгистрират. Π’Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ особСно ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ взаимодСйстват с нашия ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΈ Π΄Π°Π»ΠΈ Ρ‚ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ. ΠšΠ°Ρ‚ΠΎ цяло ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΡŠΡ‚ Ρ‰Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° слСднитС Π΅Ρ‚Π°ΠΏΠΈ:

Beam ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ·ΠΈ процСс ΠΌΠ½ΠΎΠ³ΠΎ прост, нСзависимо Π΄Π°Π»ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» CSV, ΠΈ искамС Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. По-късно Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ Π² ΠΊΠΎΠ΄Π° ΠΈΠΌΠ° само ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ тях. Π’ΠΎΠ²Π° Π΅ Π΅Π΄Π½ΠΎ ΠΎΡ‚ прСдимствата Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Beam.

БъздавамС ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ. Час 1
Рисунок 1: ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π·Π° Π΄Π°Π½Π½ΠΈ: Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ:

БъздаванС Π½Π° псСвдоданни с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Faker

ΠšΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ спомСнах, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈ Ρ€Π΅ΡˆΠΈΡ… Π΄Π° създам псСвдоданни Π² ΡΡŠΡ‰ΠΈΡ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ дСйствитСлнитС. Π’ΠΎΠ²Π° бСшС наистина ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ… Π΄Π° напиша ΠΊΠΎΠ΄ ΠΈ тСствам ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ… Π΄Π°Π½Π½ΠΈΡ‚Π΅. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΠΌ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π½Π° докумСнтацията Faker, Π°ΠΊΠΎ искатС Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈ Ρ‚Π°Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. ΠΠ°ΡˆΠΈΡ‚Π΅ потрСбитСлски Π΄Π°Π½Π½ΠΈ Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ ΠΏΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ. На Π±Π°Π·Π°Ρ‚Π° Π½Π° Ρ‚ΠΎΠ·ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ Ρ€Π΅Π΄ ΠΏΠΎ Ρ€Π΅Π΄, Π·Π° Π΄Π° симулирамС Π΄Π°Π½Π½ΠΈ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π’Π΅Π·ΠΈ ΠΆΡƒΡ€Π½Π°Π»ΠΈ Π½ΠΈ прСдоставят информация ΠΊΠ°Ρ‚ΠΎ Π΄Π°Ρ‚Π°, Ρ‚ΠΈΠΏ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π°, IP адрСс ΠΈ Ρ‚.Π½.

192.52.197.161 - - [30/Apr/2019:21:11:42] "PUT /tag/category/tag HTTP/1.1" [401] 155 "https://harris-lopez.com/categories/about/" "Mozilla/5.0 (Macintosh; PPC Mac OS X 10_11_2) AppleWebKit/5312 (KHTML, like Gecko) Chrome/34.0.855.0 Safari/5312"

На Π±Π°Π·Π°Ρ‚Π° Π½Π° горния Ρ€Π΅Π΄ искамС Π΄Π° създадСм Π½Π°ΡˆΠ°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° LINE, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ 7 ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΈ скоби ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Π½Π°ΡˆΠ°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎ-късно.

"""
{remote_addr} - - [{time_local}] "{request_type} {request_path} HTTP/1.1" [{status}] {body_bytes_sent} "{http_referer}" "{http_user_agent}"
"""

Ако ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ…ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΊΠΎΠ΄ΡŠΡ‚ Ρ‰Π΅ΡˆΠ΅ Π΄Π° бъдС ΠΌΠ½ΠΎΠ³ΠΎ сходСн, ΠΌΠ°ΠΊΠ°Ρ€ Π΄Π° Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° създадСм Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. Π—Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Faker, просто създавамС ΠΎΠ±Π΅ΠΊΡ‚ ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ. Π’ частност, Faker Π΅ Π±ΠΈΠ» ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° IP адрСси, Π° ΡΡŠΡ‰ΠΎ ΠΈ уСбсайтовС. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ… слСднитС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ:

Ρ„Π°Π»ΡˆΠΈΠ²ΠΎ.ipv4()
Ρ„Π°Π»ΡˆΠΈΠ²ΠΎ.uri_path()
Ρ„Π°Π»ΡˆΠΈΠ²ΠΎ.uri()
Ρ„Π°Π»ΡˆΠΈΠ²ΠΎ.user_agent()

from faker import Faker
import time
import random
import os
import numpy as np
from datetime import datetime, timedelta



LINE = """
{remote_addr} - - [{time_local}] "{request_type} {request_path} HTTP/1.1" [{status}] {body_bytes_sent} "{http_referer}" "{http_user_agent}"
"""


def generate_log_line():
    fake = Faker()
    now = datetime.now()
    remote_addr = fake.ipv4()
    time_local = now.strftime('%d/%b/%Y:%H:%M:%S')
    request_type = random.choice(["GET", "POST", "PUT"])
    request_path = "\/" + fake.uri_path()

    status = np.random.choice([200, 401, 404], p = [0.9, 0.05, 0.05])
    body_bytes_sent = random.choice(range(5, 1000, 1))
    http_referer = fake.uri()
    http_user_agent = fake.user_agent()

    log_line = LINE.format(
        remote_addr=remote_addr,
        time_local=time_local,
        request_type=request_type,
        request_path=request_path,
        status=status,
        body_bytes_sent=body_bytes_sent,
        http_referer=http_referer,
        http_user_agent=http_user_agent
    )

    return log_line

ΠšΡ€Π°ΠΉ Π½Π° ΠΏΡŠΡ€Π²Π° част.

Π’ слСдващитС Π΄Π½ΠΈ Ρ‰Π΅ сподСлим с вас ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° статията, Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΎΡ‡Π°ΠΊΠ²Π°ΠΌΠ΅ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ ;-).

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster