본문 바로가기

3. Service/양디위키

[양디위키] 2018 양디위키 개발/운영 후기

위키 링크 : http://yywiki.lunab.xyz

위키 프로젝트 링크 : https://github.com/lunaB/YY-Wiki

위키 위키파서엔진 링크 : https://github.com/lunaB/WuriSchoolWikiEngine

 

만든 지 어느덧 4년이 지난 1인 개발 사이트이다. 기억을 더듬어 운영 개발 후기를 적어보려고 한다.

 

양디위키가 어떤 사이트인가?

양영디지털 고등학교 학생들의 슬기로운 학교생활을 위하여 만들어진 재미 지향적인 위키이다.

주로 양영디지털 고등학교 2018년 ~ 2020년 소프트웨어과 졸업생들이 주로 많이 사용한 것으로 추정된다.

데스크톱과 모바일 모두에서 사용할 수 있도록 반응형으로 디자인했다.

로그인 회원가입 기능이 있고 각 4단계의 권한으로 나누어진다.

 

개발은 2018년 2월 11일 ~ 2018년 2월 13일로  총 3일 동안 만들었다.

2018년 2월 ~ 2019년 4월, 2020년 10월 ~ 2021년 6월까지 운영했다.

 

문서 개수 약 1000개, 수정 횟수 30000번 이상으로 짧은 기간 동안 높은 트래픽과 이용률을 보였다.

데스크톱 사이즈

 

어떻게 기획하게 되었나?

고등학교 3학년 때 취업에서 갑작스럽게 진학으로 진로를 바꾸고 수능 종합 학원을 다니면서 개발할 시간이 부족해졌다.

고등학교에 내 이름을 건 사이트 하나 정도는 남기고 싶었는데, 그 방법으로 생각난 것 중 학교전용 위키사이트를 개발하는 것이었다.

 

고등학교 때 후배들이랑 많이 알지는 않았지만, 나를 모르는 후배는 없을 정도로 유행했었으니 성공이라고 볼 수 있을 것 같다.

 

개발 스펙은 어떻게 정했나?

JAVA버전을 당시 개발회사들이 선호하는 1.6 혹은 1.7로 개발하고 ibatis를 사용하려고 계획했으나, 새로 나온 1.8의 람다 문법을 좀 이용해 보고자 하는 생각에 1.8 스펙으로 갈아탔다.

JDK 1.8
JAVA 1.8
Spring MVC (lagacy project) 4.3.10
Spring Sequrity 4.2.1
Tomcat 8.5, 9.0
Mybatis 3.4.1

톰켓은 기존에 8.5로 개발했으나, 이후 9.0으로 마이그레이션 했는데 8.5에서도 돌아가는 것을 확인했다.

 

운영에 해킹이나, 공격 시도는 없었나?

개발을 배우는 고등학생 입장으로 충분히 공격하고 싶을 만하다고 생각하고, 상당히 많은 공격 시도가 있을 것을 예상하고 있었다.

그중 기억에 남는 몇 가지만 추려보려 한다.

 

1. 반달, 악의적 위키 수정

위키에 기재된 게시물을 임의로 내용을 지워버리거나, 악의적으로 수정하는 경우이다.

애초에 설계 때부터 이러한 부분을 고려해서 과거 이력과 IP해시를 저장해두는 방식을 이용하여, 악의적 유저의 수정 기록을 삭제, 차단 가능하게 만들었었다. 그렇기에 큰 문제없었다.

 

2. XSS 공격

해당 공격은 가장 걱정했던 공격 중 하나이고, 짧은 개발 시간이지만 상당히 신경 썼었다. 

배포하기 전 테스트 기간에 XSS 공격을 미리 해달라고, 친구들한테 부탁했고 URL을 이용한 스크립트 공격 말고는 문제가 없어, 해당 부분을 업데이트하고 배포했다. 

 

3. 메크로성 테러

누구나 문서를 만들고 수정할 수 있다는 점을 공략하여, 랜덤 한 이름으로 문서를 만들고 채워서 다른 이용자들에게 불편함을 준다.

여기서부터는 진짜 공격이라고 볼 수 있다. 게시물 수정 시마다 Captcha 인증을 하도록 만들어서 막았다.

 

4. 트래픽성 테러

무작정 검색 트래픽을 매우긴 단어로 꽉 채워서 디도스 트래픽으로 공격했다. 물론 query string이라 검색으로 굳이 할 필요는 있었나 싶지만, 그 자체로 cafe24 트래픽을 모두 소진하여 다운되는 불편한 상황을 만들었다.

이는 Cloudflare를 이용하여 쉽게 방어할 수 있었다.

 

비하인드

귀여운 후배들에게 연락이 오기도 했다. 학교 메일로 봤는데 메일 이름을 보니 아마 3년 후배인 것 같다.

아마 사이트 하단 문의 이메일을 본 것 같다.

해당 위키를 보고 학교에 입학하는 학생도 있었다고 하고, 암튼 그렇다!

 

왜 운영을 종료했나?

여러 가지 이유가 있지만 제일 큰 이유는 서버 유지비보다 광고비가 적다는 점이다.

서버 유지는 Cafe24 스페셜 호스팅 톰캣 호스팅을 이용했다. 트래픽이 많을 때는 고급형, 적을 때는 절약형으로 조절하면서 사용했었다.

광고는 구글 광고를 사용했다. 초기에는 광고를 넣지 않고 운영을 했었고 중반부터 광고를 추가했었다. 당시 고등학생이었고 용돈도 받지 않았기에 적은 수익금으로는 조금 부담이 있었다.

지금 생각해보면 돈이 조금 아깝더라도 유지해보면 좋지 않았을까 싶다.

 

느낀 점

고등학생 때 정말 열심히 공부하고, 여러 사이트를 만들고 선보였었지만 그중 제일 반응이 좋은 서비스였다.

점심시간에 모의고사 풀고 있을 때마다 친구들이 찾아와서 문서들 보여주면서 오늘 이런 거 추가되었는데 웃기더라 하고 보여주고 갔고, 선생님들도 후배들이 수업시간에 자꾸 위키 하느라 수업 열심히 안 듣는다고 얘기하기도 해서 웃겼다.

 

약간 당시 입시로 인한 스트레스를 버티는 힘이었던 것 같다.