나는 2023. 07. 10 ~ 2024. 01. 30 기간동안 내일배움카드로 수강하는 국비지원교육 중 K-digital training(패스트캠퍼스 X 야놀자: 백엔드 개발 부트캠프 4기)에 참여하고 있다.
토이 프로젝트는 총 세 단계로 진행된다.
1
단계 : 09. 04 ~ 09. 10
2
단계 : 10. 23 ~ 10. 29
3
단계 : 11. 13 ~ 11. 19
지난 주 09. 04 ~ 09. 10 토이 프로젝트 1
단계를 진행했다.
이번 토이 프로젝트를 어떻게 진행했고, 어떤 어려움이 있었는지 후기를 남겨보려고 한다.
이번 토이 프로젝트는 웹을 사용하지 않고 여행 여정을 기록하고 관리하는 SNS 서비스를 개발하는 프로젝트였다.
나를 포함하여 5명이 팀을 이루어 개발하는 팀 프로젝트로서, 개발 능력 뿐만 아니라 커뮤니케이션 능력이 요구됐다.
나는 본 프로젝트에서 조장으로 활동하여 프로젝트를 총괄하며 회의 및 개발을 수행했다.
분석한 RFP에 맞게 플로우 차트를 작성했다.
RFP와 플로우 차트를 보며 기능 명세서를 작성했다.
구분 | 기능 | 세부 기능 | 설명 |
---|---|---|---|
여행 | 여행 기록 | 입력받은 여행정보를 CSV, JSON파일로 저장 | 입력받은 여행 정보를 CSV, JSON파일로 저장합니다. |
전체 여행 조회 | CSV, JSON 파일로 저장되어 있는 여행 정보를 조회 | CSV, JSON 파일로 저장되어 있는 여행 정보를 조회합니다. | |
특정 여행 조회 | CSV, JSON 파일에서 특정 여행 정보만 조회 | CSV, JSON 파일에서 특정 여행 정보만 조회합니다. | |
여행 삭제 | 특정 여행 정보가 저장되어 있는 CSV, JSON 파일 삭제 | 특정 여행 정보가 저장되어 있는 CSV, JSON 파일을 삭제합니다. | |
--- | ------------ | ----------------------------------------- | ----------------------------------------------- |
여정 | 여정 기록 | 입력받은 여정정보를 해당 여행의 CSV, JSON 파일에 저장 | 입력받은 여정 정보를 해당 여행의 CSV, JSON파일에 저장합니다. |
여정 조회 | CSV, JSON 파일에서 특정 여행의 여정 정보들을 list로 조회 | CSV, JSON 파일에서 특정 여행의 여정 정보들을 list로 조회합니다. | |
여정 삭제 | CSV, JSON 파일에서 특정 여행의 특정 여정 정보를 삭제 | CSV, JSON 파일에서 특정 여행의 특정 여정 정보를 삭제합니다. | |
--- | ------------ | ----------------------------------------- | ----------------------------------------------- |
공통 | JSON 파싱 | Json 문자열을 Object로 변환 | Json 문자열을 파싱하여 객체로 변환합니다. |
Object를 Json 문자열로 변환 | 객체를 Json 문자열로 변환합니다. | ||
CSV 파싱 | CSV 파일을 Object로 변환 | CSV 파일을 파싱하여 객체로 변환합니다. | |
Object를 CSV 파일로 변환 | Object를 CSV파일로 변환합니다. | ||
파일 조회 및 파싱 | 특정 경로에서 CSV, JSON 파일에서 정보를 불러와 객체로 변환 | 특정 경로에서 CSV, JSON 파일을 읽고 객체로 변환합니다. | |
CI | PR 시 빌드 및 테스트 검사 수행 | PR 시 빌드 및 테스트 검사를 수행하며, 통과 시에만 병합이 가능합니다. | |
종료 | 프로그램 종료 | 프로그램을 종료합니다. |
사실 파일 조회 및 파싱 기능과 CI 기능은 처음부터 정해둔 기능은 아니었으나, 기능 제안을 통해 기능 명세서에 추가하였다.
각 기능을 누가 구현할 것인지는 회의를 통해 정했다.
나는 위 기능명세서에서
기능을 맡았다.
그 외에도 추가로 필요했던 몇 가지 클래스를 맡아 구현하게 되었다.
프로젝트 일정은 아래 이미지에 맞게 수행되었다.
프로젝트 진행에 앞서 개발 규칙을 정할 필요가 있었다.
회의를 통해 다음 규칙들을 정했다.
자세한 규칙 내용은 포스트가 너무 길어질 것 같아 생략하도록 하겠다.
여행 등록
----------[메뉴 선택]----------
1. 여행 등록
2. 여정 등록
3. 여행 조회
4. 여행 삭제
5. 여정 삭제
6. 종료
------------------------------
1
여행 이름: 테스트 여행
여행 시작 날짜 (yyyy-MM-dd): 2023-09-09
여행 종료 날짜 (yyyy-MM-dd): 2023-09-10
여행정보가 등록되었습니다.
여정 등록
----------[메뉴 선택]----------
1. 여행 등록
2. 여정 등록
3. 여행 조회
4. 여행 삭제
5. 여정 삭제
6. 종료
------------------------------
2
------------------------------
[여행 목록]
------------------------------
여행 ID: 1
여행 이름: 부산 여행
시작일: 2022-08-10
종료일: 2022-08-12
------------------------------
여행 ID: 2
여행 이름: 가평 여행
시작일: 2023-09-02
종료일: 2023-09-03
------------------------------
여행 ID: 3
여행 이름: 테스트 여행
시작일: 2023-09-09
종료일: 2023-09-10
------------------------------
여정을 추가할 여행 ID를 입력하세요: 3
출발지: 테스트 도시 1
도착지: 테스트 도시 2
출발 날짜 (yyyy-MM-dd HH:mm): 2023-09-09 10:00
도착 날짜 (yyyy-MM-dd HH:mm): 2023-09-09 12:00
체크인 날짜 (yyyy-MM-dd HH:mm): 2023-09-09 12:20
체크아웃 날짜 (yyyy-MM-dd HH:mm): 2023-09-10 12:00
추가로 여정 정보를 저장하시겠습니까? (y/n) : y
출발지: 테스트 도시 2
도착지: 테스트 도시 3
출발 날짜 (yyyy-MM-dd HH:mm): 2023-09-10 12:30
도착 날짜 (yyyy-MM-dd HH:mm): 2023-09-10 14:00
체크인 날짜 (yyyy-MM-dd HH:mm): 2023-09-10 14:30
체크아웃 날짜 (yyyy-MM-dd HH:mm): 2023-09-10 21:00
추가로 여정 정보를 저장하시겠습니까? (y/n) : n
여행 조회
----------[메뉴 선택]----------
1. 여행 등록
2. 여정 등록
3. 여행 조회
4. 여행 삭제
5. 여정 삭제
6. 종료
------------------------------
3
여행 기록을 불러올 파일 유형
1. JSON
2. CSV
번호를 입력하세요: 1
------------------------------
[여행 목록]
------------------------------
여행 ID: 1
여행 이름: 부산 여행
시작일: 2022-08-10
종료일: 2022-08-12
------------------------------
여행 ID: 2
여행 이름: 가평 여행
시작일: 2023-09-02
종료일: 2023-09-03
------------------------------
여행 ID: 3
여행 이름: 테스트 여행
시작일: 2023-09-09
종료일: 2023-09-10
------------------------------
해당 여행의 여정을 조회하시겠습니까?(y/n) y
여정을 조회할 여행 ID를 입력해주세요: 3
------------------------------
[여정 목록]
여정 ID: 1
출발지: 테스트 도시 1
도착지: 테스트 도시 2
출발 시간: 2023-09-09T10:00
도착 시간: 2023-09-09T12:00
체크인: 2023-09-09T12:20
체크아웃: 2023-09-10T12:00
------------------------------
여정 ID: 2
출발지: 테스트 도시 2
도착지: 테스트 도시 3
출발 시간: 2023-09-10T12:30
도착 시간: 2023-09-10T14:00
체크인: 2023-09-10T14:30
체크아웃: 2023-09-10T21:00
------------------------------
----------[메뉴 선택]----------
1. 여행 등록
2. 여정 등록
3. 여행 조회
4. 여행 삭제
5. 여정 삭제
6. 종료
------------------------------
3
여행 기록을 불러올 파일 유형
1. JSON
2. CSV
번호를 입력하세요: 2
------------------------------
[여행 목록]
------------------------------
여행 ID: 1
여행 이름: 부산 여행
시작일: 2022-08-10
종료일: 2022-08-12
------------------------------
여행 ID: 2
여행 이름: 가평 여행
시작일: 2023-09-02
종료일: 2023-09-03
------------------------------
여행 ID: 3
여행 이름: 테스트 여행
시작일: 2023-09-09
종료일: 2023-09-10
------------------------------
해당 여행의 여정 기록을 조회하시겠습니까?(y/n) y
여정을 조회할 여행 ID를 입력해주세요: 3
------------------------------
[여정 목록]
여정 ID: 1
출발지: 테스트 도시 1
도착지: 테스트 도시 2
출발 시간: 2023-09-09T10:00
도착 시간: 2023-09-09T12:00
체크인: 2023-09-09T12:20
체크아웃: 2023-09-10T12:00
------------------------------
여정 ID: 2
출발지: 테스트 도시 2
도착지: 테스트 도시 3
출발 시간: 2023-09-10T12:30
도착 시간: 2023-09-10T14:00
체크인: 2023-09-10T14:30
체크아웃: 2023-09-10T21:00
------------------------------
여행 삭제
----------[메뉴 선택]----------
1. 여행 등록
2. 여정 등록
3. 여행 조회
4. 여행 삭제
5. 여정 삭제
6. 종료
------------------------------
4
------------------------------
[여행 목록]
------------------------------
여행 ID: 1
여행 이름: 부산 여행
시작일: 2022-08-10
종료일: 2022-08-12
------------------------------
여행 ID: 2
여행 이름: 가평 여행
시작일: 2023-09-02
종료일: 2023-09-03
------------------------------
여행 ID: 3
여행 이름: 테스트 여행
시작일: 2023-09-09
종료일: 2023-09-10
------------------------------
삭제할 여행 ID를 입력하세요.
3
JSON 파일이 삭제됐습니다.
CSV 파일이 삭제됐습니다.
여정 삭제
----------[메뉴 선택]----------
1. 여행 등록
2. 여정 등록
3. 여행 조회
4. 여행 삭제
5. 여정 삭제
6. 종료
------------------------------
5
------------------------------
[여행 목록]
------------------------------
여행 ID: 1
여행 이름: 부산 여행
시작일: 2022-08-10
종료일: 2022-08-12
------------------------------
여행 ID: 2
여행 이름: 가평 여행
시작일: 2023-09-02
종료일: 2023-09-03
------------------------------
여행 ID: 3
여행 이름: 테스트 여행
시작일: 2023-09-09
종료일: 2023-09-10
------------------------------
삭제할 여정의 여행 ID를 입력하세요.
3
------------------------------
[여정 목록]
여정 ID: 1
출발지: 테스트 도시 1
도착지: 테스트 도시 2
출발 시간: 2023-09-09T10:00
도착 시간: 2023-09-09T12:00
체크인: 2023-09-09T12:20
체크아웃: 2023-09-10T12:00
------------------------------
여정 ID: 2
출발지: 테스트 도시 2
도착지: 테스트 도시 3
출발 시간: 2023-09-10T12:30
도착 시간: 2023-09-10T14:00
체크인: 2023-09-10T14:30
체크아웃: 2023-09-10T21:00
------------------------------
삭제할 여정 ID를 입력하세요.
2
CSV 파일에서 해당 여정 기록이 삭제됐습니다.
JSON 파일에서 해당 여정 기록이 삭제됐습니다.
종료
----------[메뉴 선택]----------
1. 여행 등록
2. 여정 등록
3. 여행 조회
4. 여행 삭제
5. 여정 삭제
6. 종료
------------------------------
6
프로그램을 종료합니다.
Process finished with exit code 0
이번 프로젝트를 진행하면서 무엇이 어려웠고 이를 어떻게 극복했는지 기록하려고 한다.
Solution
애자일 스크럼 방식을 일 단위 스프린트로 진행하여 잦은 회의와 소통을 통해 최대한 서로의 개발에 영향을 주지 않고, PR과 병합 시 충돌을 최대한 피할 수 있도록 신경쓰며 프로젝트를 진행했다.
Solution
이는 단순히 샘플 데이터를 넣지 않아, 브랜치 디렉토리 자체가 존재하지 않아 생긴 오류로, 샘플 데이터를 넣어 해결했다.
Trouble
조장 역할을 맡은 내가 제출 전 최종 테스트를 진행했다.
최종 테스트 중 문제가 발생한 부분에 대해 담당 팀원에게 연락을 취했지만, 연락이 닿지 않았다.
Solution
정해진 기한 내에 프로젝트를 마무리하고, 제출을 해야 하는 상황이 었기 때문에 공지 후 직접 문제를 파악하고 코드를 수정했다.
기능 구현이 어려웠다기 보다 협업에 있어서 몇 가지 어려움이 있었는데, 이를 극복하고 무사히 개발을 마칠 수 있어서 다행이었다.
다음 토이 프로젝트는 좀 더 타이트하게 일정을 잡아 주말까지 이어지지 않도록 하고, 만약 주말까지 이어지더라도 최종 테스트 및 수정을 위한 회의를 잡아야겠다.
아쉬운 점을 꼽자면, 후에 든 생각이지만 입출력과 서비스와의 연결 클래스를 작성한 View 클래스를 Controller와 View로 나눴다면 좀 더 좋았을 것 같다는 점이다.
MVC 구조에 맞춰 작성하려고 했으나 웹 개발이 아니었기 때문에 Controller의 필요성이 약화되어 결국 Model, Service, View로 나뉘게 된 것 같다.
다음 토이 프로젝트는 스프링 프레임워크를 사용하여 개발하게 되는데, 이 부분을 개선할 수 있을 것 같다.