이번 프로젝트는 기존처럼 5일짜리가 아닌(주말 제외) 4주라는 굉장히 긴 시간이 주어진 프로젝트이다.
이번 프로젝트는 주제와 요구사항이 정해져 있지 않다. 주제부터 요구사항 까지 우리가 직접 설계해야 한다.
프로젝트 기획안을 만드는 것 부터가 난관이었다.
- Clone 코딩을 통한 기능 개선
- Scope 적정 설정
- 레퍼런스를 좀 잡아서 (배민, 블라인드 그 프로젝트처럼)
- 국비지원 부트캠프의 정형화된 프로젝트 보단 디테일이 다른 프로젝트
이런 방향을 잡고 기획을 하려고 노력을 했다. 그래서 저 방향대로 아이디어를 제시를 해도 시중에 풀려있는 서비스와 크게 다르지 않고 부트캠프의 정형화된 프로젝트에서 벗어나기가 어려웠다.
도저히 결론이 나지 않아서 여기서 아이디어를 계속 내봐야 그 나물에 그 밥인 터라 지금까지 나온 아이디어에서 괜찮아 보이는 요소를 몇가지 추출해서 기획안을 확정하기로 하였다.
chatGPT를 사용해서 어떤 프로젝트를 진행하면 좋을지 질문을 했다.
배경:
현대 소프트웨어 개발 환경은 점점 더 협업과 지속적인 학습을 강조하고 있습니다. 특히 개발 취준생과 주니어 개발자들에게는 코드 리뷰와 협업 경험이 매우 중요합니다. 이를 위한 효과적인 플랫폼이 필요하다는 인식에서
public class dev{} 프로젝트가 시작되었습니다.
목적:
public class dev{}는 개발자들이 함께 스터디 그룹을 구성하고 사이드 프로젝트를 진행하며, 코드 리뷰와 피드백을 주고받을 수 있는 협업 플랫폼을 제공하는 것을 목표로 합니다. 이 플랫폼은 특히 취업 준비 중인 개발자들에게 실질적인 도움을 주기 위해 설계되었습니다.
여기까지의 정보를 바탕으로 지금껏 나온 아이디어를 제시하고 아이디어를 추천해 달라고 했다.
기능 요약:
스터디 그룹 및 사이드 프로젝트 관리:
사용자가 스터디 그룹이나 사이드 프로젝트를 생성하고 참여할 수 있는 기능.그룹 내에서 프로젝트를 관리하고 진행 상황을 추적할 수 있는 도구 제공.
코드 리뷰 및 피드백 공유:
사용자들이 자신의 코드 스니펫을 업로드하고 피드백을 받을 수 있는 기능.코드 리뷰 시스템을 통해 코드 품질을 향상시키고 협업을 촉진.
모임 서비스:
카카오 지도 API를 이용하여 카페, 스터디룸, 스터디카페 등의 위치를 시각화.모임 장소를 예약하고 스케줄을 관리할 수 있는 기능.
스케줄 관리 및 알림:
사용자가 스케줄을 관리하고 모임 일정을 설정할 수 있는 기능.Naver Band와 유사한 모임 관리 기능 제공.
여기서 나온 4가지를 프로젝트 기획안으로 정하기로 했다.
- 모임 서비스
- 카카오 지도 api → 카페/스터디룸/스터디카페 보여질 수 있는 그런느낌
- 스케쥴 관리 장소 모임 관리
여기서 우리 팀은 지도 기능을 프로젝트에서 활용하기로 했다.
다음으로 추출한 것은 이 부분이었다.
- 개발 취준생을 위한 서비스
- 다같이 스터디 그룹/사이드 프로젝트 가능할 수 있는 플랫폼
- 코드 리뷰 등 자신의 작업물에 대한 피드백 공유
우리 팀은 이 4가지 요소를 모아서 이렇게 프로젝트 기획안을 정했다.
public class Dev {}
기획배경 | 개발자 풀이 증가하는 트렌드에 따라, 개발 취준생과 주니어 개발자들에게는 협업 경험의 효과 적인 플랫폼의 필요성 증가 |
기획목적 | 개발자들이 모여서 함께 스터디 그룹을 구성하고 사이드 프로젝트를 진행하며, 코드 리뷰와 피드백을 주고받을 수 있는 협업 플랫폼을 제공 |
주요 기능요약 | • User가 CRUD를 통해 관심사별/프로젝트별 모임을 효율적으로 관리 • 모임을 생성 후, 모임에 참여할 수 있는 User 초대 • Feed 형 코드리뷰 및 정보 공유와 Comment CRUD 를 통한 관리 • 지도 API 기반의 주변 카페, 스터디룸, 스터디카페 등의 위치를 시각화 및 일정 CRUD를 통한 효율적인 스케쥴 관리 |
이렇게 기획이 1차적으로 완성되었다. 지금부터 최종프로젝트를 public class Dev {}(이하 퍼블릭 클래스 데브)라고 부르겠다.
이렇게 만든 1차 기획안을 튜터님께 조언을 구하러 가보았다. 튜터님 께서 하신 조언을 요약하면 이랬다.
- 컨셉은 중요하지 X
- 기능구현 및 최적화가 먼저
- 최대한 넓은 범위의 스코프를 잡을 것, 일정이 빠듯할 정도로 많은 기능을 넣으려 노력할것
우리 팀은 이 조언을 토대로 복잡한 로직을 가진 주요 기능들을 추가하려고 했다.
어떤 기능을 추가하면 좋을지 chatGPT에게 질문을 했다.
추천 시스템:
모임 추천: 사용자 데이터를 분석하고 추천 알고리즘을 구현하기 위해 스프링 데이터와 머신러닝 라이브러리(예: TensorFlow, scikit-learn)를 통합.카페 및 스터디룸 추천: 장소 데이터와 사용자 리뷰를 기반으로 추천 알고리즘 구현.
실시간 알림 및 통지 시스템:
WebSocket을 사용하여 실시간 알림 기능 구현.Firebase Cloud Messaging(FCM) 등을 사용하여 푸시 알림 전송.
AI 기반 코드 리뷰:
AI 모델을 서버에 배포하고, 이를 호출하여 코드 리뷰 결과를 반환.Python으로 작성된 AI 모델을 REST API로 통합하여 스프링부트와 연동.
음성 및 비디오 통화 기능:
WebRTC를 사용하여 브라우저 간의 실시간 음성 및 비디오 통화 구현.Jitsi Meet 등의 오픈소스 솔루션을 스프링부트와 연동.
가상 화이트보드:
HTML5 Canvas와 WebSocket을 사용하여 실시간 협업 기능 구현.프론트엔드와 백엔드 간의 실시간 데이터 동기화.
다국어 지원 및 자동 번역:
스프링 메시지 소스를 활용하여 다국어 지원.Google Translate API를 사용하여 실시간 번역 기능 구현.
데이터 시각화 및 분석:
사용자 활동 데이터를 수집하고, 이를 분석하여 시각화.Grafana 등의 도구를 사용하여 시각화 대시보드 구현.
Gamification (게임화 요소):
사용자 활동에 따라 포인트 시스템 및 배지 관리.스프링 시큐리티와 JWT를 사용하여 사용자 인증 및 권한 관리.
블록체인 기반의 데이터 보안 및 신뢰성 강화:
블록체인 네트워크와의 연동을 위해 Web3j 등의 라이브러리 사용.사용자 활동 기록을 블록체인에 저장.
머신러닝 기반의 일정 최적화:
머신러닝 모델을 통해 사용자 스케줄을 분석하고 최적의 일정을 제안.스케줄 데이터를 기반으로 한 머신러닝 모델을 스프링부트와 통합.
여기서 그나마 할만한 게 Gamification (게임화 요소)라 포인트 제도를 추가하기로 했다. 포인트 라는 기능 자체는 추가하는 게 어렵진 않지만 여러 사용자가 동시에 포인트에 영향을 주는 행위를 하면(여러 사용자가 동시에 한 댓글에 좋아요를 누를때 등등..) 소위 말하는 씹히는 현상이 발생하기 때문에, 다시말해 동시성 문제를 해결해야 하기 때문에 이 기능을 추가하기로 했다.
이 정도를 하기로 정하는데 하루가 걸렸다. 맨날 반나절도 안되는 시간안에 기획 다하고 바로 코딩 들어갔던 거 생각하면 이렇게 깊이 있는 회의를 할 수 있어서 좋았지만 굉장히 하드한 일정이었다. 프로젝트 수행하는데 기획이 가장 어렵다고 한게 틀린 말은 아닌 것 같다.
내일은 본격적으로 프로젝트 개발을 시작하기 위해 API명세서, ER-Diagram, 와이어프레임을 설계할 것이다. 이러면 늦어도 다음주 월요일에는 본격적으로 개발을 시작할 수 있을 것 같다.
'내일배움캠프' 카테고리의 다른 글
Trello프로젝트(심화 프로젝트) 5일차(KPT 회고) (2) | 2024.07.22 |
---|---|
Trello프로젝트(심화 프로젝트) 4일차 (6) | 2024.07.20 |
Trello프로젝트(심화 프로젝트) 3일차 (0) | 2024.07.16 |
Trello프로젝트(심화 프로젝트) 2일차 (0) | 2024.07.11 |
Trello프로젝트(심화 프로젝트) 1일차 (0) | 2024.07.11 |