--- 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] 在服務的方面作用很像,但還有更多優點。每次產品更新可以不用下架原本服務,等到可以上線在直接替換。 - ![image](https://hackmd.io/_uploads/ryDbdmu06.png) - 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 - ![image](https://hackmd.io/_uploads/SkmmKmdC6.png) ### Implementation of API Gateway - install API gateway - Kong database - port 8000: client entry (用來看的) - port 8001: Admin API (用來管理的) #### Route and service - Kong gateway: route + service - ![image](https://hackmd.io/_uploads/rkrTY7_Cp.png) - 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` - ![image](https://hackmd.io/_uploads/H1Vp7NuRp.png) ### 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 上面,![圖片](https://hackmd.io/_uploads/B1NtkHORT.png) ,然後做 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