fliqt-homework/README.md

62 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 人資系統
---
> fliQt 技術挑戰
面試者: Daniel Wang <br>
信箱: igs170911@gmail.com <br>
linkedin: [點我](https://www.linkedin.com/in/hsing-hua-wang-3035081a0/)
---
### 目的
為了面試而建立的專案,了解人選(Daniel Wang)
1. 對於 api 的設計能力
2. 對於功能的理解以及討論能力
3. 資料庫設計的能力(包含結構設計,遷移,以及)
4. 對於快取使用的時機(例如如何防止雪崩,穿透,以及同時訪問等)
5. 對於 golang 專案目錄及架構的了解程度(UT, makefile, docker)
---
### 說明
本次範圍主要會把所有下列項目做完
1. API 設計完成
2. 資料表結構,以及相關索引
3. 完整架構的部分
部分功能因為時間關係,不實作,但是會開出 Interface 出來示意,架構會趨於完整可以後續討論。
---
## 限制與假設
需求需要詳細被討論,因為沒給定,我先假想,有需要可在面試時進一步討論
### 非功能性需求
#### 使用者數量範圍
1. 初期階段:
* 支援 500 ~ 1,000 名員工,涵蓋中小型企業或部門需求。
* 用戶主要為 HR 員工、部門經理,以及少量系統管理員(約占總使用者的 10%)。
2. 成長階段:
* 設計需具備可擴展性,支持 5,000 ~ 10,000 名員工,適合中型企業。
* 具備支援更多 HR 人員和部門經理同時操作的能力。
3. 長期目標:
* 最終設計需能支持 50,000 ~ 100,000 名員工,覆蓋大型企業的需求。
* API 架構需能水平擴展,支持分布式部署及跨區域的數據一致性。
---
#### API 負載假設
1. TPS每秒事務數Transaction Per Second
* 初期設計目標:支援 100 ~ 200 TPS即每秒最多處理 200 次完整請求事務。
* 成長階段:需擴展至 500 ~ 1000 TPS。
* 長期目標:支援 5000 ~ 1,0000 TPS需搭配水平擴展與快取優化。
### 目前先設計支援初期階段因應人力,資源,以及時間考量下較為可行的 standalone 模式,但也要考慮之後可以拆成為服務的方案,以利後續擴充
### 功能性需求