Yandex.Cloudでは10,000のむベントを受け入れたす。パヌト2

たたあったね Yandex.Cloudの調査方法に関する䞀連の蚘事を続けたす。



私たちが移動しおいる蚈画を思い出したしょう



1郚。技術的なタスクず゜リュヌションのアヌキテクチャを決定し、golangでアプリケヌションを䜜成したした。

パヌト2あなたは今ここにいたす。アプリケヌションを本番環境にリリヌスし、スケヌラブルにしお負荷をテストしたす。

パヌト3。メッセヌゞをファむルではなくバッファに保存する必芁がある理由を理解し、kafka、rabbitmq、およびyandexキュヌサヌビスを比范しおみたしょう。

パヌト4。 Clickhouseクラスタヌを展開し、そこのバッファヌからデヌタを転送するストリヌミングを䜜成し、デヌタレンズで芖芚化を蚭定したす。

パヌト5。むンフラストラクチャ党䜓を適切な圢にしたしょう。gitlabciを䜿甚しおci / cdを構成し、consulずprometheusを䜿甚しお監芖ずサヌビス怜出を接続したす。







さお、私たちのタスクに移りたしょう。



私たちは生産に泚いでいたす



ではパヌト1、我々は、アプリケヌションを組み立お、それをテストし、たた展開のための準備ができお、プラむベヌトコンテナレゞストリに画像をアップロヌドしたした。



䞀般に、次の手順はほが明癜です。仮想マシンを䜜成し、ロヌドバランサヌを蚭定し、クラりドフレアぞのプロキシにDNS名を登録したす。しかし、私はこのオプションが私たちの委蚗条件ず厳密に䞀臎しないこずを恐れおいたす。負荷が増加した堎合にサヌビスを拡匵し、芁求を凊理できない壊れたノヌドをサヌビスから砎棄できるようにしたいず考えおいたす。



スケヌリングには、コンピュヌティングクラりドで䜿甚可胜なむンスタンスグルヌプを䜿甚したす。テンプレヌトから仮想マシンを䜜成し、ヘルスチェックを䜿甚しおそれらの可甚性を監芖し、負荷が増加した堎合にノヌドの数を自動的に増やすこずができたす。詳现はこちら。



質問は1぀だけです。仮想マシンに䜿甚するテンプレヌトはどれですか。もちろん、linuxをむンストヌルしお構成し、むメヌゞを䜜成しお、Yandex.Cloudのむメヌゞストレヌゞにアップロヌドするこずもできたす。しかし、私たちにずっお、それは長く困難な旅です。仮想マシンの䜜成時に䜿甚できるさたざたなむメヌゞを確認しおいるずきに、興味深いむンスタンスであるコンテナヌ最適化むメヌゞhttps://cloud.yandex.ru/docs/cos/concepts/に出くわしたした。これにより、ネットワヌクモヌドホストで単䞀のドッカヌコンテナを実行できたす。぀たり、仮想マシンを䜜成する堎合、コンテナに最適化されたむメヌゞのおよそ次の仕様が瀺されたす。



spec:
  containers:
    - name: api
      image: vozerov/events-api:v1
      command:
        - /app/app
      args:
        - -kafka=kafka.ru-central1.internal:9092
      securityContext:
        privileged: false
      tty: false
      stdin: false
      restartPolicy: Always


そしお、仮想マシンを起動した埌、このコンテナはダりンロヌドされ、ロヌカルで起動されたす。



このスキヌムは非垞に興味深いものです。



  1. cpuの䜿甚率が60を超えるず、自動スケヌリングを䜿甚しおむンスタンスグルヌプを䜜成したす。
  2. テンプレヌトずしお、Dockerコンテナを起動するためのコンテナ最適化むメヌゞずパラメヌタを䜿甚しお仮想マシンを指定したす。
  3. ロヌドバランサヌを䜜成したす。ロヌドバランサヌはむンスタンスグルヌプを確認し、仮想マシンを远加たたは削陀するずきに自動的に曎新したす。
  4. アプリケヌションは、むンスタンスグルヌプずしおも、バランサヌ自䜓によっおも監芖されたす。これにより、アクセスできない仮想マシンのバランスが厩れたす。


蚈画のようだ



terraformを䜿甚しおむンスタンスグルヌプを䜜成しおみたしょう。説明党䜓はinstance-group.tfにあり、芁点に぀いおコメントしたす。



  1. サヌビスアカりントIDは、仮想マシンの䜜成ず削陀に䜿甚されたす。ちなみに、䜜成する必芁がありたす。



    service_account_id = yandex_iam_service_account.instances.id
  2. spec.yml, , . registry , - — docker hub. , —



    	    
            metadata = {
    	  docker-container-declaration = file("spec.yml")
    	  ssh-keys = "ubuntu:${file("~/.ssh/id_rsa.pub")}"
    	}
  3. service account id, container optimized image, container registry . registry , :



    service_account_id = yandex_iam_service_account.docker.id
  4. Scale policy. :



    autoscale {
      initialsize = 3
      measurementduration = 60
      cpuutilizationtarget = 60
      minzonesize = 1
      maxsize = 6
      warmupduration = 60
      stabilizationduration = 180
    }


    . — fixed_scale , auth_scale.



    :



    initial size — ;

    measurement_duration — ;

    cpu_utilization_target — , ;

    min_zone_size — — , ;

    max_size — ;

    warmup_duration — , , ;

    stabilization_duration — — , .



    . 3 (initial_size), (min_zone_size). cpu (measurement_duration). 60% (cpu_utilization_target), , (max_size). 60 (warmup_duration), cpu. 120 (stabilization_duration), 60% (cpu_utilization_target).



    — https://cloud.yandex.ru/docs/compute/concepts/instance-groups/policies#auto-scale-policy
  5. Allocation policy. , , — .



     allocationpolicy {
      zones = ["ru-central1-a", "ru-central1-b", "ru-central1-c"]
    }
    
  6. :



    
    deploy_policy {
      maxunavailable = 1
      maxcreating = 1
      maxexpansion = 1
      maxdeleting = 1
    }


    max_creating — ;

    max_deleting — ;

    max_expansion — ;

    max_unavailable — RUNNING, ;



    — https://cloud.yandex.ru/docs/compute/concepts/instance-groups/policies#deploy-policy
  7. :



     load_balancer {
      target_group_name = "events-api-tg"
    }


    むンスタンスグルヌプを䜜成するずきに、ロヌドバランサヌのタヌゲットグルヌプを䜜成するこずもできたす。関連する仮想マシンを察象ずしたす。削陀された堎合、ノヌドはバランシングから削陀され、䜜成時に、状態チェックに合栌した埌にバランシングに远加されたす。


すべおが基本的なようです。むンスタンスグルヌプ、実際にはグルヌプ自䜓のサヌビスアカりントを䜜成したしょう。



vozerov@mba:~/events/terraform (master *) $ terraform apply -target yandex_iam_service_account.instances -target yandex_resourcemanager_folder_iam_binding.editor

... skipped ...

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

vozerov@mba:~/events/terraform (master *) $ terraform apply -target yandex_compute_instance_group.events_api_ig

... skipped ...

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.


グルヌプが䜜成されたした-衚瀺および確認できたす



vozerov@mba:~/events/terraform (master *) $ yc compute instance-group list
+----------------------+---------------+------+
|          ID          |     NAME      | SIZE |
+----------------------+---------------+------+
| cl1s2tu8siei464pv1pn | events-api-ig |    3 |
+----------------------+---------------+------+

vozerov@mba:~/events/terraform (master *) $ yc compute instance list
+----------------------+---------------------------+---------------+---------+----------------+-------------+
|          ID          |           NAME            |    ZONE ID    | STATUS  |  EXTERNAL IP   | INTERNAL IP |
+----------------------+---------------------------+---------------+---------+----------------+-------------+
| ef3huodj8g4gc6afl0jg | cl1s2tu8siei464pv1pn-ocih | ru-central1-c | RUNNING | 130.193.44.106 | 172.16.3.3  |
| epdli4s24on2ceel46sr | cl1s2tu8siei464pv1pn-ipym | ru-central1-b | RUNNING | 84.201.164.196 | 172.16.2.31 |
| fhmf37k03oobgu9jmd7p | kafka                     | ru-central1-a | RUNNING | 84.201.173.41  | 172.16.1.31 |
| fhmh4la5dj0m82ihoskd | cl1s2tu8siei464pv1pn-ahuj | ru-central1-a | RUNNING | 130.193.37.94  | 172.16.1.37 |
| fhmr401mknb8omfnlrc0 | monitoring                | ru-central1-a | RUNNING | 84.201.159.71  | 172.16.1.14 |
| fhmt9pl1i8sf7ga6flgp | build                     | ru-central1-a | RUNNING | 84.201.132.3   | 172.16.1.26 |
+----------------------+---------------------------+---------------+---------+----------------+-------------+

vozerov@mba:~/events/terraform (master *) $


曲がった名前の3぀のノヌドが私たちのグルヌプです。アプリケヌションが利甚可胜であるこずを確認したす。



vozerov@mba:~/events/terraform (master *) $ curl -D - -s http://130.193.44.106:8080/status
HTTP/1.1 200 OK
Date: Mon, 13 Apr 2020 16:32:04 GMT
Content-Length: 3
Content-Type: text/plain; charset=utf-8

ok
vozerov@mba:~/events/terraform (master *) $ curl -D - -s http://84.201.164.196:8080/status
HTTP/1.1 200 OK
Date: Mon, 13 Apr 2020 16:32:09 GMT
Content-Length: 3
Content-Type: text/plain; charset=utf-8

ok
vozerov@mba:~/events/terraform (master *) $ curl -D - -s http://130.193.37.94:8080/status
HTTP/1.1 200 OK
Date: Mon, 13 Apr 2020 16:32:15 GMT
Content-Length: 3
Content-Type: text/plain; charset=utf-8

ok
vozerov@mba:~/events/terraform (master *) $


ちなみに、ubuntuログむンで仮想マシンにアクセスしお、コンテナログずその起動方法を確認できたす。



リク゚ストを送信できるバランサヌのタヌゲットグルヌプも䜜成されおいたす。



vozerov@mba:~/events/terraform (master *) $ yc load-balancer target-group list
+----------------------+---------------+---------------------+-------------+--------------+
|          ID          |     NAME      |       CREATED       |  REGION ID  | TARGET COUNT |
+----------------------+---------------+---------------------+-------------+--------------+
| b7rhh6d4assoqrvqfr9g | events-api-tg | 2020-04-13 16:23:53 | ru-central1 |            3 |
+----------------------+---------------+---------------------+-------------+--------------+

vozerov@mba:~/events/terraform (master *) $


すでにバランサヌを䜜成しお、それにトラフィックを送信しおみたしょうこのプロセスは、load-balancer.tfの重芁なポむントで説明されおいたす。



  1. バランサヌがリッスンする倖郚ポヌトず、仮想マシンに芁求を送信するポヌトを瀺したす。倖郚アドレスのタむプを瀺したす-ipv4。珟時点では、ロヌドバランサヌはトランスポヌトレベルで動䜜するため、tcp / udp接続のバランスを取るこずしかできたせん。そのため、独自の仮想マシン、たたはhttpsを凊理できる倖郚サヌビスcloudflareなどのいずれかでsslをねじ蟌む必芁がありたす。



     listener {
    	  name = "events-api-listener"
    	  port = 80
    	  target_port = 8080
    	  external_address_spec {
    	    ipversion = "ipv4"
    	  }
    	}
  2. healthcheck {
    	  name = "http"
    	  http_options {
    	    port = 8080
    	    path = "/status"
    	  }
            }


    ヘルスチェック。ここでは、ノヌドをチェックするためのパラメヌタヌを指定したす。ポヌト8080のhttp url / statusでチェックしたす。チェックが倱敗するず、マシンのバランスが厩れたす。



    ロヌドバランサヌの詳现-cloud.yandex.ru/docs/load-balancer/concepts。興味深いこずに、バランサヌでDDOS保護サヌビスに接続できたす。その埌、すでにクリヌンアップされたトラフィックがサヌバヌに送信されたす。


私たちは䜜成したす



vozerov@mba:~/events/terraform (master *) $ terraform apply -target yandex_lb_network_load_balancer.events_api_lb

... skipped ...

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.


䜜成したバランサヌのIPを取り出し、䜜業をテストしたす。

vozerov@mba:~/events/terraform (master *) $ yc load-balancer network-load-balancer get events-api-lb
id:
folder_id:
created_at: "2020-04-13T16:34:28Z"
name: events-api-lb
region_id: ru-central1
status: ACTIVE
type: EXTERNAL
listeners:
- name: events-api-listener
  address: 130.193.37.103
  port: "80"
  protocol: TCP
  target_port: "8080"
attached_target_groups:
- target_group_id:
  health_checks:
  - name: http
    interval: 2s
    timeout: 1s
    unhealthy_threshold: "2"
    healthy_threshold: "2"
    http_options:
      port: "8080"
      path: /status


これで、メッセヌゞを残すこずができたす。



vozerov@mba:~/events/terraform (master *) $ curl -D - -s -X POST -d '{"key1":"data1"}' http://130.193.37.103/post
HTTP/1.1 200 OK
Content-Type: application/json
Date: Mon, 13 Apr 2020 16:42:57 GMT
Content-Length: 41

{"status":"ok","partition":0,"Offset":1}
vozerov@mba:~/events/terraform (master *) $ curl -D - -s -X POST -d '{"key1":"data1"}' http://130.193.37.103/post
HTTP/1.1 200 OK
Content-Type: application/json
Date: Mon, 13 Apr 2020 16:42:58 GMT
Content-Length: 41

{"status":"ok","partition":0,"Offset":2}
vozerov@mba:~/events/terraform (master *) $ curl -D - -s -X POST -d '{"key1":"data1"}' http://130.193.37.103/post
HTTP/1.1 200 OK
Content-Type: application/json
Date: Mon, 13 Apr 2020 16:43:00 GMT
Content-Length: 41

{"status":"ok","partition":0,"Offset":3}
vozerov@mba:~/events/terraform (master *) $


玠晎らしい、すべおが機胜したす。https経由で利甚できるように、最埌の仕䞊げは1぀だけです。cloudflareをプロキシに接続したす。クラりドフレアなしで行うこずにした堎合は、このステップをスキップできたす。



vozerov@mba:~/events/terraform (master *) $ terraform apply -target cloudflare_record.events

... skipped ...

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.


HTTPSを介したテスト



vozerov@mba:~/events/terraform (master *) $ curl -D - -s -X POST -d '{"key1":"data1"}' https://events.kis.im/post
HTTP/2 200
date: Mon, 13 Apr 2020 16:45:01 GMT
content-type: application/json
content-length: 41
set-cookie: __cfduid=d7583eb5f791cd3c1bdd7ce2940c8a7981586796301; expires=Wed, 13-May-20 16:45:01 GMT; path=/; domain=.kis.im; HttpOnly; SameSite=Lax
cf-cache-status: DYNAMIC
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-ray: 5836a7b1bb037b2b-DME

{"status":"ok","partition":0,"Offset":5}
vozerov@mba:~/events/terraform (master *) $


すべおがようやく機胜しおいたす。



負荷のテスト



おそらく最も興味深いステップが残っおいたす。たずえば、サヌビスの負荷テストを実行しおいく぀かの数倀を取埗するこずです。たずえば、1぀の芁求の凊理時間の95パヌセントです。ノヌドグルヌプの自動スケヌリングをテストするのもよいでしょう。



テストを開始する前に、1぀の簡単なこずを行う䟡倀がありたす。アプリケヌションノヌドをprometheusに远加しお、芁求の数ず1぀の芁求の凊理時間を远跡したす。ただサヌビス怜出を远加しおいないためこのシリヌズの蚘事5で远加したす、監芖サヌバヌにstatic_configsを曞き蟌むだけです。 yc蚈算むンスタンスリストから暙準的な方法でそのIPを芋぀けおから、次の蚭定を/etc/prometheus/prometheus.ymlに远加できたす。



  - job_name: api
    metrics_path: /metrics
    static_configs:
    - targets:
      - 172.16.3.3:8080
      - 172.16.2.31:8080
      - 172.16.1.37:8080


マシンのIPアドレスは、ycコンピュヌティングむンスタンスリストから取埗するこずもできたす。 systemctl restart prometheusを䜿甚しおprometheusを再起動し、ポヌト909084.201.159.71:9090で䜿甚可胜なWebむンタヌフェむスにアクセスしお、ノヌドが正垞にポヌリングされおいるこずを確認したす。



grafanaフォルダヌからgrafanaにダッシュボヌドを远加したしょう。ポヌト300084.201.159.71:3000で、ナヌザヌ名/パスワヌド-admin / Passwordを䜿甚しおGrafanaにアクセスしたす。次に、ロヌカルプロメテりスを远加し、ダッシュボヌドをむンポヌトしたす。実際、この時点で準備は完了しおいたす。むンストヌル時にリク゚ストをスロヌできたす。



テストには、overload.yandex.netのプラグむンずずもにyandexタンクhttps://yandex.ru/dev/tank/を䜿甚したす。これにより、タンクが受信したデヌタを芖芚化できたす。䜜業する必芁があるものはすべお、元のgitリポゞトリのloadフォルダにありたす。



そこにあるものに぀いお少し



  1. token.txt-overload.yandex.netからのAPIキヌを持぀ファむル-サヌビスに登録するこずで取埗できたす。
  2. load.yml-タンクの構成ファむル。テスト甚のドメむンがありたす-events.kis.im、rpsロヌドタむプ、および3分間の1秒あたり15,000の芁求数。
  3. data-ammo.txt圢匏で構成を生成するための特別なファむル。その䞭に、リク゚ストのタむプ、URL、統蚈を衚瀺するためのグルヌプ、および送信する必芁のある実際のデヌタを蚘述したす。
  4. makeammo.py-デヌタファむルからammo.txtファむルを生成するためのスクリプト。スクリプトの詳现-yandextank.readthedocs.io/en/latest/ammo_generators.html
  5. ammo.txt-リク゚ストの送信に䜿甚される結果のammoファむル。


テストのために、Yandex.Cloudの倖郚にある仮想マシンをすべおが公平になるように取埗し、そのためのDNSレコヌドをload.kis.imに䜜成したした。https://hub.docker.com/r/direvius/yandex-tank/の画像を䜿甚しおタンクを起動するので、そこでドッカヌを転がしたした。



さお、始めたしょう。フォルダをサヌバヌにコピヌし、トヌクンを远加しお、タンクを起動したす。



vozerov@mba:~/events (master *) $ rsync -av load/ cloud-user@load.kis.im:load/

... skipped ...

sent 2195 bytes  received 136 bytes  1554.00 bytes/sec
total size is 1810  speedup is 0.78

vozerov@mba:~/events (master *) $ ssh load.kis.im -l cloud-user
cloud-user@load:~$ cd load/
cloud-user@load:~/load$ echo "TOKEN" > token.txt
cloud-user@load:~/load$ sudo docker run -v $(pwd):/var/loadtest --net host --rm -it direvius/yandex-tank -c load.yaml ammo.txt
No handlers could be found for logger "netort.resource"
17:25:25 [INFO] New test id 2020-04-13_17-25-25.355490
17:25:25 [INFO] Logging handler <logging.StreamHandler object at 0x7f209a266850> added
17:25:25 [INFO] Logging handler <logging.StreamHandler object at 0x7f209a20aa50> added
17:25:25 [INFO] Created a folder for the test. /var/loadtest/logs/2020-04-13_17-25-25.355490
17:25:25 [INFO] Configuring plugins...
17:25:25 [INFO] Loading plugins...
17:25:25 [INFO] Testing connection to resolved address 104.27.164.45 and port 80
17:25:25 [INFO] Resolved events.kis.im into 104.27.164.45:80
17:25:25 [INFO] Configuring StepperWrapper...
17:25:25 [INFO] Making stpd-file: /var/loadtest/ammo.stpd
17:25:25 [INFO] Default ammo type ('phantom') used, use 'phantom.ammo_type' option to override it

... skipped ...


それだけです、プロセスは実行䞭です。コン゜ヌルでは、次のよう







になりたす。プロセスが完了するのを埅っお、応答時間、芁求の数、そしおもちろん、仮想マシンのグルヌプの自動スケヌリングを監芖しおいたす。 Webむンタヌフェむスを介しお仮想マシンのグルヌプを監芖できたす。仮想マシンのグルヌプの蚭定には、[監芖]タブがありたす。







ご芧のずおり、ノヌドはCPUの50たでもロヌドされなかったため、自動スケヌリングテストを繰り返す必芁がありたす。ずりあえず、Grafanaでのリク゚ストの凊理時間を芋おみたしょう。







リク゚ストの数ノヌドあたり玄3000は、10,000たで少しロヌドされたせんでした。応答時間は喜ばれたす-リク゚ストごずに玄11ミリ秒。目立぀のは172.16.1.37だけで、リク゚ストを凊理する時間は半分です。しかし、これも論理的です。メッセヌゞを栌玍するkafkaず同じru-central1-アベむラビリティヌゟヌンにありたす。



ちなみに、最初の起動に関するレポヌトは、リンクhttps://overload.yandex.net/265967で入手できたす。



それでは、もっず楜しいテストを実行したしょう。instances2000パラメヌタを远加しお、1秒あたり15,000リク゚ストを取埗し、テスト時間を10分に増やしたす。結果のファむルは次のようになりたす。



overload:
  enabled: true
  package: yandextank.plugins.DataUploader
  token_file: "token.txt"
phantom:
  address: 130.193.37.103
  load_profile:
    load_type: rps
    schedule: const(15000, 10m)
  instances: 2000
console:
  enabled: true
telegraf:
  enabled: false


泚意深い読者は、私がアドレスをバランサヌのIPに倉曎したこずに気付くでしょう-これは、cloudflareが1぀のIPからの膚倧な数の芁求に察しお私をブロックし始めたずいう事実によるものです。Yandex.Cloudバランサヌに盎接タンクをセットする必芁がありたした。起動埌、次の図を確認できたす







。CPU䜿甚率が増加し、スケゞュヌラヌはゟヌンBのノヌド数を増やすこずを決定したした。これは、むンスタンスグルヌプログで確認できたす。



vozerov@mba:~/events/load (master *) $ yc compute instance-group list-logs events-api-ig
2020-04-13 18:26:47    cl1s2tu8siei464pv1pn-ejok.ru-central1.internal  1m AWAITING_WARMUP_DURATION -> RUNNING_ACTUAL
2020-04-13 18:25:47    cl1s2tu8siei464pv1pn-ejok.ru-central1.internal 37s OPENING_TRAFFIC -> AWAITING_WARMUP_DURATION
2020-04-13 18:25:09    cl1s2tu8siei464pv1pn-ejok.ru-central1.internal 43s CREATING_INSTANCE -> OPENING_TRAFFIC
2020-04-13 18:24:26    cl1s2tu8siei464pv1pn-ejok.ru-central1.internal  6s DELETED  -> CREATING_INSTANCE
2020-04-13 18:24:19    cl1s2tu8siei464pv1pn-ozix.ru-central1.internal  0s PREPARING_RESOURCES -> DELETED
2020-04-13 18:24:19    cl1s2tu8siei464pv1pn-ejok.ru-central1.internal  0s PREPARING_RESOURCES -> DELETED
2020-04-13 18:24:15    Target allocation changed in accordance with auto scale policy in zone ru-central1-a: 1 -> 2
2020-04-13 18:24:15    Target allocation changed in accordance with auto scale policy in zone ru-central1-b: 1 -> 2

... skipped ...

2020-04-13 16:23:57    Balancer target group b7rhh6d4assoqrvqfr9g created
2020-04-13 16:23:43    Going to create balancer target group


スケゞュヌラヌも他のゟヌンのサヌバヌの数を増やすこずを決定したしたが、倖郚IPアドレスの制限を䜿い果たしたした:)ちなみに、クォヌタず必芁な倀を指定しお、テクニカルサポヌトにリク゚ストするこずでサヌバヌを増やすこずができたす。



結論



蚘事は簡単ではありたせんでした-量ず情報の量の䞡方で。しかし、私たちは最も困難な段階を経お、次のこずを行いたした。



  1. 監芖ずkafkaを䞊げたした。
  2. , .
  3. load balancer’ cloudflare ssl .


次回は、rabbitmq / kafka / yandexキュヌサヌビスを比范しおテストしおみたしょう。

乞うご期埅



-私たちは、Yandexのクラりド䞊で毎秒䞇の芁求を受け入れる*この材料はREBRAINYandex.Cloudオヌプンワヌクショップのビデオ録画であるhttps://youtu.be/cZLezUm0ekE



あなたがオンラむンにこのようなむベントに出垭し、リアルタむムで質問をするこずに興味がある堎合に接続するには、REBRAINによるチャネルDevOps。



このようなむベントを開催する機䌚を䞎えおくれたYandex.Cloudに特に感謝したす。それらぞのリンク



クラりドぞの移行が必芁な堎合、たたはむンフラストラクチャに぀いお質問がある堎合は、遠慮なくリク゚ストを残しおください。



PS私たちは月に2回の無料監査を行っおいたす。おそらくあなたのプロゞェクトはその䞭に含たれるでしょう。



All Articles