-
-
-
-
-
-
+
);
diff --git a/mermaild.md b/mermaild.md
new file mode 100644
index 00000000..f033e352
--- /dev/null
+++ b/mermaild.md
@@ -0,0 +1,12 @@
+stateDiagram-v2
+ direction LR
+ 사용자request --> Pool: 코드실행 요청
+
+ state "Pool" as Pool
+ Pool --> Allocated: 컨테이너 할당
+ Allocated --> Started: 컨테이너 Start
+ Started --> Running: 작업 실행 중
+ Running --> Finish: 작업 완료
+ Finish --> Exited: 컨테이너 stop
+ Finish --> 사용자request: 코드실행결과 반환
+ Exited --> Pool: 컨테이너 Stop 후 반납
\ No newline at end of file
diff --git a/npx b/npx
new file mode 100644
index 00000000..5a312b43
--- /dev/null
+++ b/npx
@@ -0,0 +1,79 @@
+Test run id: t6neg_99a5dhhx98qw3gywhgwh56k4chpnx_87ef
+Phase started: unnamed (index: 0, duration: 1s) 22:13:38(+0900)
+
+Phase completed: unnamed (index: 0, duration: 1s) 22:13:39(+0900)
+
+--------------------------------------
+Metrics for period to: 22:13:40(+0900) (width: 1s)
+--------------------------------------
+
+http.request_rate: ............................................................. 100/sec
+http.requests: ................................................................. 100
+vusers.created: ................................................................ 100
+vusers.created_by_name.0: ...................................................... 100
+
+
+--------------------------------------
+Metrics for period to: 22:13:50(+0900) (width: 1.503s)
+--------------------------------------
+
+errors.ETIMEDOUT: .............................................................. 95
+http.codes.200: ................................................................ 5
+http.downloaded_bytes: ......................................................... 550
+http.request_rate: ............................................................. 5/sec
+http.requests: ................................................................. 5
+http.response_time:
+ min: ......................................................................... 9408
+ max: ......................................................................... 9691
+ mean: ........................................................................ 9510.4
+ median: ...................................................................... 9416.8
+ p95: ......................................................................... 9607.1
+ p99: ......................................................................... 9607.1
+http.response_time.2xx:
+ min: ......................................................................... 9408
+ max: ......................................................................... 9691
+ mean: ........................................................................ 9510.4
+ median: ...................................................................... 9416.8
+ p95: ......................................................................... 9607.1
+ p99: ......................................................................... 9607.1
+http.responses: ................................................................ 5
+vusers.failed: ................................................................. 95
+
+
+--------------------------------------
+Metrics for period to: 22:14:00(+0900) (width: 0.241s)
+--------------------------------------
+
+errors.ETIMEDOUT: .............................................................. 5
+vusers.failed: ................................................................. 5
+
+
+All VUs finished. Total time: 21 seconds
+
+--------------------------------
+Summary report @ 22:14:00(+0900)
+--------------------------------
+
+errors.ETIMEDOUT: .............................................................. 100
+http.codes.200: ................................................................ 5
+http.downloaded_bytes: ......................................................... 550
+http.request_rate: ............................................................. 35/sec
+http.requests: ................................................................. 105
+http.response_time:
+ min: ......................................................................... 9408
+ max: ......................................................................... 9691
+ mean: ........................................................................ 9510.4
+ median: ...................................................................... 9416.8
+ p95: ......................................................................... 9607.1
+ p99: ......................................................................... 9607.1
+http.response_time.2xx:
+ min: ......................................................................... 9408
+ max: ......................................................................... 9691
+ mean: ........................................................................ 9510.4
+ median: ...................................................................... 9416.8
+ p95: ......................................................................... 9607.1
+ p99: ......................................................................... 9607.1
+http.responses: ................................................................ 5
+vusers.created: ................................................................ 100
+vusers.created_by_name.0: ...................................................... 100
+vusers.failed: ................................................................. 100
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ac853589..64509a5b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -199,6 +199,9 @@ importers:
'@eslint/js':
specifier: ^9.13.0
version: 9.13.0
+ '@playwright/test':
+ specifier: ^1.49.0
+ version: 1.49.0
'@tanstack/react-query-devtools':
specifier: ^5.59.19
version: 5.59.19(@tanstack/react-query@5.59.19(react@18.3.1))(react@18.3.1)
@@ -214,6 +217,9 @@ importers:
'@testing-library/react':
specifier: ^16.0.1
version: 16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@types/node':
+ specifier: ^20.3.1
+ version: 20.17.5
'@types/react':
specifier: ^18.3.12
version: 18.3.12
@@ -313,6 +319,9 @@ importers:
clsx:
specifier: ^2.1.1
version: 2.1.1
+ embla-carousel-autoplay:
+ specifier: ^8.5.1
+ version: 8.5.1(embla-carousel@8.3.1)
embla-carousel-react:
specifier: ^8.3.1
version: 8.3.1(react@18.3.1)
@@ -1488,6 +1497,11 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
+ '@playwright/test@1.49.0':
+ resolution: {integrity: sha512-DMulbwQURa8rNIQrf94+jPJQ4FmOVdpE5ZppRNvWVjvhC+6sOeo28r8MgIpQRYouXRtt/FCCXU7zn20jnHR4Qw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
'@radix-ui/number@1.1.0':
resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==}
@@ -3383,6 +3397,11 @@ packages:
electron-to-chromium@1.5.50:
resolution: {integrity: sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==}
+ embla-carousel-autoplay@8.5.1:
+ resolution: {integrity: sha512-FnZklFpePfp8wbj177UwVaGFehgs+ASVcJvYLWTtHuYKURynCc3IdDn2qrn0E5Qpa3g9yeGwCS4p8QkrZmO8xg==}
+ peerDependencies:
+ embla-carousel: 8.5.1
+
embla-carousel-react@8.3.1:
resolution: {integrity: sha512-gBY0zM+2ASvKFwRpTIOn2SLifFqOKKap9R/y0iCpJWS3bc8OHVEn2gAThGYl2uq0N+hu9aBiswffL++OYZOmDQ==}
peerDependencies:
@@ -3833,6 +3852,11 @@ packages:
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ fsevents@2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -5304,6 +5328,16 @@ packages:
pkg-types@1.2.1:
resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==}
+ playwright-core@1.49.0:
+ resolution: {integrity: sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ playwright@1.49.0:
+ resolution: {integrity: sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==}
+ engines: {node: '>=18'}
+ hasBin: true
+
pluralize@8.0.0:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'}
@@ -7877,6 +7911,10 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
+ '@playwright/test@1.49.0':
+ dependencies:
+ playwright: 1.49.0
+
'@radix-ui/number@1.1.0': {}
'@radix-ui/primitive@1.1.0': {}
@@ -9883,6 +9921,10 @@ snapshots:
electron-to-chromium@1.5.50: {}
+ embla-carousel-autoplay@8.5.1(embla-carousel@8.3.1):
+ dependencies:
+ embla-carousel: 8.3.1
+
embla-carousel-react@8.3.1(react@18.3.1):
dependencies:
embla-carousel: 8.3.1
@@ -10575,6 +10617,9 @@ snapshots:
fs.realpath@1.0.0: {}
+ fsevents@2.3.2:
+ optional: true
+
fsevents@2.3.3:
optional: true
@@ -12466,6 +12511,14 @@ snapshots:
mlly: 1.7.2
pathe: 1.1.2
+ playwright-core@1.49.0: {}
+
+ playwright@1.49.0:
+ dependencies:
+ playwright-core: 1.49.0
+ optionalDependencies:
+ fsevents: 2.3.2
+
pluralize@8.0.0: {}
possible-typed-array-names@1.0.0: {}