개발자
안녕하세요 지금 부트캠프에서 협업 프로젝트 진행 예정 중에 있습니다 첫 프로젝트라 규모가 작지만 시작을 어떻게 해야할지 고민이 되어서 질문합니다 회원 1. 이메일 비밀번호 입력하여 회원가입 API 2. 이메일 비밀번호 입력하여 접속하는 API 3. 접속된 유저 로그아웃 조회 1. 게시물 전체 조회하는 API 2. 작성자 이메일을 통해 특정 게시물들을 검색하는 API 3. 댓글을 조회하는 API 생성 1. 댓글을 새롭게 만들 수 있는 API 2. 게시물을 새롭게 만들 수 있는 API 수정 1. 기존 댓글의 글을 수정하는 API 2. 게시물을 새롭게 수정할 수 있는 API 삭제 1. 게시물을 삭제하는 API 2. 댓글을 삭제하는 API 심화 1. 이메일과 같이 댓글 좋아요를 할 수 있는 기능 해당 기능을 구현하는 것이고 팀원들과 분담도 마쳤습니다. 우선 DTO, Controller, Repository, ERD 등을 설계하려고 하는데 그 중에서 DTO가 우선이라고 생각하고 진행했습니다. 과정 중에 DTO와 ERD은 서로 같을 필요가 없다고 판단했고 처음부터 데이터베이스랑 연결하면 혼란이 올 것 같다고 생각했습니다. 그래서 DTO로 설계하고 테스트 코드로 확인 후 잘 동작한 다음 데이터 베이스와 연결을 하는게 좋을지 아니면 처음부터 데이터 베이스랑 연결하는 것이 좋을지 궁금합니다. 또한, 해당 설계를 먼저 하는 것보다 더 좋은 방법이 있는지도 궁금합니다. 대체로 어떤 순서로 진행되는지 조언을 받고 싶습니다!
답변 3
인기 답변
사실은 화면이 제일 먼저입니다. 그리고 나서 데이터를 설계하죠. 생각보다 api는 변경의 여지가 많습니다. 다른 분들이 말씀하시듯 데이터베이스는 개발 초기에 생각보다 자주 바뀌지만, 그럼에도 불구하고 생각보다 api 설계만큼은 아니라고 봅니다. 직접 말씀하셨듯이 DTO와 ERD는 같을 필요가 없죠. 그 말은 하나의 테이블에 대해서 DTO가 얼마나 나올 지 아무도 모른다는 겁니다. 접근 방법이 다양하게 있지만 저는 보통 유즈케이스에 대한 분석부터 진행합니다. 개발에 대한 설계는 가장 마지막 단계고 제일 먼저 해야 할 건 애플리케이션의 유즈케이스가 어떤 흐름인지 명확히 하는 것입니다. 데이터베이스는 그 다음 문제죠. 당장 유저가 어떤 화면에서 무엇을 볼 지, 어떤 행동을 할 지도 명확하지 않은데 데이터베이스나 api 먼저 고민 해 봐야 결국 바꿔야합니다. 실무에선 기획자가 있겠지만 지금은 없죠. 개발자가 기획을 해야 합니다. 다행히 기능은 그렇게 많지 않습니다. 우선 와이어프레임부터 그리세요. 툴이 뭐가되었든 상관없습니다. 그냥 노트에 펜으로 작업하셔도 알아만 볼 수 있으면 됩니다. 그 후 목업페이지 부터 개발 합니다. 이미 기술은 정해졌단 가정이지만, 기술이 정해진 게 아니라면 백엔드 상관없이 프론트엔드부터 확실히 정하시길 바랍니다. (리액트든 뷰든 빌드하면 결국 html css js입니다. 백엔드 애플리케이션 빌드할 때 그 빌드 결과물 활용하면 굳이 분리해서 배포 할 필요가 없습니다.) 그 다음 데이터베이스를 설계하고 api 명세 및 Request parameter나 Response data (dto로 통합하기도 하지만 전 가능하면 dto와 vo는 구별하자 주의입니다. 로직에 쓰일 것인 지, 데이터 전달만 하고 사라질 것인 지 구별은 필요하다 생각해요.) 명세를 진행하는 흐름으로 진행하면 도움이 될 것 같네요. 협업의 핵심은 팀원과 소통을 통해 팀원들이 같은 목표를 바라보게 하는 것 아닐까요? 앞서 말씀드린 명세가 명확하지 않다면 팀원 모두가 각자 다른 일을 하는 불상사가 생길 수 있지요.
윪
작성자
아직 경력없음. 백엔드 개발자가 되고싶음 • 2023년 11월 03일
댓글은 늦게 봤네요.. 자세한 답변 감사합니다
안녕하세요! 저 같은 경우는 프로젝트를 들어갈 때 아래의 순서로 진행합니다. 1. 보일러 플레이팅 기획서와 전체적인 기능 Flow가 나온 상태라면 ERD를 작업하고, API 리스트업 등을 먼저 하겠지만 보통 프로젝트가 그렇진 않더라고요 2. ERD 설계 백엔드는 클라이언트에게 필요한 데이터를 작업하는 과정이기에 ERD 설계부터 진행합니다. 3. API 리스트업 및 문서 작성 개발해야할 API를 리스트업 하고 문서를 작성합니다. 문서에는 url, method, dto, exception, success example value 등이 담겨져 있어야하며, 문서가 먼저 나와야 클라이언트에서 목업 등을 만들어 작업하기 용이 합니다. 4. 테스트 코드 및 API Tdd로 하실 거면 테스트 코드를 먼저 해야합니다만 선택적임 부분이라 API와 같은 순서에 두었습니다.
윪
작성자
아직 경력없음. 백엔드 개발자가 되고싶음 • 2023년 10월 31일
넵 감사합니다! 갈피를 잃고 있었는데..도움이 많이 됩니다!
DTO와 Entity 또는 Domain은 구분하셔야 합니다. 엔드포인트에서 딱 필요한 정보만 리턴해야합니다. ERD는 개발도중 수십차례 바뀌실꺼예요. 그에따른 Entity또한 변화를.가질텐데 DTO는 딱 정말 필요한것만 보내기때문에 수정할게 좀 줄어드실거예요
윪
작성자
아직 경력없음. 백엔드 개발자가 되고싶음 • 2023년 11월 03일
늦게 봤는데 답변 감사합니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 10월 31일
첫 번째로, 당신의 질문에 바로 답변하자면, 프로젝트의 초반단계에서는 데이터베이스와 DTO를 동시에 설계하는 것이 일반적입니다. ERD (Entity Relationship Diagram)를 먼저 그려서 개체 간의 관계를 정의하고, 이것을 기반으로 데이터베이스 스키마를 생성합니다. 이후 DTO (Data Transfer Object)를 설계하여 프론트엔드와 백엔드 사이에서 교환되는 데이터 구조를 명확히 합니다. DTO가 ERD와 완전히 일치할 필요는 없지만 개체 간의 관계나 필드 이름 등은 ERD를 충분히 반영해야 합니다. 그리고 테스트 코드 작성과 데이터베이스 연결은 병렬적으로 수행될 수 있습니다. 초기 단계에서는 메모리 데이터베이스(H2 database 같은)를 사용하여 DAO나 Repository 등의 CRUD 연산 테스트를 진행하고, 실제 서비스 로직을 구현하기 전에 다음 단계인 서비스 계층(Service Layer)을 설계합니다. 다음으로, 일반적인 웹 서비스 API 개발 순서는 아래와 같습니다: 1. 요구사항 분석 및 기능 명세서 작성 2. ERD 및 DB 스키마 설계 3. API 명세서 작성 (이 과정에서 DTO, Request/Response 객체를 함께 정의) 4. 테스트 코드 작성 (API 별로 기능 검증과 예외 처리 등) 5. 서비스 로직 개발 (Service Layer와 Controller Layer) 마지막으로, Agile Methodology(애자일 방법론)을 적용하여 안정적인 개발 프로세스를 추구합니다. 이러한 방식을 택하면, 각 기능을 빠르게 구현하고 자주 테스트하여 오류를 찾아내고 개선할 수 있습니다. 이는 프로젝트의 생산성과 품질에 크게 도움이 됩니다. 프로젝트 진행에 많은 도움이 되시길 바랍니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!