Menu

문서정보

목차

Play Joinc 에 대해서

www.joinc.co.kr를 약 (2000년 부터 ~ )16년째 운영해오고 있습니다. 사이트 특성상 코드가 올라가는 경우가 많은데, "직접 코드를 입력하고 수정하고 실행 할 수 있다면 좋겠다"라는 생각을 하고 있었습니다. rubymonk와 같은 사이트를 만들고 싶었던 거죠. 하지만 자원을 격리하는게 힘들어서 포기했습니다. VM을 이용하면 가능하긴 했으나, 굳이 VM을 이용하면서 까지 개발하고픈 생각은 없었습니다.

2013년경 컨테이너 소프트웨어인 도커(docker)가 보급되면서 개발들이 쉽게 컨테이너를 구성 할 수 있게 됐습니다. 유저가 실행하는 코드의 공간을 격리하고 CPU와 메모리와 같은 자원을 제한 할 수 있게 된겁니다. 이를 계기로 play.joinc.co.kr 사이트 개발을 다시 시작하게 됐습니다.

개발 환경

먼저 컨텐츠를 담을 위키엔진을 만들었습니다. 워드프레스나 미디어위키 같은 잘 만들어진 CMS가 있긴 했지만, 제 목적에는 맞지 않았습니다. 텍스트와 이미지와 같은 컨텐츠를 담기에는 문제가 없지만, 실행가능한 코드를 포함하는 컨텐츠를 만들기가 쉽지 않았기 때문입니다.

그런 점에서 플러그인 개발이 쉬운 모니위키는 적당한 위키엔진이긴 하지만, 너무 구식인데다가 언어의 특성상 백그라운드에서 프로세스를 관리하기가 쉽지 않았습니다. 그래서 모니위키와 비슷한 스타일의 위키엔진을 개발하기로 했습니다. 이름하여 gowiki로 play.joinc.co.kr은 gowiki로 만들고 있는 첫 번째 서비스입니다.

주요 컨텐츠

온라인 책

실행 가능한 코드를 포함한 인터엑티브한 온라인 프로그래밍 책을 제공합니다. 유저는 문서에 포함된 코드를 실행하고, 수정하고 그 결과를 확인 할 수 있습니다. 향후에는 파일을 올리고 조작하기 위해서 스토리지 공간을 제공하는 서비스까지 포함할 생각입니다.

지원 언어들

컨테이너 기반이기 때문에, 언어에 상관없이 컨텐츠를 만들 수 있습니다. 백앤드 기술의 지원이 중요한 분야가 아니라, 컨텐츠의 수급이 중요한 분야입니다. 개인적으로 관심 있는 컨텐츠 부터 만들어갈 생각입니다.

유저

유저는 Guest 유저, 일반 유저, 관리 유저로 구성됩니다.

문서 개발 프로세스

Wiki 문서와 코드가 분리됩니다. 코드는 별도의 데이터베이스에 저장되며, Wiki 문서에서 불러오는 방식으로 사용합니다. 문서와 분리됨으로써 만들어진 코드는 코드 공유와 같은 다른 컨텐츠에서도 사용 할 수 있습니다.