리액티브 선언문(Reactive Manifesto)에 관하여. Reactive Manifesto는 시스템과 소프트웨어가 어떻게 변화하고 발전할 수 있어야 하는지에 대한 원칙을 제시하는 선언문입니다. 이번 포스팅에서는 세 가지 중요한 개념 Value(가치), Form(형태), Mean(방법)을 살펴보겠습니다.
분산시스템에 대해서도 참고하면 좋을 것 같습니다.
분산시스템의 목표
![reactive manifesto 웹사이트 사진]()
- 가치(Value)
1.1 Maintainable
반응형 시스템은 시간이 지나면서도 유지 관리가 용이해야 합니다. 시스템이 지속적으로 발전하고 변화하는 환경에 대응할 수 있어야하므로 개발자는 시스템을 확장하거나 수정할 때 최소한의 비용으로 안정성을 보장해야 합니다.
1.2 Extensible
시스템은 사용자가 증가하거나 트래픽이 폭증할 때에도 확장 가능해야 합니다. 이를 위해서는 적절한 분산 처리와 부하 분산이 이루어져야 합니다. 시스템을 확장할 수 있는 설계를 통해 사용자가 원하는 요구 사항을 처리할 수 있어야 합니다.
1.3 Responsive
반응형 시스템은 응답성이 중요합니다. 사용자가 요구하는 데이터를 즉시 제공할 수 있어야 하며, 시스템이 빠르고 원활하게 동작해야 합니다. 성능 문제로 인한 지연을 최소화하는 것이 핵심입니다. 일정한 지연을 허용하면서 지속적으로 응답할 수 있도록 해야 합니다.
- 형태(Form)
2.1 Elastic
탄력성 있는 시스템은 수요에 따라 자원을 유연하게 조절할 수 있습니다. 갑작스러운 트래픽 증가에도 시스템은 자원을 동적으로 할당하고 분배하여 대처할 수 있습니다. 반응형 시스템은 이러한 요구사항을 지원하는 인프라를 통해 가용성과 성능을 유지할 수 있습니다.
2.2 Resilient
시스템이 장애나 오류가 발생했을 때, 이를 신속하게 복구할 수 있는 능력이 필요합니다. 복원력 있는 시스템은 사이드이펙트를 최소화하고, 정상적인 상태로 돌아갈 수 있도록 설계됩니다. 이때 최소한의 다운타임을 유지하며 장애가 확산되지 않도록 합니다.
- 방법(Mean)
3.1 비동기 메세지 기반(Message Driven)
비동기 메세지 기반 시스템은 각 구성 요소가 직접적으로 연결되지 않고, 메세지를 통해 소통하는 방식을 사용합니다. 이 방식으로 각 시스템들은 시스템의 각 부분이 독립적으로 작동할 수 있게하며 비동기적으로 동작합니다. 또한 장애 발생시에도 다른 부분에 영향을 미치지 않도록 설계됩니다. 또한, 메세지 브로커(큐)의 장애가 발생하지 않는 이상 복구에도 용이합니다.
여기까지 Reactive Manifesto의 세 가지 주요 요소를 확인해보았습니다.
각 각의 개념이 어떻게 서로 결합되어 시스템을 반응형으로 만들고, 더 높은 성능과 신뢰성을 유지할 수 있는지 추가로 학습하면 좋을 것 같습니다.
이들은 분산시스템에서 반드시 필요한 특성들을 충족시키기에 용이하며, 유연하고 확장가능한, 견고한 시스템을 설계할 때 중요합니다.
게다가 높은 사용자 경험(UX)을 제공하는데 도움이 되므로 개념적으로라도 알 고 있으면 좋을 것 같습니다.