Baabao is a podcast platform which has an app for listener and an web hosting for podcastor.
I develop and implement the back-end work of Baabao Web Service. Besides, I must do some front-end work due to no front-end developers.
八寶 為 Podcast 平台,提供 Hosting 服務及 App,App 主要是提供聽眾收聽用。
在此擔任後端工程師,主要負責規劃及開發後端程式,偶爾兼前端工作。
一、主要技術
* 語言:Python, Django(含 REST Framework), Vue
* 資料庫:Postgresql
* 雲端:AWS (SQS, RDS, DynamoDB, EC2, ElasticCache, Elasticsearch, ELB, ALB, NLB, WAF, Lambda, SES, S3), Elastic Cloud
* 其他:Docker, OAS3, Elastic APM, Locust, JMeter, NGINX
二、重要經歷項目
1. Performance
* Stress test (以 C10K 為目標)
* Application Tuning: 包含 code, query, EC2 bandwidth, LB, NGINX 等調整)
* DB Tuning: 例如 Index tuning, bulk deleting performance
* 簡單的讀寫分離,配合 Read Replica 與 NLB,使讀取負載飆升時,可以水平擴展出多台 Read Only 的 Replica 來分攤負載。
2. Dockerization
* 將 5 支 Daemon Docker 化
* 自動部署機制(在EC2上)
3. 追蹤診斷
Django Debug Toolbar, Elastic APM, ELK, Postgresql amcheck, Postgresql Explain
4. 重構平台程式
* 導入 Django REST Framework 並重構 API
* 自訂 authentication 及 permission
* 自訂 Versioning (不同路由指向不同 class-based View)
* 導入 Integration Test
* 導入 Coverage
5. 新一代收聽次數系統
* 以 Redis HyperLogLog(以下簡稱HLL) 為理論基礎,設計新一代的收聽計次系統。
* 以 AWS SQS 承接流量,Python 撰寫一些 Daemon 來處理 HLL 以及後續的計次、儲存。
6. 各式幕後 Daemon
* 各種清單的產生,節目、單集、推薦、熱門 … 等。
* 收聽資料的處理(參考 5. 新一代收聽次數系統)
* 文章關鍵字提取(使用 keyBERT 套件),此關鍵字為推薦的依據之一。
* 爬取新節目、新單集。
* 發送行動裝置的 push notification (by OneSignal)
7. 其他
* 語音轉文字(使用 Whisper 逐字稿 API)。(僅供 POC 與 MVP 使用,未上線)
* pydub 音檔處理套件。(僅供 POC 與 MVP 使用,未上線)
* Postgresql 主版本升級時,減少 Downtime 之研究。
* Postgresql Logical Replication 研究。(僅研究,未在 production 實行)
* AWS Lambda 撰寫一些 POC 流程的 Code。 (Python 3.8)
* 試用 AWS CodePipeline 作為上述 Lambda POC 程式的 CI/CD 工具
* 實作一些 Vue Component (JSX)。
* Swagger 2 升級為 OAS 3,並架設 Redhat Apicurio 維護文件。
* 以 requarks/wiki 架設公司 Private Wiki。
* 使用 AWS DynamoDB 作為資料儲存體,並按照資料特性設計 primary key。