diff --git a/docs/Component.md b/docs/Component.md
new file mode 100644
index 0000000..37d0ad9
--- /dev/null
+++ b/docs/Component.md
@@ -0,0 +1,95 @@
+---
+마지막수정일: 2024-03-01
+---
+
+# Component 구성
+
+컴포넌트 구성과 역할을 설명합니다.
+
+## 객체
+
+서버 내에 객체는 다음 그림과 같습니다.
+
+
+
+
+### MongoDB
+
+메인 DB는 MongoDB입니다.
+
+Collection은 다양하나, 게임 엔진에 필요한 값과 게임 엔진에 필요하지 않은 값이 분리됩니다.
+
+분리되는 예시는 다음과 같습니다.
+
+- 게임 내부 Collection
+ - 장수의 능력치
+ - 장수의 금/쌀
+ - 장수의 수비 켬/끔 여부
+ - 도시의 현재 스탯
+ - 국가의 금/쌀, 전략 수치
+ - 국가의 게임 내 정책(세율, 지급률)
+
+- 게임 외부 Collection
+ - 장수의 메시지함
+ - 국가의 방침 게시물
+ - 국가의 회의록
+ - 국가간 외교 메시지
+ - 로그인 정보, 벌점
+ - 유니크 경매장 진행상태
+
+
+### 게임 엔진
+
+턴 실행과 관련된 게임 핵심 로직을 처리하는 엔진 컴포넌트이며, 게임 내부 Collection에 대한 쓰기 명령은 게임 엔진에서만 가능합니다.
+
+게임 엔진은 예외적인 경우에 게임 외부 Collection의 쓰기 명령을 할 수 있지만, 게임 내부에 영향을 주지 않는 경우여야만 합니다. 만약 예전에는 게임 외부 Collection에 기록되는 데이터였다 할지라도, 게임 엔진에서 다루기 시작한다면 게임 내부 Collection으로 이관됩니다.
+
+#### 명령 처리 순서
+
+
+
+게임 엔진은 내부적으로 세개의 처리 큐를 가집니다.
+
+- 장수 처리 Queue: 턴마다 처리되는 장수 명령 처리 Queue입니다.
+- NPC Action Queue: NPC의 명령을 처리하는 Queue입니다.
+ - NPC 명령 선택기의 입력 요청이 이곳에 쌓입니다.
+- 유저 Action Queue: 유저의 명령을 처리합니다.
+ - API 처리기를 통해 전달됩니다.
+
+세개의 처리 큐는 장수 처리 Queue > NPC Action Queue > 유저 Action Queue 순의 우선순위를 가집니다.
+
+#### DB 반영 시점
+
+MongoDB에 데이터가 기록되는 시점은 Queue의 아이템 하나를 해소했을 때 이루어집니다.
+즉, 장수의 턴 하나가 완전히 실행되었을 때에만 DB에 반영된다고 할 수 있습니다.
+
+게임 엔진 내에서 변경되는 내용은 메모리 내의 저장소에만 담아두고, 처리를 마치는 시점에 변경된 내용을 정리하여 한번에 쓰기 작업을 수행하여 Transaction을 모사합니다.
+
+
+### NPC 명령 선택기
+
+NPC 명령 선택기는 NPC가 어떤 턴을 실행해야할지만을 연산하는 컴포넌트입니다.
+
+NPC의 실행턴보다 일정 시간 이전에 적절한 턴이 무엇인지 계산하고, 게임 엔진으로 결과값을 전송합니다.
+
+이때 명령의 규격은 일반 유저가 내리는 명령 규격과 유사한 형태를 갖습니다.
+
+> [!NOTE]
+>
+> 기존 삼모전 PHP에서는 명령 선택기가 게임 엔진과 동기적으로 구성되어있었습니다.
+
+
+
+### API 처리기
+
+API 처리기는 유저의 명령을 받아 1차적으로 처리합니다.
+
+게임 외부 데이터에 대한 처리라면 읽기/쓰기를 모두 수행하며, 게임 내부 데이터이면 읽기 작업은 직접할 수 있습니다.
+
+턴 입력 등 쓰기 작업이 요구되는 경우라면 게임 엔진에 해당 작업을 요청하고, 작업이 끝날때까지 기다린 다음, 엔진으로부터 결과값을 받아 반환합니다.
+
+> [!WARNING]
+>
+> **어떠한 경우에도** 게임 내부 DB에 직접 쓰기를 해서는 안됩니다.
+>
+> 게임 엔진은 메모리 cache에 강력히 의존하므로, 내부 DB에 직접 쓰는 작업은 게임 엔진의 처리 결과를 훼손할 것입니다.
diff --git a/docs/engine_issue_port.drawio.svg b/docs/engine_issue_port.drawio.svg
new file mode 100644
index 0000000..246911a
--- /dev/null
+++ b/docs/engine_issue_port.drawio.svg
@@ -0,0 +1,302 @@
+
\ No newline at end of file
diff --git a/docs/threads.drawio.svg b/docs/threads.drawio.svg
new file mode 100644
index 0000000..6bf3fb9
--- /dev/null
+++ b/docs/threads.drawio.svg
@@ -0,0 +1,285 @@
+
\ No newline at end of file