Problem
Your startup is building a SaaS project management tool (similar to Linear or Asana). The founding team of 5 engineers is debating the initial architecture: should you start with a monolith or jump straight to microservices? The VP of Engineering at a previous company swears by microservices, but the CTO argues for a monolith first.
The Application
The project management tool has these modules:
- Authentication & User Management: Sign up, login, teams, roles, permissions
- Project & Task Management: Projects, tasks, subtasks, labels, milestones, sprints
- Real-Time Collaboration: Comments, mentions, live cursors, presence indicators
- Notifications: Email, push, in-app notifications with user preferences
- Integrations: GitHub, Slack, Figma webhooks and bi-directional sync
- Analytics & Reporting: Burndown charts, velocity tracking, custom dashboards
- File Storage: Attachments on tasks, images in comments
- Search: Full-text search across all entities
Decision Factors
- Team Size & Velocity: 5 engineers, need to ship MVP in 4 months.
- Uncertainty: Product-market fit is not proven. Features will pivot.
- Scale: Initial target is 1,000 teams, 10,000 users. Ambition is 100x in 3 years.
- Operational Budget: Cannot afford a dedicated DevOps/SRE team initially.
- Talent: Engineers are full-stack generalists, not infrastructure specialists.
Your Task
- Evaluate both architectures across the decision factors.
- Make a recommendation for the initial architecture with clear reasoning.
- Define the criteria that would trigger a migration to the alternative.
- Design a modular monolith that preserves the option to extract services later.
- Identify which module, if any, should be a separate service from day one.
Constraints
- Must ship a usable MVP within 4 months.
- The architecture choice is hard to reverse (but not impossible).
- Engineering hiring will increase to 15-20 engineers within 2 years if the product succeeds.