Solution Architecture Practice

Comprehensive guide to software architecture frameworks, patterns, and best practices

View project on GitHub

Technology Radar

Purpose

The Technology Radar provides strategic guidance on which technologies, tools, frameworks, and practices we recommend for adoption across the organization. It helps teams make informed technology decisions aligned with organizational strategy.


How to Use This Radar

The radar is updated quarterly and reflects our collective assessment of technology maturity, organizational readiness, and strategic fit.

For decision makers: Use this to understand our technology direction and make technology choices aligned with strategy.

For architects: Use this to recommend technologies in designs and ARB submissions.

For developers: Use this to understand which technologies are approved for new projects.


Radar Structure

Technologies are positioned in four rings based on our recommendation level:

                    ┌─────────────────┐
                    │  ADOPT (Green)  │
                    │  Use broadly    │
                    │                 │
      ┌─────────────┼─────────────────┼─────────────┐
      │             │                 │             │
      │  ┌──────────┼─────────────┐   │             │
      │  │ TRIAL    │  ASSESS     │   │             │
      │  │(Yellow)  │   (Blue)    │   │             │
      │  │ Worth    │ Explore &   │   │             │
      │  │pursuing  │ understand  │   │             │
      │  └──────────┼─────────────┘   │             │
      │             │  HOLD (Red)     │             │
      │             │  Avoid/move off │             │
      │             │                 │             │
      └─────────────┼─────────────────┼─────────────┘

Ring 1 (ADOPT):
Technologies with high confidence. Recommended for appropriate use cases.
Examples: PostgreSQL, Kubernetes, AWS

Ring 2 (TRIAL):
Worth pursuing in projects that can handle some risk. Candidates for adoption.
Examples: Kafka, Rust, Kubernetes operators

Ring 3 (ASSESS):
Explore and understand impact. Monitor before adoption.
Examples: New AI tools, emerging frameworks

Ring 4 (HOLD):
Avoid for new projects. Plan migration off for existing systems.
Examples: Legacy Java frameworks, MySQL 5.7

Technology Categories & Recommendations

1. Languages & Frameworks

ADOPT:
- Python 3.11+
  Status: Primary language for data/backend services
  Rationale: Strong ecosystem, ML/data libraries, operational simplicity
  Use case: Backend services, ML/analytics, scripts
  Adoption: Widely used, excellent team expertise
  
- TypeScript/Node.js (18+)
  Status: Primary language for frontend/APIs
  Rationale: Type safety, large ecosystem, unified stack
  Use case: Frontend, API services, tooling
  Adoption: Widely used, strong community
  
- Go 1.21+
  Status: Primary for infrastructure/ops tools
  Rationale: Performance, simplicity, deployment, Kubernetes ecosystem
  Use case: CLI tools, services, microservices
  Adoption: Growing adoption, strategic importance
  
- Java 21 (LTS)
  Status: Stable for legacy systems, selective new projects
  Rationale: Mature ecosystem, excellent performance, legacy codebase
  Use case: Enterprise systems, existing services
  Adoption: Established, but not for new projects
  
- React 18+
  Status: Primary frontend framework
  Rationale: Large ecosystem, component reusability, team expertise
  Use case: Web applications, dashboards
  Adoption: Standard for all new UI projects

TRIAL:
- Rust 1.70+
  Status: Evaluate for performance-critical systems
  Rationale: Safety, performance, growing ecosystem
  Use case: CLI tools, backend services, systems programming
  Readiness: Team training needed (2-3 weeks)
  POC: Recommend POC for high-performance services
  
- Kotlin on JVM
  Status: Trial for Android development
  Rationale: Modern language, Java interop, type safety
  Use case: Android apps (replacing Java/Kotlin)
  Readiness: Moderate (Java team transition)
  
- Vue 3
  Status: Trial for new dashboards/internal tools
  Rationale: Simpler than React, good for internal tools
  Use case: Admin dashboards, internal tooling
  Readiness: Quick learning curve (1 week)

ASSESS:
- htmx
  Status: Monitor for server-side rendering approach
  Rationale: Emerging pattern, potential complexity reduction
  Use case: Dynamic applications without SPA complexity
  Readiness: Not yet recommended
  
- WebAssembly/WASM
  Status: Monitor for performance-critical frontend code
  Rationale: Emerging capability, limited adoption
  Use case: Graphics, computational heavy code
  Readiness: Not yet recommended for general use

HOLD:
- PHP
  Status: Discontinue use (legacy support only)
  Rationale: Operational complexity, team expertise gap, modern alternatives available
  Migration: Legacy systems in maintenance mode only
  
- CoffeeScript
  Status: Discontinue (legacy only)
  Rationale: Superseded by ES6+/TypeScript
  Migration: Migrate to TypeScript
  
- Scala
  Status: Discontinue for new projects
  Rationale: Complexity, smaller team expertise, Python/Java sufficient

2. Cloud Platforms & Infrastructure

ADOPT:
- AWS
  Status: Primary cloud provider
  Services:
    - Compute: EKS (Kubernetes), Lambda, EC2
    - Database: RDS (PostgreSQL), DynamoDB, ElastiCache
    - Storage: S3, EBS
    - Networking: VPC, CloudFront
  Rationale: Mature ecosystem, Kubernetes integration, cost optimization
  Adoption: 80% of workloads
  
- Kubernetes (EKS)
  Status: Primary container orchestration
  Version: 1.28+
  Rationale: Industry standard, extensive tooling, vendor-agnostic
  Use case: All containerized workloads
  Adoption: 90% of microservices
  
- Infrastructure as Code (Terraform)
  Status: Standard IaC tool
  Version: 1.5+
  Rationale: Multi-cloud, large ecosystem, team expertise
  Use case: All infrastructure definitions
  Adoption: 100% of new infrastructure

TRIAL:
- Azure
  Status: Trial for specific workloads
  Rationale: Evaluate for enterprise integration, AI/ML services
  Use case: Specific scenarios (enterprise requirements)
  Readiness: POC before adoption
  
- Google Cloud (GCP)
  Status: Trial for specific workloads
  Rationale: BigQuery, AI/ML, data analytics
  Use case: Analytics, ML workloads
  Readiness: Evaluating

ASSESS:
- Serverless AWS services (Lambda, Step Functions)
  Status: Evaluate for specific use cases
  Rationale: Cost, operational simplicity, cold start concerns
  Use case: Event-driven, variable workloads
  
HOLD:
- On-premises private cloud
  Status: Wind down legacy systems
  Rationale: Cloud-first strategy, operational overhead
  Migration: Consolidate to cloud

3. Data & Databases

ADOPT:
- PostgreSQL 15+
  Status: Primary relational database
  Use case: OLTP, transactional systems, relational data
  Rationale: Powerful, open-source, excellent performance
  Adoption: 85% of relational data
  
- Redis 7.2+
  Status: Primary caching & session store
  Use case: High-performance caching, session storage
  Rationale: Sub-millisecond latency, extensive ecosystem
  Adoption: All systems requiring caching
  
- Elasticsearch 8.0+
  Status: Primary search & log aggregation
  Use case: Full-text search, log analytics
  Rationale: Powerful search, excellent ecosystem
  Adoption: 80% of search use cases
  
- Kafka 3.6+
  Status: Primary event streaming
  Use case: Event sourcing, stream processing
  Rationale: High throughput, fault-tolerant, ecosystem
  Adoption: 90% of event-driven systems

TRIAL:
- MongoDB 7.0+
  Status: Trial for document storage
  Rationale: Flexible schema, horizontal scaling
  Use case: Document storage (not primary), rapid development
  Readiness: POC recommended
  
- TimescaleDB (PostgreSQL extension)
  Status: Trial for time-series data
  Rationale: PostgreSQL native, time-series optimized
  Use case: Metrics, time-series queries
  
- Apache Spark
  Status: Trial for big data processing
  Rationale: Distributed processing, large datasets
  Use case: ETL, data warehousing

ASSESS:
- DuckDB
  Status: Assess for analytics
  Rationale: In-process OLAP, emerging
  Use case: Analytical queries
  
- Snowflake
  Status: Assess for data warehouse
  Rationale: Cloud-native warehouse, powerful
  Use case: Enterprise analytics
  Readiness: Evaluating with data team

HOLD:
- MySQL 5.7
  Status: Discontinue use (migration required)
  Rationale: EOL approaching (Oct 2025)
  Migration: Migrate to PostgreSQL
  Timeline: Complete by Q4 2025
  
- MongoDB 4.x
  Status: Discontinue older versions
  Rationale: Security updates, performance
  Migration: Upgrade or replace
  
- Cassandra
  Status: Avoid for new projects
  Rationale: Operational complexity, PostgreSQL suitable

4. Message Brokers & Event Systems

ADOPT:
- Kafka 3.6+
  Status: Primary event broker
  Use case: Event streaming, log aggregation, stream processing
  Rationale: High throughput, ordering guarantees, fault tolerance
  Adoption: 90% of event systems
  
- AWS SQS/SNS
  Status: Alternate for simple messaging
  Use case: Simple async messaging, serverless applications
  Rationale: Managed service, no operational overhead
  Adoption: 40% of messaging needs

TRIAL:
- Kafka Streams
  Status: Trial for stream processing
  Rationale: Lightweight, embeddable stream processor
  Use case: Real-time stream processing
  Readiness: Evaluating

HOLD:
- RabbitMQ 3.x
  Status: Discontinue use (legacy support only)
  Rationale: Operational complexity, Kafka superior
  Migration: Migrate to Kafka
  Timeline: Q4 2024
  
- Amazon MQ
  Status: Avoid for new projects
  Rationale: Higher cost, Kafka/SQS preferred

5. Container Technologies

ADOPT:
- Docker 24+
  Status: Standard container runtime
  Use case: All containerized applications
  Rationale: Industry standard, excellent ecosystem
  Adoption: 95% of new applications
  
- Kubernetes 1.28+
  Status: Primary orchestration platform
  Deployment: AWS EKS
  Rationale: Industry standard, extensive ecosystem
  Adoption: 90% of containerized workloads

TRIAL:
- Docker BuildKit
  Status: Trial for container builds
  Rationale: Improved build performance
  Use case: CI/CD pipelines

ASSESS:
- Podman
  Status: Assess as Docker alternative
  Rationale: Daemonless, rootless containers
  Readiness: Not yet recommended

HOLD:
- Docker Swarm
  Status: Discontinue use
  Rationale: Kubernetes is superior
  
- Cloud Run
  Status: Avoid for long-running services
  Rationale: Use Kubernetes instead

6. API Technologies

ADOPT:
- REST APIs (with HTTP/2)
  Status: Standard API approach
  Use case: Public APIs, third-party integrations
  Rationale: Wide adoption, excellent tooling
  Adoption: 85% of APIs
  
- OpenAPI 3.0
  Status: Standard for API documentation
  Use case: All REST API specifications
  Rationale: Industry standard, code generation
  Adoption: 95% of APIs

TRIAL:
- GraphQL
  Status: Trial for specific use cases
  Rationale: Flexible queries, over-fetching reduction
  Use case: Complex data requirements, flexible clients
  Readiness: 2-3 week learning curve
  
- gRPC
  Status: Trial for service-to-service communication
  Rationale: Performance, strong typing, streaming
  Use case: Microservices, high performance
  Readiness: Language-specific implementation

ASSESS:
- tRPC
  Status: Assess for type-safe APIs
  Rationale: End-to-end type safety
  Readiness: Emerging ecosystem

HOLD:
- SOAP/XML-based services
  Status: Discontinue (legacy maintenance only)
  Rationale: REST/GraphQL superior
  Migration: REST APIs preferred

7. Development Tools & CI/CD

ADOPT:
- Git (GitHub)
  Status: Standard version control
  Use case: All source code
  Rationale: Industry standard, excellent tooling
  Adoption: 100% of projects
  
- GitHub Actions
  Status: Standard CI/CD platform
  Use case: All build, test, deploy automation
  Rationale: Integrated with GitHub, excellent ecosystem
  Adoption: 95% of projects
  
- Terraform 1.5+
  Status: Standard Infrastructure as Code
  Use case: All infrastructure definitions
  Rationale: Multi-cloud, powerful, team expertise
  Adoption: 100% of infrastructure
  
- Docker/Docker Compose
  Status: Standard for local development
  Use case: Development environments
  Rationale: Consistency with production

TRIAL:
- ArgoCD
  Status: Trial for GitOps deployment
  Rationale: Declarative, Git-driven deployment
  Use case: Kubernetes deployments
  
- Helm
  Status: Trial for Kubernetes package management
  Rationale: Template management, complex deployments
  Use case: Helm charts for applications

ASSESS:
- Pulumi
  Status: Assess for IaC alternative
  Rationale: Programming language approach
  Readiness: Evaluating with platform team

8. Observability & Monitoring

ADOPT:
- Prometheus
  Status: Standard metrics platform
  Use case: Application and infrastructure metrics
  Rationale: Industry standard, excellent Kubernetes integration
  Adoption: 95% of systems
  
- Grafana
  Status: Standard visualization & dashboarding
  Use case: Metrics visualization, alerting
  Rationale: Powerful, extensive datasource support
  Adoption: 95% of systems
  
- ELK Stack (Elasticsearch, Logstash, Kibana)
  Status: Standard for log aggregation
  Use case: Centralized logging
  Rationale: Powerful search, excellent ecosystem
  Adoption: 90% of systems
  
- Datadog
  Status: Enterprise observability platform
  Use case: Full observability (metrics, logs, APM)
  Rationale: Comprehensive, good for enterprise
  Adoption: 70% of production systems

TRIAL:
- OpenTelemetry
  Status: Trial for observability instrumentation
  Rationale: Standardized, multi-backend support
  Use case: Application instrumentation

ASSESS:
- New Relic
  Status: Assess as observability alternative
  Rationale: Another comprehensive option
  Readiness: Evaluating with ops team

Technology Radar Version History

Version 1.0 (November 2025): Initial radar
- 8 categories: Languages, Cloud, Data, Messaging, Containers, APIs, Tools, Observability
- 40+ technologies evaluated
- Quarterly update cadence established

Significant Changes:
- PostgreSQL: Adopt (primary relational DB)
- Kafka: Adopt (primary event streaming)
- AWS EKS: Adopt (primary Kubernetes platform)
- RabbitMQ: Hold (discontinue use)
- MySQL 5.7: Hold (EOL approaching)

Quarterly Review Process

Q1 (Jan-Mar):
- Initial radar assessment
- Technology team input gathering
- Architecture board review

Q2 (Apr-Jun):
- 6-month progress review
- New technology assessment
- Adoption tracking

Q3 (Jul-Sep):
- Mid-year strategy alignment
- Emerging tech evaluation
- Discontinuation planning

Q4 (Oct-Dec):
- Annual radar update
- Next year strategy planning
- Team feedback incorporation

Change Process:
1. Technology suggestion (any team member)
2. Research & evaluation (architecture team)
3. ARB review & discussion
4. Radar update & publication
5. Team communication

Decision Matrix for Technology Selection

Use this matrix when evaluating whether a technology should be ADOPT/TRIAL/ASSESS/HOLD:

ADOPT Decision Criteria:
☑ Proven in production (multiple systems)
☑ Team expertise available
☑ Strong vendor/community support
☑ Aligns with architectural strategy
☑ Cost-effective long-term
☑ Security/compliance requirements met
☑ No better alternative available
→ Recommended for standard use

TRIAL Decision Criteria:
☑ Proven in other organizations
☑ Addresses specific problem better than alternatives
☑ Acceptable risk for contained projects
☑ Team capable of learning
☑ Vendor/community shows promise
☑ Exit strategy if unsuccessful
→ Worth pursuing in projects that can handle some risk

ASSESS Decision Criteria:
☑ Emerging but showing promise
☑ Potential strategic value
☑ Not yet production-ready for us
☑ Worth monitoring closely
☑ No action required yet
→ Monitor and evaluate, don't adopt yet

HOLD Decision Criteria:
☑ Better alternatives available
☑ Operational complexity too high
☑ Team expertise gap
☑ End-of-life or declining support
☑ Architectural misalignment
☑ Cost prohibitive
→ Avoid for new projects, plan migration for existing use


Status: Complete
Last Updated: November 2025
Version: 1.0
Contributors: Architecture Practice Team