Menu Bar

Kata Mutiara

"Keberhasilan merupakan tetesan dari jeri-payah perjuangan, luka, pengorbanan dan hal-hal yang mengejutkan. Kegagalan merupakan tetesan dari kemalasan, kebekuan, kelemahan, kehinaan dan kerendahan"

ANIMASI TULISAN BERJALAN

Saturday, January 3, 2026

NVIDIA vs AMD GPU Architecture

 

🔥 NVIDIA vs AMD GPU Architecture

1️⃣ Core Architecture

AspekNVIDIAAMD
Unit utamaSM (Streaming Multiprocessor)CU (Compute Unit)
CoreCUDA CoreStream Processor
EksekusiWarp (32 thread)Wavefront (64 thread)
FokusCompute + AIGaming + Compute

➡️ NVIDIA lebih agresif di compute & AI, AMD unggul di price/performance gaming


2️⃣ AI / Matrix Acceleration

🟢 NVIDIA

  • Tensor Cores (RTX, A100, H100)

  • Mendukung:

    • FP16

    • BF16

    • INT8 / INT4

  • Sangat kuat untuk training & inference AI

🔴 AMD

  • Matrix Cores (RDNA3 / CDNA)

  • Lebih baru & terbatas dukungannya

  • Performa AI masih tertinggal dari NVIDIA

➡️ AI research & production → NVIDIA unggul


3️⃣ Software Ecosystem

SoftwareNVIDIAAMD
Low-levelCUDAROCm / OpenCL
AIcuDNN, TensorRTMIOpen
ML FrameworkNative supportLimited
ToolsNsightRadeon GPU Profiler

➡️ CUDA ecosystem adalah keunggulan terbesar NVIDIA


4️⃣ Memory & Bandwidth

AspekNVIDIAAMD
VRAMGDDR6 / HBMGDDR6 / HBM
CacheL1 + L2Infinity Cache
BandwidthSangat tinggi (HBM)Efisien (Infinity Cache)

➡️ AMD lebih efisien di gaming dengan Infinity Cache


5️⃣ Ray Tracing & Graphics

FiturNVIDIAAMD
Ray TracingRT Cores Gen 3Ray Accelerator
UpscalingDLSS (AI-based)FSR (software)
DriverStabilKadang lambat update

➡️ Gaming modern → NVIDIA lebih unggul di ray tracing & DLSS


🎮 GPU untuk GAME vs 🤖 GPU untuk AI

🎮 GPU untuk Gaming

Karakteristik:

  • Clock tinggi

  • Fokus rasterization & ray tracing

  • Optimasi shader

  • Harga lebih terjangkau

Contoh:

  • NVIDIA RTX 4060 / 4070

  • AMD RX 6700 XT / 7800 XT

➡️ AMD sering lebih murah dengan FPS tinggi


🤖 GPU untuk AI

Karakteristik:

  • Banyak compute core

  • Tensor acceleration

  • VRAM besar (24GB+)

  • Support mixed precision

Contoh:

  • NVIDIA RTX 4090 (consumer AI)

  • NVIDIA A100 / H100 (datacenter)

  • AMD MI250 (datacenter)

➡️ AI training serius → NVIDIA dominan


6️⃣ Mobile GPU (Sedikit Tambahan)

MobileFokus
Adreno (Qualcomm)Gaming mobile
Mali (ARM)Efisiensi
Apple GPUAI + Graphics
NVIDIA TegraGaming / Embedded AI

📌 Ringkasan Cepat

Pilih NVIDIA jika:

✅ AI / Machine Learning
✅ Ray tracing & DLSS
✅ Software ecosystem matang

Pilih AMD jika:

✅ Gaming murni
✅ Budget terbatas
✅ Open-source friendly


Apa itu GPU Architecture?

Apa itu GPU Architecture?

GPU (Graphics Processing Unit) adalah prosesor yang dirancang untuk parallel processing — menjalankan ribuan operasi kecil secara bersamaan.
Awalnya untuk grafis, sekarang dipakai luas untuk AI, ML, data science, game, dan komputasi berat.


⚙️ CPU vs GPU (Gambaran Singkat)

CPUGPU
Sedikit core (4–32)Ribuan core kecil
Kuat di single-threadKuat di parallel
Kontrol kompleksThroughput tinggi
Latency rendahBandwidth tinggi

➡️ GPU cocok untuk operasi yang sama di banyak data (matrix, pixel, vector).


🏗️ Komponen Utama GPU Architecture

1️⃣ Streaming Multiprocessor (SM) / Compute Unit (CU)

  • Unit utama GPU

  • Berisi banyak core kecil (ALU)

  • NVIDIA → SM

  • AMD → CU

➡️ Satu GPU bisa punya puluhan hingga ratusan SM


2️⃣ GPU Cores (CUDA Core / Stream Processor)

  • Core sederhana

  • Fokus pada operasi aritmatika (add, multiply)

  • Tidak sekompleks core CPU

➡️ Contoh: RTX GPU bisa punya 10.000+ CUDA cores


3️⃣ Warp / Wavefront (Execution Model)

  • GPU mengeksekusi thread berkelompok

  • NVIDIA: Warp = 32 threads

  • AMD: Wavefront = 64 threads

➡️ Semua thread dalam warp menjalankan instruksi yang sama

⚠️ Branch divergence (if-else berbeda) → performa turun


4️⃣ Memory Hierarchy GPU

🔹 Global Memory (VRAM)

  • Paling besar

  • Paling lambat

  • Bisa diakses semua thread

🔹 Shared Memory

  • Sangat cepat

  • Dibagi dalam satu SM

  • Cocok untuk data yang sering dipakai ulang

🔹 Registers

  • Paling cepat

  • Private untuk tiap thread

  • Jumlah terbatas

Register → Shared → L2 Cache → Global (VRAM)

5️⃣ Cache System

  • L1 Cache (dekat SM)

  • L2 Cache (shared antar SM)

  • Optimasi bandwidth memori


🔄 Execution Model (Cara GPU Bekerja)

  1. CPU kirim kernel ke GPU

  2. Kernel dipecah jadi:

    • Grid

    • Block

    • Thread

  3. GPU menjalankan ribuan thread paralel

Grid
 └── Block
      └── Thread

🚀 GPU Programming Models

Beberapa cara memprogram GPU:

  • CUDA (NVIDIA)

  • OpenCL (Cross-platform)

  • Vulkan Compute

  • Metal (Apple)

  • DirectCompute (Windows)


🤖 GPU untuk AI & ML

GPU sangat cocok untuk:

  • Matrix multiplication

  • Tensor operations

  • Neural network training

Fitur khusus:

  • Tensor Cores (NVIDIA)

  • Matrix Cores (AMD)

  • Mixed precision (FP16, BF16)


⚠️ Tantangan GPU Architecture

  • Memory bottleneck

  • Branch divergence

  • Debugging sulit

  • Power consumption tinggi


🧩 Ringkasan Singkat

  • GPU = parallel monster

  • Banyak core kecil

  • Eksekusi berbasis warp

  • Memory hierarchy sangat penting

  • Ideal untuk AI, grafis, scientific computing





Sunday, August 24, 2025

DROP TEGANGAN DARI 20 KV KE 19.5KV PADA DIRTIBUTION TRANFORMER

Gambar tersebut menjelaskan kasus penurunan tegangan sumber dari 20.000 V → 19.450 V pada sebuah distribution transformer (trafo distribusi).


📌 1. Apa yang terjadi?

  • Rated HV trafo: 20 kV (20.000 V).

  • Tegangan sumber aktual: 19,45 kV.

  • Terjadi drop 550 V (≈ 2,75%) dari tegangan nominal.


📌 2. Fungsi Tap Changer

Trafo dilengkapi Tap Changer untuk mengatur tegangan sisi HV sehingga tegangan sisi LV tetap sesuai (umumnya 400 V pada trafo distribusi).

Dari nameplate terlihat pilihan tap:

  • Tap 1 → 20.500 V

  • Tap 2 → 20.250 V

  • Tap 3 → 20.000 V (posisi normal / nominal)

  • Tap 4 → 19.750 V

  • Tap 5 → 19.500 V


📌 3. Langkah praktis penentuan tap

  1. Ukur tegangan HV dan LV saat beban normal.
    → Dalam kasus ini HV = 19,45 kV.

  2. Target LV: sekitar 400 V (fase-fase).
    → Perlu disesuaikan dengan drop jaringan LV.

  3. Hitung % tap:

    % deviasi=20.00019.45020.000×100%=2,75%\% \text{ deviasi} = \frac{20.000 - 19.450}{20.000} \times 100\% = 2,75\%
  4. Pilih tap terdekat:

    • Tiap tap step = ±2,5% dari tegangan nominal.

    • Karena sumber lebih rendah, trafo harus dinaikkan tap → pindah ke posisi HV yang lebih tinggi.

    • Jadi dari Tap 3 (20.000 V) digeser ke Tap 2 (20.250 V) atau Tap 1 (20.500 V).

  5. Verifikasi di LV panel:

    • Pastikan tegangan fase-fase mendekati 400 V.

    • Bila masih di bawah 400 V → geser ke Tap 1.

    • Bila cukup di Tap 2 → biarkan di sana.


📌 4. Catatan Penting

  • Pergantian tap dilakukan saat trafo off-load (OFF-load tap changer), kecuali kalau pakai OLTC (On Load Tap Changer).

  • Selalu koordinasi dengan dispatcher / control center sebelum ubah tap.

  • Setelah penyesuaian, lakukan monitoring tegangan LV pada beberapa beban & waktu berbeda.


👉 Jadi intinya: karena tegangan sumber drop ke 19,45 kV, maka tap trafo perlu dinaikkan (ke Tap 2 atau Tap 1) agar tegangan sisi LV tetap sekitar 400 V.

 

contoh perhitungan tegangan LV untuk tiap posisi tap—dan koreksi kecil:
kalau tegangan sumber HV turun, maka tap HV harus diturunkan (ke nilai kV yang lebih rendah) agar LV kembali mendekati 400 V. Sebelumnya aku sempat menyebut “naik tap”—itu terbalik. 🙏

Data:

  • Trafo distribusi: 20 kV / 0.4 kV (Dyn5)

  • Pilihan tap HV (nameplate): 20.5 – 20.25 – 20.0 – 19.75 – 19.5 kV

  • Tegangan sumber aktual: 19.45 kV

  • Target LV: ≈ 400 V (line-to-line)

Rumus praktis (ideal, tanpa rugi):

VLV400 V×VHV, actualVHV, rated (tap)V_{LV} \approx 400\ \text{V} \times \frac{V_{HV,\ actual}}{V_{HV,\ rated\ (tap)}}

Hasil per tap

Posisi Tap (kV)PerhitunganPerkiraan VLLV_{LL} di LV
20.5400×19.4520.5400 \times \frac{19.45}{20.5}≈ 379.5 V
20.25400×19.4520.25400 \times \frac{19.45}{20.25}≈ 384.2 V
20.0400×19.4520.0400 \times \frac{19.45}{20.0}≈ 389.0 V
19.75400×19.4519.75400 \times \frac{19.45}{19.75}≈ 393.9 V
19.5400×19.4519.5400 \times \frac{19.45}{19.5}≈ 399.0 V

Rekomendasi: pilih Tap 5 (19.5 kV) — hasil LV ≈ 399 V, sangat dekat dengan target 400 V.
Sebagai pembanding, Tap 4 (19.75 kV) memberi ≈ 394 V (masih OK bila kebijakan tegangan ±5% → 380–420 V), tetapi Tap 5 paling tepat untuk kondisi 19.45 kV.

Langkah ringkas di lapangan

  1. Ukur HV & LV saat beban normal (beberapa waktu).

  2. Hitung VLVV_{LV} per opsi tap (pakai rumus di atas).

  3. Pilih tap yang membuat LV ~400 V (atau dalam band kebijakan, mis. ±5%).

  4. Ganti tap sesuai SOP (OFF-load kecuali OLTC), koordinasi dengan dispatcher.

  5. Verifikasi di panel LV: tegangan fasa-fasa ≈ 400 V dan seimbang.

  6. Monitor lagi saat beban puncak & rendah; sesuaikan bila profil HV berubah.

 

 



Friday, August 22, 2025

Pertimbangan pembuatan TSD dalam project banking

Dalam project banking (atau financial services secara umum), dokumen TSD (Technical Specification Document) itu sangat penting karena sistemnya harus regulasi-compliant, secure, dan audit-ready.

Berikut hal-hal yang perlu diperhatikan saat membuat TSD untuk project banking:


📌 1. Pendahuluan & Konteks

  • Latar belakang sistem (misal: Core Banking, Loan System, Payment Gateway).

  • Scope dokumen → sistem apa saja yang dicakup.

  • Stakeholder → tim developer, QA, security, auditor, regulator.

  • Standar/regulasi → OJK, BI, PCI DSS, ISO 27001.


📌 2. Arsitektur Sistem

  • High-Level Diagram → komponen utama (API Gateway, microservices, Kafka, DB, Redis, security layer).

  • Integration Points → misalnya dengan core banking, ATM switch, payment network (Visa/MasterCard), dll.

  • Data Flow Diagram → aliran data transaksi (contoh: transfer uang dari mobile → API → core banking → settlement).


📌 3. Spesifikasi Teknis

  • Teknologi utama → Java (Spring Boot, Reactive), Database (Oracle, MongoDB, Redis), Kafka, Docker, K8s.

  • Deployment architecture → bare metal, VM, cloud (AWS, GCP, Azure), Kubernetes.

  • Networking → port, ingress/egress rules, firewall.

  • Scalability plan → horizontal scaling via Kubernetes, autoscaler.


📌 4. Keamanan (Security)

  • Authentication & Authorization → OAuth2, JWT, SSO, RBAC.

  • Data Security

    • Encryption in-transit (TLS 1.2/1.3).

    • Encryption at-rest (AES-256 untuk DB, Redis, Kafka).

  • Key Management (Vault, HSM, KMS).

  • Audit Trail → semua transaksi harus log immutable (untuk compliance & fraud detection).

  • Security Controls → OWASP Top 10, anti-SQL injection, anti-CSRF, rate limiting.


📌 5. Data Management

  • Data Model → ERD, schema MongoDB/Oracle, indexing.

  • Data Retention Policy (berapa lama transaksi disimpan).

  • Archiving Strategy → cold storage untuk transaksi lama.

  • Backup & Restore → strategi HA (high availability).

  • Consistency → transaksi harus ACID (atau saga pattern untuk microservices).


📌 6. Integrasi & Messaging

  • Kafka/RabbitMQ → topik, partisi, consumer group, retry & DLQ (Dead Letter Queue).

  • Batch Processing → end-of-day settlement, report generation.

  • External API → misalnya integrasi BI-FAST, SWIFT, VISA/MasterCard.


📌 7. Performance & Reliability

  • Latency Target → misalnya < 500ms untuk transfer antar rekening.

  • Throughput → berapa transaksi per detik yang didukung.

  • High Availability → cluster DB, Kafka, Redis sentinel.

  • Disaster Recovery → RPO/RTO target.


📌 8. Monitoring & Logging

  • Observability → Prometheus, Grafana, OpenTelemetry.

  • Log Management → ELK stack (Elasticsearch, Logstash, Kibana) atau Loki.

  • Alerting → Slack/Email/PagerDuty untuk SLA breach.

  • Business Metrics → jumlah transaksi, gagal transaksi, fraud detection.


📌 9. Compliance & Audit

  • Regulasi → OJK/BI compliance, PCI DSS (jika ada kartu).

  • Audit Logs → immutable, disimpan min. 5–7 tahun.

  • User Privacy → PII handling, GDPR/PDPA compliance.

  • Change Management → semua perubahan harus lewat approval (DevSecOps pipeline).


📌 10. Non-Functional Requirements

  • Skalabilitas, maintainability, portability.

  • SLA & SLO (availability target 99.9% misalnya).

  • Testing strategy → Unit, Integration, UAT, Security Testing, Performance Testing.


⚡ Jadi, TSD untuk banking harus sangat detail, tidak cuma teknis coding, tapi juga regulasi, security, dan audit karena sifat domainnya yang kritikal.



Apa itu K8s ?

 K8s = Kubernetes 🚀

👉 Kubernetes adalah platform open-source untuk orkestrasi container (seperti Docker), yang membantu mengelola deployment, scaling, networking, dan monitoring aplikasi secara otomatis.

Fungsi Utama Kubernetes (K8s)

  1. Container Orchestration

    • Mengatur banyak container (misalnya Docker) yang berjalan di banyak server (cluster).

  2. Automatic Scaling

    • Jika traffic naik, Kubernetes otomatis menambah container (pods). Jika traffic turun, pods bisa dikurangi.

  3. Self-Healing

    • Jika container crash, Kubernetes otomatis menjalankan ulang (restart) pod atau memindahkannya ke node lain.

  4. Service Discovery & Load Balancing

    • Pod punya IP dinamis → K8s memberi DNS/service agar aplikasi bisa saling menemukan.

    • Load balancing otomatis antar pod.

  5. Rolling Updates & Rollback

    • Bisa deploy versi baru aplikasi tanpa downtime (rolling update).

    • Bisa rollback ke versi lama jika ada masalah.

  6. Resource Management

    • Mengatur CPU, RAM, Storage agar efisien.


Komponen Utama K8s

  • Cluster → sekumpulan server (node).

  • Master Node (Control Plane) → otak yang mengatur cluster.

  • Worker Node → menjalankan container.

  • Pod → unit terkecil (berisi 1 atau lebih container).

  • Deployment → cara mendefinisikan jumlah pod & update strategy.

  • Service → memberi akses stabil ke pod (DNS + load balancing).

  • Ingress → aturan routing HTTP/HTTPS ke service (misalnya /accounts/* → Accounts Service).


🔑 Singkatnya:
Kalau Docker = bikin dan jalankan container, maka Kubernetes = mengatur ribuan container agar tetap sehat, scalable, dan mudah di-maintain.



Thursday, August 21, 2025

Jenis Join Table & Implementasi

 Topik ini sangat penting untuk sistem perbankan, implementasi join table adalah tulang punggung relasi antar entitas seperti nasabah, rekening, transaksi, dan otorisasi. Mari kita bedah berbagai jenis join dan implementasinya di masing-masing teknologi persistence:


🔗 Jenis Join Table & Implementasi

1. JPA (Java Persistence API)

JPA mendukung join melalui relasi entity dan JPQL:

  • OneToOne / ManyToOne / OneToMany / ManyToMany
  • Gunakan @JoinColumn atau @JoinTable untuk relasi eksplisit
  • Query: SELECT a FROM Account a JOIN a.customer c WHERE c.name = :name

📌 Contoh di banking:

@Entity
public class Account {
  @ManyToOne
  @JoinColumn(name = "customer_id")
  private Customer customer;
}

Digunakan untuk menghubungkan akun dengan nasabah.


2. Hibernate

Hibernate adalah implementasi JPA + fitur tambahan:

  • Mendukung fetching strategies (LAZY, EAGER)
  • Bisa pakai HQL: FROM Account a JOIN a.transactions t WHERE t.amount > 10000
  • Mendukung Named Entity Graphs dan Criteria API

📌 Contoh di banking:
Mengambil transaksi besar dari akun tertentu dengan caching dan lifecycle management.


3. JDBC

JDBC adalah low-level, jadi join dilakukan manual via SQL:

String sql = "SELECT a.*, c.* FROM account a JOIN customer c ON a.customer_id = c.id";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();

📌 Contoh di banking:
Digunakan untuk laporan audit atau migrasi data, karena kontrol penuh atas query dan performa.


4. MyBatis

MyBatis mengandalkan XML/Annotation untuk mapping SQL:

<select id="getAccountsWithCustomer" resultMap="accountCustomerMap">
  SELECT a.*, c.* FROM account a JOIN customer c ON a.customer_id = c.id
</select>
  • Bisa pakai resultMap untuk nested mapping
  • Cocok untuk query kompleks dan fleksibel

📌 Contoh di banking:
Digunakan untuk dashboard transaksi, laporan bulanan, atau integrasi dengan sistem legacy.


🏦 Studi Kasus Implementasi di Banking

EntitasRelasi JoinTujuan
Customer ↔ Account@ManyToOne / SQL JOINMenampilkan semua akun milik nasabah
Account ↔ Transaction@OneToMany / JOIN TABLEMelacak histori transaksi dan saldo
Account ↔ Approval@OneToOne / JOIN TABLEMenyimpan status persetujuan kredit atau limit
User ↔ Role ↔ Permission@ManyToManyManajemen otorisasi dan akses sistem



perbedaan antara JDBC, Hibernate, JPA, dan MyBatis

Bedah perbedaan antara JDBC, Hibernate, JPA, dan MyBatis dari sudut pandang arsitektur, kemudahan penggunaan, dan fleksibilitas.


⚙️ Ringkasan Singkat

Teknologi Tipe Abstraksi Mapping Query Style Cocok Untuk
JDBC Low-level API Manual Tidak SQL murni Control penuh, performa
Hibernate ORM Framework Tinggi Ya HQL + Criteria Entity lifecycle, caching
JPA Spesifikasi Tinggi Ya JPQL Abstraksi Hibernate, EclipseLink
MyBatis SQL Mapper Sedang Parsial SQL XML/Annotation Query kompleks, fleksibel

1. JDBC (Java Database Connectivity)

API dasar untuk koneksi dan eksekusi query ke database.

Kelebihan:

  • Kontrol penuh atas query dan transaksi.
  • Performa optimal karena tanpa overhead.

Kekurangan:

  • Banyak boilerplate code (ResultSet, PreparedStatement, dsb).
  • Tidak ada mapping otomatis ke objek Java.
  • Rentan terhadap SQL injection jika tidak hati-hati.

Contoh Penggunaan:

PreparedStatement ps = conn.prepareStatement("SELECT * FROM users WHERE id = ?");
ps.setInt(1, userId);
ResultSet rs = ps.executeQuery();

2. Hibernate

ORM (Object Relational Mapping) yang mengimplementasikan JPA dan menambahkan fitur tambahan.

Kelebihan:

  • Mapping otomatis antara tabel dan objek Java.
  • Caching, lazy loading, dan entity lifecycle management.
  • Mendukung HQL dan Criteria API.

Kekurangan:

  • Learning curve tinggi.
  • Kadang terlalu banyak magic (misalnya auto-fetch yang tidak diinginkan).
  • Debugging bisa rumit.

Contoh Penggunaan:

Session session = sessionFactory.openSession();
User user = session.get(User.class, userId);

3. JPA (Java Persistence API)

Spesifikasi standar untuk ORM di Java. Hibernate adalah salah satu implementasinya.

Kelebihan:

  • Abstraksi tinggi dan standar industri.
  • Integrasi mudah dengan Spring Data JPA.
  • Cocok untuk aplikasi enterprise.

Kekurangan:

  • Terbatas pada fitur yang didefinisikan oleh spesifikasi.
  • Untuk fitur lanjutan, tetap tergantung pada implementasi (misalnya Hibernate).

Contoh Penggunaan (Spring Data JPA):

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByStatus(String status);
}

4. MyBatis

Framework SQL Mapper yang menggabungkan fleksibilitas SQL dengan mapping ke objek Java.

Kelebihan:

  • Kontrol penuh atas SQL.
  • Cocok untuk query kompleks dan performa tinggi.
  • Mudah diintegrasikan dengan Spring Boot.

Kekurangan:

  • Tidak ada entity lifecycle management.
  • Mapping manual (walau bisa otomatis sebagian).
  • Tidak cocok untuk aplikasi yang heavily domain-driven.

Contoh Penggunaan:

<select id="selectUser" resultType="User">
  SELECT * FROM users WHERE id = #{id}
</select>

🚀 Kapan Menggunakan yang Mana?

  • JDBC → Saat kamu butuh kontrol penuh dan performa maksimal, misalnya untuk batch processing atau low-level DB ops.
  • Hibernate/JPA → Cocok untuk aplikasi enterprise dengan domain model kompleks dan kebutuhan ORM penuh.
  • MyBatis → Ideal untuk aplikasi yang butuh query kompleks, performa tinggi, dan fleksibilitas SQL.



iklan

iklan