---
title: Lab Meeting Minutes 2024/03/20
tags: lab_meeting
---
> Outline
> [TOC]
---
# PERAL Lab Meeting
- 時間:113 年 3 月 20 日 17:00
- 地點:線上
- 線上會議連結 : [Online](https://meet.google.com/zfi-zmnc-qfw)
- 出席者:吳坤熹老師、謝萬霖、劉怡君、田蕙瑜、沈家正、梁宇騰、劉冠伶、繆亭霄、蘇翊荃、陳嘉璐、陳品妤、陳姿綾、陳姿澖
- 會議主題:[API Gateway](https://docs.google.com/presentation/d/19Fm8g7tMDsGbhE1eltpkLufwwrXmYsXfEfSUHIETck8/edit?usp=sharing)
- 主講者: 陳品妤
- 主記: 劉冠伶
## 會議內容
### What is an API gateway
- Microservices
- 把一個 service 拆成很多小的 service,像是加密也是一個 microservice, 解密也是...
- 優點:研發階段,若要修改就不需要一次大改。
- [name=Solomon] 這和一個程式拆成很多 function 有什麼不同?
- [name=Ellie] 在服務的方面作用很像,但還有更多優點。每次產品更新可以不用下架原本服務,等到可以上線在直接替換。
- 
- API gateway 可以自動幫我們導到所需要的 microservice。
### Advantages of API gateway
- 根據我的需求 API gateway 會自動導到需要的服務
- 可以用一個 API gateway 當 publice ip,後面的 microservice 可以全部都是 private ip。攻擊者也無法到達 private ip。
- 每個服務都需要有安全機制的驗證,如果有 API gateway 就可以統一在連上 gateway 時做安全機制驗證即可。
- load balancing
- rate limiting
- 主要優點:安全性, load balancing
- 
### Implementation of API Gateway
- install API gateway
- Kong database
- port 8000: client entry (用來看的)
- port 8001: Admin API (用來管理的)
#### Route and service
- Kong gateway: route + service
- 
- Service
- **create**: `curl -i -s -X POST http://localhost:8001/services --data name=example_service --data url='http://httpbin.org'`
- **update**: `curl --request PATCH --url localhost:8001/services/example_service --data url=[new_url] --data tags="tutorial"`
- **check services**: `curl -X GET http://localhost:8001/services`
- Route
- **Create**: `curl -i -X POST http://localhost:8001/services/example_service/routes --data 'paths[]=/mock' --data name=example_route`
- https 可能會因為安全性而被擋掉
- **Check route**: `curl -X GET http://localhost:8001/services/example_service/routes/example_route` (確認 route 有沒有建立)
- **Update**: `curl --request PATCH --url localhost:8001/services/example_service/routes/example_route`
#### load balancing
- 8001/upstreams 在這裡建立 load balancing
- `curl -X POST http://localhost:8001/upstreams --data name=example_upstream`
- 
### Worry of API Gateway
1. 要怎對好幾個 API gateway 做 load balancing
2. 如果API Gateway 驗證機制被攻破,所有服務都有安全性問題
---
### 建議&問題
1. [name=Ryan] P7 可以重新講解 Authentication 嗎?
Ans: [name=Ellie] 中間會有一些 token 去做驗證。
1. [name=Ryan] 為甚麼要跟外部的人 (public net) 去作驗證?
Ans: [name=Ellie] 我也覺得很有道理,後續會再去確認這個問題。
1. [name=Selena] microservice 與 function 的差別,function 也可以改完再更新上去就好了,function 也可以再細分更小的功能,所以無法理解這兩者的差別。
Ans: [name=Ellie] 我覺得可能是在不同的機器上吧,像是你要做 load balancing 你就可以做在不同的機器上。但 function 只能跑在一台機器上。
Ans: [name=Solomon] microservice 與 function 最大的不同就是 3 個 process 跑在一台機器上還是跑在三台機器上。從前就有某一個 function 在某一台執行,這種行為就是 remote procedure call (RPC)。
1. [name=Selena] 聽起來又跟 container 很像?
Ans: [name=] Container 只是實作 mircoservice 的工具
1. [name=Yukino] p5 左邊三種的差別在哪,為甚麼最後一個要經過 WebApp MVC?
Ans: [name=Ellie] 目前也不清楚
Ans: [name=Ryan] 上面是用 JSON 去叫 API, MVC 可能是前端的 server,所以才會經過 MVC,最後有點像是去瀏覽一個網頁。
1. [name=Louise] default port 能不能更換?
Ans: [name=Ellie] 應該是可以更換的,詳情可以去看 document,但應該會比較麻煩,應為 default 會有一些本來就有的 service。
1. [name=Louise] 我們在設定的時候都是用的 localhost,那我可以遠端設定嗎?
Ans: [name=Ellie] 在同一個網域應該是可以的
Ans: [name=Solomon] 老師猜想正好相反,預設應該會只接受 local。
1. [name=Augest] P7 microservice encryption 是指?
Ans: [name=Ellie] 當初畫這個圖是用品妤的研究所畫的,所以才會 en/decryption
1. [name=Augest] 假如我今天有 60 microservice 想要刪除,有沒有更快的方法? 例如可以直接餵一個 JSON 檔然後直接刪掉。
Ans: [name=Ellie]目前還不知道有沒有更快的方法,或許可以寫一個 script,或許可以去研究一下 GUI。會再去研究一下。
1. [name=August] 附上執行結果會更清楚,p2 implementation 打錯字
1. [name=Ashley] https 無法成功,但是https不是比較安全嗎?為什麼?
Ans: [name=Solomon] 品妤架的 kong API Gateway 憑證還沒設好。
1. [name=Ashley] p.12 刪除指令只要這樣就是可以成功嗎?
Ans: [name=Ryan] 沒有加 http? 要先把 route 刪掉才能把 service 刪掉
1. [name=Jiazheng] P7 拼字錯誤
Ans: [name=Solomon] 麻煩大家記得去跑一下「工具」 ->「拼字檢查」
1. [name=Jiazheng] load balance 演算法剛好 Kong 是幫你設定成 round robin 所以才會有 load balancing 更新的不同,
1. 要 delete route 再 delete service 嗎 [name=Angela]
Ans: 對. [name=Ellie]
1. [name=Angela] 除了 8000, 8001, 8002 以外還有其他的 default port 嗎?
Ans: [name=Ellie] 有網路的資料有其他的 port,但應該不是核心功能,因為還沒用到所以沒有特別的研究。
1. [name=Phoebe]一般實作上會將 API gateway 建在 docker host 上嗎?還是你是用 container 建的?
Ans: 建在 Container 上面,
,然後做 port 的 mapping。
[name=Phoebe] 今天的操作會讓我以為你不是建在 container 上,而是直接跑在 docker host 上。
1. [name=Phoebe] Demo 下的指令可以先準備好,這樣才會不一直與簡報上指令有出入。這樣可以增加 demo 的流暢度。
大家請記取今天的教訓。Demo的指令要寫下來,直接 copy-and-paste 可以成功。不要喜歡臨場發揮。否則往往忽略一個細節就導致失敗。[name=Solomon]
1. [name=Edgar] 投影片指令的顏色可以有對應,這樣沒聽到報告只看簡報的同學,也能順利執行指令。
1. [name=Ellie] 演算法有沒有其他的推薦還是也是 round robin?
Ans: [name=Miller] 目前研究起來大部分也都是用 round robin。
[name=Solomon] 有空就把 OS 拿出來研究一下,裡面還有很多方法,round robin, scheduling, 等等的。 Miller 與 Ellie 兩位的研究很能互補,建議之後的研究可以互相交流一下
1. [name=Solomon] P5 MVC 是什麼的縮寫?要用別人的圖就要了解,並且去查一下縮寫的全名是什麼,Model View Controller。
## 待追蹤事項
1. [name=]
## 臨時動議
1. 三月已經快要結束了,四月從大四、碩一這樣輪下去。
---
散會結束時間: 2024/03/20 19:03