created by Aha00aAha00a at 2026-11-01
last modified by Aha00aAha00a at 2026-11-01
revision: 1

Scala Play Framework 위키 엔진

AhaWiki 는 Scala 와 Play Framework 로 만든 오픈소스 위키 엔진입니다. 2015년에 시작해 지금도 이 위키를 포함한 여러 사이트를 돌리고 있습니다. 이 글은 Scala 웹 애플리케이션의 실제 예를 찾는 개발자를 위한 소개입니다.

소스는 GitHub 에 GPL-3.0 으로 공개되어 있습니다.

1. 구조

  • 서버 — Play, Twirl 템플릿, anorm 으로 쓴 SQL. ORM 없이 쿼리를 직접 씁니다.
  • 저장소 — MySQL 호환 데이터베이스, 캐시와 인스턴스 사이 메시지에 Redis, 첨부에 S3.
  • 관리자 화면 — React 와 Mantine 을 esbuild 로 묶습니다.
  • 테스트 — Scala 스펙은 H2, 브라우저 쪽 함수는 Node 내장 테스트로 돌립니다(Dev Testing).

2. 볼 만한 부분

  • 한 설치로 여러 위키. 요청의 호스트로 사이트를 고르고, 모든 조회가 사이트 안으로 묶입니다(Setup).
  • 인터프리터와 매크로. 본문을 그리는 블록이 플러그인 모양으로 나뉘어 있습니다. 표, 칸반, 간트, 지도가 모두 같은 틀 위에 있습니다(Interpreter, Macro).
  • 행 단위 권한. 대상과 사용자의 조합을 행으로 저장하고, 가장 구체적인 행이 이깁니다(AccessControl).
  • 한 사람이 운영하는 배포. 대기 인스턴스를 먼저 띄우고 페이지별로 비교한 뒤 넘기는 절차가 스크립트로 있습니다(Dev Deploying).

운영하면서 무엇이 틀렸고 왜 바꿨는지는 Dev 아래 페이지에 적어 둡니다. 큰 줄기는 ChangeLog 에 있습니다.

3. 직접 돌려 보기

필요한 것과 명령은 Dev RunningLocally 에 있습니다. 설치가 처음이면 그 페이지부터 보세요. 설정 세 가지가 없으면 서버가 뜨지 않는데, 오류가 그 이름을 말해 주지 않습니다.

4. 이 엔진이 맞지 않는 경우

위키가 필요할 뿐이라면 더 널리 쓰이는 엔진을 고르는 편이 쉽습니다. 사용자와 플러그인이 많은 쪽이 문제를 만났을 때 답을 찾기 쉽습니다. AhaWiki 는 페이지 사이의 연결, 페이지 안의 블록, 한 설치로 여러 위키를 돌리는 쓰임이 맞을 때 고를 만합니다.

6. See Also

6.2. Similar Pages

Similar pages by cosine similarity. Words after page name are term frequency.

6.3. Adjacent Pages

≤ 32
all
1.0x
1.0x
80
-120
ON
0/0
0/0
0.00
0
0 / 0
1.00x