본문 바로가기
생각 정리/SSAFY

[SSAFY] 공통 프로젝트 회고

by mintropy 2022. 2. 20.

0. 프로젝트 소개 및 정리

온라인 학습 지원 서비스 EDULA

- WebRTC를 활용한 화상회의 기능

- 학교 관리자를 중심으로 학생, 교사, 수업 등 관리

- 각 수업별 숙제 및 게시판

- 친구 및 쪽지 기능

사용 기술 스택

- 프론트 : React + Typescript

- 백 : Django + DRF

- 기타 : Gitlab CI/CD + Docker + Jenkins, OpenVidu

기여도

- 백엔드 70%

  - 백엔드 코드 작성량 기준으로 보았을 때, 절반가량 작성한 것으로 생각됨

  - 백엔드 Django사용과 관련한 추가적인 라이브러리 탐색 및 학습으로 팀원이 사용할 수 있도록 도움을 중

 

1. 프로젝트를 시작하며

프로젝트 주제 선정

WebRTC를 기반으로 다양한 주제에 관한 아이디어를 나누었다.

스터디 그룹과 관련한 아이디어도 나왔지만, 비슷한 주제의 프로젝트와 사용 서비스와의 차별성을 만들기 어려울 것이라 생각했다. 약간 생각을 틀어서 학교 또는 교육기관 입장에서 각 수업을 생성 및 관리하는 과정에 적용할 수 있을 것이라 떠올랐다. 기존 온라인 수업을 듣던 과정을 생각해보면, 수업을 기존 화상회의 프로그램(줌, 구글 미팅 등)을 활용할 수 있지만, 교육과 이어지는 작업들이 편하지는 않았다. 수업, 공지, 숙제를 위해 서로 다른 서비스를 활용하는 경우도 많았다.

그래서 온라인 스터디와 유사한 아이디어이지만, 그 대상을 학교 및 교육기관으로 대상으로 생각해보았다

프로젝트 주제 구체화

이 과정에서 ERD 구축에서 많은 고민을 했다

최대한 FK 참조를 줄이는 방식으로 구현할 수 있지만, 그렇게 되면 실제 성능 및 데이터 저장과 활용이 번거로워 질 수 있다. 그렇다고 무제한 늘리게 되면 순환 참조가 생겨서 실제 코드로 다루기 번거로워질 수 있다.

이를 해결하기 위해 로그인을 위한 아이디/비밀번호가 저장되는 유저 테이블을 기준으로 다른 테이블을 이어나가는 방식을 선택했는데, 더 좋은 방식을 선택할 수 있지 않았을까 라는 고민도 한다.

프로젝트 기술스택 선정

백엔드 3명으로 구성되어, 그중 두 명이 Django를 한 명이 SpringBoot를 알고 있었다. 이전부터 Django를 활용하여 프로젝트를 진행하고 싶었던 부분이 있었기에 Django를 선택했다.

물론, SpringBoot 또는 Flask, FastAPI 등 사용도 고려해보았다. 프로젝트가 마무리된 지금, 다른 웹 프레임워크가 더 좋은 선택이었을지는 모르지만, Django를 선택한 것은 좋은 선택이었다고 생각한다. 길지 않은 시간이었지만, Django뿐만 아니라 웹과 관련하여 여러 가지 내용을 조금 더 깊게 알게 된 것 같다.

 

2. 프로젝트 진행

Django + DRF

프로젝트 기본 세팅으로 금반 구현하기는 했다

다만 이전 Function based view에서 Class based view, view set으로 점차 넘어가며 적용하는 과정을 가졌다

GraphQL

재미있는 기술이라 생각해서 도전했는데, 마냥 쉽지는 않아서 도입하지 못했던 것이 아쉬웠다

기회가 되면 깊게 공부하여 도입해보고 싶다

drf-spectacular

기본적인 swagger로도 충분한 소통이 가능할 수 있지만, 세부적으로 더 다양한 예시와 자세한 설명을 공유할 수 있었다

factory-boy

처음으로 테스트 코드를 생각해보았고, 작성했다. 그 과정이 마냥 쉽지는 않았지만, 테스트 데이터 생성 자동화 등을 지원하는 라이브러리를 통하여 조금 더 수월하게 할 수 있었다

 

3. 프로젝트를 마무리하며

잘한 점

- Django 및 Django 3rd part Lib를 스스로 찾아서 호환성 확인 및 도입

- DRF CBV, ViewSet 적극적 도입

- OAS3.0지원하는 drf-spectacular를 활용한 swagger 구성

- factory-boy를 활용한 Django test

아쉬운 점

- CI/CD 등과 관련하여 적극적으로 공부하고 참여하지 않음

- 프론트 엔드와 관련하여 조금 더 공부해보는 시간을 가졌으면 좋았을 것 같음

- 기술적 공부에 실제 구현보다 더 많은 시간을 쓰는 경향이 있었음

개선할 점

- CI/CD를 공부하고, 내가 직접 참여해보기

- Django를 더 깊게 다양하게 시도해보기

- 소통 및 개발과정 통합하기(Jira, MM, GitLab 등)

댓글