Tech Stacks¶
A tech stack is the set of languages, frameworks, databases, and infrastructure used to build a system. This page is a compact reference — for architectural patterns and layering, see Architecture.
The Layered View¶
A modern web system is usually composed of these layers. Each layer has many viable choices; the list below is representative, not exhaustive.
| Layer | Purpose | Common choices |
|---|---|---|
| Edge | CDN, DDoS protection, DNS | Cloudflare, CloudFront, Akamai, Fastly |
| Presentation | User interface | React, Vue, Angular, Svelte, Flutter, Swift, Kotlin |
| API / Integration | Service contracts | REST, GraphQL, gRPC, WebSocket |
| Business Logic | Application frameworks | Spring Boot, Django, FastAPI, Express, Rails, .NET |
| Messaging | Async communication | Kafka, RabbitMQ, SQS, Celery |
| Data Access | ORMs, search, cache | SQLAlchemy, Hibernate, Sequelize, Elasticsearch |
| Storage | Persistent state | PostgreSQL, MySQL, MongoDB, Redis, S3 |
| Infrastructure | Runtime and orchestration | AWS, GCP, Azure, Docker, Kubernetes |
Languages at a Glance¶
| Language | Sweet spot | Notable frameworks |
|---|---|---|
| Python | Data, ML, scripting, web APIs | Django, FastAPI, Flask |
| JavaScript / TypeScript | Frontend, full-stack, Node backends | React, Vue, Next.js, Express, NestJS |
| Java | Enterprise, Android, high-scale services | Spring Boot, Quarkus |
| C# | Windows, enterprise, game dev (Unity) | .NET, ASP.NET Core |
| Go | Cloud infrastructure, microservices, CLI | Gin, Echo |
| Rust | Systems, performance-critical services | Actix, Axum |
| Ruby | Rapid web development, scripting | Rails, Sinatra |
| PHP | Traditional web, CMS | Laravel, Symfony |
Databases at a Glance¶
See Architecture § Databases for the full breakdown. Quick picks:
- Default choice: PostgreSQL. Relational, ACID, JSON support, mature.
- Document store: MongoDB for flexible schemas; DynamoDB for serverless AWS.
- Cache / queue: Redis — in-memory, versatile.
- Analytics: BigQuery, Snowflake, ClickHouse.
- Wide-column at scale: Cassandra, Bigtable.
Classic Stack Combinations¶
| Stack | Components | Typical use |
|---|---|---|
| LAMP | Linux + Apache + MySQL + PHP | Traditional web apps, CMS |
| MEAN | MongoDB + Express + Angular + Node | SPAs, real-time apps |
| MERN | MongoDB + Express + React + Node | Modern SPAs |
| JAMstack | JavaScript + APIs + Markup | Static sites, blogs, JAMstack apps |
| Django + PostgreSQL + Redis | Python web + relational + cache | Content and data-driven apps |
| Spring Boot + PostgreSQL + Kubernetes | Java + relational + orchestration | Enterprise microservices |
How to Pick a Stack¶
Order of considerations, roughly in this priority:
- Team expertise. A familiar stack ships faster than a theoretically better one.
- Problem fit. ML-heavy? Python. High-throughput trading? Rust, C++, or Java. Real-time collab? Node or Elixir.
- Ecosystem maturity. Libraries, hiring pool, Stack Overflow answers, long-term viability.
- Operational cost. Managed services (RDS, Cloud Run) beat self-hosting when you can afford them.
- Future-proofing, carefully. Don't adopt yesterday's fad; don't chase tomorrow's either.
Common mistake: picking the stack before understanding the problem. Write the one-page problem statement first.
Further Reading¶
- The Architecture page covers the patterns these stacks implement.
- The Lifecycle page covers how teams ship software built on any stack, including version control practices.