데브허브 | DEVHUB | [10분 테코톡] 포스티의 비동기, 언제 도입해야 할까?[10분 테코톡] 포스티의 비동기, 언제 도입해야 할까?
- 동기 방식은 외부 API 연동과 같은 느린 작업으로 인해 전체 시스템의 응답 속도가 저하될 수 있습니다. 🐢
- 동기(Synchronous)는 작업을 순차적으로 실행하며, 이전 작업의 완료를 기다린 후 다음 작업을 진행하는 방식입니다. ⛓️
- 비동기(Asynchronous)는 여러 작업을 동시에 실행하며, 작업 완료를 기다리지 않고 결과를 나중에 처리하는 방식입니다. 🚀
- 동기와 비동기의 핵심 차이는 작업 완료 시점과 결과 처리에 대한 관심 여부로, 비동기는 완료를 기다리지 않고 결과를 추후 처리합니다. ⏳
- 사용자 요청의 핵심 기능이 아닌 부가 기능(예: 알림, 통계 수집)은 비동기로 처리하여 사용자 응답 속도를 크게 향상시킬 수 있습니다. 🔔
- 비동기 방식은 멀티 스레드(Multi-Threads)와 논블로킹 I/O(Non-Blocking I/O)를 통해 구현되며, 작업을 동시에 처리하여 효율성을 높입니다. ⚙️
- 외부 API 연동에 비동기를 적용하면 응답 속도와 처리량이 증가하여 사용자 만족도를 높일 수 있습니다. ✨
- Spring의
@Async 어노테이션을 활용하여 외부 연동을 비동기로 처리할 수 있으며, 핵심 기능에 영향 없는 실패는 사용자 경험에 문제가 되지 않습니다. 💻
- 비동기 처리 중 발생할 수 있는 실패는 기록, 재시도, 스케줄링된 사후 처리, 관리자 수동 개입 등을 통해 관리할 수 있습니다. 🩹
- 비동기 도입은 외부 연동 실패가 핵심 기능에 미치는 영향, 응답 시간이 사용자 경험에 미치는 영향, 일시적 실패 허용 여부, 사후 처리 가능성 등을 고려하여 결정해야 합니다. ✅
- 비동기는 일시적 데이터 정합성 불일치, 시스템 복잡도 증가, 멱등성 보장 필요, 디버깅 및 장애 추적 어려움 등의 주의사항이 있습니다. ⚠️