본문 바로가기

reactive3

Commands and Events(Design Principles of Reactive Systems) Chapter1 에 이런 글이 있다. "With Reactive, you put the notion of events at the core of your system." reactive 프로그래밍을 통해 reactive 한 시스템을 만드는 것은 event driven 이 되는것과 관련이 있다. Commands and Events 먼저 commands 와 events 차이에 대해서 논의해보자. 이 두개는 핵심적인 기본 개념이다(fundamental). Commands 모든 시스템은 명령(commands)을 내린다. 명령(commands)은 사용자가 수행하고자 하는 action이다. 대부분의 HTTP 기반 API들은 클라이언트가 요청하는 명령(commands)을 전달한다. 여기서 action이 아직 수행되지.. 2021. 12. 22.
The synchronous communication drawback(timing) 시간은 종종 잘못 이해되는 이슈다. 두대의 컴퓨터가 통신하고 메세지를 교환할 때, 네트워크를 자연스럽게 신뢰하고 문제 없다고 가정한다. 그런데 만약 통신이 실패하다면? 실패를 전파(propagate)하거나 재시도(retry) 하도록 준비가 되어 있어야한다. 일반적으로 MSA 기반에서 서버 간 통신은 동기식(synchronous) HTTP 를 사용한다. 요청을 보내고 응답을 기다린 후 다음 실행을 계속한다. 동기식 호출은 추론하기 쉽다. 코드를 순차적으로 만들고 하나씩 실행시킨다. 하지만 동기식은 덜 고려되고 자주 오해를 불러일으키는 coupling 형태중 하나인 time-coupling 으로 이어진다. 여기서 파생되는 불확실성과 coupling 에 대해서 알아보자. 동기식으로 요청을 보낼 때 아래 3가지.. 2021. 11. 12.
The dark side of distributed systems 분산 시스템은, 존재조차 모르는 서버 오류로 인해 내 서버를 사용할 수 없는 위험성이 있다. 실패(failures)는 피할 수 없다. 원문에서는 failures 라고 되어 있는데 에러로 인한 장애를 피할 수 없다는 말로 이해했다. 분산 시스템이 클수록 이런 역동성(dynamism) 이 커지고 장애가 날 가능성이 높아진다. 쿠버네티스 월드에서 분산 컴퓨팅에 대한 잘못된 생각(많은 사람들이 옳다고 믿는) 8가지가 있다. 1. The network is reliable 2. Latency is zero 3. Bandwidth is infinite 4. The network is secure 5. Topology doesn’t change 6. There is one administrator 7. Transpo.. 2021. 11. 4.