In training, most engineers learn programming languages, algorithms, databases, and software engineering principles. In real-world projects, however, applications are built and operated using an ecosystem of specialized tools and platforms.
This document provides an overview of common technology categories encountered in modern software delivery projects. It is intended as a reference guide to help new engineers understand the purpose of each class of tools and recognize common products used in the industry.
Stores application source code, tracks changes, enables collaboration, branching, code reviews, and version history.
- Commit code
- Create branches
- Review pull requests
- Track changes
- Git
- GitHub
- GitLab
- Bitbucket
- Azure Repos
Compiles source code, resolves dependencies, packages artifacts, and prepares software for deployment.
- Build automation
- Dependency downloading
- Packaging applications
- Maven
- Gradle
- npm
- Yarn
- pnpm
- pip
- Poetry
- NuGet
- MSBuild
Automates software builds, testing, deployment, and release processes.
- Build pipelines
- Automated testing
- Deployments
- Release automation
- Jenkins
- GitHub Actions
- GitLab CI/CD
- GoCD
- CircleCI
- Azure DevOps Pipelines
- TeamCity
- Bamboo
Store compiled binaries and deployable packages.
- Store application artifacts
- Dependency hosting
- Version management
- JFrog Artifactory
- Sonatype Nexus Repository
- GitHub Packages
- AWS CodeArtifact
Provide environments where applications run.
- Physical Servers
- Virtual Machines
- Amazon Web Services (AWS)
- Microsoft Azure
- Google Cloud Platform (GCP)
- Heroku
- Render
- Railway
Package applications together with their runtime dependencies.
- Consistent deployments
- Environment portability
- Easier scaling
- Docker
- Podman
Manage large numbers of containers across clusters of servers.
- Scaling
- Service discovery
- Self-healing
- Rolling deployments
- Kubernetes
- OpenShift
- Amazon EKS
- Azure AKS
- Google GKE
- Docker Swarm
Receive incoming requests and route traffic to backend services.
- Load balancing
- SSL termination
- Routing
- NGINX
- Apache HTTP Server
- HAProxy
- Traefik
- Envoy
Act as the entry point for APIs.
- Authentication
- Rate limiting
- Request routing
- Monitoring
- Kong
- Apigee
- AWS API Gateway
- Azure API Management
- Tyk
Deliver static content closer to users through geographically distributed edge servers.
- Faster performance
- Reduced latency
- DDoS protection
- Cloudflare
- Akamai
- Amazon CloudFront
- Fastly
- Azure CDN
Store structured business data.
- Transactions
- Reporting
- Data integrity
- PostgreSQL
- MySQL
- Microsoft SQL Server
- Oracle Database
- MariaDB
Store semi-structured or unstructured data.
- MongoDB
- Couchbase
- Redis
- DynamoDB
- Cassandra
- HBase
Provide full-text search capabilities.
- Product search
- Log search
- Document indexing
- Elasticsearch
- OpenSearch
- Apache Solr
Enable asynchronous communication between systems.
- Event processing
- Queueing
- Decoupling services
- RabbitMQ
- ActiveMQ
- Amazon SQS
- Apache Kafka
- Redpanda
- Amazon Kinesis
- Apache Pulsar
Reduce database load and improve response times.
- Redis
- Memcached
- Hazelcast
Manage authentication and authorization.
- Single Sign-On (SSO)
- OAuth
- User management
- Keycloak
- Okta
- Auth0
- Microsoft Entra ID (Azure AD)
- AWS IAM
Securely store passwords, certificates, API keys, and credentials.
- HashiCorp Vault
- AWS Secrets Manager
- Azure Key Vault
- Google Secret Manager
Manage application settings separately from source code.
- Spring Cloud Config
- Consul
- AWS Parameter Store
- Kubernetes ConfigMaps
Provision infrastructure through code rather than manual setup.
- Repeatability
- Automation
- Auditability
- Terraform
- OpenTofu
- AWS CloudFormation
- Pulumi
- Bicep
Automate server setup and configuration.
- Ansible
- Puppet
- Chef
- SaltStack
Understand system health, performance, and reliability.
- Metrics
- Logs
- Traces
- Prometheus
- Grafana
- Datadog
- New Relic
- Dynatrace
Centralize and analyze application logs.
- ELK Stack (Elasticsearch, Logstash, Kibana)
- OpenSearch
- Splunk
- Graylog
Track requests across multiple services.
- Jaeger
- Zipkin
- OpenTelemetry
- AWS X-Ray
Verify software correctness and quality.
- JUnit
- NUnit
- pytest
- Jest
- Testcontainers
- Karate
- Selenium
- Cypress
- Playwright
- JMeter
- Gatling
- k6
Identify bugs, vulnerabilities, and maintainability issues.
- SonarQube
- Checkmarx
- Veracode
- Snyk
- Fortify
Integrate security into development pipelines.
- OWASP Dependency Check
- Trivy
- Aqua Security
- Prisma Cloud
Manage communication between microservices.
- Traffic control
- Security
- Observability
- Istio
- Linkerd
- Consul Service Mesh
Coordinate complex business workflows.
- Camunda
- Temporal
- Zeebe
- Apache Airflow
Move and transform data between systems.
- Informatica
- Talend
- Apache NiFi
- Airbyte
- AWS Glue
Generate reports, dashboards, and business insights.
- Power BI
- Tableau
- Looker
- Apache Superset
Coordinate teams and track delivery progress.
- Jira
- Azure Boards
- Confluence
- Notion
- Trello
Capture knowledge and architectural decisions.
- Confluence
- GitHub Wiki
- MkDocs
- Docusaurus
- ReadTheDocs
Support team communication and operational collaboration.
- Microsoft Teams
- Slack
- Google Chat
- Zoom
A typical modern enterprise project may include:
- GitHub/GitLab
- Jenkins or GitHub Actions
- Docker
- Kubernetes
- Terraform
- PostgreSQL
- Redis
- Kafka
- NGINX
- Prometheus
- Grafana
- Elasticsearch/OpenSearch
- SonarQube
- Jira
- Confluence
Understanding what each of these does—and where it fits in the delivery lifecycle—is often more valuable initially than knowing every feature of each tool.
When joining a project:
- Understand the architecture before learning the tools.
- Ask where source code, deployments, logs, and monitoring live.
- Learn the deployment pipeline end-to-end.
- Understand how incidents are detected and resolved.
- Focus on concepts first; tools change frequently.
- Remember that tools are implementations of broader engineering patterns.
A strong engineer understands the underlying concepts (version control, deployment automation, observability, messaging, security, scalability) and can adapt to whichever tool a project uses.