Smart Workflow Platform for Seamless Flow of Work
Flowly is an integrated collaboration tool that connects task management and real-time chat, where conversation seamlessly flows into work and records.
- One-line Summary: A smart workflow project that experimented with technical expansion in large-scale environments through simulated traffic scenarios.
- Core Values:
- Integration of Information: Organically connects chat and tasks to preserve collaboration context.
- Technical Challenge: Established a system architecture to handle simulated traffic targeting 150k DAU.
- Intelligent Support: Provides knowledge-based answers through an AI Agent layer.
Flowly records the process of identifying and overcoming technical limits in simulated traffic environments.
This project assumed a challenging environment with a target DAU of 150k. We continuously identified system limits through traffic-generator and evolved the infrastructure. The core goal was to achieve both high availability and cost efficiency within limited resources.
- CI/CD Scalability Limits: The initial Terraform
user-data.shapproach caused bottlenecks in configuration management and automated deployment as infrastructure complexity increased. - Cost Efficiency Issues: Accumulated AWS cloud costs for simulation environments necessitated a transition to a more controllable home server-based On-Premise setup.
- Operational Complexity: Nginx configurations directly on the host system lacked isolation, requiring manual work for every change—a major constraint during rapid development.
We went through 4 stages of optimization based on limits identified by traffic-generator.
- [Step 1] Initial Build (Terraform usage): Started with a single shell script build but identified its limitations in configuration management.
- [Step 2] Hybrid Automation (Terraform + Ansible): Separated infrastructure provisioning and server configuration to build a flexible cluster expansion and automated deployment system in AWS.
- [Step 3] Cost-Effective Infrastructure (On-Premise conversion): Migrated to a home server for cost optimization. Thanks to the pre-built Ansible scripts, we could migrate relatively easily while maintaining consistent infrastructure specifications across environments.
- [Step 4] Infrastructure Agility (Containerized Nginx): Switched to Docker container-based Nginx to solve configuration management inconveniences, securing version control for settings and deployment flexibility.
- Infrastructure Flexibility: Built a high-availability architecture independent of the environment through abstraction with Ansible and Docker.
- Cost Optimization: Secured a sustainable experimental environment by eliminating fixed infrastructure costs.
- Backend:
- Spring Boot (Kotlin): Secure user authentication and authorization utilizing Spring Security.
- NestJS (Node.js/TS): High-concurrency core domain management (Todo, Chat, Friends) leveraging NodeJS's asynchronous non-blocking I/O.
- AI Agent (Spring AI): RAG-based knowledge search and async worker layer.
- Data Layer:
- PostgreSQL (pgvector): Primary and vector data storage.
- Redis: Session caching, AI Agent task queue, and real-time message broker.
- Observability & Logging:
- LogPilot, LogPilot-Lite: Self-built open-source based event streaming and centralized logging engine.
- Prometheus & Grafana: Real-time system metric monitoring.
graph TD
User[User] -->|HTTPS| Nginx[Nginx Proxy]
Nginx -->|/api/auth| Spring["Spring Boot<br/>(Auth/Security)"]
Nginx -->|/api/todos, /api/chat| Nest["NestJS<br/>(Core Domain)"]
Nginx -->|/| Next["Next.js<br/>(Web Client)"]
subgraph "Data Layer"
Nest --> Redis[(Redis)]
Spring --> Redis
Nest --> DB[(PostgreSQL)]
Spring --> DB
end
subgraph "AI Agent Layer"
Nest -->|Trigger| AI_API[AI API]
AI_API -->|Job Queue| Redis
Redis -->|Consume| AI_Worker[AI Worker]
AI_Worker -->|Knowledge Search| DB
end
For detailed technical specifications and guides, please refer to the documents below.
- System Architecture: Detailed system structure and data flow
- Troubleshooting: Records of technical issues resolved