← Semua pembelajaran / AWS untuk AI Engineer
Fase 2 · IaC & CI/CD

AWS CodePipeline

CodePipeline adalah orkestrator CI/CD milik AWS. Untuk aplikasi GenAI, tahap paling berharga bukan build-nya, melainkan gerbang evaluasi sebelum deploy.

Intisari

  • Pipeline terdiri atas stage berurutan; tiap stage berisi action yang bisa paralel.
  • Artefak mengalir antar stage lewat bucket S3 yang dikelola pipeline.
  • Sumbernya bisa GitHub (via CodeConnections), CodeCommit, atau S3.
  • Manual approval adalah satu action — gerbang manusia sebelum production.
  • Untuk aplikasi LLM, sisipkan stage evaluasi: kalau skor turun dari baseline, pipeline berhenti.

Bentuk pipeline

Source ──▶ Build ──▶ Test ──▶ Eval ──▶ Approve ──▶ Deploy Prod
(GitHub)  (CodeBuild)         (LLM)   (manusia)   (CloudFormation)
IstilahArtinya
StageTahap berurutan. Gagal di satu stage menghentikan sisanya.
ActionSatu pekerjaan di dalam stage. Beberapa action bisa jalan bersamaan.
ArtifactBerkas yang mengalir antar stage — kode, template, laporan.
TransitionSambungan antar stage; bisa dinonaktifkan untuk membekukan rilis.

Stage yang khas untuk aplikasi GenAI

StageIsinyaGerbang gagal
Buildruff, mypy, build imageLint atau type check merah
Testpytest dengan Bedrock di-mockTes gagal
EvalDataset pertanyaan emas dijalankan ke modelSkor di bawah baseline
SecurityPemindaian dependensi dan imageKerentanan tinggi
Deploy stagingcdk deploy ke akun devCloudFormation rollback
ApprovePersetujuan manualDitolak manusia
Deploy prodcdk deploy ke akun prod—

Stage Eval adalah yang membedakan CI/CD aplikasi LLM dari CI/CD biasa. Perubahan prompt tidak membuat satu pun tes unit gagal, tapi bisa menurunkan kualitas jawaban secara drastis. Tanpa gerbang evaluasi, satu-satunya detektor regresi kualitas adalah keluhan pengguna. Isi teknis stage ini dibahas di Fase 7.

CDK Pipelines

Cara paling ringkas membuat pipeline untuk proyek CDK adalah mendefinisikannya dengan CDK. Pipeline-nya memperbarui dirinya sendiri: menambah stage cukup dengan mengubah kode dan push.

from aws_cdk import pipelines

pipeline = pipelines.CodePipeline(
    self, "Pipeline",
    synth=pipelines.ShellStep(
        "Synth",
        input=pipelines.CodePipelineSource.connection(
            "nurhadidev/tanya-bedrock", "main",
            connection_arn="arn:aws:codeconnections:us-east-1:123456789012:connection/abc",
        ),
        commands=[
            "uv sync",
            "uv run ruff check .",
            "uv run pytest",
            "npx cdk synth",
        ],
    ),
)

tahap_dev = pipeline.add_stage(TahapAplikasi(self, "Dev", env=ENV_DEV))
tahap_dev.add_post(pipelines.ShellStep("Evaluasi", commands=["uv run python eval/jalankan.py"]))

pipeline.add_stage(TahapAplikasi(self, "Prod", env=ENV_PROD),
                   pre=[pipelines.ManualApprovalStep("SetujuiRilis")])

Yang perlu dijaga

Latihan: buat pipeline dua stage (Synth + Deploy Dev) dengan CDK Pipelines yang terhubung ke repositori GitHub-mu. Push satu commit dan tunggu sampai berjalan sendiri. Lalu tambahkan ManualApprovalStep sebelum stage Prod dan amati pipeline berhenti menunggumu.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.