인프런 커뮤니티 질문&답변

공룡님의 프로필 이미지
공룡

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

실무에서 WEB을 구현할 때의 순서가 궁금합니다.

해결된 질문

작성

·

1.9K

8

강의를 전부 들어서 기본적인

Domain - Repository - Service - Controller  순서대로 하는 것은 알고있습니다.

그리고 이 강의에서는 회원 가입, 목록, 상품 목록, 상품 검색들 전부의

Domain Repository Service 단을 짜고 그 후에 Controller와 웹 뷰페이지를 만드셨는데요

제가 궁금한 부분이 실무에서도 이런식으로 밑단을 다 만들어놓고 웹을 구현하나요?

아니면 일부분을 먼저 만들어놓고 그 다음껄로 넘어가서 다시 짜는건가요?

예를 들면 전자는

로그인, 회원가입, 상품 등록, 상품 검색이 필요하다고 가정하면

로그인 회원가입 상품등록 검색에 필요한 모든 리포지토리와 서비스단을 미리 구현하는 거고

후자는 일단 회원가입에 필요한 리포지토리와 서비스 단을 구현하고 웹페이지를 만들어서 테스트 후에

로그인 기능을 만들고 상품 등록을 만들고 상품 목록과 검색을 만들고.. 이런 방식입니다.

사실 제가 웹사이트를 현재 만들고 있는데 전자로 진행하려고 했으나.. 이게 jpa도 처음 배워봐서 그런지

먼가 설계를 하는 부분부터 멘붕이 오더라구요.. 

당장 필요한 메서드도 생각이 안나고 이 메서드는 무슨 파라미터가 필요할까..

고생하면서 리포지토리 다 짜놓으니까 또 필요에 의해  List에서 Optional로 리턴 타입받으니까 꼬리에 꼬리를 물고 오류가 터지더라구요.. ㅋㅋ

그래서 실무에서는 보통 어떤 방식을 선호하는지 궁금해서 질문드렸습니다.

그리고 개인플젝같은경우는 후자로 해도 상관없나요? 

이게 강의를 들을때는 몰랐는데 다 듣고 막상 해보려니 설계부터 장난이 아니네요

답변 2

15

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. Faust님 좋은 질문입니다.

1. 먼저 요구사항이 명확하게 정리되어야 합니다.

2. 기획에서 어느정도 화면 단위로 어떤 데이터가 출력되는지 정리가 되어야 합니다.

3. 이제 개발자들이 요구사항과 기획 화면을 보면서 도메인(엔티티)과 테이블 설계를 진행합니다.

4. 개발자들이 만든 도메인이 맞는지 기획자와 이야기를 합니다. 여기서 너무 개발자 스타일의 테이블 보다는 기획자도 이해할 수 있는 도메인 그림을 가지고 기획자와 커뮤니케이션 하고, 맞춥니다.

이렇게 여러번 서로 피드백을 해서 설계를 정리합니다.

여기까지 진행이 되면 대부분의 엔티티가 다 나옵니다. 그리고 기본적인 리포지토리들도 나옵니다. (기본적인 CRUD 리포지토리)

여기서부터는 이제 선택입니다.

컨트롤러 부터 개발을 시작해도 되고, 반대로 서비스나 리포지토리 부터 개발을 시작해도 됩니다. 그리고 한 프로젝트 안에서도 상황에 따라서, 어떤 경우에는 기본적인 서비스나 리포지토리를 미리 만들어두고 시작하는게 좋고, 어떤 경우에는 컨트롤러부터 들어오는게 더 좋습니다.

제 경험상 컨트롤러 부터 개발을 시작하면 확실히 개발 시야가 잘 들어오는 장점이 있습니다. 반면에 협업을 해야할 때는 주요 컴포넌트는 서비스를 미리 만들어두는게 좋은 경우도 많았습니다.

큰 프로젝트의 경우에는 여러 개발자가 병렬로 함께 진행하는 경우도 있습니다. (누구는 컨트롤러 View를 만들고, 누구는 서비스, 리포지토리를 만들고)

가장 중요한 것은 요구사항을 명확하게 정리하는 것이라 생각합니다. 무엇을 만들지 명확하게 정리가 되어야 막힘없이 개발이 진행됩니다. 저는 설계 초기 단계에는 기획자와 피드백을 하루에도 몇번씩 진행하는 편입니다. 그리고 요구사항이 명확해야 뒤에서 부터 설계하는게 가능하더라구요.

도움이 되셨길 바래요^^

1

공룡님의 프로필 이미지
공룡
질문자

감사합니다.

공룡님의 프로필 이미지
공룡

작성한 질문수

질문하기