🏆 개발 기간: 24.10.05 ~ 24.12.01
- 현재 부원이 본인이 제출한 과제 결과를 확인하기 위해 엑셀에서 일일이 찾아야 하는 불편함이 있었습니다.
- 이런 문제를 해결하기 위해 과제 확인 시스템을 웹 애플리케이션 개발을 했습니다.
- 교육팀이 과제를 검토하고, 결과를 부원의 정보에 맞게 등록하면, 부원들은 자신의 이름과 전화번호 등의 기본 정보만 입력하여 과제 결과를 간편하게 확인 가능합니다.
- 추가로, 본인의 보증금 현황도 확인할 수 있는 기능을 제공합니다.
🏆 사이트
🏆 노션
🏆 ZEP
- 로그인 유도 화면
- 이름 + 전화번호를 입력한다.
- 목록을 클릭하면서 과제 결과를 확인한다.
- O면 성공, X는 실패, △는 미흡이다.
- 각각 0원 -20000, -10000원이 차감된다.
- 로그인/회원가입 유도 화면
- 이름 + 전화번호 + 비밀번호 + 비밀번호 확인 을 입력한다.
- 이때 가입을 하면 PREADMIN으로 로그인을 할 수 없다.
- 마스터 권한자가 ADMIN으로 승격할때까지 기다려야된다.
- 운영진은 일반 부원과 다르게 보안을 위해 이름 + 전화번호 + 비밀번호를 입력해야된다.
- 이름 + 전화번호로 부원들의 회원을 등록할 수 있다.
- 방어권 갯수 및 과제 결과를 반영할 수 있다.
- 체크박스는 해당 부원이 과제를 확인 또는 미확인 할 수 있도록 넣어났다.
- 예시로 1주차 월요일 과제 제로초 27강이 체크박스가 해제가 된채로 있으면 해당 부원은 이에 대한 과제 결과를 확인할 수 없다.
- 처음 회원 가입한 운영진은 PREADMIN이다. 따라서 ADMIN으로 올릴 수 있다.
- 마스터 계정은 부원들 과제 결과들을 엑셀표로 한눈에 확인할 수 있다.
- MVP를 받은 부원만 해당 화면이 뜹니다.
- 주차별로 받은 MVP를 확인할 수 있다.
- 일정이 아직 안된 경우는 클릭할 수 없다.
-
마스터 권한
- 처음 가입한 운영진은 등급이 PREADMIN이다. 이때 마스터 권한자(교육팀장)가 ADMIN으로 승격해야지 운영진은 부원들 과제를 운영할 수 있다.
- 이렇게 한 이유는 무분별한 운영진 유입을 막기 위해서이다.
- 따라서 운영진 url도 /system이다.
-
운영진 권한
- 부원들의 과제를 결과를 메길 수 있고, 보증금 방어권을 수여할 수 있다.
- 동아리 부원을 등록할 수 있다.
-
부원 권한
- 부원들 등급은 USER이다.
- 따로 회원가입은 안해도 된다. 왜냐하면 앞에서 말했듯이 운영진이 동아리 부원을 다 등록을 해서 전화번호 + 이름만으로 로그인만 하면 된다.
- 과제 결과를 확인만 하면 된다.
-
MVP
- 해당 주차에 MVP 부원은 해당 화면 들어가면 바로 축하메시지가 뜬다.
- MVP 테이블의 flag, visual 컬럼을 활용하여 현재 1주차면 2,3,4, 챌린저 mvp는 클릭 못하게 구현을 해놓았다. 시간이 지나면 차츰 해제할 것이다.
- 참고로 MVP 권한은 오직 마스터만 할 수 있다.
- 주차별 MVP로 선정되신 분께 축하의 음성이 전달됩니다: "00님, 축하합니다!"
-
엑셀표 변환
- 피로그래밍 부원들의 과제 결과를 엑셀 파일로 추출하여 한눈에 확인할 수 있다.
- 모든 부원의 과제 결과를 임의로 생성한 Excel 리스트에 Member 및 Board 리스트 형식으로 저장하고, 이를 기반으로 Sheet를 활용하여 Excel 파일을 생성하였다.
- 마스터 계정은 해당 버튼을 눌러 결과 파일을 다운로드할 수 있도록 설계하였다.
-
EC2 Dcoker
- 스프링과 DB를 Docker를 활용해서 배포를 했다.
- EC2에서 pull을 한 후 도커 서버를 실행했다.
Management Tool
- 형상 관리 : Git
- 커뮤니케이션 : Zep, Notion
- 디자인 : Figma
🐳 Backend
- Java
17
- SpringBoot
3.3.4
Spring JPA
Spring Thymeleaf
Spring Session
🦊 Frontend
- HTML5, CSS3, JAVASCRIPT
🗂️ DB
MySQL
8.0.4
🌐 Server
- AWS EC2 (Ubuntu
20.04
) - Nginx
1.23
(Reverse Proxy) Docker
🗝️ API
🔨 IDE
- Intellj
2023.2
- MySQL Workbench
8.0.29
- VSCode
1.69.2
🖼️ Dependencies
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
- 배포를 완료한 후 6시간 간격으로 EC2의 CPU 사용률이 99%까지 치솟아 서버가 다운되는 문제가 발생했다. 이를 해결하기 위해 swap을 도입했는데, 이는 메모리 부족 시 디스크 공간을 임시로 활용함으로써 메모리 부족으로 인한 시스템 과부하를 완화하는 역할을 한다. 이를 통해 CPU 사용률 급등 문제를 해결하고 서버의 안정성을 확보할 수 있었다.
- JMeter를 활용하여 신규 부원들의 트래픽 과부하를 방지하기 위해 서버 성능을 분석한 결과, 30명을 기준으로 처리 속도는 평균 0.3초내로 확인되었다.
최승호 | 이지현 | 김민수 |
---|---|---|
![]() |
![]() |
![]() |
PM & Backend | Frontend & Designer | Backend |
- 최승호
- 팀장, 기획, 회원 및 MVP API 개발 및 서버 배포
- 이지현
- 피그마 디자인, 프론트 개발
- 김민수
- 과제 API 개발 및 서버 배포