비동기로 시스템을 연동하면 구조가 더 복잡해지고, 두 시스템 간에 데이터가 일시적으로 불일치하는 시기가 발생하므로 신경 쓸게 많아짐. 하지만 성능, 안정성, 자율성 측면에서 유리한 사항도 존재.
비동기로 구현했을 때 발생하는 복잡도 증가보다 얻는 이점이 더 크다면 비동기 연동을 고려해보자.
비동기 방식으로 해도 크게 문제가 안되는 예
- 쇼핑몰에서 주문이 들어오면 판매자에게 푸시 보내기
- 학습 완료시 학생에게 포인트 지급
- 커텐츠 등록할 때 검색 서비스에도 등록
- 인증 번호 요청 시 SMS로 인증 메시지 발송 이런 예시들은 공통 특성 가짐.
- 약간의 시차 발생 괜찮음
- 일부 기능은 실패해도 재시도 가능. 예를 들어 푸시 발송, 문자 발송 등
- 연동 실패시 나중에 수동으로 처리할 수 있는 기능도 있다. 관리툴등 사용해서…
- 연동 실패했을 때 무시해도 되는 기능도 있음. 주문 푸시 알림. 주문이 들어왔을 때 판매자에게 푸시 안가도 판매에는 별 문제가 없다.
비동기 연도은 다양한 방식으로 구현 가능
- 별도 스레드로 실행
- 메시징 시스템 이용
- 트랜잭션 아웃박스 패턴 사용
- 배치로 연동
- CDC 이용