Skip to content

Latest commit

 

History

History
70 lines (62 loc) · 2.38 KB

demo-2-ab-testing-stickyroute.md

File metadata and controls

70 lines (62 loc) · 2.38 KB

Demo-2: A/B testing with sticky route.

2.1) ทำการแก้ไขไฟล์ docker-compose.yml ดังนี้

version: "3.7"
services:
    nginx:
        image: nginx-plus:latest
        restart: always
        ports:
          - 80:80
        volumes:
           - ./conf/ab-testing-stickyroute.conf:/etc/nginx/nginx.conf

จากสั่ง run ก็ใช้คำสั่ง

docker-compose up -d

ถ้าอยากดู logs แบบ realtime ของ nginx บน container ใช้คำสั่ง

docker-compose logs -f

2.2) ในการทดสอบนี้จะอ้างอิง nginx configuration จากไฟล์ ab-testing-stickyroute.conf

        map $cookie_route $route_cookie {
              ~\.(?P<route>\w+)$ $route;
        }

        map $arg_route $route_uri {
              ~\.(?P<route>\w+)$ $route;
        }

        upstream backend {
                zone backend 64k;
                server 127.0.0.1:8098 route=a;
                server 127.0.0.1:8099 route=b;

                sticky route $route_cookie $route_uri;
        }

2.3) ทำการทดสอบโดยใช้ Sticky Route ด้วย Cookie route ดังนี้

เรียกไปที่ Site A โดยใช้ .a

curl --cookie "ROUTE=$(cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1).a" http://localhost

เรียกไปที่ Site B โดยใช้ .b

curl --cookie "ROUTE=$(cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1).b" http://localhost

ตัวอย่าง การทดสอบ demo-2-1

2.4) ทำการทดสอบโดยใช้ Sticky Route ด้วย argument route ดังนี้

เรียกไปที่ Site A โดยใช้ .a

curl http://localhost/\?route=$(cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1).a

เรียกไปที่ Site B โดยใช้ .b

curl http://localhost/\?route=$(cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1).b

ตัวอย่าง การทดสอบ demo-2-2

2.5) ทำการลบ Container

docker-compose down