세종대학교 학생들을 위한 코딩 도우미 플랫폼 “SJ Coding Helper
- 코딩 수업을 처음 접하는 비전공자, 신입생 학생
- 학생 수에 비해 부족한 조교 학생 수
- 실시간 소통이 불가한 기존 시스템
- 조교 인권이 보장되지 않는 기존 시스템
- 학습 자료를 찾기 힘든 신입생
- Spring-boot, Spring JPA, Flask, Mysql, Nginx, Docker, AWS EC2, AWS RDS, Tensorflow, React.js
- Java, Python, Javascript
- zt-exec
- 처음으로 Infra 구축을 해봤습니다. 배포 플로우를 짤 줄 알게 되었습니다.
- 무중단 배포 서비스를 위해 Nginx에서 로드 밸런싱 설정을 해줬습니다. 각 웹 어플리케이션들을 도커 컨테이너로 관리해주었고, 포트 포워딩을 함으로 써 하나의 웹 서버로 관리할 수 있게 설정해주었습니다.
- Spring-boot에서 시스템에 있는 Gcc컴파일러나 Python3를 실행할 때 자원에 대한 보안과 타임아웃을 고려해 zt-exec 라이브러리를 사용하였습니다. docker 컨테이너 내부에서 유저 모드로 웹 어플리케이션을 실행하고 시스템에 접근하는 유저 모드 권한을 뺏음으로써 보안 강화를 하였습니다.
- JPA를 도입하고, 채팅 시스템에서 다대다, 일대다 환경을 고려해주어 무결성을 지켰습니다.
- Mysql 사용해 스키마 구성을 하고, Spring-boot에서 챗봇, 채팅, 컴파일러 REST API 구축 하였습니다.
- Chatbot 기능을 ChatGPT API로 변경하였습니다.
- OOP를 고려한 리팩토링을 진행하였습니다.