JiwonDev

๋ฐฑ์—”๋“œ ์ธํ”„๋ผ #2 Artillery ๋ฅผ ์ด์šฉํ•ด์„œ ์›น ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

by JiwonDev

2021.10.19 - [๐ŸŒฑBackend/CI & CD] - ๋ฐฑ์—”๋“œ ์ธํ”„๋ผ #1 ์†Œ๊ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋งŒ๋“ค๊ธฐ

 

๋ฐฑ์—”๋“œ ์ธํ”„๋ผ #1 ์†Œ๊ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋งŒ๋“ค๊ธฐ

ํ•ด๋‹น๊ธ€์€ ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ํ‘ธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ ์‹ค๋ฌด๋ฅผ ์ œ ์ž…๋ง›๋Œ€๋กœ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๐Ÿ“Œ ๊ฐœ๋ฐœ๊ณผ ์ธํ”„๋ผ ๊ฐœ๋ฐœ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด, ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ์ข‹์€ ์•„ํ‚คํ…์ฒ˜์— ๊ด€ํ•ด์„œ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐฐ์šฐ๊ฒŒ

jiwondev.tistory.com

 

1ํŽธ์—์„œ ๊ตฌ์„ฑํ•œ ์›น ์„œ๋ฒ„๋ฅผ ํ…Œ์ŠคํŠธ ํ•ด๋ด…์‹œ๋‹ค.

 

๋ฌผ๋ก  ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ๋„์›Œ๋†“๊ณ  F5๋ฅผ ๋ˆŒ๋Ÿฌ๊ฐ€๋ฉฐ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ฒ ์ง€๋งŒ, Atrillery.io ๋ผ๋Š” ๋„๊ตฌ๋ฅผ ์ด์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ์„ฑ๋Šฅ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ JMeter ๋“ฑ์˜ ๋„๊ตฌ๋„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ณค ํ•ฉ๋‹ˆ๋‹ค.

 

Artillery.io | Load & Smoke Testing

“We need to run load tests for all of our systems - Chat, Social, Bots and Video, so we can be confident that our system is always up to the quality our customers worldwide expect. Arillery makes our routine load testing much easier!”

artillery.io

 

Arrillery๋Š” Node.JS ์˜ npm์„ ์ด์šฉํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์—†๋‹ค๋ฉด ์„ค์น˜ํ•ด์ฃผ์„ธ์š”.

$ npm install -g artillery
 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

 

#1. Artillery ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ

๊ณต์‹๋ฌธ์„œ์˜ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์€ test.yaml ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.

config:
  target: "http://34.64.209.57/"
  phases:
    - duration: 60 # n์ดˆ ๋™์•ˆ
      arrivalRate: 1 # n๋ช…์˜ ๊ฐ€์ƒ User๋ฅผ ์ƒ์„ฑ (์œ ์ €๋Š” ์ดˆ๋‹น 1๋ฒˆ ์š”์ฒญ)
      name: Warm up


scenarios:
  - name: "just get hash" # ์„ค๋ช…
    flow:
      - get: # ํ•ด๋‹น url์— get ์š”์ฒญ์„ ํ•ฉ๋‹ˆ๋‹ค.
          url: "/hash/123"

์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์€ ๊ณต์‹ doc์— ์นœ์ ˆํ•˜๊ฒŒ ๋‚˜์™€์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

 

 

#2. ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰

npm์œผ๋กœ ์•„ํ‹ธ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

artillery.cmd run --output report.json .\test.yaml

--output ์œผ๋กœ ๊ฒฐ๊ณผ json ํŒŒ์ผ ์ด๋ฆ„์„ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋กœ HTML ๋ณด๊ณ ์„œ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.

report.json์„ ๋ณด๊ธฐ์ข‹๊ฒŒ HTML ๋ฌธ์„œ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

 

 

# 3. ์›น์„œ๋น„์Šค ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

์œ ์ €์˜ ์ ‘์†๋Ÿ‰์„ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ํ•ด๋ด…์‹œ๋‹ค.

60์ดˆ๋™์•ˆ 12๋ช…์˜ ์œ ์ €๊ฐ€ ์ดˆ๋‹น 1๋ฒˆ์”ฉ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

artillery.cmd run --output report.json .\test.yaml
artillery.cmd report .\report.json

 

๋ณดํ†ต ์›น ์„œ๋น„์Šค์˜ ๊ธฐ๋Œ€ ์„ฑ๋Šฅ์€ Latency(์‘๋‹ต์†๋„)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด Artillery ์Šคํฌ๋ฆฝํŠธ๋ฅผ [60์ดˆ-์ดˆ๋‹น 1๋ช…]์œผ๋กœ ํ–ˆ์„ ๋•Œ์—๋Š” ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์ง€๋งŒ, [60์ดˆ-์ดˆ๋‹น 8๋ช…]์œผ๋กœ ํ–ˆ์„ ๋–„ ์„œ๋ฒ„์˜ ์‘๋‹ต์†๋„๊ฐ€ ๋Š๋ ค์ง์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์‹ฌํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•œ๋‹ค๋ฉด ์„œ๋ฒ„๊ฐ€ ์ฃฝ์–ด๋ฒ„๋ฆฌ๊ธฐ๋„ ํ•˜๊ฒ ์ฃ .

 

 

๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์‘๋‹ต์†๋„๊ฐ€ 200~300ms ๋ผ๋ฉด, ํ•ด๋‹น ์‘๋‹ต์†๋„๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์•˜์„ ๋•Œ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜(Scale-up) Nginx๊ฐ™์€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ด์šฉํ•ด ์„œ๋ฒ„์˜ ๋Œ€์ˆ˜๋ฅผ ๋Š˜๋ ค์•ผ(Scale-out) ํ•ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ ์˜ˆ์ƒ ํŠธ๋ž˜ํ”ฝ(TPS, HTTP Transcation Per Second)๊ฐ€ 1000์ •๋„๋ผ๋ฉด, ์ ์–ด๋„ 2-3000์˜ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹นํ•  ์ •๋„์˜ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•ด์•ผํ•˜๋ฉฐ ๋งŒ์•ฝ Scale-out์„ ํ–ˆ๋Š”๋ฐ๋„ ์„ฑ๋Šฅ์ด ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†๋‹ค๋ฉด, ๋ณ‘๋ชฉ์„ ์˜์‹ฌํ•ด์•ผ ๊ฒ ์ฃ .

์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก Timeout ๋น„์œจ์ด ๋Š˜์–ด๋‚˜๋‹ค๊ฐ€, ๋„ˆ๋ฌด ๋งŽ์ด ์Œ“์ด๊ฒŒ๋˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์ฃฝ์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

 

ํ…Œ์ŠคํŠธ๊ฐ€ ์งง์•„์„œ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋‹จ์ˆœํ•˜์ง€๋งŒ, ์•ฝ๊ฐ„ ๋” ๊ธด์‹œ๊ฐ„ ๋™์•ˆ ํ…Œ์ŠคํŠธํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์‘๋‹ต์†๋„ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ์™€ ๋„คํŠธ์›Œํฌ ํŠน์„ฑ์ƒ, ํ•ญ์ƒ ์ผ์ •ํ•œ ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ๋‚˜์˜ค๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ๋ฒˆ์”ฉ ๋Š๋ฆฐ ๋ฐ˜์‘์†๋„๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (= ํ•‘์ด ํŠ„๋‹ค)

 

๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด ์กฐ๊ธˆ๋” ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ์ž๋ฉด

์ขŒ์ธก ๋ ˆ์ดํ„ด์‹œ : ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์—์„œ request๋ฅผ ๋ณด๋‚ด๊ณ  response๋ฅผ ๋ฐ›๋Š”๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

max : ๊ฐ€์žฅ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ ์š”์ฒญ->์‘๋‹ต์‹œ๊ฐ„

p95 : ์ „์ฒด HTTP ํŠธ๋žœ์žญ์…˜ ์ค‘ ๊ฐ€์žฅ ๋น ๋ฅธ ๊ฒƒ๋ถ€ํ„ฐ 95% (๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์˜ ํŠธ๋ž˜ํ”ฝ)

p50 : ์ „์ฒด HTTP ํŠธ๋žœ์žญ์…˜์ค‘ ๊ฐ€์žฅ ๋น ๋ฅธ ๊ฒƒ๋ถ€ํ„ฐ 50% (์ ˆ๋ฐ˜์ดํ•˜์˜ ๋น ๋ฅธ ํŠธ๋ž˜ํ”ฝ)

min : ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์˜จ ์š”์ฒญ->์‘๋‹ต์‹œ๊ฐ„

 

์ด๋Š” ์„ค์ •์— ๋”ฐ๋ผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณดํ†ต P99๋‚˜ P95 ๊ทธ๋ž˜ํ”„๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ์˜ ํŠน์„ฑ์ƒ ํ•œ๋ฒˆ์”ฉ ํ•‘์ด ํŠ€์–ด ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ๋†’๊ฒŒ ๋‚˜์˜ค๊ฑฐ๋‚˜, ๊ฐ€์ƒ๋จธ์‹ (VM)์˜ ํŠน์„ฑ์ƒ ์ž ๊น๋™์•ˆ ์ œ ์„ฑ๋Šฅ์„ ๋ชป๋‚ด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, max๋‚˜ min์„ ์ฐธ๊ณ ํ•˜๋Š”๊ฑด ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

 

#4. ์‹ค์ œ๋กœ ์ ์šฉํ•  ๋•Œ ํŒ

  • ์‹ค์ œ ์„œ๋น„์Šค์—์„œ๋Š” ๊ฐ€๊ธ‰์  ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ๊ธธ๊ฒŒ ํ…Œ์ŠคํŠธ ํ•˜๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์‹ค์ œ ์œ ์ €๋“ค์˜ ํŒจํ„ด๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ…Œ์ŠคํŠธํ•˜๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.
  • ํฐ ์„œ๋น„์Šค๋ผ ํ…Œ์ŠคํŠธ ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์ด ํ•„์š”ํ•˜๋ฉด ์„œ๋ฒ„ ์—ฌ๋Ÿฌ ๋Œ€๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋งํ•˜์—ฌ Atrillery ๊ฐ™์€ ํˆด์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[ ๋ฉ”์ธํŽ˜์ด์ง€ ์ง„์ž… ] -> [ ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ ์ง„์ž… ] -> [ ์„ ํƒ ํŽ˜์ด์ง€ ] ->
[ ๊ฒฐ์ œ ํŽ˜์ด์ง€ ] -> [ ๊ฒฐ์ œ ์š”์ฒญ ] -> [ ๊ฒฐ์ œ ์™„๋ฃŒ ] -> [ ๋ฐฐ์†ก์กฐํšŒ ํŽ˜์ด์ง€ ] ->
[ ๋ฆฌ๋ทฐ ๋ชฉ๋ก ] -> [ ๋ฆฌ๋ทฐ ์ž‘์„ฑ ]

๋ฌผ๋ก  ์œ„์˜ ๊ณผ์ •๋“ค์ด ์—ฐ์†์ ์œผ๋กœ ์ผ์–ด๋‚˜์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ, ์‚ฌ์šฉ์ž๋ณ„ ์„œ๋น„์Šค ์ด์šฉํŒจํ„ด์„ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“œ๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

 

1. ๋งŒ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์˜ˆ์ƒ ํŠธ๋ž˜ํ”ฝ์„ ์„ค์ •ํ•ด๋ณด๊ณ , ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

2. ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์–ด๋””๊ฐ€ ๋ณ‘๋ชฉ์ด ์ƒ๊ธฐ๋Š”์ง€ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ ๋„คํŠธ์›Œํฌ ๋ณ‘๋ชฉ๊ณผ ๋”๋ถˆ์–ด ์„œ๋ฒ„, DB ์ž์›์— ๋Œ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง(Cpu, memory, I/O)๋„ ์ถ”๊ฐ€๋กœ ํ•ด์ฃผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

3. ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์„œ๋น„์Šค ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๊ฑฐ๋‚˜, ์‹œ์Šคํ…œ ์žฅ๋น„, ์„ค๊ณ„๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

4. ์„œ๋น„์Šค๋ฅผ ์˜คํ”ˆํ•œ ์ดํ›„์—๋„ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์‹ค์‹œํ•˜๋ฉฐ ๊ฐœ์„ ์ ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.

 

 

#5. ๋„คํŠธ์›Œํฌ ๋ณ‘๋ชฉ ๋ฌธ์ œ

์„œ๋ฒ„ ์„ฑ๋Šฅ์€ ์งฑ์งฑํ•œ๋ฐ TPS๊ฐ€ ๋Š๋ฆฌ๊ฒŒ ๋‚˜์˜ค๋Š” ๋„คํŠธ์›Œํฌ์˜ ๋ณ‘๋ชฉ๋ฌธ์ œ๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Latency ๋ณ‘๋ชฉ ๋ฌธ์ œ์™€ ๋Œ€์—ญํญ(Bandwidth) ๋ณ‘๋ชฉ ๋ฌธ์ œ.

  • Latency๋Š” ๋‘ ์ง€์ ์‚ฌ์ด์— ํŒจํ‚ท์ด ์˜ค๊ณ ๊ฐ€๋Š”๋ฐ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„์„ ๊ฑธ๋ฆฌ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (ping)
  • Bandwidth์€ ๋‘ ์ง€์  ์‚ฌ์ด์— ์ดˆ๋‹น ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋Ÿ‰์ด ํ๋ฅผ ์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

์˜จ๋ผ์ธ ๊ฒŒ์ž„์˜ ๊ฒฝ์šฐ ๋ ˆ์ดํ„ด์‹œ๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜์ง€๋งŒ, ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋Ÿ‰์€ ํฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ๊ณต์œ  ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ๋ ˆ์ดํ„ด์‹œ๋Š” ์กฐ๊ธˆ ๋Š๋ ค๋„ ๋˜์ง€๋งŒ, ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์„œ ๋Œ€์—ญํญ์€ ์ƒ๋‹นํžˆ ํฝ๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„ Latency์˜ ๋ณ‘๋ชฉ ๋ฌธ์ œ๊ฐ€ ์˜์‹ฌ๋œ๋‹ค๋ฉด ๋‘ ์ง€์ ์‚ฌ์ด ๋„คํŠธ์›Œํฌ ์‹œ๊ฐ„์„ ์ค„์ผ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•ด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์„œ๋กœ ๋‹ค๋ฅธ ๋‚˜๋ผ์—์„œ ์ ‘์†ํ•œ๋‹ค๋ฉด ๊ฐ ๋‚˜๋ผ์— ์บ์‹œ ์„œ๋ฒ„๋ฅผ ๋‘๋Š” ๊ฒƒ๋„ ํ•ด๊ฒฐ์ฑ… ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„ Bandwidth์˜ ๋ณ‘๋ชฉ ๋ฌธ์ œ๊ฐ€ ์˜์‹ฌ๋œ๋‹ค๋ฉด, ์ด๊ฑด ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•˜์—ฌ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์ธํ„ฐ๋„ท ์„œ๋น„์Šค ์—…์ฒด๋ฅผ ํ†ตํ•ด ํšŒ์„ ์„ ๋ฐ”๊พธ๋Š” ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

 

์ฆ‰ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„ 2๊ฐ€์ง€๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ผ๋‘ํ•ด๋‘๊ณ , ๋‹ค๊ฐ์ ์œผ๋กœ ๋ถ„์„ํ•˜๋Š” ์Šต๊ด€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

  • ๋‚ด๋ถ€ ์‹œ์Šคํ…œ์—์„œ ๋‹ค๋ฅธ ์„œ๋ฒ„, DB ์‚ฌ์ด์— ์ƒ๊ธฐ๋Š” ๋„คํŠธ์›Œํฌ๊ฐ€ ์ง€์—ฐ๋˜๋Š”๊ฑด๊ฐ€?
  • ์™ธ๋ถ€๋กœ ํ˜ธ์ถœ๋˜๋Š” API๊ฐ€ ์ง€์—ฐ๋˜๋Š”๊ฑด๊ฐ€?
  • ์‚ฌ์šฉ์ž์™€ ์šฐ๋ฆฌ ์„œ๋ฒ„์‚ฌ์ด์— ์ง€์—ฐ๋˜๋Š”๊ฑด๊ฐ€?
  • ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์ด ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ๋ถ€์กฑํ•œ๊ฐ€?

 

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ