비동기

시스템 간 강결합은 어떻게 없앨 수 있을까? 쇼핑몰에서 구매 취소를 하면 환불 처리가 되어야 한다. 이때 환불기능을 실행하는 주체는 주문 도메인이 될 수 있으며, 환불 기능을 실행하기 위해서 환불 도메인 서비스를 파라미터로 전달받아 실행할 수 있다. class Order { // 외부 서비스 실행을 위해 도메인 서비스를 파라미터로 전달 받음 fun cancel(refundService: RefundService) { verifyNotYetShipped() this.state = OrderState.CANCELED this.refundStatus = State.REFUND_STARTED try { refundService.refund(getPaymentId()) this.refundStatus = Stat..
Blocking/Non-Blocking 블로킹/논블로킹은 호출되는 함수가 바로 리턴이 되는지 안되는지에 대한 관점이다. 호출된 함수가 바로 리턴해서 호출한 함수에게 제어권을 넘겨주고, 호출한 함수가 다른 일을 할 수 있는 기회를 준 다면 NonBlocking 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기한다면 Blocking Synchronus/Asynchronous 동기/비동기는 호출되는 함수의 작업 완료 여부를 누가 신경쓰느냐에 대한 관점이다. 호출되는 함수에게 callback을 전달해서, 호출되는 함수의 작업이 완료되면 호출되는 함수가 전달받은 callback을 실행하고, 호출하는 함수의 작업 완료 여부를 신경쓰지 않는다면 Asynchronus 호출하는 ..
깡냉쓰
'비동기' 태그의 글 목록