PROPELOO

AWS / AMAZON WEB SERVICES

Build on AWS with the architecture that survives production.

PROPELOO engineers AWS infrastructure — from VPC design and EKS/ECS workloads through RDS, Lambda, API Gateway, CloudFront and the Terraform that makes it reproducible. AWS has 200+ services. The skill is knowing which 15 to use for your specific requirements and how to connect them correctly.

AWS has 200+ services. Most production systems use 12-15 of them. Knowing which ones matters more than knowing all of them.

AWS complexity is a real operational risk. Engineers who spin up infrastructure manually via the console — without Terraform, without proper VPC design, without IAM least-privilege — create systems that cannot be reproduced, cannot be audited and will fail in ways nobody expects. PROPELOO builds AWS infrastructure from first principles: everything in Terraform, private subnets for databases and internal services, IRSA for pod-level IAM, Secrets Manager for credentials, CloudTrail for API audit logging and multi-AZ for critical services. Not because it looks good on an architecture diagram — because it is the difference between infrastructure that survives its first incident and infrastructure that becomes the incident.

The AWS infrastructure stack.

System Layers

  • Networking Layer: VPC, subnets (public/private/isolated), NAT Gateway, VPC endpoints, Transit Gateway, Direct Connect
  • Compute Layer: EKS for Kubernetes workloads, ECS Fargate for simpler containers, Lambda for event-driven functions, EC2 for specific workloads
  • Data Layer: RDS (Aurora/PostgreSQL/MySQL), ElastiCache (Redis), DynamoDB, S3, Opensearch, Kinesis
  • Integration Layer: SQS, SNS, EventBridge, API Gateway, AppSync, Step Functions
  • Operations Layer: CloudWatch, X-Ray, CloudTrail, AWS Config, Security Hub, GuardDuty

Core Technical Capabilities

  • VPC Architecture

    3-tier VPC design: public subnets for load balancers, private subnets for applications, isolated subnets for databases. Multi-AZ across 2-3 availability zones, VPC endpoints for S3/DynamoDB without NAT Gateway cost, PrivateLink for service-to-service.

  • EKS & Fargate

    EKS cluster in Terraform with managed node groups, Karpenter for cost-optimised node provisioning, IRSA for pod-level IAM, AWS Load Balancer Controller, External DNS and EFS CSI driver for stateful workloads.

  • Serverless & Lambda

    Lambda functions with VPC access, Provisioned Concurrency for latency-sensitive functions, Lambda Layers for shared dependencies, Step Functions for orchestration, EventBridge for event-driven architectures.

  • Managed Data Services

    Aurora PostgreSQL with read replicas, ElastiCache Redis cluster mode, DynamoDB with DAX caching, S3 with lifecycle policies and Intelligent-Tiering, Kinesis for real-time data streaming.

  • IAM & Security

    Least-privilege IAM policies per service, IRSA for Kubernetes pod IAM, AWS Organizations SCP for account-level controls, IAM Access Analyzer for policy validation, AWS Config rules for compliance.

  • Cost Optimisation

    Reserved Instance and Savings Plans strategy, Karpenter with Spot instances for non-critical workloads, S3 Intelligent-Tiering, right-sizing recommendations via AWS Compute Optimizer and monthly cost attribution by tag.

How we think about AWS.

AWS is infrastructure-as-a-product. Every managed service you use is operational complexity you do not have to manage. Use managed services aggressively.

  • Managed over self-hosted where practical

    RDS is not just a PostgreSQL instance on EC2 — it is automated backups, multi-AZ failover, read replica management, minor version patching and parameter group management. ElastiCache is Redis without managing Redis cluster replication. Use managed services unless you have a specific reason not to: cost at scale, compliance requirements or capability gaps.

    Axiom:

  • Everything in Terraform, nothing in the console

    Infrastructure created manually in the AWS console cannot be reproduced, reviewed or audited. Terraform state represents the source of truth. Console access for exploration only. All resources created via terraform apply after pull request review.

    Axiom:

  • IRSA over node-level IAM

    Instance IAM roles give all pods on a node the same AWS permissions — a compromised pod gets access to everything the node can do. IRSA (IAM Roles for Service Accounts) gives each Kubernetes service account its own IAM role, scoped to exactly what it needs. This is the correct architecture for EKS.

    Axiom:

  • Multi-AZ is not optional for production

    A single-AZ RDS instance goes down for 20-30 minutes on instance failure. A Multi-AZ RDS fails over in 60-120 seconds. The cost difference is approximately 2x. For production workloads, Multi-AZ is a business continuity requirement, not an optional add-on.

    Axiom:

The AWS architecture decisions.

  • EKS vs ECS Fargate vs Lambda?

    Impact: ECS Fargate for most web applications. EKS when Kubernetes-specific tooling (Argo Rollouts, KEDA, Istio) is justified. Lambda for event processing, scheduled tasks and API endpoints with low invocation frequency.

    • EKS — Kubernetes, complex, powerful, right for 10+ microservices
    • ECS Fargate — simpler containers, AWS-managed, right for 2-10 services
    • Lambda — event-driven, pay-per-execution, right for sporadic workloads
    • EC2 — maximum control, maximum operational burden
  • RDS vs Aurora vs DynamoDB?

    Impact: RDS PostgreSQL for most applications. Aurora for write-heavy workloads or when you need Aurora-specific features (Global Database, Aurora Serverless). DynamoDB for truly unlimited scale with simple access patterns.

    • Aurora PostgreSQL — PostgreSQL compatible, 5x faster writes, higher cost
    • RDS PostgreSQL — standard PostgreSQL, lower cost, proven
    • DynamoDB — NoSQL, infinite scale, restrictive query model
    • Aurora Serverless v2 — scales to zero, good for dev/test
  • Single-region vs multi-region?

    Impact: Single-region multi-AZ for most applications. Multi-region only when regulatory requirements mandate data residency in specific regions or when SLA requirements demand cross-region failover capability.

    • Single-region multi-AZ — 99.99% availability, simpler, most applications
    • Multi-region active-passive — cross-region failover, 10-30 minute RTO
    • Multi-region active-active — highest availability, 2-3x complexity and cost
    • Single-AZ — not acceptable for production
  • NAT Gateway vs VPC endpoints?

    Impact: VPC endpoints for S3 and DynamoDB (free, eliminates NAT cost for those services). Interface endpoints for services with high traffic (SQS, Secrets Manager, ECR). NAT Gateway for remaining internet-bound traffic.

    • NAT Gateway — outbound internet for private subnets, $45/month + data transfer
    • VPC endpoints (Gateway) — free for S3 and DynamoDB, no internet routing
    • VPC endpoints (Interface) — $7/month per endpoint per AZ, for other AWS services
    • Public subnets for everything — cheapest, worst security posture
  • Secrets management?

    Impact: Secrets Manager for database credentials and API keys requiring automatic rotation. Parameter Store for configuration values that do not need rotation. Never plaintext in environment variable definitions.

    • AWS Secrets Manager — managed rotation, $0.40/secret/month + $0.05/10K API calls
    • AWS Parameter Store SecureString — free for standard, cheaper than Secrets Manager
    • HashiCorp Vault — managed or self-hosted, more features
    • Environment variables in ECS task definitions — avoid for sensitive values
  • CloudFront CDN strategy?

    Impact: CloudFront for static assets (S3 origin) is table stakes. CloudFront with ALB origin for cacheable API responses. Cloudflare over CloudFront when WAF quality and DDoS protection are priorities.

    • CloudFront for all static assets — global edge, S3 origin
    • CloudFront with ALB origin — API responses cached at edge
    • No CDN — only valid for internal applications
    • Third-party CDN (Cloudflare) — not AWS-native, better DDoS protection

What PROPELOO builds on AWS.

  • AWS Infrastructure from Scratch

    Complete AWS setup in Terraform: VPC, EKS/ECS, RDS, ElastiCache, CloudFront, Route53, ACM, IAM and CI/CD pipeline.

  • Serverless Architecture

    Event-driven Lambda architecture with API Gateway, SQS, EventBridge, Step Functions and DynamoDB — pay-per-use, zero idle cost.

  • Data Platform on AWS

    Data warehouse on Redshift or Athena, ingestion via Kinesis/MSK, transformation with Glue, orchestration with MWAA (managed Airflow).

  • Multi-tenant SaaS on AWS

    SaaS architecture with tenant isolation, per-tenant resource tagging, cost attribution and tenant-specific encryption keys via KMS.

  • AWS Cost Optimisation

    Compute Optimizer analysis, Reserved Instance purchasing strategy, Karpenter Spot instance configuration — typically 25-40% cost reduction.

  • AWS Security Hardening

    GuardDuty + Security Hub enablement, CloudTrail organisation trail, AWS Config rules, VPC Flow Logs and IAM Access Analyzer findings remediation.

The AWS stack.

  • IaC

    Stack: Terraform (AWS provider), AWS CDK (TypeScript), Terragrunt (DRY Terraform), CloudFormation (legacy)

  • Compute

    Stack: EKS (Kubernetes), ECS Fargate, Lambda, EC2 (Auto Scaling), Karpenter

  • Data

    Stack: Aurora PostgreSQL, RDS PostgreSQL, DynamoDB, ElastiCache Redis, S3, Kinesis

  • Integration

    Stack: SQS, SNS, EventBridge, API Gateway, Step Functions, AppSync

  • Security

    Stack: IAM, Secrets Manager, KMS, GuardDuty, Security Hub, AWS Config

  • Observability

    Stack: CloudWatch, X-Ray, CloudTrail, Datadog, Prometheus (ADOT)

AWS security is account and IAM configuration.

  • IAM Least Privilege

    Every service, Lambda function and CI/CD pipeline role has the minimum required permissions. No AdministratorAccess for application workloads. IAM Access Analyzer validates policies have no unintended public access.

  • VPC Network Isolation

    Databases in isolated subnets (no route to internet). Applications in private subnets. Only load balancers in public subnets. Security groups restrict traffic to minimum required ports between specific security groups.

  • Secrets Never in Code

    AWS Secrets Manager or Parameter Store SecureString for all credentials. Secrets injected at runtime via IRSA or task role. Secret scanning in CI/CD to catch accidental commits.

  • GuardDuty + Security Hub

    GuardDuty ML-based threat detection for AWS API calls, DNS queries and network traffic. Security Hub aggregates findings from GuardDuty, Inspector, Macie and Config into a single dashboard.

  • CloudTrail for All API Calls

    Organisation-level CloudTrail logs all API calls across all regions, stored in a centralised S3 bucket with S3 Object Lock (WORM) for tamper prevention. Required for regulatory audit.

  • AWS Config Compliance Rules

    Config rules check: no public S3 buckets, encryption at rest enabled for all data services, Multi-AZ enabled for RDS, EBS volumes encrypted, security groups not open to 0.0.0.0/0 on sensitive ports.

From zero to production AWS.

  1. 01. Architecture Design

    VPC topology, compute selection (EKS/ECS/Lambda), data services, security model and cost estimate.

  2. 02. Account & Organisation Setup

    AWS Organizations, Control Tower, account structure, CloudTrail org trail, Security Hub baseline.

  3. 03. Network Foundation

    VPC, subnets, security groups, NAT Gateway, VPC endpoints, Route53 hosted zones and ACM certificates.

  4. 04. Compute & Data

    EKS/ECS cluster, RDS, ElastiCache, S3 buckets, SQS queues and supporting services in Terraform.

  5. 05. CI/CD Pipeline

    GitHub Actions pipeline, ECR image repository, Terraform apply workflow and ArgoCD GitOps for EKS.

  6. 06. Observability

    CloudWatch dashboards, Datadog integration, X-Ray tracing, alerting and runbook documentation.

  7. 07. Security Hardening

    GuardDuty, Security Hub, Config rules, IAM Access Analyzer review and penetration test preparation.

Frequently Asked Questions

ECS Fargate vs EKS — which should I use?

ECS Fargate for: simpler applications (1-10 services), teams without Kubernetes expertise, tight AWS integration (IAM task roles, CloudWatch logs without configuration). EKS for: applications needing Kubernetes-specific tooling (Argo Rollouts, KEDA, Istio), teams with existing K8s expertise, or systems where the broader K8s ecosystem provides real value. Fargate is not a stepping stone to EKS — it is a legitimate production choice.

How do we reduce our AWS bill?

Most immediate wins: Reserved Instances for predictable baseline compute (1-year No Upfront saves 30-40%), Savings Plans for Fargate and Lambda (covers across instance types), S3 Intelligent-Tiering for data accessed unpredictably, right-sizing with AWS Compute Optimizer recommendations, and Karpenter Spot instances for non-critical Kubernetes workloads. Typical outcome: 25-40% cost reduction on a mature AWS account.

How should we structure AWS accounts?

AWS Organizations with multiple accounts: management account (billing only, no workloads), security account (CloudTrail logs, Security Hub aggregator), shared services account (internal tools, CI/CD), sandbox account (development experimentation), dev/staging/production accounts per environment. Account-level isolation is the strongest security boundary in AWS — a misconfiguration in one account cannot affect others.

What is IRSA and why is it important?

IRSA (IAM Roles for Service Accounts) associates an IAM role with a Kubernetes service account, allowing pods to assume that role without any credentials in the container. Instance IAM roles (the alternative) give all pods on the same EC2 node the same permissions — a compromised pod gets everything the node can do. IRSA provides pod-level IAM isolation: each service has exactly the AWS permissions it needs and nothing more.