---
# System prepended metadata

title: Eatgether 網站分析
tags: [Analysis]

---

---
title: Eatgether 網站分析
tags: Analysis
description: Eatgether 網站分析
---

# Eatgether 網站分析

## 1. 網站想法
* **UI/UX 方面**
    * 開啟邀約詳細內容是以開新分頁的方式，用戶體驗度較差

* **使用上問題**
    * Iphone11 版本14.0  Web板登入異常(無法登入)
    * 聊天室功能無法使用

* **技術部分**
    * 驗證碼可以一直取得，有鎖定時間內最大次數，取得過的每組都能使用一次
        * 個人想法 >> 可以於/v3/members/authenticate 增加已達上限次數的說明及秒數
    * login頁面中關於國家的取得採用free source的 ip2c.org
        * 個人想法 >> 可以將此部分列入後端進行處理，若該網站服務crash，則可以由後端設定另外幾組預備的服務進行使用

## 2. Golang開發問題情況

* **案例一**
    * 問題：
        * 面對同一時間，大量的訂單請求，前公司php版本移植Go的程式，並無法有效處理需求
    * 解決方案：
        * 以grpc建立一套訂單微服務系統，消化前公司遇到的情況
          並且將訂單紀錄拆分，資料紀錄改為批次消化處理
    * 優勢：
        * 解決系統使用高峰潮，造成玩家訂單的阻塞情形進行改善
        * 而後延伸將訂單紀錄系統進行了佇列設計NSQ(批次消化的改良)
    
* **案例二**
    * 問題：
        * Go，撰寫Router路由時(因規則有定coding style)，故擁有一致性
          想製作一個dependency injection的註冊器
    * 解決方案：
        * 針對gin進行了method of receiver的注入，並保留其彈性設計
          而後開發的工程師，只需撰寫新的method
          就會根據method名稱將大駝峰改為下底線的路由名稱
    * 優勢：
        * 開發上，由於MethodName具有Coding規範，路由名稱也相對的規範完畢
    * github：
        * https://github.com/z9905080/gin-di-router

* **案例三**
    * 問題：
        * Websocket服務
        * 使用 [olahol/melody](https://github.com/olahol/melody) 框架時，遇到在大量broadcast時，如果自行蒐集玩家連線
          有機會造成記憶體洩漏(memory leak)，session pointer無法被釋放
    * 解決方案：
        * 將pub/sub模式導入至fork專案 [z9905080/melody](https://github.com/z9905080/melody)
          解決了hub大量消息廣播時會阻塞的問題，也不需自行蒐集user session
    * 優勢：
        * 確保client在disconnect時，資源會被完全釋放
    * github：
        * https://github.com/z9905080/melody

* **案例四**
    * 問題
        * 資料庫想由Mysql轉移至MongoDB
    * 解決方案：
        * 設計出Domain Drive Design的api框架
        * 保留其MVC的特性，將所有資料層封裝
        * 可隨時透過更換instance的方式進行engine替換
    * 優勢：
        * 系統移植方便，不必重造輪子
    *  github：
        * https://github.com/z9905080/dddframework
