카테고리 없음

기숙사 웹사이트 프로젝트 리팩토링하기 - 1. 시작하기 전에

sharpie 2025. 1. 3. 16:03

Duktown 프로젝트는 덕성여자대학교 기숙사생을 위해 그동안 이곳 저곳에 흩어져 있던 기능을 하나의 서비스로 통합해 편의를 제공하기 위한 프로젝트였다.

 

23년 9월부터 24년 1월까지 약 5개월 간 진행하였고, 사정상 데모 버전까지만 개발하고 중단된 프로젝트다.

취업을 준비하며 이 프로젝트를 다시 고쳐보고 싶다고 계속 신경쓰였는데, 미루고 미루다 아주 간단하게라도 리팩토링을 해봐야겠다는 생각이 들었다.

 

https://github.com/sharpie1330/Ducktown_Backend

 

GitHub - sharpie1330/Ducktown_Backend: 기숙사 학생들을 위한 웹 서비스 Ducktown 🦆 - Backend

기숙사 학생들을 위한 웹 서비스 Ducktown 🦆 - Backend. Contribute to sharpie1330/Ducktown_Backend development by creating an account on GitHub.

github.com

리팩토링은 내 레포로 포크를 떠 진행하기로 했다.


프로젝트 소개

시작하기 전에 어떤 프로젝트인지 다시 돌아보자.

 

현재 기숙사생들은 공지사항은 기숙사 홈페이지에서, 외박 신청은 포털 시스템에서, 같이 배달 주문을 할 사람을 모아 이야기하는 것은 오픈채팅, 나눔이나 중고거래는 에브리타임 등 기숙사와 관련된 활동들을 위해 여러 플랫폼을 이용해야 한다. 

 

이런 불편함을 줄이고자 Duktown 서비스는 기숙사 생활과 관련된 다양한 기능을 하나의 플랫폼으로 통합하는 서비스다.

 

현재 구현된 주요 기능은 다음과 같다.

1. 외박 신청

2. 수리 요청

3. 커뮤니티 - 배달팟, 일상, 장터

4. 채팅

5. 청소 체크, 대타 구하기


문제점 살펴보기

본래 포털에 있는 공지사항이나 기숙사 학식 메뉴, 점호 방송, 입사 신청 등도 모두 구현하는 것이 목표였다.

다만 이미 기숙사 입사 신청과 같은 핵심적인 기능의 경우 포털 계정 연동(SSO)가 필요할 것으로 보여 구현을 하지 않기로 결정했다. 교직원이 입사 신청한 학생 정보와 포털에 등록된 학생 등록 정보를 비교하여 검토하고 승인 및 기록을 수행해야 할 것으로 보이는데, 학교와 포탈 연동 계약을 체결하지 않는 이상 이 부분은 해결하기 쉽지 않아 보였기 때문이다.

 

또한 입사 신청 시 제출해야 하는 서류나 관련 규정 등에 대해 아는 바가 적었던 것이 문제가 되었다. 무엇보다 기획 포함 프론트, 백엔드 팀원 모두 기숙사 생활에 대한 경험이 없었던 것도 큰 이유였다. 그 외에도 개인적 개발 역량이나 시간적 제약 등의 이유로 해당 부분은 빼고 개발을 진행하게 되었다.

 

프로젝트를 마무리하고 배포했을 때에는 웹 사이트를 체험형으로 사용할 수 있게만 구현했다.

일부 구현되지 않은 기능의 경우 홈 화면에서 기숙사 홈페이지로 이동하는 버튼을 누를 수 있게만 했고, 나머지로 배달팟, 게시판, 채팅, 외박 신청, 수리 요청, 청소 기능을 구현했었다.

유닛장, 사생회, 교직원의 사용자 권한이 있어서 권한별로 보이는 화면이 달라지는 것 또한 목표였지만, 현재 기숙사생 사용 권한으로만 이용이 가능하게 구현되어 있다.

 

또 기획 당시 이 웹에서 제공하는 가장 핵심적인 기능은 청소 관련 기능이었다. 기숙사 학생들이 각자의 사정으로 청소를 하지 못할 때, 벌점을 받는 불이익을 피하고자 얼마의 금액을 걸고 대타 인원을 구하는 구인글을 올리곤 한다. 하지만 청소는 본인이 해야 한다는 규정이 있고, 걸리면 벌점을 부여받는다는 위험이 있다.

따라서 이것을 별도의 보상 없이 청소 날짜를 서로 교환하며 대타 신청을 할 수 있는 기능으로 구현해 편의성을 더하자는 것이 핵심이었다. 청소를 배정하는 것과 검사하는 것도 기능으로 포함시키면 이 문제가 쉽게 해결될 수 있다. 청소를 배정하고 검사하는 것은 교직원이 아니라 해당 역할을 맡은 학생들이 수행하기 때문이다.

 

하지만 이 핵심적인 기능에 대해 요구사항이 제대로 정립되어 있지 않아 애플리케이션 실행 시 청소 기능에서 오류가 나거나 제대로 사용할 수 없는 문제가 있다.


어떻게 개선할까?

리팩토링하고자 이 프로젝트를 다시 살펴볼 때 사실 잘 기억나지 않는 부분이 많아 애를 먹었다. 뭐부터 손을 댈지 몰라 그냥 수정하지 말까도 몇 번 고민했다. 

이 문제가 어디서 올까 생각했을 때, 문제의 최고 원인은 요구사항 정리가 제대로 되지 않았다는 지점이다.

 

프로젝트를 다시 정리하고, 기존 프로젝트를 수정해 가면 좋을 것 같았다.

그래서 아래와 같이 <프로젝트 제안서>를 작성해 보았다. 다시금 이 프로젝트의 목적과 개선점을 돌아보기 위함이다.

 

# 기숙사 생활 관리 웹사이트 개발 제안요청서

## 1. 프로젝트 개요

### A. 기숙사생 환경 및 현황
기숙사생들은 공지 확인, 행정 절차(외박 신청, 수리 요청, 점호 방송 등), 사생 간 소통(중고 거래, 청소 대타 구하기, 배달 음식 함께 주문하기 등) 등 다양한 용무를 위해 여러 플랫폼을 동시에 이용하고 있음
- **행정 절차/공지**: 주로 기숙사 홈페이지, 학교 포털 활용
- **사생 간 소통·생활 편의**: 에브리타임, 카카오톡 오픈채팅 등

### B. 문제점
분산된 환경으로 인해 정보가 한 곳에 모이지 않고, 커뮤니케이션 동선이 복잡해지는 문제가 발생
- 사생들은 공지 확인, 채팅, 거래 등 다양한 기능을 위해 여러 앱·웹사이트를 오가야 하므로 불편이 증가
- 학교(또는 기숙사 관리) 측에서도 중요 공지나 생활 관련 데이터를 한눈에 파악하기 어려움

---

## 2. 프로젝트 목적

### A. 기숙사 특화 기능을 하나의 웹 서비스로 통합
학생(사생)과 교직원 모두가 손쉽게 이용할 수 있는 단일 플랫폼 마련
1. **실시간 소통(채팅, 공지 등)**
	- 사생 간 대화, 관리자-사생 공지 전달 등 원활한 커뮤니케이션 지원
2. **생활 편의 기능**
	 - 중고거래, 배달팟 모집 등 기숙사생들에게 실질적으로 유용한 기능 제공
3. **행정 절차 재구성**
     - 입사 신청 등 중요한 행정 절차는 기존 학교 포털을 그대로 이용해 혼동을 최소화
     - 외박 신청, 수리 요청 등은 기숙사 홈페이지 화면을 참고해 웹 서비스 내부에 재구성
     - 사용자가 여러 곳을 찾아다닐 필요 없이 하나의 사이트에서 대부분의 행정 업무 처리

### B. 추가 기능 확장
1. **청소 배정·검사**
	- 동·층·호실별 청소 담당을 배정하고, 검사 결과 기록 및 통계를 제공
	- 체계적 청소 관리와 실시간 진행 상황 확인 가능
2. **택배 도착 알림**
	- 학생들이 실시간으로 택배 도착 정보를 확인하고, 알림을 받을 수 있게 지원
	- 택배 보관·수령 과정이 간편해지고 효율성 증대
3. **사생회(자치회)·유닛장 체계**
	- 기숙사 내 동(棟)·층(層) 또는 학교별 기준으로 묶은 유닛(Unit) 단위로 학생들을 그룹화
	- 각 유닛에서 유닛장(대표)을 선출해 청소, 생활 점검, 일정 공지 등을 자치적으로 운영
	- 일부 학교에서는 유닛장 개념이 없을 수 있으므로, 관리자(Admin) 페이지에서 해당 기능(유닛 구성, 유닛장 선출 등)을 활성화/비활성화할 수 있도록 설계

### C. 여러 학교에서도 도입 가능한 확장형 구조 지향
- **학교별 기숙사 운영 방식을 반영**
	- 필요한 기능을 추가·확장할 수 있도록 유연하게 설계
	- 예: 청소 배정 및 검사 기능, 택배 도착 알림 등
- **범용성 확보**
	- 특정 대학 기숙사에만 종속되지 않고, 다른 학교에서도 쉽게 도입 가능하도록 범용적 구조 채택

---

## 3. 기대 효과

### A. 기숙사 생활 전반의 일원화된 관리
- **학생(사생) 측면**
	- 여러 플랫폼을 전전할 필요 없이 하나의 웹사이트에서 대부분의 기능을 이용
	- 공지, 거래, 채팅 등을 통합적으로 처리 가능
- **교직원(관리) 측면**
	- 기숙사 일정에 따른 공지사항 등록, 학생 생활 관리·감독을 한눈에 파악 가능
	- 사생회 임원/유닛장 선출, 청소 검사, 택배 관리 등 업무를 효율적으로 처리

### B. 투명하고 효율적인 운영
- **활동 이력 기록·통계**
	- 사생회 임원, 유닛장 지원 및 선출, 공지, 청소 검사 등 각종 활동 기록이 체계적으로 저장
	- 통계 및 현황 조회 기능을 통해 생활 관리 데이터를 한 번에 파악, 근거 기반 의사결정 가능
- **명확한 권한 분배**
	- 사생·유닛장·사생회 임원·교직원 등 역할별 접근 권한을 명확히 설정 → 보안 및 책임소재 명확화

 


위 제안서에서 볼 수 있듯 리팩토링을 결정하며 하나의 학교에만 맞춰진 것이 아니라 여러 학교에서도 사용할 수 있도록 개발해봐야 겠다는 목표를 잡았다. 

따라서 이 프로젝트의 이름을 <Ducktown>으로 수정하고, 학생들을 오리로, 기숙사를 둥지라는 컨셉으로 개발해볼 예정이다.

 

프론트엔드 개발이나 디자인 쪽은 제외하고 백엔드 리팩토링만 진행할 예정이지만, 새롭게 시작하는 마음으로 이름부터 변경해 보고자 했다.

 

기존의 프로젝트 기획을 완전히 변경하지 않고, 유지할 부분은 유지하되 더 나은 방향으로 개선할 부분은 수정하는 방식으로 진행해 보겠다.