1. 프로젝트 계획

프로젝트 아이디어

 평소에 토익이나 토플 같은 자격증 공부보다는, 현지에서 자연스럽게 일상 대화를 나누는 데 더 관심이 있었다. 종강하고 졸업 작품을 끝낸 다음에 개인 프로젝트를 시작하려고 했는데, 외국어 공부랑 연관된 웹 서비스를 만들어보면 재미있겠다고 생각해서 이번 프로젝트를 기획하게 되었다.

 

프로젝트 네이밍

SayBridge: 말(Say)을 통해 다른 문화, 언어, 사람들을 연결(Bridge)하는 플랫폼으로, 의사소통과 이해를 돕는 역할을 한다는 의미로 네이밍을 선정했다.

 

기술 스택 선정

  기존에 사용해봤던 백엔드는 Django, Spring boot + React + MySQL, SQLite 를 사용했었다. 고민을 해본 결과 세 가지의 선택지가 있었는데

  1. Node.js(express.js) + React.js + Redis (새로운 기술)
  2. Spring boot + React.js + MySQL (기존 사용 기술)
  3. Spring boot + Thymeleaf + MySQL (백엔드 집중)

 Node.js는 이벤트 기반 비동기 처리로 실시간 요청 처리에 강하며, Redis는 메모리 기반 DB로 고속 성능과 Pub/Sub 기능을 활용해 실시간 메시지 브로드캐스트를 구현할 수 있다는 장점이 있다. 물론 메모리 크기에 따른 제약이나 시스템 장애로 인한 데이터 유실 가능성이 있지만, 새로운 기술을 사용하는 즐거움도 크기 때문에 처음에는 1번을 선택하려 했지만 몇 개의 프로젝트를 진행했음에도 Spring Boot에 대한 숙련도가 많이 낮다고 느껴 이번 기회를 통해 Spring Boot의 숙련도를 향상시키기로 결정하며 2번을 선택했다. 또한, 웹사이트에서 UI/UX는 핵심 요소이기에 React를 포기할 수 없었고, Redis도 활용해 보고 싶어서 2번에 Redis를 더해 프로젝트를 진행하기로 했다.

 

주요 기능 선정

기능을 생각할 때 가장 중요하게 고려한 것은

"내가 사용했을 때 어떤 기능이 필요할까?"  "개발하면서 새로운 기술을 사용해 보고 싶다!"

는 점이었다. 이를 바탕으로 다음과 같은 기능들을 추출했다:

  1. 회원가입 및 로그인
    • OAuth2를 이용한 SNS 회원가입/로그인
    • 일반 회원가입 및 로그인 (JJWT + Spring Security 사용)
  2. 선생님 찾아서 수강 신청하기
  3. 화상 채팅방
    • 채팅방 생성자가 최대 인원수를 설정할 수 있음
  4. 번역 및 파일 전송 기능
    • 채팅방에서 영어로 작성된 메시지 옆에 버튼이 나타나, 클릭하면 한국어로 번역 가능
    • 파일 전송 기능 포함
  5. 선생님의 학생 관리 기능
    • 숙제 관리 및 배포
  6. 학생의 학습 노트 및 숙제 제출 기능

 

프로젝트 개발 기간

 개발 기간은 약 30일(한달)로 계획 중이다.

 

 우려되는 점은 현재 취업 준비와 병행해야 하기 때문에 몇 가지 걱정이 있다. 코딩 테스트 준비, 기존 포트폴리오 정리, 자기소개서 작성, CS 공부, 그리고 Docker, Spring, AWS 같은 기술 학습도 함께 진행 중이라 개발 기간을 맞출 수 있을지 확신이 없다. 만약 진행 중 시간이 부족하다면, 다른 활동들을 잠시 배제하고 프로젝트에 집중하는 것도 좋은 방법일 것 같다.