프로젝트 아이디어
평소에 토익이나 토플 같은 자격증 공부보다는, 현지에서 자연스럽게 일상 대화를 나누는 데 더 관심이 있었다. 종강하고 졸업 작품을 끝낸 다음에 개인 프로젝트를 시작하려고 했는데, 외국어 공부랑 연관된 웹 서비스를 만들어보면 재미있겠다고 생각해서 이번 프로젝트를 기획하게 되었다.
프로젝트 네이밍
SayBridge: 말(Say)을 통해 다른 문화, 언어, 사람들을 연결(Bridge)하는 플랫폼으로, 의사소통과 이해를 돕는 역할을 한다는 의미로 네이밍을 선정했다.
기술 스택 선정
기존에 사용해봤던 백엔드는 Django, Spring boot + React + MySQL, SQLite 를 사용했었다. 고민을 해본 결과 세 가지의 선택지가 있었는데
- Node.js(express.js) + React.js + Redis (새로운 기술)
- Spring boot + React.js + MySQL (기존 사용 기술)
- Spring boot + Thymeleaf + MySQL (백엔드 집중)
Node.js는 이벤트 기반 비동기 처리로 실시간 요청 처리에 강하며, Redis는 메모리 기반 DB로 고속 성능과 Pub/Sub 기능을 활용해 실시간 메시지 브로드캐스트를 구현할 수 있다는 장점이 있다. 물론 메모리 크기에 따른 제약이나 시스템 장애로 인한 데이터 유실 가능성이 있지만, 새로운 기술을 사용하는 즐거움도 크기 때문에 처음에는 1번을 선택하려 했지만 몇 개의 프로젝트를 진행했음에도 Spring Boot에 대한 숙련도가 많이 낮다고 느껴 이번 기회를 통해 Spring Boot의 숙련도를 향상시키기로 결정하며 2번을 선택했다. 또한, 웹사이트에서 UI/UX는 핵심 요소이기에 React를 포기할 수 없었고, Redis도 활용해 보고 싶어서 2번에 Redis를 더해 프로젝트를 진행하기로 했다.
주요 기능 선정
기능을 생각할 때 가장 중요하게 고려한 것은
"내가 사용했을 때 어떤 기능이 필요할까?" "개발하면서 새로운 기술을 사용해 보고 싶다!"
는 점이었다. 이를 바탕으로 다음과 같은 기능들을 추출했다:
- 회원가입 및 로그인
- OAuth2를 이용한 SNS 회원가입/로그인
- 일반 회원가입 및 로그인 (JJWT + Spring Security 사용)
- 선생님 찾아서 수강 신청하기
- 화상 채팅방
- 채팅방 생성자가 최대 인원수를 설정할 수 있음
- 번역 및 파일 전송 기능
- 채팅방에서 영어로 작성된 메시지 옆에 버튼이 나타나, 클릭하면 한국어로 번역 가능
- 파일 전송 기능 포함
- 선생님의 학생 관리 기능
- 숙제 관리 및 배포
- 학생의 학습 노트 및 숙제 제출 기능
프로젝트 개발 기간
개발 기간은 약 30일(한달)로 계획 중이다.
우려되는 점은 현재 취업 준비와 병행해야 하기 때문에 몇 가지 걱정이 있다. 코딩 테스트 준비, 기존 포트폴리오 정리, 자기소개서 작성, CS 공부, 그리고 Docker, Spring, AWS 같은 기술 학습도 함께 진행 중이라 개발 기간을 맞출 수 있을지 확신이 없다. 만약 진행 중 시간이 부족하다면, 다른 활동들을 잠시 배제하고 프로젝트에 집중하는 것도 좋은 방법일 것 같다.
'개발 일지' 카테고리의 다른 글
React에서 강좌 리뷰 버튼 활성화 처리하기: some() vs Map (0) | 2025.03.07 |
---|---|
신규 강좌 알림 기능 - Event 기반 아키텍처 리팩토링 (0) | 2025.03.03 |
2. 와이어 프레임 제작 (1) | 2025.01.21 |