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

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.

Jenis Arsitektur Aplikasi Berbasis Java

 🧱 Jenis Arsitektur Aplikasi Berbasis Java

1. Monolithic Architecture

Semua komponen (UI, business logic, data access) digabung dalam satu aplikasi besar.

Kelebihan:

  • Mudah dikembangkan dan dideploy di tahap awal.
  • Debugging dan testing lebih sederhana.
  • Cocok untuk MVP atau aplikasi kecil.

Kekurangan:

  • Sulit diskalakan secara independen.
  • Perubahan kecil bisa memicu redeploy seluruh aplikasi.
  • Rentan terhadap tight coupling antar modul.

2. Layered Architecture (3-tier atau N-tier)

Terbagi menjadi beberapa lapisan: Presentation → Business → Persistence.

Kelebihan:

  • Struktur jelas dan mudah dipahami.
  • Cocok untuk aplikasi enterprise tradisional.
  • Memudahkan pemisahan tanggung jawab.

Kekurangan:

  • Bisa menjadi rigid dan verbose.
  • Tidak cocok untuk kebutuhan real-time atau high-concurrency.

3. Hexagonal Architecture (Ports and Adapters)

Inti aplikasi (domain logic) dikelilingi oleh adapter untuk komunikasi eksternal (REST, DB, Kafka).

Kelebihan:

  • Tingkat isolasi tinggi antara domain dan teknologi.
  • Mudah diuji dan diubah tanpa mengganggu core logic.
  • Cocok untuk DDD dan test-driven development.

Kekurangan:

  • Kurva belajar lebih tinggi.
  • Bisa terasa over-engineered untuk aplikasi kecil.

4. Microservices Architecture

Aplikasi dipecah menjadi layanan-layanan kecil yang independen, masing-masing punya database dan deployment sendiri.

Kelebihan:

  • Skalabilitas dan fleksibilitas tinggi.
  • Tim bisa bekerja paralel pada service berbeda.
  • Fault isolation lebih baik.

Kekurangan:

  • Kompleksitas tinggi (networking, observability, data consistency).
  • Butuh DevOps dan CI/CD yang matang.
  • Latency antar service bisa menjadi bottleneck.

5. Reactive Architecture

Menggunakan event-driven model (misalnya dengan Kafka, WebSocket, Reactor) untuk menangani data stream dan async processing.

Kelebihan:

  • Sangat cocok untuk aplikasi real-time dan high-throughput.
  • Resource usage lebih efisien.
  • Skalabilitas horizontal lebih mudah.

Kekurangan:

  • Debugging dan tracing lebih sulit.
  • Paradigma pemrograman berbeda (non-blocking, backpressure).

🔍 Perbandingan Singkat

Arsitektur Skalabilitas Kompleksitas Cocok untuk Deployment
Monolithic Rendah Rendah MVP, aplikasi kecil Satu unit
Layered Sedang Sedang Aplikasi enterprise Satu unit
Hexagonal Tinggi Sedang-Tinggi DDD, testable apps Modular
Microservices Sangat tinggi Tinggi Sistem besar Per service
Reactive Tinggi Tinggi Real-time, stream Modular / async


Monday, August 18, 2025

Strategi Jangka Panjang Diversifikasi Ekonomi Individu

 🎯 Strategi Jangka Panjang Diversifikasi Ekonomi Individu

(Anti-Inflasi / Krisis / Resesi)

1. Diversifikasi Sumber Pendapatan (Income Stream)

  • Jangan hanya mengandalkan gaji tetap.

  • Bangun multi-income stream:

    • Pekerjaan utama.

    • Investasi (saham, reksa dana, properti).

    • Side business (online shop, jasa, freelance).

    • Passive income (royalti, dividen, sewa).
      ➡️ Saat satu sumber tertekan (misal gaji stagnan), yang lain bisa menopang.


2. Diversifikasi Aset Keuangan

  • Hindari menaruh semua uang di 1 jenis aset.

  • Komposisi (disesuaikan profil risiko):

    • Cash / Dana Darurat (10–20%) → tahan resesi.

    • Emas / aset lindung nilai (10–20%) → tahan inflasi.

    • Saham / reksa dana (30–40%) → tumbuh jangka panjang.

    • Obligasi / deposito (20–30%) → stabil.

    • Properti / bisnis riil → tambahan diversifikasi.


3. Lindungi Diri dari Inflasi

  • Jangan biarkan uang nganggur → inflasi menggerogoti nilainya.

  • Pilih aset yang mengalahkan inflasi jangka panjang:

    • Saham blue chip / indeks pasar.

    • Properti produktif (kontrakan, ruko).

    • Emas sebagai pelindung nilai (bukan untuk tumbuh, tapi menjaga daya beli).


4. Strategi Saat Krisis / Resesi

  • Pastikan punya dana darurat 6–12 bulan pengeluaran.

  • Kurangi utang konsumtif (kartu kredit, cicilan barang mewah).

  • Fokus pada kebutuhan pokok → bukan gaya hidup.

  • Gunakan krisis sebagai peluang investasi murah (misalnya saham turun drastis).


5. Investasi pada Diri Sendiri

  • Upgrade skill & pendidikan → agar tidak mudah tergantikan teknologi/krisis.

  • Networking & jejaring bisnis.

  • Kesehatan fisik & mental → aset jangka panjang yang paling penting.


6. Pola Hidup & Mindset

  • Terapkan gaya hidup hemat tapi produktif (bukan konsumtif).

  • Biasakan budgeting 50-30-20 (50% kebutuhan, 30% keinginan, 20% tabungan/investasi).

  • Jangan ikut-ikutan spekulasi (contoh: beli kripto karena tren, tanpa paham risikonya).


🌀 Inti Pemikiran

  • Anti-Inflasi → simpan sebagian di aset lindung nilai (emas, properti).

  • Anti-Krisis → punya dana darurat & minim utang konsumtif.

  • Anti-Resesi → bangun banyak sumber pendapatan & investasi jangka panjang.

iklan

iklan