เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™ Kubernetes: เบกเป‰เบงเบ™, เบชเป‰เบฒเบ‡เปƒเปเปˆ, เบชเบตเบŸเป‰เบฒ/เบชเบตเบ‚เบฝเบง, Canary, เบกเบทเบ” (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B)

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹ เบเบฒเบ™เปเบ›: เบžเบฒเบšเบฅเบงเบกเบ™เบตเป‰เบˆเบฒเบ Weaveworks เปเบ™เบฐเบ™เปเบฒเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบ™เบดเบเบปเบกเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ” เปเบฅเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบเป‰เบฒเบงเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบธเบ”เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ Kubernetes Flagger. เบกเบฑเบ™เบ–เบทเบเบ‚เบฝเบ™เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบกเบตเปเบœเบ™เบงเบฒเบ”เบชเบฒเบเบ•เบฒเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบˆเบปเบงเป€เบ‚เบปเป‰เบฒเปƒเบˆเบšเบฑเบ™เบซเบฒ.

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™ Kubernetes: เบกเป‰เบงเบ™, เบชเป‰เบฒเบ‡เปƒเปเปˆ, เบชเบตเบŸเป‰เบฒ/เบชเบตเบ‚เบฝเบง, Canary, เบกเบทเบ” (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B)
เปเบœเบ™เบงเบฒเบ”เปเบกเปˆเบ™เป€เบญเบปเบฒเบกเบฒเบˆเบฒเบ เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เบญเบตเบ เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ Container Solutions

เบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบดเปˆเบ‡เบ—เป‰เบฒเบ—เบฒเบเบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบ‚เบญเบ‡เบ„เบฅเบฒเบงเปƒเบ™เบกเบทเป‰เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰. เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเปเบฅเบฐเบญเบญเบเปเบšเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบšเบšเป‚เบกเบ”เบนเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เปƒเบซเป‰เบ—เบตเบกเบ‡เบฒเบ™เบ•เปˆเบฒเบ‡เป†เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบžเป‰เบญเบกเป†เบเบฑเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ.

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ—เบตเปˆเบชเบฑเป‰เบ™เบเบงเปˆเบฒ เปเบฅเบฐ เป€เบฅเบทเป‰เบญเบเป†เบกเบตเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เบ•เบฐเบซเบผเบฒเบ”เปเบกเปˆเบ™เบซเบผเบธเบ”เบฅเบปเบ‡.
  • เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเปเปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบœเบนเป‰เปƒเบŠเป‰เป„เบ”เป‰เป„เบงเบ‚เบถเป‰เบ™.
  • เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเบกเบ‡เบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบงเบ‚เบถเป‰เบ™. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เบตเบกเบ‡เบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปเบฅเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เป„เบงเบ‚เบถเป‰เบ™.
  • เบˆเบฑเบ™เบเบฒเบšเบฑเบ™เบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™: เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบกเปˆเบงเบ™เบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบš.


เปเบ•เปˆเบเป‰เบญเบ™เบงเปˆเบฒเบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบฒเบ‡เบฅเบปเบšเบ•เปเปˆเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบซเบผเบทเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบเปเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เปเบฅเบฐเบ—เบตเบกเบ‡เบฒเบ™ DevOps เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบปเบ™เบฅเบฐเบเบธเบ”เบเบฒเบ™เบ™เปเบฒเป„เบ›เปƒเบŠเป‰เปƒเบ™เบ—เบฒเบ‡เบ—เบตเปˆเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ•เปเปˆเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰. (เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฎเบฝเบ™เบฎเบนเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบšเบปเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ—เปเปˆ CI/CD เบ—เบตเปˆเบ™เบตเป‰.)

เปƒเบ™เบšเบปเบ”เบ‚เบฝเบ™เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบเปˆเบฝเบงเบเบฑเบšเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบ•เปˆเบฒเบ‡เป†เปƒเบ™ Kubernetes, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ™เปเบฒเป„เบ›เปƒเบŠเป‰เปเบšเบšเบกเป‰เบงเบ™เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบเป‰เบฒเบงเบซเบ™เป‰เบฒเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบซเบผเบฒเบเป€เบŠเบฑเปˆเบ™เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง canary เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบกเบฑเบ™.

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เบกเบตเบซเบผเบฒเบเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบญเบตเบ‡เบ•เบฒเบกเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบซเบผเบทเบเบธเปˆเบกเบเปˆเบญเบเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰ / เบฅเบนเบเบ„เป‰เบฒ, เบซเบผเบทเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบˆเปเบฒเบเบฑเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”. เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ.

Rolling (เบ„เปˆเบญเบเป†, "rolling" deployment)

เบ™เบตเป‰เปเบกเปˆเบ™เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบ™ Kubernetes. เบกเบฑเบ™เป€เบ—เบทเปˆเบญเบฅเบฐเบเป‰เบฒเบง, เบซเบ™เบถเปˆเบ‡เป€เบ—เบทเปˆเบญเบฅเบฐเบเป‰เบฒเบง, เปเบ—เบ™เบ—เบตเปˆเบเบฑเบเบ”เป‰เบงเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบฎเบธเปˆเบ™เป€เบเบปเปˆเบฒเบ”เป‰เบงเบเบเบฑเบเบ—เบตเปˆเบกเบตเบฎเบธเปˆเบ™เปƒเบซเบกเปˆ - เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบขเบธเบ”เบŠเบปเปˆเบงเบ„เบฒเบงเบ‚เบญเบ‡เบเบธเปˆเบก.

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™ Kubernetes: เบกเป‰เบงเบ™, เบชเป‰เบฒเบ‡เปƒเปเปˆ, เบชเบตเบŸเป‰เบฒ/เบชเบตเบ‚เบฝเบง, Canary, เบกเบทเบ” (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B)

Kubernetes เบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบžเบญเบ”เปƒเบซเบกเปˆเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบ (เบเบงเบ”เป€เบšเบดเปˆเบ‡เบžเบงเบเบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰ เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฒเบกเบžเป‰เบญเบก), เบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเป‰เบงเบ™เป€เบ–เบดเบ‡เป€เบเบปเปˆเบฒ. เบ–เป‰เบฒเบกเบตเบšเบฑเบ™เบซเบฒเป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เปเบšเบšเบกเป‰เบงเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเบปเบเป€เบฅเบตเบเป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบขเบธเบ”เบเบธเปˆเบกเบ—เบฑเบ‡เปเบปเบ”. เปƒเบ™เป„เบŸเบฅเปŒ YAML เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป€เบ–เบดเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ™เบณเปƒเบŠเป‰, เบฎเบนเบšเบžเบฒเบšเปƒเปเปˆเบˆเบฐเปเบ—เบ™เบ—เบตเปˆเบฎเบนเบšเป€เบเบปเปˆเบฒ:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: awesomeapp
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: awesomeapp
    spec:
      containers:
        - name: awesomeapp
          image: imagerepo-user/awesomeapp:new
          ports:
            - containerPort: 8080

เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ” rollover เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เป„เบŸเบฅเปŒ manifest:

spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
       maxSurge: 25%
       maxUnavailable: 25%  
  template:
  ...

เบชเป‰เบฒเบ‡เปƒเปเปˆ

เปƒเบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เบ™เบตเป‰, เบเบฑเบเป€เบเบปเปˆเบฒเบ–เบทเบเบ‚เป‰เบฒเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบ„เบฑเป‰เบ‡เบ”เบฝเบง เปเบฅเบฐ เปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบเบญเบฑเบ™เปƒเปเปˆ:

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™ Kubernetes: เบกเป‰เบงเบ™, เบชเป‰เบฒเบ‡เปƒเปเปˆ, เบชเบตเบŸเป‰เบฒ/เบชเบตเบ‚เบฝเบง, Canary, เบกเบทเบ” (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B)

Manifest เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ„เป‰เบฒเบเบ„เบทเบ™เบตเป‰:

spec:
  replicas: 3
  strategy:
    type: Recreate
  template:
  ...

เบชเบตเบŸเป‰เบฒ/เบชเบตเบ‚เบฝเบง (เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบชเบตเบŸเป‰เบฒ-เบชเบตเบ‚เบฝเบง)

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเบตเบŸเป‰เบฒเบชเบตเบ‚เบฝเบง (เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเบฑเบ‡เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบชเบตเปเบ”เบ‡ / เบชเบตเบ”เปเบฒ) เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเป‰เบญเบกเป†เบเบฑเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบฎเบธเปˆเบ™เป€เบเบปเปˆเบฒ (เบชเบตเบ‚เบฝเบง) เปเบฅเบฐเปƒเบซเบกเปˆ (เบชเบตเบŸเป‰เบฒ). เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ—เบฑเบ‡เบชเบญเบ‡เบชเบฐเบšเบฑเบš, เบœเบนเป‰เปƒเบŠเป‰เบ›เบปเบเบเบฐเบ•เบดเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบชเบตเบ‚เบฝเบง, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบชเบตเบŸเป‰เบฒเปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบ—เบตเบกเบ‡เบฒเบ™ QA เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบซเบผเบทเบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเบžเบญเบ”เป‚เบ”เบเบเบปเบ‡:

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™ Kubernetes: เบกเป‰เบงเบ™, เบชเป‰เบฒเบ‡เปƒเปเปˆ, เบชเบตเบŸเป‰เบฒ/เบชเบตเบ‚เบฝเบง, Canary, เบกเบทเบ” (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B)

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: awesomeapp-02
spec:
  template:
    metadata:
      labels:
        app: awesomeapp
        version: "02"

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบชเบตโ€‹เบŸเป‰เบฒ (เปƒเบซเบกเปˆโ€‹) เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบญเบโ€‹เบกเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบกเบฑเบ”โ€‹, เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบซเบผเบฑเบšโ€‹เบเบฑเบšโ€‹เบกเบฑเบ™โ€‹, เปเบฅเบฐโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบชเบตโ€‹เบ‚เบฝเบง (เป€เบเบปเปˆเบฒโ€‹) foldedโ€‹:

apiVersion: v1
kind: Service
metadata:
  name: awesomeapp
spec:
  selector:
    app: awesomeapp
    version: "02"
...

Canary (เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ canaryโ€‹)

Canary rollouts เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš rollouts เบชเบตเบŸเป‰เบฒเบชเบตเบ‚เบฝเบง, เปเบ•เปˆเบกเบตเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒ เบเป‰เบฒเบง เปœเป‰เบฒ เบ‚เบฑเป‰เบ™เบ•เบญเบ™เป‚เบ”เบเบ‚เบฑเป‰เบ™เบ•เบญเบ™. เบ›เบฐเป€เบžเบ”เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง " stealth" เปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A / B.

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบญเบญเบเบšเบฒเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบซเบกเปˆ, เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปƒเบ™ backend เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบงเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเป€เบเบทเบญเบšเบ„เบทเบเบฑเบ™: เบซเบ™เบถเปˆเบ‡เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบœเบนเป‰เปƒเบŠเป‰เป€เบเบทเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบฅเบฐเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡, เบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบซเบกเปˆ, เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบเบธเปˆเบกเบเปˆเบญเบเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบ›เบฝเบšเบ—เบฝเบš. เบ–เป‰เบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป„เบ›เป‚เบ”เบเบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เบฎเบธเปˆเบ™เปƒเบซเบกเปˆเบˆเบฐเบ„เปˆเบญเบเป†เบญเบญเบเป„เบ›เบชเบนเปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบชเบฐเป€เบžเบฒเบฐเปเบ•เปˆเปƒเบŠเป‰ Kubernetes, เบเบฒเบ™เบ›เปˆเบฝเบ™เบเบฑเบเป€เบเบปเปˆเบฒเบเบฑเบšเบญเบฑเบ™เปƒเบซเบกเปˆ, เบกเบฑเบ™เบชเบฐเบ”เบงเบเบเบงเปˆเบฒเปเบฅเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบ•เบฒเบซเบ™เปˆเบฒเบ‡เบšเปเบฅเบดเบเบฒเบ™เป€เบŠเบฑเปˆเบ™ Istio.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบชเบญเบ‡ manifest เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™ Git: manifest เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบกเบต tag 0.1.0 เปเบฅเบฐ canary manifest เบเบฑเบš tag 0.2.0. เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบเปƒเบ™ Istio virtual gateway manifest, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰:

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™ Kubernetes: เบกเป‰เบงเบ™, เบชเป‰เบฒเบ‡เปƒเปเปˆ, เบชเบตเบŸเป‰เบฒ/เบชเบตเบ‚เบฝเบง, Canary, เบกเบทเบ” (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B)

เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เป‚เบ”เบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” canary เป‚เบ”เบเปƒเบŠเป‰ Istio, เป€เบšเบดเปˆเบ‡ GitOps Workflows เบเบฑเบš Istio. (เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เปเบ›.: เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เป„เบ”เป‰เปเบ›เป€เบญเบเบฐเบชเบฒเบ™เบเปˆเบฝเบงเบเบฑเบš canary rollouts เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Istio เบ—เบตเปˆเบ™เบตเป‰.)

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰ Canary เบเบฑเบš Weaveworks Flagger

Weaveworks Flagger เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™ canary rollouts เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

Flagger automates เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบกเบฑเบ™เปƒเบŠเป‰ Istio เบซเบผเบท AWS App Mesh เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบฅเบฐเบ›เปˆเบฝเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™, เปเบฅเบฐเบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ” Prometheus เป€เบžเบทเปˆเบญเบงเบดเป€เบ„เบฒเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ canary เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบชเบตเบกเบ”เป‰เบงเบ webhooks เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบš, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป‚เบซเบผเบ”, เปเบฅเบฐเบ›เบฐเป€เบžเบ”เบญเบทเปˆเบ™เป†เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบš.

เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ Kubernetes เปเบฅเบฐ, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เบ•เบฒเบกเปเบ™เบงเบ™เบญเบ™เบ‚เบญเบ‡ pods (HPA), Flagger เบˆเบฐเบชเป‰เบฒเบ‡เบŠเบธเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ (เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ Kubernetes, เบšเปเบฅเบดเบเบฒเบ™ ClusterIP เปเบฅเบฐ Istio เบซเบผเบท App Mesh virtual services) เป€เบžเบทเปˆเบญเบงเบดเป€เบ„เบฒเบฐ เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰ canary:

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™ Kubernetes: เบกเป‰เบงเบ™, เบชเป‰เบฒเบ‡เปƒเปเปˆ, เบชเบตเบŸเป‰เบฒ/เบชเบตเบ‚เบฝเบง, Canary, เบกเบทเบ” (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B)

เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ” loop เบเบฒเบ™โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹ (เบงเบปเบ‡โ€‹เบเบฒเบ™โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹),Flagger เบ„เปˆเบญเบเป†เบ›เปˆเบฝเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบซเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ canary, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฒเบ™เบงเบฑเบ”เปเบ—เบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เป€เบŠเบฑเปˆเบ™: เป€เบ›เบตเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป HTTP เบ—เบตเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เป„เบฅเบเบฐเป€เบงเบฅเบฒเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบชเบฐเป€เบฅเปˆเบ, เปเบฅเบฐเบชเบธเบ‚เบฐเบžเบฒเบšเบ‚เบญเบ‡เบเบฑเบ. เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ KPI (เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™), canary เบญเบฒเบ”เบˆเบฐเป€เบ•เบตเบšเป‚เบ•เบซเบผเบทเบฅเบปเป‰เบกเบฅเบปเบ‡เปเบฅเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒเปƒเบ™ Slack. เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เปเบฅเบฐเบเบฒเบ™เบชเบฒเบ—เบดเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™ เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เปเบšเบšเบเป‰เบฒเบงเบซเบ™เป‰เบฒเบชเปเบฒเบฅเบฑเบš App Mesh.

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™ Kubernetes: เบกเป‰เบงเบ™, เบชเป‰เบฒเบ‡เปƒเปเปˆ, เบชเบตเบŸเป‰เบฒ/เบชเบตเบ‚เบฝเบง, Canary, เบกเบทเบ” (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B)

เบŠเป‰เปเบฒ (เป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰) เบซเบผเบท A/B เบ™เบณเปƒเบŠเป‰

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” stealth เปเบกเปˆเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบทเปˆเบ™เบ‚เบญเบ‡เบเบธเบ”เบ—เบฐเบชเบฒเบ” canary (เบŠเบถเปˆเบ‡, เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, Flagger เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบš). เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ stealth เปเบฅเบฐ canary เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ stealth เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบš frontend เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ backend เบ„เบทเบเบฑเบš canary deployments.

เบŠเบทเปˆเบญเบทเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆเบกเบตเปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”, เบกเบฑเบ™เบ–เบทเบเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆเบšเบฒเบ‡เบชเปˆเบงเบ™เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, เบœเบนเป‰เปƒเบŠเป‰เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™เบœเบนเป‰เบšเบธเบเป€เบšเบตเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš (เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™เบ„เปเบฒเบงเปˆเบฒ "เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” stealth").

เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบชเบฐโ€‹เบซเบผเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹ (เบชเบฐเบซเบผเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”) เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบญเบทเปˆเบ™เป†, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆ, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเบกเบตเบชเปˆเบงเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบกเบฑเบ™, เบซเบผเบทเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบžเบปเบšเบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบœเบนเป‰เปƒเบŠเป‰เปƒเบซเบกเปˆเบชเบฑเบšเบชเบปเบ™, เปเบฅเบฐเบ›เบฐเป€เบžเบ”เบญเบทเปˆเบ™เป†เบ‚เบญเบ‡ metrics.

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™ Kubernetes: เบกเป‰เบงเบ™, เบชเป‰เบฒเบ‡เปƒเปเปˆ, เบชเบตเบŸเป‰เบฒ/เบชเบตเบ‚เบฝเบง, Canary, เบกเบทเบ” (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B)

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบธเบ‡ เปเบฅเบฐ A/B

เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ™เป‰เปเบฒเบซเบ™เบฑเบ, Flagger เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบซเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ canary เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ•เบปเบงเบเปเบฒเบ™เบปเบ” HTTP. เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš A/B, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบชเปˆเบงเบ™เบซเบปเบง HTTP เบซเบผเบท cookies เป€เบžเบทเปˆเบญเปเบ™เปƒเบชเปˆเบเบธเปˆเบกเบœเบนเป‰เปƒเบŠเป‰เบชเบฐเป€เบžเบฒเบฐ. เบ™เบตเป‰เปเบกเปˆเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ frontend เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ session binding เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ (เบ„เบงเบฒเบกเบชเบณเบžเบฑเบ™เบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™). เบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™ Flagger.

เบœเบนเป‰เบ‚เบฝเบ™เบชเบฐเปเบ”เบ‡เบ„เบงเบฒเบกเบเบฐเบ•เบฑเบ™เบเบน Stefan Prodan, เบงเบดเบชเบฐเบงเบฐเบเบญเบ™ Weaveworks (เปเบฅเบฐเบœเบนเป‰เบชเป‰เบฒเบ‡ Flagger), เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบซเบ™เป‰เบฒเบ›เบฐเบซเบฅเบฒเบ”เปƒเบˆเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

PS เบˆเบฒเบเบ™เบฑเบเปเบ›

เบญเปˆเบฒเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™