Gelombang Pix
PixWave adalah layanan mikro dompet digital yang dapat diskalakan dan berkinerja tinggi yang dirancang untuk menangani pembayaran real-time melalui PIX , menggunakan arsitektur multi-gateway . Sistem ini mengintegrasikan beberapa gateway pembayaran, termasuk Mercado Pago dan Gerencianet , memastikan keandalan dan kemampuan fallback yang lancar. Dengan secara dinamis memilih gateway yang paling tersedia pada saat tertentu, PixWave meminimalkan waktu henti dan memastikan pemrosesan pembayaran berkelanjutan.
Arsitekturnya dibangun agar tangguh, modular, dan terukur , menggunakan Docker untuk containerization, Kubernetes untuk orkestrasi, Redis untuk caching, SNS untuk pesan asinkron, dan tumpukan ELK (Logstash, Elasticsearch, Kibana) untuk logging terpusat dan pemantauan real-time kinerja sistem.
Fitur Utama
- Arsitektur multi-gateway dengan pemilihan gateway real-time dan fallback otomatis.
- Pemrosesan pekerjaan asinkron dengan mekanisme percobaan ulang untuk menangani transaksi yang gagal dan tugas yang berjalan lama.
- Pencatatan log terpusat dan pemantauan waktu nyata menggunakan tumpukan ELK (Elasticsearch, Logstash, Kibana).
- Skalabilitas dan ketahanan didukung oleh Docker dan Kubernetes, memastikan sistem dapat menangani beban tinggi dan tetap beroperasi di bawah tekanan.
Arsitektur Sistem
1. Arsitektur Berbasis Layanan Mikro
PixWave mengikuti arsitektur berbasis layanan mikro , di mana komponen utama—seperti pemrosesan pembayaran, manajemen pengguna, dan pemantauan transaksi—dipisahkan menjadi layanan independen. Desain ini memungkinkan penskalaan layanan individual secara mandiri dan memeliharanya tanpa memengaruhi keseluruhan sistem.
- Laravel digunakan sebagai kerangka backend untuk mengelola transaksi pembayaran, interaksi pengguna, dan permintaan API.
- Docker memasukkan setiap layanan ke dalam container, memastikan konsistensi di seluruh lingkungan pengembangan, pengujian, dan produksi.
- Kubernetes mengatur penerapan dan pengelolaan container ini, menyediakan fitur seperti penskalaan otomatis, pemulihan mandiri, dan penyeimbangan beban.
2. Pemrosesan Pembayaran
Inti dari PixWave adalah modul pemrosesan pembayarannya, yang dirancang untuk menangani transaksi PIX waktu nyata dengan ketersediaan tinggi dan toleransi kesalahan. Sistem ini mengintegrasikan dua gateway pembayaran utama: Mercado Pago dan Gerencianet , dan menggunakan mekanisme pemilihan gateway cerdas.
2.1. Sistem Multi-Gateway dengan Fallback
- Sistem pertama-tama mencoba memproses pembayaran melalui gateway utama (Mercado Pago atau Gerencianet).
- Redis menyimpan status ketersediaan setiap gateway, memungkinkan pengambilan dan pengambilan keputusan dengan cepat.
- Jika gateway utama tidak tersedia, sistem akan segera beralih ke gateway cadangan, memastikan pemrosesan pembayaran berkelanjutan dengan waktu henti minimal.
2.2. Manajemen Transaksi
- Semua transaksi dicatat di MySQL , termasuk detail seperti jumlah transaksi, ID pengguna, gateway yang digunakan, status (berhasil, gagal, atau tertunda), dan stempel waktu.
- Manajemen status berbasis enum menstandarkan status transaksi di berbagai gateway untuk konsistensi dalam database.
- Antrean pekerjaan menangani pemrosesan pembayaran secara asinkron, memungkinkan pengguna melakukan pembayaran tanpa menunggu seluruh proses selesai.
3. Mekanisme Pekerjaan dan Percobaan Ulang
Sistem Pekerjaan di PixWave sangat penting untuk menangani tugas-tugas seperti pemrosesan pembayaran dan percobaan ulang. Dengan mengirimkan pekerjaan untuk permintaan pembayaran secara asinkron, PixWave memberikan pengalaman non-pemblokiran bagi pengguna dan meningkatkan respons sistem secara keseluruhan.
3.1. Penanganan Pekerjaan
- Ketika pembayaran diminta, pekerjaan dikirim untuk memproses transaksi secara asinkron, menghubungi gateway pembayaran yang relevan untuk mengirimkan transaksi dan mengambil hasilnya.
- Pekerjaan diproses secara paralel, memastikan penanganan pembayaran dalam jumlah besar secara efisien.
3.2. Mekanisme Coba Ulang
- Jika upaya pembayaran gagal karena masalah gateway, sistem akan mencoba lagi hingga 3 kali sebelum menandai transaksi sebagai gagal.
- Setelah semua upaya percobaan ulang, sistem beralih ke gateway cadangan dan mencoba kembali pembayaran.
- Jika fallback juga gagal, transaksi dicatat sebagai gagal, dan peringatan dapat dikirim melalui SNS untuk penyelidikan lebih lanjut.
4. Menyimpan dalam cache dengan Redis
PixWave menggunakan Redis untuk caching guna meningkatkan kinerja dan mengurangi beban pada database utama.
- Ketersediaan gateway : Di-cache di Redis, memungkinkan sistem dengan cepat menentukan gateway pembayaran mana yang akan digunakan tanpa melakukan panggilan API yang berlebihan.
- Pencarian transaksi : Transaksi yang baru diproses disimpan dalam cache, memungkinkan pencarian cepat dan mengurangi pertanyaan yang tidak perlu ke database MySQL.
5. Penebangan dan Pemantauan Terpusat
Logstash dan Elasticsearch digunakan untuk mengelola pencatatan log terpusat, memberikan wawasan real-time mengenai peristiwa sistem, kesalahan, dan metrik kinerja.
- Logstash mengumpulkan log dari semua layanan (Laravel, antrian pekerjaan, gateway pembayaran) dan mengirimkannya ke Elasticsearch untuk diindeks.
- Elasticsearch memungkinkan kueri yang kuat untuk pemeriksaan kesehatan sistem dan pemecahan masalah.
- Kibana menawarkan dasbor grafis untuk menjelajahi log, melacak kesalahan, dan memvisualisasikan kinerja sistem.
6. Antrian Pesan dan Notifikasi Asinkron
PixWave menggunakan SNS (Layanan Pemberitahuan Sederhana) untuk pengiriman pesan antar layanan mikro dan untuk mengirim pemberitahuan ke sistem eksternal.
- Saat transaksi diproses, notifikasi dikirim ke sistem eksternal (misalnya, aplikasi pengguna atau layanan pihak ketiga) melalui SNS, memastikan bahwa sistem tetap responsif bahkan dalam lalu lintas tinggi.
- Pesan internal antar komponen sistem ditangani melalui SQL dan SNS , memastikan komunikasi terpisah antar layanan.
Petunjuk Instalasi
1. Kloning Repositori
Untuk memulai, kloning repositori PixWave ke mesin lokal Anda:
git clone https://github.com/your-repository/pixwave.git
cd pixwave
2. Atur Variabel Lingkungan
Salin file .env.example
ke .env
dan konfigurasikan variabel lingkungan Anda. Variabel ini mencakup kredensial database, kredensial gateway pembayaran (Mercado Pago dan Gerencianet), dan kunci API untuk layanan lainnya:
Perbarui nilai berikut dalam file .env
:
-
DB_HOST
, DB_PORT
, DB_DATABASE
, DB_USERNAME
, DB_PASSWORD
– Pengaturan basis data MySQL. -
MERCADOPAGO_ACCESS_TOKEN
– Token akses Mercado Pago. -
GERENCIANET_CLIENT_ID
, GERENCIANET_CLIENT_SECRET
, GERENCIANET_PIX_KEY
– Kredensial API Gerencianet. -
SNS_API_KEY
– Kunci SNS API Anda untuk notifikasi. -
LOGSTASH_HOST
– Host untuk layanan Logstash (untuk logging terpusat).
3. Instal Dependensi
Jalankan perintah berikut untuk menginstal semua dependensi yang diperlukan:
4. Siapkan Docker
Pastikan Anda telah menginstal Docker di mesin Anda. Kemudian, gunakan Docker Compose untuk membuat dan menjalankan container yang diperlukan:
docker-compose up --build
Perintah ini akan memulai layanan berikut:
- Aplikasi Laravel (backend PHP)
- MySQL (Database relasional)
- Redis (Cache)
- Elasticsearch & Logstash (Pencatatan log terpusat)
- Kibana (antarmuka analisis log)
5. Jalankan Migrasi dan Seeder
Setelah container aktif dan berjalan, jalankan migrasi untuk menyiapkan skema database dan memasukkan beberapa data awal:
docker exec -it laravel_app php artisan migrate --seed
6. Hasilkan Kunci Aplikasi
Hasilkan kunci enkripsi aplikasi, yang digunakan oleh Laravel untuk enkripsi aman:
docker exec -it laravel_app php artisan key:generate
7. Jalankan Aplikasinya
Setelah semuanya diatur, Anda sekarang dapat mengakses aplikasi. Secara default, aplikasi akan tersedia di http://localhost
:
Kunjungi http://localhost
di browser Anda untuk berinteraksi dengan sistem PixWave.
Tes Berjalan
PixWave menyertakan rangkaian pengujian yang komprehensif. Untuk menjalankan pengujian, pastikan Anda berada di dalam kontainer Docker atau telah menyiapkan lingkungan lokal. Jalankan perintah berikut:
docker exec -it laravel_app php artisan test
Ini akan menjalankan pengujian unit dan fitur untuk memastikan fungsionalitas sistem pembayaran, termasuk pemrosesan pekerjaan, penggantian gateway, dan manajemen riwayat transaksi.
Pemecahan masalah
Konflik Port : Jika Anda mengalami konflik port (misalnya, Redis atau MySQL sudah berjalan di sistem Anda), perbarui file docker-compose.yml
untuk mengubah pemetaan port default.
Kesalahan Izin : Jika masalah izin muncul saat mencoba menulis ke log atau penyimpanan, pastikan direktori storage/
dan bootstrap/cache/
dapat ditulis dengan menjalankan:
sudo chmod -R 775 storage
sudo chmod -R 775 bootstrap/cache
Pengulangan Kontainer : Jika kontainer dimulai ulang atau gagal dijalankan, periksa log untuk pesan kesalahan terperinci:
Teknologi yang Digunakan
1. Kerangka Backend
- Laravel : Digunakan untuk mengembangkan logika pemrosesan pembayaran inti dan interaksi API.
2. Basis Data
- MySQL : Database relasional untuk menyimpan detail transaksi, data pengguna, dan informasi gateway.
3. Tembolok
- Redis : Lapisan cache untuk mengoptimalkan waktu respons dan mengurangi beban pada database utama.
4. Pesan
- SNS (Layanan Pemberitahuan Sederhana) : Digunakan untuk mengirim pemberitahuan asinkron dan pesan internal antar layanan.
5. Antrian Pekerjaan
- Pekerjaan Laravel : Mengelola pemrosesan pekerjaan latar belakang, termasuk transaksi pembayaran dan percobaan ulang.
- Kontainerisasi dan Orkestrasi
- Docker : Memastikan konsistensi di seluruh lingkungan dengan memasukkan aplikasi ke dalam container.
- Kubernetes : Menangani orkestrasi container, penskalaan, dan pemeriksaan kesehatan untuk layanan.
7. Pencatatan dan Pemantauan
- Logstash & Elasticsearch : Mengumpulkan dan mengindeks log untuk pemantauan dan analisis waktu nyata.
- Kibana : Menyediakan antarmuka visual untuk menjelajahi log dan melacak kinerja sistem.