Skip to content

Commit

Permalink
내용 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
greeng00se committed Aug 14, 2023
1 parent e75749e commit a14f424
Showing 1 changed file with 8 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,20 @@ tags: [async, event]

현재 여행을 마치는 경우, 감상을 생성하는 경우 이미지 생성 요청이 이루어진다.
경로 이미지 생성의 경우 위치 정보의 개수에 정비례하여 생성 시간이 증가한다.
따라서 비동기로 이미지 생성 요청을 처리하여 사용자의 경험을 증가시킬 수 있다고 생각했다.
따라서 비동기로 이미지 생성 요청을 처리하여 사용자의 경험을 개선시킬 수 있다고 생각했다.

### 주기능의 응답속도 개선

여행 종료와 감상 생성이 주기능이고, 이미지 생성 기능은 부기능이다.
하지만 현재 여행 종료와 감상 생성의 응답 속도가 경로 이미지 생성 시간에 영향을 받고 있다.
경로 이미지 생성은 비동기 처리하여도 애플리케이션 사용에 문제가 되지 않는다.
소요 시간이 1초 이상 튀는 경우가 존재하기에 이미지 생성을 비동기 처리하고 여행 종료와 감상 생성 기능의 응답 시간을 개선하는 것이 더 중요하다.
소요 시간이 1초 이상 걸리는 경우가 존재하기에 이미지 생성을 비동기 처리하고 여행 종료와 감상 생성 기능의 응답 시간을 개선하는 것이 더 중요하다.

### 확장성 대비

현재 10분 간격으로 위치 정보를 서버에 저장하고 있다.
조금 더 짧은 간격으로 위치 정보를 그리는 경우 하나의 여행에 많은 위치 정보가 저장될 수밖에 없고 따라서 경로 이미지 생성에 걸리는 시간이 더 길어질 수 있다.
따라서 추후에 더 짧은 간격으로 위치 정보를 저장하는 경우 대비 이미지 생성은 비동기로 처리하는 것이 합당하다.
따라서 추후에 더 짧은 간격으로 위치 정보를 저장하는 경우를 대비하여 이미지 생성은 비동기로 처리하는 것이 합당하다.

## 비동기 처리

Expand Down Expand Up @@ -94,7 +94,7 @@ graph LR
```

이를 해결하기 위해서는 인터페이스를 사용하는 방법과 이벤트를 사용하는 방법이 있다.
인터페이스를 사용한다면 다음과 같은 형태로 된다.
인터페이스를 사용한다면 다음과 같은 구조가 된다.

```mermaid
graph LR
Expand All @@ -111,12 +111,12 @@ graph LR
trip --> draw
```

이는 패키지 간 의존성은 해결되었지만, 이미지 경로 저장을 위해 받는 tripId와 같이 논리적인 의존성은 아직 해결되지 않았다.
패키지 간 의존성은 해결되었지만, 이미지 경로 저장을 위해 tripId를 받아야하는 등의 논리적인 의존성은 아직 해결되지 않았다.
따라서 이벤트를 사용하기로 했다.

## 이벤트 사용

스프링의 애플리케이션 이벤트를 사용하면 비즈니스 로직의 비관심사(ex 경로 이미지 생성)을 효율적인 방법으로 처리할 수 있다.
스프링의 애플리케이션 이벤트를 사용하면 비즈니스 로직의 비관심사(ex. 경로 이미지 생성)을 효율적인 방법으로 처리할 수 있다.

### 이벤트 발행

Expand All @@ -137,8 +137,8 @@ public record TripUpdateEvent(Long tripId) {
```

이벤트를 발행할 때 발행하는 이벤트명이 중요하다.
이벤트를 구독하는 도메인의 행위를 담고 있는 이벤트를 발행(ex RouteImageGenerateEvent)한다면 논리적인 의존 관계가 남아있기에 이벤트를 사용하는 의미가 없어진다.
따라서 발행하는 이벤트명은 주기능이 어떤 행위(ex TripUpdateEvent)를 했는지에 대한 정보가 담겨있는 이벤트명으로 발행하는 것이 중요하다.
이벤트를 구독하는 도메인의 행위를 담고 있는 이벤트를 발행(ex. RouteImageGenerateEvent)한다면 논리적인 의존 관계가 남아있기에 이벤트를 적절히 사용했다고 보기 어렵다.
발행하는 이벤트명은 주기능이 어떤 행위(ex. TripUpdateEvent)를 했는지에 대한 정보가 담겨있는 이벤트명으로 발행하는 것이 중요하다.

### 이벤트 구독

Expand Down

0 comments on commit a14f424

Please sign in to comment.