본문 바로가기

소프트웨어6

[2] Observer Pattern 옵저버 패턴이란 "자신의 상태"가 변했을 때 다른 Observer (Listener) 들에게 notify 할 수 있는 객체(주제)를 정의합니다. 한 객체의 상태가 바뀌면, 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 "일대다" 의존성을 정의합니다. 제가 처음에 이 옵저버 패턴을 공부했을 때 어려웠던 점이 옵저버 라는 이름에 너무 집착해서 어떤 대상이 다른 대상을 Observe, 즉 관찰하고 있어야 하는 것 아닌가? 라는 생각에 구독 주제가 되는 대상이 실제로 다른 대상들에게 알리는 메소드를 가지고 있는 것이 잘 이해가 되지 않았습니다. 각 객체간 소통을 할 때 객체에 정의되어 있는 메소드를 이용하는데, 옵저버 패턴에서는 "알리는 객체" 가 "구독하는 객체"의 메소드 하나만 알.. 2020. 10. 22.
[1] Reactor Pattern 리액터 패턴이란 동시적으로 발생하는 I/O 혹은 이벤트들을 서비스 핸들러를 통해 Demultiplexing하고 그 결과들을 각각의 할당된 Request Handler 를 통해 수행하는 패턴입니다. 우선 이 패턴에 대해서 알아보기 전에, 필요한 사전 개념들과 시나리오에 대해 이야기 해봅시다. Blocking I/O 일반적인 Blocking I/O 에서는 해당 작업이 수행될때까지 프로세스나 쓰레드가 작업을 멈추고 기다립니다. 그러다보니, Blocking I/O로 구현된 웹 서버는 여러 요청을 하나의 쓰레드에서 수행할 수 없게 됩니다. 대표적인 예로 버전 2.x Django가 있습니다. (3.0부터는 코루틴 방식으로 비동기 프로그래밍이 가능하다고 합니다) Blocking I/O를 사용한 채로 여러 요청들을 동.. 2020. 10. 19.