In the previous subchapter, we saw the golden paths: prepared and secure ways to create infrastructure so that developers can self-serve without being experts. AWS offers a concrete tool to implement that idea of a "catalog of pre-approved resources that teams can deploy themselves": the AWS Service Catalog. It's like creating an internal "store" of infrastructure products approved by the company, where developers "buy" (deploy) what they need with the guarantee that it meets the standards.

The problem: balancing freedom and control

A company faces a tension when giving its teams access to the cloud:

  • If you give developers total freedom to create anything in AWS, they gain agility, but they can create insecure, expensive, or non-compliant resources.
  • If you block everything and require every resource to be approved and created by a central team, there is control, but teams become slow (waiting for others to give them what they need), losing the agility of the cloud.
Total freedom → agile but risky (insecure, expensive, non-compliant resources)
Total lockdown → safe but slow (teams wait, no autonomy)
   → we need a middle ground: CONTROLLED freedom

You need a middle ground: teams should be able to self-serve what they need, but only from a set of approved and secure options. That is the Service Catalog.

What is AWS Service Catalog

AWS Service Catalog allows you to create a catalog of approved infrastructure products that teams can deploy themselves, in a controlled way. The company defines what can be deployed (preconfigured and compliant products), and developers choose from that catalog and deploy it themselves, with the guarantee that it meets the standards.

   Company defines the CATALOG (approved products):
   ├── "Standard database" (secure, with backups)
   ├── "Standard web server"  (well configured)
   └── "Data environment"     (compliant with standards)
        │
        ▼
   Developers choose from the catalog and deploy THEMSELVES
   → self-service, but only from approved and secure options

Analogy: Service Catalog is like the approved purchasing catalog of a company. In a large company, you can't buy anything you want with company money freely; nor do you have to ask for permission for every pencil. There is a catalog of approved suppliers and products from which you can directly order what you need, knowing it has already been validated (price, quality, standards). Service Catalog does the same with infrastructure: an "internal store" of pre-approved resources that teams request themselves.

How it works

  1. The company defines the products (pre-approved)

The platform or governance team creates products: preconfigured, secure, and compliant infrastructure templates according to company standards. These products are usually built on infrastructure as code (often connecting with the Terraform modules from subchapter 31.1, or with native AWS templates). Each product encapsulates best practices.

  1. Organized into a catalog with permissions

The products are grouped into a catalog, and it is controlled which teams can see and deploy which products (with permissions, remember IAM, Chapter 7). Thus, each team only accesses what corresponds to them.

  1. Developers self-serve

A developer enters the catalog, chooses the product they need (for example, "standard database"), fills in a few parameters, and deploys it themselves. They get their infrastructure in minutes, without waiting for anyone and with the guarantee that it meets the standards (because the product was already approved).

Developer: "I need a database"
   → enters Service Catalog → chooses "standard database"
   → fills in 2-3 parameters → deploys
   → gets a secure and compliant DB, in minutes, without asking for permission

Why it matters: governed self-service

The great value of Service Catalog is achieving the balance between freedom and control: teams have autonomy to self-serve (agility), but within safe limits defined by the company (governance). It's "freedom within a framework":

   Service Catalog = team autonomy + company control
   "you can deploy what you need, but only from what is approved"

This links directly to the golden paths (subchapter 31.1): Service Catalog is a way to offer those golden paths as concrete products that teams deploy. And it reinforces security and compliance (Chapter 23) without sacrificing speed.

Real-world example: a company wants its teams to be agile but without creating insecure resources. They set up an AWS Service Catalog with pre-approved products: "standard web application," "standard database," "compliant storage bucket," etc., all built following their best practices for security and cost. They give each team access to the products they need. Now, when a team needs a database, they deploy it themselves from the catalog in minutes, instead of opening a ticket and waiting days for the central team. And the company has the peace of mind that everything deployed is pre-approved and compliant. They have gained agility and maintained control: teams move fast, but on safe paths.

What you should remember

  • There is a tension between giving teams total freedom (agile but risky) and locking everything down (safe but slow); the solution is controlled freedom.
  • AWS Service Catalog allows you to create a catalog of approved infrastructure products that teams deploy themselves, in a controlled way. Like an internal store of pre-approved products for the company.
  • It works in three steps: the company defines products (secure and compliant templates, often on Terraform), organizes them into a catalog with permissions, and developers self-serve (choose, fill in a few parameters, and deploy).
  • Its value: governed self-service — team autonomy (agility) within safe limits defined by the company (control). "Freedom within a framework."
  • It is a way to offer the golden paths (subchapter 31.1) as concrete products, reinforcing security and compliance without sacrificing speed.

In the next subchapter, we will see a very popular tool to give developers a unified "portal" from which to access all this: Backstage.

Cloud, AWS & Terraform — From Zero to Expert

Chapter 1 · What is cloud computing

Chapter 2 · The cloud market and major providers

Chapter 3 · Regions, availability zones and edge

Chapter 4 · Compute: EC2

Chapter 5 · Storage: S3

Chapter 6 · Networking: VPC

Chapter 7 · Identity and access: IAM

Chapter 8 · Managed databases

Chapter 9 · Why Infrastructure as Code

Chapter 10 · HCL: the Terraform language

Chapter 11 · Providers and state

Chapter 12 · Your first real infrastructure in Terraform

Chapter 13 · Load balancing and auto scaling

Chapter 14 · Serverless with Lambda

Chapter 15 · Messaging and events

Chapter 16 · Content delivery and DNS

Chapter 17 · Containers on AWS

Chapter 18 · Modules: reuse and composition

Chapter 19 · Workspaces and environment management

Chapter 20 · Remote backends and locking

Chapter 21 · Infrastructure testing

Chapter 22 · Terraform in CI/CD

Chapter 23 · Defense in depth

Chapter 24 · Observability: logs, metrics and traces

Chapter 25 · Cost optimization

Chapter 26 · High availability and disaster recovery

Chapter 27 · AWS Well-Architected Framework

Chapter 28 · Serverless architectures at scale

Chapter 29 · Data platforms on AWS

Chapter 30 · Multi-account and landing zones

Chapter 31 · Platform Engineering and Internal Developer Platform

Chapter 32 · Relevant AWS certifications

Chapter 33 · Projects to consolidate what you've learned

Chapter 34 · Resources and community

© Copyright 2024. All rights reserved