Q: What is DevOps?
A: DevOps is a set of cultural philosophies, practices, and tools that enables faster delivery of
applications and services. It emphasizes collaboration between development and operations teams,
continuous integration, continuous delivery (CI/CD), infrastructure automation, and monitoring to
achieve shorter development cycles and high software quality.
Q: What are the key components of a DevOps pipeline?
A: A typical DevOps pipeline includes:
- Source Code Management: Git/GitHub/GitLab
- CI: Jenkins, GitHub Actions, GitLab CI
- Build Tools: Maven, Gradle, Docker
- Testing: Unit, integration, and security tests
- Deployment: Terraform, Helm, ArgoCD, CodeDeploy
- Monitoring & Logging: Prometheus, Grafana, ELK, AWS CloudWatch
Q: What is Infrastructure as Code (IaC)?
A: IaC is the process of managing and provisioning infrastructure using code, rather than manual
configuration. It ensures repeatability, scalability, and version control. I primarily use Terraform for
IaC, as it's cloud-agnostic and supports modular design.
Q: Terraform vs CloudFormation?
A: - Terraform is multi-cloud and uses HCL.
- CloudFormation is AWS-native and uses YAML/JSON.
Terraform has better support for reusable modules and is preferred in multi-cloud environments,
while CloudFormation integrates more tightly with AWS services.
Q: What is an IAM Role and when do you use it?
A: An IAM role is a set of permissions that can be assumed by AWS services or users. For example,
I assign IAM roles to EC2 instances that need to access S3, avoiding the need to store AWS
credentials inside the instance.
Q: What's the difference between a public and private subnet?
A: A public subnet has a route to the internet via an Internet Gateway (IGW). A private subnet does
not have a direct route to the internet and is typically used for databases or internal services.
Q: How do you ensure high availability on AWS?
A: By deploying applications across multiple Availability Zones (AZs), using Elastic Load Balancers,
Auto Scaling Groups, and Multi-AZ RDS deployments. This ensures fault tolerance and minimal
downtime.
Q: How do you optimize cost in AWS?
A: I use:
- Auto-scaling to scale only when needed
- Spot Instances for non-critical workloads
- S3 lifecycle rules to transition infrequent data
- Trusted Advisor and Cost Explorer for insights
- Reserved Instances or Savings Plans for consistent workloads
Q: Describe your CI/CD implementation.
A: I use GitHub Actions to trigger builds and tests on each commit. Once approved, it automatically
deploys to staging or production environments using Terraform or CodeDeploy. I incorporate
rollback mechanisms and manual approvals for production.
Q: How do you monitor applications in AWS?
A: Using CloudWatch for metrics/logs and CloudTrail for API activity. I set alarms for anomalies
(e.g., high CPU, 5xx errors) and integrate with SNS or PagerDuty for alerting. In some projects, I
use Grafana + Prometheus for custom dashboards.
Q: What's the difference between Load Balancer and Auto Scaling?
A: - Load Balancer distributes incoming traffic across multiple targets
- Auto Scaling automatically adjusts the number of EC2 instances based on demand
Q: What is the Shared Responsibility Model?
A: In AWS:
- AWS is responsible for the security of the cloud (hardware, infrastructure, managed services)
- The customer is responsible for security in the cloud (data, identity, encryption, configurations)
Q: How do you manage secrets in your infrastructure?
A: I use AWS Secrets Manager or SSM Parameter Store to store credentials securely, implement
encryption, and automate secret rotation. Secrets are never hardcoded into the codebase or
Terraform files.
Q: What is a VPC and why is it important?
A: A VPC (Virtual Private Cloud) is a logically isolated network within AWS where I define subnets,
route tables, internet/NAT gateways, and security groups. It gives me full control over networking
and security for resources.
Q: Share a project where you used Terraform.
A: I created a 3-tier architecture using Terraform:
- VPC with public/private subnets
- ALB in front of EC2 instances
- RDS in private subnet with security groups
- Used modules for reusability and GitHub Actions for deployment
Q: Difference between horizontal and vertical scaling?
A: - Horizontal scaling = adding more instances (scale out)
- Vertical scaling = increasing resources of a single instance (scale up)
Horizontal scaling offers better high availability and is more fault-tolerant.
Q: How do you handle rollbacks in deployments?
A: I use versioned artifacts and store previous builds. For ECS, I use task definition rollback. In
CodeDeploy, I configure automatic rollback on failure.
Q: How do you debug a failed deployment?
A: Check CI/CD logs (e.g., GitHub Actions, Jenkins), inspect app logs via CloudWatch, validate IAM
permissions, run health checks on target services, confirm networking (security group, subnet)
configs.
Q: Stateful vs Stateless apps?
A: - Stateless apps: No session/data stored locally. Scalable and ideal for microservices (e.g.,
Lambda)
- Stateful apps: Store data locally (e.g., DBs, session cache), require special handling during scaling
Q: What is S3 and its typical use cases?
A: S3 is AWS's object storage service. I use it for:
- Static website hosting
- Storing app logs and backups
- Serving media files
- Integrating with CloudFront for CDN
It supports versioning, lifecycle policies, and encryption at rest and in transit.