1. 프로젝트 생성 및 요구사항 분석
- 오늘 수업시간에서는 프로젝트 생성 및 요구사항 분석 + 설계 및 기본 구조 개발에 대해서 들었다.
- 각 회사마다 분위기는 다 다르겠지만, 요구사항 분석 시엔 일반적으로 아래의 단계를 거친다고 한다.
1) 외부 고객 및 내부 고객의 의견에 따라 어떤 사업을 하겠다는 목표가 생기면,
2) 기획자가 기획안을 만들어 연관됨 팀들과 의견을 나눈 뒤 사용할 기술 및 주요 기능에 대해 보완한다.
3) 기획자의 기획안을 토대로 개발팀은 개발을 위한 기술 스택 및 구체적인 명세서를 작성한다.
(1) 기술 스택이란 뭔가
- 위 3) 단계에서 "기술 스택"이라함은,
- 어떤 프레임워크와 언어를 쓸 것인가
- 어떤 DB vendor를 쓰고
- 어떤 api를 사용할 것이며
- http 데이터 타입은 어떤 걸 쓸 건지 (ex. xml인지, json인지, yml인지 등)
등 개발을 위한 기본적인 구조를 정하는 걸 말한다.
- 일전에 회사를 다닐 때 적은 설계서를 떠올리면, 주로 기획안 초반에 작성되는 항목들 중 하나였던 걸로 기억한다.
- 기획안에서 간단히 다루어주긴 하겠지만, 내부적으로도 체크가 필요할 것이라 생각된다.
(2) 구체적인 명세서란
- 기획안을 받으면 개발팀 내부에서도 본격적인 개발에 돌입하기 위해 구체적인 명세서를 작성하기도 한다고 한다.
- 여기서의 구체적인 명세서란, 각 Entity에 대해 이루어지는 작업을 API로 하여 정리한 걸 말하는데
- 검색을 해보니 이건 개발자의 성향에 따라 조금씩 다 다른 것 같았다. (아예 안 쓰는 사람들도 있고)
- 수업에서는 Entity 별로 Http 요청에 대한 처리 API들로 간략히 정리했었다.
- 연습을 한 번 해보고자 동물병원 진료 예약 시스템을 생각해서 하나의 API만 작성해보았다.
ex. 동물병원의 진료 예약 시스템 사용자 // 생략 동물 - 동물 생성 API - POST /animal-register - 파라미터 : 사용자 아이디 - 정책 : 사용자가 없는 경우 실패 응답 - 성공 응답 : 사용자 아이디, 동물번호, 등록일시 .... 등등등 예약정보 // 생략 |
2. 기본 구조는 어떻게 잡을 수 있을까
- 기획안에서, 또는 기획안을 받은 후에, 기술 스택에 대해 정하게 되는데, 구체적으로는,
코딩 컨벤션이나, 패키지 구조, DB 접속 환경, 연동 API등에 대해 전반적인 틀을 잡는다.
(이걸 수업시간에선 기본구조를 잡는다고 설명했다.)
- 코딩 컨벤션은 팀 내부에서 사용하는 코딩 스타일을 말한다.
자주 사용하는 코딩 컨벤션 도구로 ESLint와 Prettier가 있다고 하는데, 자세한 건 바로가기 에서 보면 좋을 것 같다.
- 패키지 구조는 앞서서 이야기했듯 디자인패턴에 따라 달라질 수 있다.
(예를들어, 레이어패턴인 경우, N-tier 방식으로 패키지를 만들고, 헥사고날의 경우, 도메인 중심으로 패키지를 만든다.)
따라서, 회사에서 요구하는 디자인 패턴에 따라 그 패턴을 공부하고 적용하는 게 필요할 것 같다.
3. 명세서에 따라 Entity의 상세정보를 정리하고 개발 시작하기
- 수업에서는 명세서에서 작성한 API 하나에 대해,
- 1) 이미 검토한 정보(HTTP 메소드, 파라미터, 정책, 성공 응답) 와 더불어
2) 상세 정보 (Entity내에 추가되어야 하는 정보)를 정리 (수업에선, 컬럼명과 데이터타입과 설명까지 정리했다.)
3) 요청/응답 시 주고받는 데이터 구조까지 정리했다.
- 상당히 도움이 되는 흐름이었는데, 사용자 케이스에 맞춰 요청 API를 먼저 처리하고,
관련된 객체(Entity)를 만든 후에, 단위 테스트를 하게 되면 개발자도 흐름을 체크하며 개발할 수 있지 않을까 싶다.
[ 참고 및 출처 ]
부트캠프 수업을 들은 후 정리한 내용입니다.
'Framework > Spring' 카테고리의 다른 글
[Validation] 데이터 검증, 비즈니스 로직 검증 (1) | 2022.09.21 |
---|---|
[스프링] Entity 객체를 생성 : 영속성의 개념 + 자동 Auditing (0) | 2022.09.15 |
[스프링] 프로젝트 전 꼭 알아두면 좋은 것들 (0) | 2022.09.13 |
[스프링] 스프링 MVC - 예외처리 (1) | 2022.09.11 |
[스프링] 스프링 MVC - 필터, 인터셉터 (1) | 2022.09.11 |