Tech Stacks
    Overview
    System Design Patterns
    CAP Theorem
    C10K and C10M
    Network Programming Models
    Infrastructure as Code
    Examples

Tech Stacks - Overview

Updated: 2022-08-14

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
  • 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

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
  • 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

IAM

Red Hat Single Sign-On (the commercial version of Keycloak).