먼저, 알람과 같은 외부 API 또는 모듈을 연결하는 것부터 시작해봅시다. 메세지나 이메일을 보내는 api를 연동할 수 있지만, 이번 튜토리얼에서는 단순히 콘솔을 출력하는 api를 만들어 연결해봅시다.
service, signal, document와 같은 모듈 기능은 바로 외부와 연동하지 않고, 별도로 어댑터를 만들어 이를 주입하는 방식이 바람직합니다. 먼저, /nest 폴더에서 다음과 같이 어댑터를 생성해봅시다.
그런 다음, /nest/index.ts 파일에서 모듈을 내보냅니다.
왜 어댑터 패턴을 사용해야 할까요? 서비스에서 외부 의존성을 직접 import하지 않고 어댑터로 주입하면 다음과 같은 이점을 얻을 수 있습니다:
(1) 테스트 용이성 - 서비스 코드를 수정하지 않고도 테스트에서 어댑터를 쉽게 모킹하거나 교체할 수 있습니다
(2) 유연성 - 서비스 로직을 변경하지 않고도 구현체를 교체할 수 있습니다(예: 콘솔 로깅에서 이메일 알림으로 전환)
(3) 관심사의 분리 - 서비스는 비즈니스 로직에 집중하고 어댑터는 외부 상호작용을 처리합니다
(4) 재사용성 - 동일한 어댑터를 여러 서비스에서 주입하여 공유할 수 있습니다