리셋 되지 말자

csapi 프로젝트 (5) - docker compose scaling 테스트 본문

프로젝트

csapi 프로젝트 (5) - docker compose scaling 테스트

kyeongjun-dev 2023. 8. 5. 21:40
https://not-to-be-reset.tistory.com/343 글에 작성한 대로, 모델 다운로드 링크가 만료되고 코드가 동작하지 않아서 다시 포스팅 합니다.
단일 인스턴스 부터 쿠버네티스 클러스터까지 확장해 나가려고 합니다.

개발환경

2023. 7. 22 기준 wsl 윈도우에서 진행

github 주소

https://github.com/kyeongjun-dev/csapi

커밋 : https://github.com/kyeongjun-dev/csapi/tree/d07fe3c082b503f00f2bec3dea2f5c3b02a1349f


scaling (스케일링 테스트)

먼저 docker compose up을 진행한다

docker-compose up --build

 

이 상태에서 localhost:8000으로 3번 빠르게 접속한다. 그러면 아래와 같이 3개의 Job을 csapi-worker-1 컨테이너에서 received 했다고 표시된다.

csapi-django-1  | 44bc05d9-bb8b-4a33-93df-80c90534f9f1
csapi-worker-1  | [2023-08-05 12:27:49,822: INFO/MainProcess] Task csapi.tasks.api[44bc05d9-bb8b-4a33-93df-80c90534f9f1] received
csapi-django-1  | [05/Aug/2023 12:27:49] "GET / HTTP/1.1" 200 36
csapi-worker-1  | [2023-08-05 12:27:49,823: INFO/MainProcess] Task csapi.tasks.api[bed544ab-020b-4c48-a737-f66065125e61] received
csapi-django-1  | c21179a3-4375-4545-9f9e-cf5375199231
csapi-worker-1  | [2023-08-05 12:27:50,652: INFO/MainProcess] Task csapi.tasks.api[c21179a3-4375-4545-9f9e-cf5375199231] received
csapi-django-1  | [05/Aug/2023 12:27:50] "GET / HTTP/1.1" 200 36

 

그러면 Job이 순차적으로 계속 실행되며, 아래와 같이 30초가 넘게 걸리는걸 확인할 수 있다.

csapi-worker-1  | [2023-08-05 12:28:00,077: INFO/ForkPoolWorker-1] Task csapi.tasks.api[f641e5aa-f698-4348-b8df-516114182243] succeeded in 11.298834682000006s: 'f641e5aa-f698-4348-b8df-516114182243'
...
csapi-worker-1  | [2023-08-05 12:28:17,844: INFO/ForkPoolWorker-2] Task csapi.tasks.api[02946265-7e27-45ba-bd74-458897fa3384] succeeded in 14.63500473199997s: '02946265-7e27-45ba-bd74-458897fa3384'
...
csapi-worker-1  | [2023-08-05 12:28:28,910: INFO/ForkPoolWorker-3] Task csapi.tasks.api[44bc05d9-bb8b-4a33-93df-80c90534f9f1] succeeded in 10.853035019999993s: '44bc05d9-bb8b-4a33-93df-80c90534f9f1'

 

이제 새로운 터미널창을 열고, 같은 위치에서 아래 명령어를 사용해 worker 컨테이너의 개수를 3개로 증가시킨다.

$ ls
celery  django  docker-compose.yml

$ docker-compose up --scale worker=3

 

그러면 아래와 같이 worker 컨테이너가 3개로 증가한걸 확인할 수 있다.

$ docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS         PORTS                                                                                      NAMES
5452ac627bbd   csapi-worker            "celery -A csapi.tas…"   11 seconds ago   Up 9 seconds                                                                                              csapi-worker-2
80ba8326dfcf   csapi-worker            "celery -A csapi.tas…"   11 seconds ago   Up 9 seconds                                                                                              csapi-worker-3
6f65bd8c05a6   rabbitmq:3-management   "docker-entrypoint.s…"   5 minutes ago    Up 5 minutes   4369/tcp, 5671-5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp   csapi-rabbit-1
9c9f9c12b482   csapi-django            "python manage.py ru…"   5 minutes ago    Up 5 minutes   0.0.0.0:8000->8000/tcp                                                                     csapi-django-1
093ccc4a4d15   csapi-worker            "celery -A csapi.tas…"   5 minutes ago    Up 5 minutes                                                                                              csapi-worker-1

 

이 상태에서 다시 localhost:8000 접속을 빠르게 3번 반복한다. 그러면 작업시간은 소폭 증가했지만, 동시에 3개의 Job이 동시에 처리됨을 확인할 수 있다. 

csapi-worker-2  | 
csapi-worker-2  | 
csapi-worker-2  | [2023-08-05 12:32:46,739: INFO/ForkPoolWorker-2] Task csapi.tasks.api[ff8f9615-992a-4619-b92a-7cdbb9c6887f] succeeded in 17.896325994000108s: 'ff8f9615-992a-4619-b92a-7cdbb9c6887f'
1/1 [==============================] - ETA: 0sRNING/ForkPoolWorker-2] 
1/1 [==============================] - 12s 12s/step/ForkPoolWorker-2] 
csapi-worker-3  | 
csapi-worker-3  | 
csapi-worker-3  | [2023-08-05 12:32:48,921: INFO/ForkPoolWorker-2] Task csapi.tasks.api[b37ddb60-5e1a-46eb-b885-0579d82851f8] succeeded in 18.614348629999995s: 'b37ddb60-5e1a-46eb-b885-0579d82851f8'
1/1 [==============================] - ETA: 0sRNING/ForkPoolWorker-8] 
1/1 [==============================] - 9s 9s/stepNG/ForkPoolWorker-8] 
csapi-worker-1  | 
csapi-worker-1  | 
csapi-worker-1  | [2023-08-05 12:32:54,078: INFO/ForkPoolWorker-8] Task csapi.tasks.api[3540d408-526d-4bd3-915a-13d4c2ebcfe4] succeeded in 20.657165330999987s: '3540d408-526d-4bd3-915a-13d4c2ebcfe4

 

확인을 위해서 브라우저에 localhost:15672로 접속 후, docker-compose.yml 파일에 작성한 rabbit 컨테이너의 환경변수인 ID guest, PASSWD guest로 접속하면 아래와 같이 확인이 가능하다.

 

Comments