본문 바로가기

내일배움캠프

최종프로젝트 1일차

이번 프로젝트는 기존처럼 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, 와이어프레임을 설계할 것이다. 이러면 늦어도 다음주 월요일에는 본격적으로 개발을 시작할 수 있을 것 같다.