yun-si / git-practice

0 stars 0 forks source link

Week 03 回覆 #3

Open azole opened 1 month ago

azole commented 1 month ago

HW A

實體距離:距離越近,延遲通常越低

確實,但一定媽?怎麼測量延遲 (latency) ?

HW B

有寫 promise 版本很好,那 callback 跟 promise 這兩種寫法都能達成一樣的結果,但你對這兩種寫法,有什麼看法?

HW C

非常好,我沒有什麼要問的,補充一個小點,在 .env 中,有時候可以區分出是不是機敏資料,不是的,其實在 .env.example 中也會直接寫上去,例如一份 .env.example 很可能是這樣:

PORT=3000
DB_HOST=localhost
DB_NAME=web
DB_USERNAME=
DB_PASSWORD=

以上面這個檔案為例,PORT, DB_HOST, DB_NAME 被認為不是機敏資料,會被放在環境變數設定,只是因為不同環境需要不同設定而已。

yun-si commented 1 month ago

HW A

目前有想到兩種實驗流程,測試是不是距離比較近的延遲比較低

第一種 - ping

  1. 寫一個簡單的 API
  2. 選定一個規格的 EC2 instance
  3. 將 API 架在挑選的幾個 region 上,例如臺北(local zones)、不在臺灣但還在亞洲範圍的東京以及比較便宜的美國東部 (維吉尼亞北部) 或歐洲巴黎
  4. 選定時間段,例如早上、中午、晚上各選一個時間進行實驗
  5. 固定封包發送的數量,使用 ping 指令去測量封包從本地設備到目標主機之間的往返時間,例如: ping -c 100 google.com

    PING google.com (142.251.42.238): 56 data bytes
    64 bytes from 142.251.42.238: icmp_seq=0 ttl=115 time=10.032 ms
    64 bytes from 142.251.42.238: icmp_seq=1 ttl=115 time=5.845 ms
    64 bytes from 142.251.42.238: icmp_seq=2 ttl=115 time=9.759 ms
    ...
    
    --- google.com ping statistics ---
    10 packets transmitted, 10 packets received, 0.0% packet loss
    round-trip min/avg/max/stddev = 5.845/9.459/10.491/1.242 ms
  6. 利用回傳值(平均往返時間、標準差)作分佈圖進行比較

第二種 - 第三方工具

  1. 選定一個自己知道主機在哪裡的服務(例如政大官網),也可以自己寫一個簡單API 架在雲端服務上
  2. 使用工具 pingdom 從不同地區去呼叫 API
  3. 這樣就可以比較不同地區的 load time image

政大官網來實驗

從日本東京呼叫,結果如下:

image

從德國法蘭克福呼叫,結果如下:

image

可以發現從德國呼叫的 load time 會比較長

小總結

兩種實驗方式測試的東西不太相同,第一種 ping 是單純測試封包在本地設備和目標主機間的往返時間,第二種,我選的第三方工具是從發送 request 到收到 response 並渲染出來的時間。

如果目的是想測試,受眾是臺灣的人,服務架在遠一點的 region 延遲會不會差很多,可以使用第一種實驗方式;如果是單純想實驗看看是不是真的距離比較遠延遲就比較高,第二種也可以。

yun-si commented 1 month ago

HW B

我覺得如果同一份 code 有很多邏輯都是需要「等待前一步完成才能進行下一步」,例如需要按順序呼叫很多 API,那可以寫一個通用的 function 搭配 promiseawait,讓程式更容易閱讀。

但如果這一個 .js 檔很簡單,可能只是簡單的表單送出按鈕,那麼兩種其實都可以。

HW C

想問問我的理解跟老師的回覆一不一樣

.env 中不一定都是機敏資料,有一些不是機敏資料,但因為不同環境需要使用不同值,所以也被放在 .env 中

是這樣嗎?

謝謝老師!