본문 바로가기

카테고리 없음

알파벳 위키 기능 - 2

반응형

바로 전 포스트에서 배웠던 위키 기능을 알파벳 서버에 적용해보겠습니다

두괄식 진행으로 결론부터 먼저 짚고 넘어가겠습니다

 

결론

위키 기능은 성공적으로 적용되었고, 정상적으로 동작함을 확인했습니다

 

위키 기능의 적용이 물 흐르듯이 흘러간건 아닙니다

기술 적용 전에 여러가지 고려 사항을 체크 했고, 지금부터는 위키 기능 적용 비하인드 스토리를 서술해 보겠습니다!

 

1. 서막

위키 웹사이트의 장점은 굳이 서술할 필요 없을 만큼 이미 널리 알려져 있고, 학우분들을 위한 위키의 필요성은 너무 자명했습니다

하지만 이 기능을 어느정도 수준으로 구현할지에 따라서 기술의 난이도는 천차만별이었고, 가장 쉬운 해결법은 이미 존재하는 위키 엔진을 내 서버에 올려 서비스 하는 것 이었습니다

 

하지만 위키 엔진은 너무 옛날에 만들어져서 기능 구현에 사용된 기술이 현재 쓰이는 보편적인 기술들과는 상당한 괴리가 있었습니다

하여 자바 스프링 기반의 새로운 위키를 만들어 서비스하기로 결정했고, 이에따라 구현 수준을 어느정도 타협 할 수 밖에 없었습니다

 

2. 타협

미디어 위키의 모든 기능 구현은 현실적으로 불가능하고 주요 기능 몇가지만 구현하기로 했습니다.

 

1. 마크 다운 파싱

2. 위키 문서 CRUD

3. 권한

 

위키는 위키 문법이라는 특유의 문법을 가지고 있는데 우리는 마크 다운 형식을 문법으로 결정했습니다

CRUD는 워낙 기본 기능이라 넣었습니다

문서 버전 관리가 위키의 핵심 기능 중 하나이지만 이를 구현하지 않고, 특정 유저만 CRUD를 할 수 있는 방식으로 타협했습니다

 

3. 구현

요구 사항을 몇가지로 압축했으니 이제 실제 구현에 들어갈 차례입니다

먼저 마크 다운 파싱 기능을 살펴봅시다

 

파싱은 딱 2가지가 필요합니다

바로 원본 데이터와 파싱기입니다

이때 원본 데이터는 서버쪽에 있어야함은 너무 자명합니다 또 원본 데이터(혹은 이미 파싱된 데이터)가 서버에서 클라이언트 사이드로 넘어가는 방식 역시 자연스럽고 당연합니다

 

하지만 파싱기의 위치는 생각해봐야 합니다

파싱기는 서버, 클라이언트 양쪽 모두 가지고 있을 수 있기 때문입니다

 

알파벳은 파싱기의 위치를 클라이언트로 결정했습니다

이때 고려 사항은 첫째 서버에 부담을 주기 싫다 둘째 클라이언트쪽에서 파싱기를 가져다 쓰기 편리하다 입니다

 

다음으로 CRUD를 살펴 봅시다

사실 이 기능은 워낙 타협을 많이 해서 일반적인 게시판 기능과 다름이 없습니다

댓글 기능이 없는 게시판이라고 생각하면 됩니다 여기에 마크다운 파싱기를 끼얹은...

 

마지막으로 권한 프로그래밍을 살펴 봅시다

위키 문서의 많은 기능을 잘라내서, 권한 기능으로 이를 커버해야합니다

권한은 적어도 2가지로 일반 유저와 관리자가 존재합니다

또 각 권한에 따라 어떤 api의 call은 막히거나, 허락되야 합니다

 

이렇게 위키 기능의 요구 사항과 구현의 대략적인 틀을 알아보았습니다

다음 포스트에서는 실제 소스코드와 함게 구현을 살펴보며 어떤 오류가 있었는지 올리겠습니다

 

반응형