20230311_TIL
오늘 한 일(회고)
- 현재 진행중인 프로젝트에 클라우드 스토리지 사용해서 이미지 저장/삭제 구현하기
현재 진행중인 프로젝트에 클라우드 스토리지 사용해서 이미지 저장/삭제 구현하기
오늘은 어제 공부한 것을 바탕으로 내가 진행중인 프로젝트에 클라우드 스토리지 사용해서 이미지를 저장하고 프론트에서 불러오는 작업을 해보려고 한다.
백엔드 개발자를 목표로 하는 만큼 어디서 이 로직을 구현할지 고민을 좀 했다.
현재 나는 3계층 레이어드(Three-Tier Architecture)를 이용해서 코드를 짜고 있다.
먼저 폴더 구성은 다음과 같다.
controller => 표현계층(Presentation Layer)에 해당, HTTP 요청을 처리하고, 응답을 반환한다. 이 때 사용자와 상호작용하여 요청을 받아, service Layer로 전달하는 역할을 한다.
Service => 어플리케이션(Application Layer)에 해당한다. 비즈니스 로직을 처리하고, Controller로부터 요청을 받아, 데이터 처리 및 조작등을 수행한다. 그리고 Repository Layer로 데이터를 전달하는 역할을 한다.
Repository => 데이터 계층(Data Layer)에 해당한다. 데이터 저장소(데이터베이스, 파일등)와 직접적으로 상호작용하여 데이터를 조회, 생성, 수정,삭제를 ㅎ 한다. 즉 CRUD가 여기서 진행이되고, service Layer로부터 요청을 받아 데이터를 처리한 후 결과를 반환하는 역할을 한다.
이것의 장점은 각 계층이 분리되어서 코드의 사용성과 유지보수성이 증가하며, 개발자 간 협업이 원활해진다고 한다.
이 때 나는 이미지 업로드 하는 기능을 서비스로 해야할지, 레포지토리에 구현을 해야할지 고민이 되었다. 보통인 경우 데이터베이스와 상호작용을 하는 레포지토리에 구현을 한다고 한다. 서비스에서는 이미지 업로드와 관련된 작업이 많다면 쓴다고 하는데, 예를 들면 사용자 등록을 할 때 이미지 프로필? 이런 것을 등록할 때 쓰거나, 이미지를 리사이징 하거나, 이미지에 대한 메타데이터? 생성하는 경우, 서비스에서 구현하는게 좋다고 한다.
현재 내가 맡은 기능은 의사를 등록할 때 그 프로필 사진을 등록하는 기능을 구현하는 것이므로 서비스 로직에서 구현하기로 결정했다.
service에서 열심히 구현을 하기는 했으나 생각보다 잘 되지는 않았다. 오늘도 6~7시간에 걸쳐 에러를 해결하고 겨우 마칠 수 있었다. 내일은 백엔드 부분은 어느정도 완성을 해야겠다.
내일 할일
- 프로젝트 이어서 하기