Tech Stacks - Overview
Last Updated: 2023-02-17
Modern software / service life cycle: development, delivery, operation.
Tech Stacks
- 3 core parts: compute, storage, network
- sothers: observability, security, privacy, IAM, DR, compliance, artifact management, billing, build/package/release/s3c, ui/ux
Infra Building Blocks
- Compute
- Servers
- bare metal
- VMs
- containers and orchestration: Kubernetes
- Serverless
- Servers
- Storage / Databases
- Databases to store data and make them readily available for appliations, and indexes to speed up searches and filters.
- Caching to speed up reads by remembering results of expensive operations
- Data Warehouse to store historical data for analytics
- Storage to store files and objects (can also be used to serve static websites)
- Messaging to communicate between processes and enable async operations. (Message Queues and PubSub)
- Networking
- Service Discovery, Configs and Secrets
- CDN
- Load Balancing
- Domains / DNS
Development
- Languages: Java vs C++ vs Python vs Go vs Rust vs Kotlin ...
- Frameworks: server, web, mobile, UX
- Coding Styles / Naming Conventions: camelCase? PascalCase? Underscore? Dash?
- IDE / Editor: VS Code, Intellij, Vim. Though it is ok to choose any IDE the developer prefers, but better to have a few "officially supported" options by your technical support team.
- Source control
- Code review
- Internal documentation and knowledge sharing
- Analytics, logging
- Internal experiment / external experiment
Production
- Package / artifact format: a common way to package all the applications, e.g. Docker containers or Java archives.
- Artifact registry
- 3rd party dependencies
- built binaries
- built images
- Helm charts
- Build, Test, Release, Rollout
- Logging: AWS Kinesis, Fluentd, GCP Cloud Logging
- Metrics, Monitoring, Alerting, SLOs: to monitor system health and key business metrics, and send out alerts: GCP Cloud Monitoring, Datadog
- Prober, blackbox monitoring
- Resource / Capacity Management and Provisioning: manages a service’s capacity; adjusts resource requirements or number of replicas. CPU / RAM / SSD / DISK.
- Data Integrity, Reliability, and Staleness Prevention
- Oncall, Incidents, Escalations, and Postmortems
Processes
- Planning / Issue tracking: Jira, Asana, Kanban
- Privacy / Security reviews
- Launch: internal review, then expose the code to end users
- Methodology: waterfall vs agile