Software Architecture

Software Architecture

Creator
Creator
Seonglae ChoSeonglae Cho
Created
Created
2020 Sep 11 13:54
Editor
Edited
Edited
2026 Mar 9 15:35

Organize layers hierarchically while reducing module dependencies (coupling) and increasing code cohesion

Spaghetti Code: No code layer & consistency, complex dependency
Rather than developing linearly in response to ad-hoc requests, it's much faster in the long run to pursue accelerated development through structural design, even if it delays immediate development. An ideal step-function progress graph that continuously presents new structures is optimal
  • Cohesion - Similar code with related responsibilities should be grouped together
  • Coupling - Modifying one feature should require changes to only one piece of code
Flexibility over time determines where design concepts should live. What changes frequently belongs in the data, while the schema of the data should fix the standard of what never changes. Code changes more easily than schema but less easily than data. UI is easy to change but not as easy as data.
Software Architectures
ย 
ย 
Software Architecture Notion
ย 
ย 
ย 
One thing that should be learned from the Bitter Lesson is the great power of general-purpose methods, of methods that continue to scale with increased computation even as the available computation becomes very great. - Richard Sutton
ย 
ย 
Hexagonal Architecture
๊ฐœ์š” ์ด๋ฒˆ ํฌ์ŠคํŒ… ์—์„œ๋Š”, ์œก๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜(Hexagonal Architecture) ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ  ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์œก๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์šฉ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ณ„์ธตํ™” ์—†๋Š” ์ฝ”๋“œ = ์ŠคํŒŒ๊ฒŒํ‹ฐ ๋จผ์ € ์œก๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์ „์—, ์ œ๊ฐ€ ์ฒซ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์„๋•Œ์˜ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ชจ ๊ธฐ๊ด€์—์„œ ์•ˆ๋“œ๋กœ์ด๋“œ APK ๋ณด์•ˆ์ทจ์•ฝ์  ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š” ์„œ๋น„์Šค๋ฅผ ์ง„ํ–‰ํ–ˆ์„๋•Œ, ์ €๋Š” ๋ชจ๋“ˆํ™”๋‚˜
Hexagonal Architecture
ย 
ย 
ย 

Recommendations