open:late-binding

Late Binding

결합도를 증가시키는 모듈들을 정적으로 함께 바인딩시키는 것이 아니라
특정한 의존성이 있는 플러그인을 로드해서 런타임 시점에 값을 처리한다.
플러그인은 런타임 시점의 계산 수행 도중에 이름을 가져오는 파이썬 모듈이나 데이터베이스 쿼리,
구성 파일에서 로드되는 ID나 변수 이름이 될 수 있다.

일부 서비스들은 완전하게 브로커로 이관할 수 있다.
필요에 딸 브로커는 레지스트리에서 서비스 이름을 조회하고 동적으로 호출해 결과를 반환한다.
하나의 예로 런타임에 동적으로 서비스를 검색하고 입력 통화를 특정 통화로 변환하는 통화 변환 서비스(USDINR로 부른다)가 있다.
따라서 시스템에서는 항상 같은 코드를 실행하면 된다.
그러면 시스템에는 입력에 따라 달라지는 의존성 코드가 사라지낟.
따라서 변환 로직은 외부 서비스에 있기 때문에 시스템은 필요한 모든 변경에 영향을 받지 않게 된다.

게시/구독 메커니즘은 객체 값이 바뀌거나 이벤트가 게시되면 구독자에게 알려주며, 휘발성 파라미터와 그 값을 시스템에서 분리하는 데 유용하게 사용할 수 있다.
이러한 시스템들은 많은 의존성 코드 및 구조가 필요한 변수, 객체의 변경사항을 내부적으로 추적하기보다는 변경된 값을 클라이언트에게 알리는 외부 API에만 바인딩되도록 한다.
따라서 객체 내부의 동작에 영향을 주고, 트리거하는 변경사항에 클라이언트들이 영향을 받지 않도록 유지할 수 있다.

구성 파일에 이름이나 ID 관련 변수 값을 유지해 객체/변수의 바인딩을 배포 시기로 미룰 수 있다.
값들은 시작할 때 구성 파일의 로드를 통해 소프트웨어 시스템에 바인딩되고 난 후 적절한 객체를 생성하는 코드 안에서 특정 경로를 호출할 수 있다.
이러한 방법은 주어진 이름과 ID로 실행 시점에 필요한 객체를 생성하는 팩토리 같은 객체 지향 패턴과 결합할 수 있다.
따라서 객체에 의존하는 클라이언트를 내부 변경에 영향을 받지 않도록 유지하고 변경 용이성을 증가시킨다.

팩토리 패턴이나 빌더 패턴 같은 생성 디자인 패턴은 객체의 세부사항 생성에 객체를 생성하는 작업을 추상화한다.
이는 종속 객체의 생성 코드가 변경되면 코드가 수정되는 것을 원치 않는 클라이언트 모듈의 관심사를 분리하는 데 이상적이다.
배포/구성 시점이나 조회 서비스를 사용하는 동적 바인디오가 결합하면 시스템의 유연성을 증가시키고 변경 용이성을 지원할 수 있다.


  • open/late-binding.txt
  • 마지막으로 수정됨: 2022/01/19 12:02
  • 저자 127.0.0.1