1. Design Real Use Cases

Primary Use Cases

Use Case 3.1 Download File
Actor User
Overview Business Use Case 에 포함
Type Evident
Cross Reference H-3.2 Get File Info from DB
Pre-Requisites 특정 파일을 선택했다.
System Actors (U): User, (S): System (F): Front System (M): Microservice (A): API Gateway
Typical Courses of Events 1. (A): (S)에 read_fileemailid: string파라미터와 요청한다.
  1. (S): 전달받은 emailid를 바탕으로 H-3.2 Get File Info from DB를 실행한다.
  2. (S): 읽어들인 파일을 응답한다. | | Alternative Courses of Events | N/A | | ExceptionalCourses of Events | Line 2. 해당하는 정보의 파일이 없다.
  3. (S): HTTP 400 Bad Request 오류를 응답한다. Line 3. Timeout이 발생했다.
  4. (S): HTTP 504 Gateway Timeout 오류를 응답한다. |
Use Case 3.2 Upload File
Actor User
Overview Business Use Case 에 포함
Type Evident
Cross Reference H-3.2 Get File Info from DB
Pre-Requisites 저장할 파일 정보가 전달됐다.
System Actors (U): User, (S): System (F): Front System (M): Microservice (A): API Gateway
Typical Courses of Events 1. (A): (S)에 create_fileuserid: string, files: Multer.File[] 파라미터와 요청한다.
  1. (S): 전달받은 userid, files를 바탕으로 H-3.3 Store File to File System를 실행한다.
  2. (S): 저장에 성공한 파일 정보를 바탕으로 H-3.4 Store File Info to DB를 실행한다.
  3. (S): 결과를 응답한다. | | Alternative Courses of Events | N/A | | ExceptionalCourses of Events | Line 2. 파일 작성 중 에러가 발생했다.
  4. (S): HTTP 500 Bad Request 오류를 응답한다.
  5. (S): 해당 오류를 출력한다. Line 3. Database에 파일 저장을 실패했다.
  6. (S): HTTP 500 Internal Server Error 오류를 응답한다.
  7. (S): 관련 에러를 출력한다.
  8. (S): 저장한 파일을 삭제한다. Line 4. Timeout이 발생했다.
  9. (S): HTTP 504 Gateway Timeout 오류를 응답한다. |
Use Case 3.3 Delete File
Actor User
Overview Business Use Case 에 포함
Type Evident
Cross Reference H-3.5 Remove File from File System
Pre-Requisites 특정 파일을 선택했다.
System Actors (U): User, (S): System (F): Front System (M): Microservice (A): API Gateway
Typical Courses of Events 1. (A): (S)에 delete_filefileid: string, userid: string 파라미터와 요창한다.
  1. (S): 전달받은 fileid, userid를 바탕으로 H-3.5 Remove File from System를 실행한다.
  2. (S): 삭제에 성공했다면 HttpStatus.OK를 응답한다. | | Alternative Courses of Events | Line 3. 해당하는 정보의 파일이 없다.
  3. (S): HTTP 204 Empty 오류를 응답한다. | | ExceptionalCourses of Events | Line 3. Timeout이 발생했다.
  4. (S): HTTP 504 Gateway Timeout 오류를 응답한다. |

Hidden Use Case

Use Case H-3.1 Open Microservice Connection Path
Actor System
Overview Business Use Case 에 포함
Type Hidden
Cross Reference N/A
Pre-Requisites Microservice 연결에 필요한 정보가 정의됐다.
System Actors (U): User, (S): System (F): Front System (M): Microservice (A): API Gateway
Typical Courses of Events 1. (S): .env로부터 Microservice Component의 연결 정보를 읽어온다.
  1. (S): 읽어온 Microservice 정보를 기준으로 TCP Connection을 받아들일 준비한다. | | Alternative Courses of Events | N/A | | ExceptionalCourses of Events | Line 2. Port Already In Use 오류가 발생했다.
  2. (S): 시스템을 종료한다. |
Use Case H-3.2 Get File Info from DB
Actor System
Overview Business Use Case 에 포함
Type Hidden
Cross Reference H-6.1 Connect to Database, H-6.2 Connect to Redis
Pre-Requisites
System Actors (U): User, (S): System (F): Front System (M): Microservice (A): API Gateway
Typical Courses of Events 1. (S): RedisManagerService에서 getCache(key)를 통해 해당하는 파일 정보를 찾는다.
  1. (S): 해당 정보를 반환한다. | | Alternative Courses of Events | Line 2. Redis에 해당하는 정보가 없다.
  2. (S): MongoDB에 해당하는 파일 정보가 존재하는지 확인한다.
  3. (S): MongoDB에 해당 파일 정보가 존재한다면 Redis에 해당 파일 정보를 저장한다.
  4. (S): 해당 정보를 반환한다.
  5. (S): 만약 MongoDB에도 해당 파일 정보가 없다면, HTTP 204 Empty 응답을 반환한다. | | ExceptionalCourses of Events | N/A |
Use Case H-3.3 Store File to File System
Actor System
Overview Business Use Case 에 포함
Type Hidden
Cross Reference H-3.5 File Info to DB
Pre-Requisites 저장 장소가 사전에 정의되어 있다.
System Actors (U): User, (S): System (F): Front System (M): Microservice (A): API Gateway
Typical Courses of Events 1. (S): 파일을 저장할 목적지 destination과 파일 이름 fileName, 그리고 파일 확장자명 extName을 요청받은 files로부터 구한다.
  1. (S): 현재 시간을 기준으로 새로운 파일 이름 newName을 정한다.
  2. (S): file buffer를 destination/newName.extName에 쓴다.
  3. (S): 전달받은 files를 모두 처리할 때 까지 (1)~(3)를 반복한다.
  4. (S): 저장한 파일 정보를 반환한다. | | Alternative Courses of Events | N/A | | ExceptionalCourses of Events | Line 3. 파일 저장에 실패했다.
  5. (S): HTTP 500 Internal Server Error 오류를 응답한다.
  6. (S): 관련 에러를 출력한다. |
Use Case H-3.4 Store File Info to DB
Actor System
Overview Business Use Case 에 포함
Type Hidden
Cross Reference H-6.1 Connect to Database
Pre-Requisites 저장에 성공한 파일 정보를 전달받음
System Actors (U): User, (S): System (F): Front System (M): Microservice (A): API Gateway
Typical Courses of Events 1. (S): H-6.1 Connect to Database를 실행한다.
  1. (S): MongoDB에 파일 경로와 사이즈, 작성자 userid를 저장한다.
  2. (S): 결과를 반환한다. | | Alternative Courses of Events | N/A | | ExceptionalCourses of Events | Line 1. MongoDB 연결에 실패했다.
  3. (S): HTTP 500 Internal Server Error 오류를 응답한다.
  4. (S): 해당 오류를 출력한다. |
Use Case H-3.5 Remove File from System
Actor System
Overview Business Use Case 에 포함
Type Hidden
Cross Reference H-3.3 Get File Info from DB, H-3.7 Remove File Info from DB
Pre-Requisites 삭제할 파일 소유자와 삭제할 파일 정보를 전달받았다.
System Actors (U): User, (S): System (F): Front System (M): Microservice (A): API Gateway
Typical Courses of Events 1. (S): fileid, userid를 바탕으로 H-3.3 Get File Info from DB를 실행한다.
  1. (S): 조회된 정보에 대해 remove: true, removedAt: 현재시간 으로 설정한다. | | Alternative Courses of Events | Line 1. DB에 해당 파일이 없다.
  2. (S): HTTP 204 Empty 응답을 반환한다. | | ExceptionalCourses of Events | N/A |

2. Define Reports, UI, and Storyboards