Re-Architecting Applications (Without a Rewrite!)
summary
Argues a concrete process — Explore, Experiment, Expand, Embrace — for evolving a legacy app without a rewrite, shows Trello’s Kotlin migration reaching 35% Kotlin, and describes a year‑and‑a‑half offline project that ships continuously using feature flags, shims and a offline card service mediator to switch methods per API call. Calls out failures: a month‑and‑a‑half wasted on a bad identifier scheme, misused RxJava patterns, and long‑running dual codepaths that eventually needed consolidation.
AI-written summary · about
chapters (40)
- 0:00Introduction
- 0:35What is Architecture
- 1:17Smaller Architectures
- 1:44Lego
- 2:13Jenga
- 2:33House of Cards
- 2:59ModelViewController
- 3:38New Architecture
- 3:52Rewrites
- 5:26Goals
- 5:59Remodeling a house
- 6:19We are connecting
- 6:36Prevent overly ambitious rewrites
- 7:51Explore
- 9:54Experiment
- 13:01Expand
- 14:43Embrace
- 15:51Disclaimer
- 16:59The Second Goal
- 17:18One Key Observation
- 17:44Parallel Development
- 17:54Three Strategies
- 18:08Decouple Code
- 19:14Feature Flags
- 21:03shims
- 22:07Trello
- 22:58The old architecture
- 25:46CardService Mediator
- 27:00WebSockets
- 28:48Offline Mode
- 30:29Failures
- 30:46Research and Development
- 33:23Experimentation failures
- 37:30Expansion failures
- 41:26Embrace failure
- 42:16Discovering a cool architecture
- 43:32Domainspecific models
- 44:49Models
- 46:00Unidirectional Architecture
- 47:54Conclusion
related talks
40mGrowing Pains: Scaling and Re-architecting Apps Under Fire
31mArchitecture metamorphosis: a real case study
26mApp Architecture Then and Now: Lessons from the DroidKaigi Conference App History
41mRefactoring your legacy applications the right way
54mAre Rewrites always a Bad Idea?
01h 28mApps at Scale: An Industry Discussion
55mAre Rewrites always a Bad Idea?
45mChanging attitudes toward legacy code
