Skip to content

Commit e7d4165

Browse files
committed
Added section for Scaling FormKiQ components
1 parent 951c480 commit e7d4165

2 files changed

Lines changed: 177 additions & 49 deletions

File tree

docs/formkiq-modules/modules/filesync-cli.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,10 @@ The CLI includes a built-in CSV importer for quickly bulk-loading:
181181
- **Document Content**
182182
- **Document Attributes**
183183

184+
:::note
185+
When importing large number of documents, you may want to review **[Scaling Components](/docs/platform/overview#scaling-formkiq-components)** to help reduce time to import documents.
186+
:::
187+
184188
### Import Attributes
185189

186190
Bulk define or update the metadata fields (attributes) that can later be applied to your documents.

docs/platform/overview.md

Lines changed: 173 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,108 @@
11
---
22
sidebar_position: 1
3+
id: platform-overview
4+
title: Platform Overview
5+
sidebar_label: Overview
6+
slug: /platform/overview
7+
description: High-level overview of the FormKiQ platform, architecture, core capabilities, and design principles.
8+
tags:
9+
- formkiq
10+
- overview
11+
- architecture
312
---
413

514
# Overview
615

7-
FormKiQ is a **flexible document management platform** powered by AWS managed services and serverless technologies. It provides:
16+
FormKiQ is a **flexible, API-first document management platform** built entirely on AWS managed services and serverless technologies. It is designed for teams that need to store, manage, process, and automate documents at scale without operating traditional document management infrastructure.
817

9-
- **API-first architecture** for document operations
10-
- **AWS Well-Architected** design principles
11-
- **Cost-effective** serverless implementation
12-
- **Scalable** document management capabilities
18+
FormKiQ provides a composable foundation for document-driven applications, enabling secure storage, rich metadata, event-driven workflows, and full-text search while following **AWS Well-Architected Framework** principles.
1319

1420
![FormKiQ Architecture](./img/formkiq_architecture.png)
1521

22+
## Who FormKiQ Is For
23+
24+
FormKiQ is designed for:
25+
26+
- **Developers** building document-centric applications using APIs and SDKs
27+
- **Architects** seeking a scalable, serverless document management solution
28+
- **Organizations** that require secure, auditable, and extensible document storage
29+
- **Teams** that want automation and workflows without managing servers
30+
31+
## What Makes FormKiQ Different
32+
33+
Unlike traditional document management systems, FormKiQ is:
34+
35+
- **API-first** — designed for integration, not UI dependency
36+
- **Serverless by default** — no servers, clusters, or capacity planning
37+
- **Event-driven** — document actions automatically trigger workflows
38+
- **Composable** — features can be enabled incrementally
39+
- **AWS-native** — built exclusively on managed AWS services
40+
1641
## Core Capabilities
1742

18-
- Document storage and retrieval
19-
- Metadata management with attributes
20-
- Full-text search
21-
- Document processing workflows
22-
- Event-driven automation
23-
- Multi-tenant support
43+
- **Document storage and retrieval**
44+
Securely store documents and retrieve them through APIs
45+
46+
- **Metadata management with attributes**
47+
Attach structured key-value metadata to documents
48+
49+
- **Full-text search**
50+
Search document content and metadata efficiently
51+
52+
- **Document processing workflows**
53+
Automatically process documents using rules and events
54+
55+
- **Event-driven automation**
56+
Integrate downstream systems using document lifecycle events
57+
58+
- **Multi-tenant support**
59+
Isolate data across sites and tenants within a single deployment
60+
61+
## Deployment Models
62+
63+
FormKiQ is deployed into **your AWS account** and runs entirely within your infrastructure.
64+
65+
- Deployed using Infrastructure as Code
66+
- No shared runtime with other customers
67+
- Full control over data residency and security
68+
- Supports single-tenant and multi-tenant architectures
2469

2570
## Architecture Principles
2671

27-
Built on the **AWS Well-Architected Framework**:
72+
FormKiQ is built following the **AWS Well-Architected Framework**.
2873

2974
### Operational Excellence
30-
- Infrastructure as Code (IaC) deployments
75+
- Infrastructure as Code (IaC)
3176
- Event-driven architecture
32-
- Automated retry mechanisms
77+
- Automated retries and observability
3378

3479
### Security
3580
- Encryption in transit and at rest
3681
- Multiple authentication models:
37-
- JWT tokens
82+
- JWT
3883
- AWS IAM
3984
- API keys
4085
- Fine-grained access control
4186

4287
### Reliability
4388
- Serverless scalability
44-
- Loosely-coupled services
89+
- Loosely coupled services
4590
- Graceful degradation
4691

47-
### Performance
48-
- Serverless technologies
92+
### Performance Efficiency
4993
- Managed AWS services
50-
- Optimized data access patterns
94+
- Optimized access patterns
95+
- Horizontal scalability
5196

5297
### Cost Optimization
5398
- Pay-per-use pricing
5499
- Tiered storage options
55100
- Lifecycle policies
56101

57102
### Sustainability
58-
- Managed services
59-
- Resource optimization
60-
- Efficient processing
103+
- Efficient use of managed services
104+
- Reduced idle resources
105+
- Event-driven compute
61106

62107
## Core Components
63108

@@ -67,75 +112,154 @@ Built on the **AWS Well-Architected Framework**:
67112
***Primary document storage***
68113
- Unlimited scalability
69114
- Multiple storage tiers
70-
- Built-in versioning
71-
- Automated lifecycle management
115+
- Versioning support
116+
- Lifecycle management
72117
- Server-side encryption
73118

74119
#### Amazon DynamoDB
75120
***Metadata and index storage***
76121
- Sub-millisecond performance
77122
- Automatic scaling
78123
- Point-in-time recovery
79-
- Event streaming
80124
- ACID transactions
125+
- Event streams
126+
81127

82128
### Processing Layer
83129

84130
#### AWS Lambda
85-
***Serverless compute engine***
131+
***Serverless compute***
132+
Best suited for:
86133
- Event-driven processing
87-
- Automatic scaling
88-
- Pay-per-execution
89-
- Multiple runtime supports
90-
- Integrated security
134+
- Short-lived workflows
135+
- Lightweight transformations
91136

92137
#### Amazon ECS (Fargate)
93-
***Container orchestration***
94-
- Long-running processes
138+
***Container-based processing***
139+
Best suited for:
140+
- Long-running or intensive workloads
95141
- Custom runtime environments
96-
- Automatic container management
97-
- Resource isolation
98-
- Managed updates
142+
- Batch and streaming processing
99143

100144
### API Layer
101145

102-
#### API Gateway
146+
#### Amazon API Gateway
103147
***Request management***
104-
- Multiple authentication methods:
148+
- Authentication via:
105149
- Cognito JWT
106150
- IAM
107151
- API keys
108152
- Custom JWT
109-
- Request throttling
110-
- Usage monitoring
111-
- CloudWatch integration
153+
- Throttling and quotas
154+
- Monitoring and logging
112155

113156
### Event System
114157

115158
#### Document Events
116-
Automated triggers for:
159+
Emitted for:
117160
- Document creation
118161
- Updates
119162
- Deletions
120-
- Custom processing
163+
- Custom processing stages
121164

122165
#### Amazon SNS
123166
***Event distribution***
124167
| Message Attribute | Values | Description |
125-
|------------------|---------|-------------|
126-
| `type` | create, delete, update | Document operation type |
168+
|------------------|--------|-------------|
169+
| `type` | create, update, delete | Document operation |
127170
| `siteId` | default, custom | Tenant identifier |
128171

129172
Features:
130-
- Pub/sub messaging
131-
- Multiple endpoints
132-
- Delivery guarantees
173+
- Publish/subscribe delivery
174+
- Fan-out to multiple consumers
133175
- Filter policies
134176

135177
#### Amazon SQS
136178
***Event processing***
137-
- Reliable message delivery
179+
- Reliable delivery
138180
- Dead-letter queues
139181
- FIFO support
140182
- Message retention
141-
- Visibility timeout
183+
184+
## FormKiQ Concepts
185+
186+
These are the core concepts used throughout the FormKiQ platform. Understanding these concepts will help you design document workflows, integrate APIs, and reason about security and scalability.
187+
188+
### Documents
189+
190+
A **document** is the primary entity in FormKiQ.
191+
192+
A document consists of:
193+
- Binary content (stored in Amazon S3)
194+
- Metadata and attributes (stored in DynamoDB)
195+
- A unique `documentId`
196+
- A virtual path
197+
198+
### Sites
199+
200+
A **site** represents an isolated namespace within a FormKiQ deployment.
201+
202+
- Documents belong to exactly one site
203+
- Sites enable multi-tenant architectures
204+
- Access control is enforced at the site level
205+
206+
The default site is named `default`.
207+
208+
### Attributes
209+
210+
**Attributes** are structured key-value pairs attached to documents.
211+
212+
- Used for filtering, querying, and automation
213+
- Can be indexed or non-indexed
214+
- Support multiple data types
215+
216+
Attributes enable documents to behave like structured data while remaining file-based.
217+
218+
### How Documents Flow Through FormKiQ
219+
220+
- A document is uploaded via the API (inline or presigned S3 upload)
221+
- Document metadata and attributes are stored in DynamoDB
222+
- Document content is stored in Amazon S3
223+
- Events are emitted for document actions via Amazon SNS, SQS, EventBridge
224+
- Optional workflows process the document (OCR, classification, rulesets)
225+
- Documents become searchable via metadata and full-text indexing
226+
227+
## Scaling FormKiQ Components
228+
229+
### Amazon DynamoDB
230+
231+
Document metadata, attributes, and indexes are stored in DynamoDB.
232+
233+
By default, FormKiQ uses On-Demand capacity mode, which provides:
234+
• Automatic scaling based on traffic
235+
• No capacity planning
236+
• Pay-per-request pricing
237+
238+
On-Demand Capacity Throughput Behavior
239+
Although On-Demand capacity is fully managed, it is not unlimited.
240+
241+
DynamoDB On-Demand tables scale automatically up to a service-defined maximum throughput. Scaling is adaptive and based on recent traffic patterns. Under normal conditions, DynamoDB can rapidly increase capacity to handle sudden spikes, but sustained or extreme bursts may temporarily exceed the adaptive scaling window.
242+
243+
Key characteristics of On-Demand scaling:
244+
- Capacity scales automatically based on usage history
245+
- Sudden spikes are supported, but extremely sharp increases may be throttled
246+
- Each table and each global secondary index (GSI) scales independently
247+
- Throughput limits apply at both the table and index level
248+
249+
When the adaptive limit is exceeded, DynamoDB returns throttling errors.
250+
251+
#### Monitor Capacity
252+
253+
You can monitor DynamoDB capacity pressure using Amazon CloudWatch metrics, including:
254+
255+
- **ThrottledRequests**: Indicates requests rejected due to insufficient capacity.
256+
- **ConsumedReadCapacityUnits and ConsumedWriteCapacityUnits**: Shows actual usage and growth trends.
257+
- **SuccessfulRequestLatency**: Elevated latency can signal capacity saturation.
258+
- **ReadThrottleEvents / WriteThrottleEvents**: Explicit indicators that DynamoDB limits are being exceeded.
259+
260+
#### On-Demand Throughput Maximums and Configuration
261+
262+
Although On-Demand mode automatically adjusts throughput to match demand, you can specify maximum read and write throughput limits for each table and its global secondary indexes (GSIs). These limits:
263+
• Bound capacity usage to help control costs
264+
• Prevent runaway consumption from unoptimized traffic
265+
• Safeguard downstream services from unexpected load

0 commit comments

Comments
 (0)