☞ 파일과 텍스트 함께 전송하기 ← 이 방법을 지양해야 하는 이유
파일 첨부가 가능한 게시글 등록 처리 시, 파일 등록 / 텍스트 등록 처리 컨트롤러를 분리하는 것이 좋다고 함.
파일을 포함한 게시글 등록 시, 클라이언트 쪽에서 요청을 2번 보내는 거.
텍스트 데이터는 '텍스트만' 처리하는 컨드롤러로 / 파일은 '파일만' 처리하는 컨트롤러로
근데 이미 파일 업로드 로직은 분리되어 있고, 서비스단에서 해당 메소드를 끌어와서 사용하는데 뭐가 문제인지 감이 안 와서.. 개발자 분들 계신 카톡방에 '컨트롤러'를 쪼개야 하는 이유를 여쭤봄
바이너리 파일과 json데이터를 별도로 처리해야 하는 이유
- 파일 업로드가 여러 기능에서 필요할 때, 필요 시마다 파일 업로드 메소드를 끌어와서 사용할 경우 해당 로직이 여기저기 분산됨
→ 유지보수 어려울 수 있음더보기파일 처리 컨트롤러를 분리하면
게시글 뿐만 아니라 그 외 기타 파일이 포함된 요청은 파일처리컨트롤러+필요컨트롤러 로 요청을 보내면 되는 것
내가 한 방식(파일+텍스트를 한 컨트롤러에서 처리)은
파일 처리에 수정이 필요하다거나 할 때
파일 처리를 포함한 컨트롤러와 서비스(게시글, 프로필 등이 있겠지)를 모두 수정해야 하지만
파일 처리를 한 컨트롤러에서만 처리하게 되면 그 컨트롤러 하나만 수정하면 되겠지 - 하나의 게시글에 여러 파일(고용량)을 업로드해야 하는 경우 등을 고려해보았을 때, 한 번의 요청으로 여러 파일과 글을 등록하게 되는데 압축하지 않을 경우 트래픽 증가할 수 있음
→ 게시글 등록 시 시간이 오래 걸림
위와 같은 이유로 각각 별도의 프로세스로 진행하는 것이 좋다고 함.
여기서 드는 의문
지금은 서비스단에서 @Transactional 을 통해 트랜잭션 처리를 하고 있는데, 컨트롤러에서 나눠지게 되면
게시글 업로드 실패 시 트랜잭션 처리는 어떻게 하는가?
아무리 생각해봐도 모르겠어서 결국 이것도 질문함..^^
받은 답변으로는
- 백에서 클라이언트에게 실패 응답을 보내면 클라이언트가 방금 저장한 이미지 삭제를 요청
- 게시글 등록 실패 하였으나 이미 업로드 된 이미지는 그냥 두었다가 주기적으로 미사용 이미지를 체크하여 제거
등의 방식이 있다고 함.
'Spring' 카테고리의 다른 글
[Spring] Spring Security - SecurityContextHolder와 ThreadLocal에 관한 의문 (0) | 2022.06.15 |
---|---|
[Spring] Spring Security - 필터 (0) | 2022.06.14 |
[Spring] Spring Security - 주요 모듈 (2) | 2022.06.13 |
파일과 텍스트 함께 전송하기1 - RequestPart (0) | 2022.06.09 |