軟體工程筆記 portfolio

[專案成就]共用發信API

開發共用 email 寄送 API 中介層,統一接口、格式與錯誤處理;技術棧為 C# .NET Core 與 AWS。

  • C#
  • .NET Core
  • AWS
  • API
[專案成就]共用發信API
共用發信 API 架構示意

專案概述

項目 說明
what

共用發信 API 是讓開發人員可以透過打 API 的方式寄出 email 信件的軟體中介層(Middleware)。

when

開發時程:2023/01/03 – 2023/01/07

why

希望開發人員未來在進行 email 信件寄送時,可以有一個共同的接口、共同的格式、共同的錯誤例外處理。

how

專案 A 已有使用 AWS queue 的寄信功能,故把專案 A 的功能移植至專案 B 使用。

  1. 增加 API 接口層:依照 API Guideline 設計接口層。
  2. 整合信件種類:依照 Subject Naming Rule 與 Billing Send Mail Training Material 進行信件種類邏輯分類與整合。
  3. 增加 log 訊息。
  4. 讓 API 回傳 queue 是否收到的結果。
effect
  • 便捷:開發人員如需寄信,透過各語言自行打 API 即可,不必另外安裝 AWS 相關寄信套件。
  • 統一格式接口:統一格式,開發較不易出錯,建立團隊發信共識;未來邏輯層或 AWS attribute 調整時,只需修改此區塊。
  • 統一例外處理:錯誤 request 有卡控,並提供友善回覆方便 debug,避免錯誤傳遞到 AWS。
  • 節省:相對各專案各自開發寄信功能,統一 API 可減少重工。

過程經歷

專案挑戰:跟原開發人員的關係

Status

原本開發專案 A 的開發人員個性比較暴躁,且面對男生較不想理會。

Task

詢問專案 A 的開發人員,確認需求功能放置位置。

Action

  1. 在該人員沒有在處理其他事情時,客氣詢問。
  2. 對方給出資訊後,立刻查看專案 A 並自行思考。

Result

後來成功搬移所有相關系統功能。

Think

工程師團隊男性過多時,有時男工程師較不想面對男生無可厚非,但過於顯露對團隊運作不利。建議維持團隊性別平衡,或由主管/組長以適當方式點破並改善。

技術挑戰:共用 Function,使用方式不同

Status

專案 A 已有 AWS queue 寄信功能,要把已完成功能移植到專案 B 使用。

Task

搬移時遇到部分 Function 功能相同,但使用方式不同。

Action

將引用到的 function 調整成專案 B 的使用方式。

Result

搬移成功,測試完成,可正確執行。

Think

做功能搬移時,除了語言一致,派工者也應先確認相關 Function/Library 是否相同。

技術挑戰:異步 Function 轉換為同步 Function

Status

移植專案 A 的 AWS queue 寄信功能時,原實作為非同步寫法。

Task

將非同步功能轉為同步,以便取得 Queue 回應訊息。

Action

接口層(Controller)使用 Task.Wait,等待 function 回傳後再繼續運行。

Result

修正完成。

Think

依照不同使用情境,選擇同步或異步轉換。