이번에 졸프에서 비동기+이벤트 방식으로 ML 벡터 생성 호출을 하게 되었다. 근데 동기와 비동기의 차이를 제대로 알지 못해서 공부해보기로 결정!
// 동기 예시
String data = callApi(); // 응답이 올 때까지 대기
System.out.println(data); // 이후 코드 실행
장점
단점
// 비동기 예시
CompletableFuture.supplyAsync(() -> callApi())
.thenAccept(data -> System.out.println(data));
장점
단점
| 구분 | 동기(Sync) | 비동기(Async) |
|---|---|---|
| 실행 방식 | 순차 실행 | 요청 후 대기 없이 다음 실행 |
| 응답 대기 | 응답 받을 때까지 대기 | 응답이 오면 알림 |
| 구현 난이도 | 쉬움 | 복잡 |
| 장점 | 직관적, 순서 보장 | 빠른 처리, 자원 효율 |
| 단점 | 느림, 자원 낭비 | 복잡성, 예외 처리 어려움 |
롤백이란?
데이터베이스에서 실행한 작업을 취소하고, 이전 상태로 되돌리는 것
트랜잭션과의 관계
트랜잭션(Transaction): DB 작업을 하나의 단위로 묶은 것
롤백(Rollback): 트랜잭션을 취소하고 이전 상태로 되돌림
커밋(Commit): 트랜잭션을 확정하고 변경 내용을 저장