Top 10 Architecture Characteristics #
1. Scalability #
Scalability is a achievable with horizontal/vertical scaling of the machine.
Traffic Pattern #
Understand the traffic pattern of the system. :star:
Pattern | |
---|---|
Diurnal Pattern | Traffic increases in the morning and decreases in the evening for a particular region. |
Global / Regional | Regional Heavy usage of the application. |
Thundering Herd | These could occur during peak time or in densely populated areas. |
์ฐ๋ฆฌ ์์คํ ์ ํธ๋ํฝ ํจํด์ ์ดํดํ์. :star:
- ์ผ๋ฐ์ ์ธ ํจํด(๋ฎ์ ํธ๋ํฝ์ด ์ฆ๊ฐํ๊ณ ์ ๋ ์ ๊ฐ์ํ๋ ํจํด)
- ์ง์ญ ํจํด(์ง์ญ ๋ณ๋ก ํธ๋ํฝ์ด ์ง์ค๋๊ณ , ์ง์ค๋์ง ์๋ ํจํด)
- Thundering Herd (ํผํฌ ํ์, ์ง์ญ์ ์ํด ์์ฒญ์ด ๊ธ๊ฒฉํ๊ฒ ์ฆ๊ฐํ๋ ํจํด)
Elasticity #
Ability to quickly spawn a few machines (for handling) and shrink when the demand is reducing.
Latency #
Ability to serve the request as quickly as possible.
2. Availability #
The proportion of time that a system is functional and working.
It is measured as a percentage of uptime.
3. Extensibility #
The ability to extend a system.
The cost about effort required to implement the extension.
Modular / Reusability #
์๋ต
Pluggability #
Ability to easily plug in/out.
(๊ฐ์ธ์ ์ผ๋ก) ์ต๊ทผ์ ์ด Pluggability ์ธก๋ฉด์ ๋ํด์ ๊ณ ๋ฏผํ๋ค.
4. Consistency #
์๋ต
5. Resiliency #
The ability to handle and recover from accidental and malicious failures.
Recoverability #
- DR(Disaster Recovery) : DR consists of best practices designed to prevent or minimise data loss and business disruption resulting from catastrophic events.
Design Patterns #
- BulkHead : Isloate elements of an application into pools so that if one fails, the others will contine to function. (์ฅ์ ๋ฅผ ๊ณ ๋ฆฝ์ํค์.)
- Circuit Breaker
- Leader Election : Elect leader instance that can coordinates, manages other instances.
6. Usability #
- Accessibility : Make the software available to people with the broadest range of characteristics and capabilities.
- Learnability : How easy users can learn how to use the software?
- API Contract : API Contracts can help to understand easily
7. Observability #
The ability to collect data bout program execution, internal states of modules, and communication between components.
To improve this, use various logging and tracing techniques, tools.
- Logging : event logs, transaction logs, message logs, server logs, …
- Alerts & Monitoring
- L1 / L2 / L3 : Setup on-call support process for L1 / L2.
L1 / L2 / L3 ํ๋ก์ธ์ค๋ ํฅ๋ฏธ๋กญ๋ค. :star:
์ฐพ์๋ด๋ณด์.
8. Security #
auditability, legality, authentication, authorization, …
9. Durability #
- Replication
- Fault Tolerance
- Archivability
10. Agility #
It has become todayโs buzzword when describing a contemporary software method.
- Maintainability
- Deployability
- Configurability
Conclusion #
๋ชจ๋ ์ํคํ ์ฒ์ ํน์ง์ด ํ์ํ ๊ฑด ์๋๋ค. (๋ฐ๋๋ก ๋ชจ๋ ํ์ํ ์๋ ์๋ค.)
์ด๋ ๊ฐ๋ฐ์(์ํคํ ํฐ)๊ฐ ํ์ฌ ํ๋ก์ ํธ์ ๋ง๊ฒ, ๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ์ ์ ํ๊ฒ ์ ํํ๊ณ ์ค๊ณํ ์ ์์ด์ผ ํ๋ค.
๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ๋ค์ ๋์ ธ๋ด๋ ์ข์ ๊ฒ์ด๋ค.
- ์ด๋ ์ ๋ ์ฒ๋ฆฌ๋์ด ํ์ํ์ง?
- ๋ณด์์ ์๊ตฌ ์ฌํญ์ ์๋์ง?
- ์ฝ๋ ์ ์ง๋ณด์(๊ธฐ๋ฅ ์ถ๊ฐ, ๋ณ๊ฒฝ, ์ญ์ )๋ ์ฌ์ด์ง?
- …