Artikel sebelumnya membahas apa itu AWS Well-Architected Framework dan enam pilarnya. Di artikel ini, kita fokus ke design principles.
Design principles adalah prinsip desain yang membantu kita mengambil keputusan arsitektur yang lebih baik.
Kalau enam pilar adalah "area kualitas", maka design principles adalah "cara berpikir" untuk mencapai kualitas tersebut.
Ringkasan enam pilar
| Pilar | Fokus utama |
|---|---|
| Operational Excellence | Menjalankan, memantau, dan terus memperbaiki sistem |
| Security | Melindungi informasi, sistem, dan aset |
| Reliability | Pulih dari kegagalan dan mengurangi gangguan |
| Performance Efficiency | Memakai resource secara efisien untuk memenuhi kebutuhan performa |
| Cost Optimization | Menghindari biaya yang tidak perlu |
| Sustainability | Mengurangi pemborosan resource dan dampak lingkungan |
Operational Excellence design principles
Operational Excellence berfokus pada operasi harian sistem.
Perform operations as code
Jangan melakukan semua operasi secara manual.
Contoh manual:
- klik-klik console untuk membuat server,
- konfigurasi security group satu per satu,
- deploy aplikasi dengan copy file manual.
Contoh operations as code:
- infrastruktur dibuat dengan AWS CloudFormation atau AWS CDK,
- deployment dibuat dengan pipeline,
- konfigurasi disimpan di repository.
Manfaat:
- lebih konsisten,
- mudah diulang,
- lebih mudah diaudit,
- lebih sedikit human error.
Make frequent, small, reversible changes
Perubahan kecil lebih aman daripada perubahan besar.
Daripada deploy 30 fitur sekaligus, lebih baik deploy bertahap.
Jika ada error, rollback juga lebih mudah.
Refine operations procedures frequently
Prosedur operasional harus terus diperbaiki.
Contoh:
- setelah insiden, update runbook,
- setelah deployment gagal, perbaiki pipeline,
- setelah alarm terlalu banyak false positive, tuning alarm.
Anticipate failure
Jangan menunggu sistem gagal baru berpikir.
Sejak desain awal, tanyakan:
- kalau instance mati, apa yang terjadi?
- kalau database gagal, apa rencana recovery?
- kalau deployment error, bagaimana rollback?
Learn from all operational events and failures
Setiap kegagalan adalah data untuk improvement.
Setelah insiden, lakukan post-incident review:
- apa yang terjadi,
- apa dampaknya,
- bagaimana deteksinya,
- bagaimana mempercepat recovery,
- bagaimana mencegah kejadian serupa.
Security design principles
Security berfokus pada perlindungan sistem dan data.
Implement a strong identity foundation
Identitas adalah fondasi keamanan.
Best practice:
- aktifkan MFA,
- jangan gunakan root account untuk aktivitas harian,
- gunakan IAM role,
- terapkan least privilege,
- audit permission secara rutin.
Enable traceability
Aktivitas penting harus bisa dilacak.
Contoh:
- siapa menghapus bucket,
- siapa mengubah security group,
- siapa membuat access key,
- dari mana request API dilakukan.
Gunakan AWS CloudTrail, CloudWatch Logs, dan AWS Config.
Apply security at all layers
Security tidak cukup hanya di satu tempat.
Lapisan keamanan bisa mencakup:
- network security,
- compute security,
- application security,
- identity security,
- data encryption,
- monitoring dan detection.
Automate security best practices
Semakin banyak proses security manual, semakin besar risiko human error.
Contoh automation:
- otomatis menandai S3 bucket public,
- otomatis menolak security group 0.0.0.0/0 untuk port sensitif,
- otomatis rotate secrets,
- otomatis scan vulnerability.
Protect data in transit and at rest
Data harus dilindungi saat:
- in transit: sedang dikirim melalui network,
- at rest: sedang disimpan di storage atau database.
Contoh:
- HTTPS/TLS untuk data in transit,
- AWS KMS untuk encryption at rest,
- S3 default encryption,
- EBS encryption,
- RDS encryption.
Keep people away from data
Akses langsung manusia ke data sensitif harus diminimalkan.
Gunakan:
- role-based access,
- temporary credentials,
- automation,
- audit log,
- masking atau tokenization jika perlu.
Prepare for security events
Security incident bisa terjadi.
Siapkan:
- incident response plan,
- daftar kontak penting,
- runbook,
- logging,
- backup,
- simulasi respons insiden.
Reliability design principles
Reliability memastikan workload bisa menjalankan fungsi dengan benar dan pulih dari kegagalan.
Automatically recover from failure
Sistem harus bisa mendeteksi masalah dan pulih otomatis.
Contoh:
- Auto Scaling mengganti EC2 yang unhealthy,
- Route 53 health check mengalihkan traffic,
- RDS Multi-AZ melakukan failover.
Test recovery procedures
Backup tidak berguna kalau tidak pernah diuji.
Uji secara berkala:
- restore database,
- failover aplikasi,
- rollback deployment,
- disaster recovery simulation.
Scale horizontally
Daripada memakai satu server besar, gunakan beberapa server kecil.
Keuntungannya:
- lebih mudah scale,
- lebih tahan kegagalan,
- lebih fleksibel.
Stop guessing capacity
Jangan menebak-nebak kapasitas.
Gunakan:
- monitoring,
- metrics,
- Auto Scaling,
- load testing,
- capacity planning berbasis data.
Manage change in automation
Perubahan manual rentan error.
Gunakan Infrastructure as Code dan pipeline agar perubahan bisa dilakukan konsisten.
Performance Efficiency design principles
Performance Efficiency berarti memilih resource yang tepat untuk kebutuhan workload.
Democratize advanced technologies
AWS menyediakan teknologi canggih sebagai managed service.
Contoh:
- database managed dengan Amazon RDS,
- AI/ML dengan Amazon Bedrock atau SageMaker,
- analytics dengan Amazon Athena,
- caching dengan ElastiCache.
Kita tidak perlu membangun semuanya dari nol.
Go global in minutes
Dengan AWS Region, Availability Zone, dan edge network, aplikasi bisa menjangkau user global lebih cepat.
Contoh:
- CloudFront untuk content delivery,
- Route 53 untuk DNS,
- deployment multi-region jika dibutuhkan.
Use serverless architectures
Serverless cocok jika kamu ingin fokus ke kode dan business logic, bukan mengelola server.
Contoh:
- AWS Lambda,
- Amazon API Gateway,
- Amazon DynamoDB,
- Amazon S3 event notification.
Experiment more often
Cloud membuat eksperimen lebih murah dan cepat.
Kamu bisa:
- mencoba instance type berbeda,
- melakukan A/B testing,
- mencoba database berbeda,
- membuat prototype lalu menghapusnya.
Consider mechanical sympathy
Pahami cara kerja teknologi agar tidak salah memilih solusi.
Contoh:
- workload read-heavy mungkin cocok dengan caching,
- workload event-driven mungkin cocok dengan serverless,
- workload relational transaction cocok dengan RDS,
- workload key-value high scale bisa cocok dengan DynamoDB.
Cost Optimization design principles
Cost Optimization berarti menghindari biaya yang tidak perlu.
Implement Cloud Financial Management
Biaya cloud harus dikelola secara aktif.
Contoh:
- membuat budget,
- menandai resource dengan tag,
- memantau cost per project,
- review biaya rutin.
Adopt a consumption model
Cloud memakai model pay-as-you-go.
Manfaatnya:
- tidak perlu membeli server di awal,
- bisa scale up/down,
- bayar sesuai penggunaan.
Tapi kalau resource tidak dimatikan, biaya tetap berjalan.
Measure overall efficiency
Ukur apakah biaya sebanding dengan hasil.
Contoh:
- biaya per request,
- biaya per order,
- biaya per user aktif,
- biaya per GB data diproses.
Stop spending money on undifferentiated heavy lifting
Jangan menghabiskan energi untuk pekerjaan infrastruktur yang tidak membedakan bisnis kamu.
Contoh:
Daripada mengelola database sendiri di EC2, gunakan Amazon RDS jika cocok.
Analyze and attribute expenditure
Pastikan kamu tahu biaya datang dari mana.
Gunakan:
- tags,
- AWS Cost Explorer,
- AWS Budgets,
- cost allocation reports.
Checklist review cepat
| Pilar | Checklist |
|---|---|
| Operational Excellence | Apakah deployment bisa diulang dan rollback mudah? |
| Security | Apakah root MFA aktif dan permission least privilege? |
| Reliability | Apakah sistem punya backup, failover, dan recovery test? |
| Performance Efficiency | Apakah resource dipilih berdasarkan kebutuhan workload? |
| Cost Optimization | Apakah ada resource idle, overprovisioned, atau tidak terpakai? |
| Sustainability | Apakah resource digunakan seperlunya dan tidak boros? |
Kesimpulan
Design principles membantu kita berpikir seperti cloud architect.
Bukan hanya:
"Pakai layanan AWS apa?"
Tapi:
"Kenapa layanan itu dipilih, risiko apa yang muncul, dan bagaimana desain ini bisa diperbaiki?"
Jika kamu memahami design principles, kamu akan lebih mudah membaca arsitektur cloud, menemukan kelemahannya, dan mengusulkan improvement yang masuk akal.