Upgrade to Pro — share decks privately, control downloads, hide ads and more …

所以你拿到了那份Code,接下來是什麽? 聊聊如何進化成現代化應用 @ TSMC IT Com...

所以你拿到了那份Code,接下來是什麽? 聊聊如何進化成現代化應用 @ TSMC IT Community Meetup (Taipei) #5

相信大家都喜歡寫新系統,寫新 code。從頭開始沒有包袱當然好, 但當 code 誕生的那一個當下,它就舊了,更不用說以前適合的現在未必合適。
出來混的總是要還,那當我們拿到了那份 code 之後,接下來該做什麼?

在這個分享中,想要和大家一起探討當我們想要將一個 Legacy 應用進化到現代化應用時,應該做什麼,有哪些建議?

Avatar for Alan Tsai

Alan Tsai

March 27, 2025
Tweet

More Decks by Alan Tsai

Other Decks in Technology

Transcript

  1. 大家的定義可能不太一樣 4 “legacy code are any code that does not

    have tests” -- Working Effectively With Legacy Code, Michael Feathers @Alan Tsai 的學習筆記
  2. Agenda 6 ▰Ecosystem => 從哪來,到哪去 ▻所以那份口耳相傳的文件在哪裡 ▻Arc42, C4 Model, Flowchart,

    Sequence diagram, Q42, ADR ▰Code => 如何到達想去的地方 ▻往 Modernize App 進化 @Alan Tsai 的學習筆記
  3. 大家都是哲學家 - 系統三問 8 我是誰 ▰這個應用目前的架構 和技術棧是什麼? ▰它的核心功能和目標 是什麼? ▰是否存在技術債務或

    架構瓶頸? @Alan Tsai 的學習筆記 我從哪裡來 ▰ 它是如何設計與發展起 來的? ▰ 過往有過哪些重大更新 或轉型? ▰ 它的使用者或商業需求 的變化如何影響了系統? 我要到哪裡去 ▰ 是不是要整合新的技術 (例如雲端化、微服務 化)? ▰ 是否需要擴展功能或提 升性能? ▰ 長期目標是重構、漸進 遷移還是完全替換?
  4. 系統的品質指標是哪些? 14 @Alan Tsai 的學習筆記 ISO 25010 – 2011 年版本

    ISO 25010 – 2022 年 draft 版本 Shortcomings of ISO 25010 | arc42 Quality Model
  5. 指標就出來了 17 @Alan Tsai 的學習筆記 Examples of Quality Requirements |

    arc42 Quality Model How to specify quality requirements | arc42 Quality Model
  6. Architecture Decision Record (ADR) 19 @Alan Tsai 的學習筆記 Building Infrastructure

    Platforms GitHub - joelparkerhenderson/architectur e-decision-record: Architecture decision record (ADR) examples for software planning, IT leadership, and template documentation Architectural Decision Records (ADRs) | Architectural Decision Records GitHub - npryce/adr-tools: Command-line tools for working with Architecture Decision Records
  7. 一圖流 20 @Alan Tsai 的學習筆記 Architecture Communication Canvas - Software

    Architecture Canvas Examples - Software Architecture Canvas
  8. Reliable Web App Pattern 27 @Alan Tsai 的學習筆記 Business Context

    • Apply low-cost, high-value code changes. • Reach an SLO of 99.9%. • Define recovery metrics • Adopt DevOps practices. • Create cost-optimized environments. • Improve reliability and security. Architecture & Right Service • Select service support RTO, RPO • Composite SLI to achieve SLO • Data Redundancy to meet RPO Common Code Pattern • Retry pattern • Circuit Breaker pattern • Cache-Aside pattern Configuration • Authorization and Authentication • Auto Deployment/Right Size • Monitor Reliable Web App pattern for Java
  9. Retry Pattern 28 @Alan Tsai 的學習筆記 Retry Strategy • Cancel

    • Retry immediately • Retry after delay Consideration • Impact on performance • Idempotency • Exception type Polly, Resilience4j Retry pattern
  10. Circuit Breaker pattern 29 @Alan Tsai 的學習筆記 Circuit Breaker Pattern

    Recoverability Monitoring Manual override Concurrency …
  11. Health Endpoint Monitoring pattern 34 @Alan Tsai 的學習筆記 Health Endpoint

    Monitoring pattern https://medium.com/@sachinadi424 /keeping-kubernetes-healthy- liveness-and-readiness-probe- explained-661757b825ff
  12. 聊聊我的經歷和感受 40 @Alan Tsai 的學習筆記 • Alan Tsai • 蔡孟玹

    • TSMC => Principle Engineer (8 mos) • 91APP => Software Architect (2 yrs 4 mos) • Wishing-Soft => CTO ( 1 yr 3 mos) => Software Architect ( 2 yrs 4 mos) • Cloud Riches => Technical Manager (8 mos) • HyWeb => Senior Engineer (4 yrs 9 mos) • Doggy Digital Creative Inc => Web Dev (9 mos)
  13. 41 如果想要挑戰 Modernize Application 任何一項有相關經驗,想要挑戰和賺錢的人,歡迎來投 1. Frontend (React) 2. Backend

    (Java) 3. DBA (MariaDB) 4. Software Architect 工作地點:台北、新竹 如果想要知道更多也歡迎和我聊聊
  14. CREDITS Special thanks to all the people who made and

    released these awesome resources for free: ▰ Presentation template by SlidesCarnival ▰ Photographs by Startup Stock Photos 47 @Alan Tsai 的學習筆記