주의: 이 문서의 이전 리비전(cm3yc1uib000lp39kxub1hdzs)을 보고 있습니다. 최신 버전 보기

송죽학사

리비전 수정: 2024. 11. 26. 오후 7:47:28

개요

송죽학사는 경기과학고등학교의 학사 시스템이다. 링크

급식 확인, 과제 제출, 외출 신청, 시설물 사용 신청과 같은 다양한 기능을 제공한다.

Screenshot 2024-11-26 at 7.41.00 PM.png

장점

송죽학사는 수강 관리, 과제 제출, 심지어 교내 커뮤니티의 기능 등 대부분의 학교에서 별도의 플랫폼을 사용하고 있는 기능들을 모두 하나로 통합한 플랫폼이다. 따라서 교내에서 필요한 대부분의 기능들을 하나의 웹사이트에서 해결할 수 있다는 장점이 있다.

무엇보다 교내 선생님이 직접 관리하시기 때문에 학생들과 교사들의 니즈에 맞춰 다양한 기능을 추가하거나 제거할 수 있다는 장점이 있다. 실제로, 학생회에서는 송죽학사의 기능 개선을 위한 논의가 꾸준히 진행되며, 학생회에서 결정된 사항은 담당 선생님께 전달되어 대부분 송죽학사에 반영된다.

단점

느린 속도

송죽학사의 로딩 속도는 상당히 느리다. 데이터 속도 제한이 걸린 상태에서 송죽학사에 접속해 본 학생이라면, 송죽학사의 로딩 속도가 다른 웹사이트와 꽤 큰 폭으로 차이난다는 것을 느껴 본 적이 있을 것이다. 송죽학사가 이렇게 느린 속도를 가지게 된 것에는 몇 가지 원인이 존재한다.

송죽학사는 우리나라의 대부분 정부 웹사이트가 그렇듯이, 자바와 jsp를 사용한다. 점점 트렌드에서 밀려나고 있지만, 자바는 여전히 백엔드 개발에서 큰 비중을 차지하고 있는 언어이기에, 자바를 사용한다는 것 자체는 문제가 되지 않는다. 하지만 과거의 언어와 프레임워크를 사용하는 것에 파생되는 가장 큰 문제는 fail proof의 부재로 인해 기능을 잘못 구현하기 쉽다는 점과, 최신 기술을 적용하기가 어렵다는 점이다.

백엔드

데이터베이스 Connection Pooling 구현에 문제가 있어, 프로그램 신청과 같이 전교생이 한번에 접속할 때 데이터베이스가 연결의 수를 견디지 못하고 다운되는 일이 잦다. 또한, 서버에서 애셋을 로딩할 때 gzip/brotli와 같은 압축 기술이 적용되지 않아, 초기 로딩 속도가 느리다. 소스코드의 minify가 이루어지지 않아, 수많은 불필요한 whitespace나 긴 변수명이 서버에서 다운로드되며 초기 응답 속도를 느리게 하는 것은 덤이다.

프론트엔드

송죽학사의 프론트엔드 구현은 기본적으로 JQuery, JQuery UI에 의존하고 있다. JQuery는 과거 Vanilla Javascript에 기능이 부족하던 시절, 프론트엔드에서 Javascript를 보다 편리하게 사용하기 위해 사용되기 시작한 프레임워크이다. ES6 이후에서는 JQuery의 대부분 기능이 Javascript API에 구현되었기에, JQuery를 사용할 이유가 현저히 줄어들었다. 현대 웹 개발에서 JQuery를 사용하는 것은 렌더링 속도만 지연시킬 뿐이다.

렌더링 속도를 지연시키는 것은 이 뿐만이 아니다. 송죽학사의 프론트엔드는 cryptojs나 bootstrap와 같은 수많은 라이브러리를 통해 작동한다. 현대의 웹사이트에서는 webpack을 사용해 페이지에서 필요한 dependancy들을 번들화시켜 배포한다. 이렇게 하면, 클라이언트에서 여러 개의 라이브러리를 로딩하기 위해 여러 번 HTTP 요청을 보낼 필요성이 없어지며, 성능이 향상된다. 하지만, 송죽학사는 번들링을 하지 않고, 다양한 라이브러리의 코드들을 모두 별도로 로딩한다.

번들링을 거치지 않고 모든 dependancy를 따로 로딩한다면 1차적으로는 서버의 부하가 늘어나며, 응답 속도가 느려진다. 번들링을 거치지 않는 것은 렌더링 지연과도 밀접한 관련이 있는데, 페이지의 구성요소를 표시하기 위한 라이브러리가 모두 로딩되어야 페이지를 렌더링할 수 있다. 즉, 브라우저는 정상적으로 인터페이스를 표시하기 위해, 모든 라이브러리가 정상적으로 로딩되기 전까지 렌더링을 지연시킬 것이다.

실제로, 송죽학사에서 Lighthouse 보고서를 생성해 보면, 다양한 JS 파일, CSS 스타일시트를 로딩하는 과정에서 Render Blocking이 발생하고 있음을 알 수 있다.

각종 취약점

"매 기수마다 송죽학사를 해킹한 학생이 한 명씩은 존재한다" 라는 말이 있을 정도로 꾸준히 취약점이 발견되고 있다.1 송죽학사의 취약점을 발견하고 해결하기 위한 봉사 동아리가 따로 있었을 정도이다. 송죽학사에는 민감한 정보가 상당히 많이 저장되어 있기에 수많은 보안 취약점은 빠르게 해결되어야 할 심각한 문제이다.

Footnotes

  1. 2024년 만우절에는 한 학생이 메인 페이지에 보노보노를 띄우기도 했다. IMG_4088.png