Cara Terbaik Membangun Perangkat Lunak Dengan MicroServices
Kami ingin menjadikan ini panduan lengkap yang pasti bagi siapa saja yang mencoba memahami dasar-dasar MicroSevices.
Artikel ini menjelaskan arsitektur MicroSevices dibandingkan dengan arsitektur monolitik tradisional. Kelebihan, kekurangan, dan pelajaran yang didapat saat membangun MicroSevices.
Daftar isi
- Apa artinya membangun MicroSevices?
- Perbedaan antara MicroSevices dan aplikasi monolitik
- Keuntungan dan kerugian dari MicroSevices
- Apakah semua MicroSevices terhubung ke database yang sama?
- Apa perbedaan antara API dan MicroSevices?
- Apakah MicroSevices harus RESTful?
- Kapan menggunakan arsitektur MicroSevices
- Bagaimana cara mengautentikasi komunikasi MicroSevices?
- Praktik terbaik MicroSevices (asinkron, didorong oleh peristiwa, perpustakaan)
- Contoh kode MicroSevices Lumen + contoh dunia nyata
- Bagaimana saya bisa memulai? :)
Apa artinya membangun MicroSevices?
Ini berarti Anda sedang mengembangkan seluruh aplikasi Anda dengan komponen kecil, independen, dan digabungkan secara longgar. Ini didorong oleh domain, dan setiap MicroSevices harus menjalankan satu persyaratan bisnis.
Seperti yang Anda lihat pada gambar di bawah, fungsionalitas aplikasi besar dibagi menjadi komponen yang lebih kecil, yang dikembangkan secara independen dan berkomunikasi satu sama lain melalui API private yang terdefinisi dengan baik.
Microservice Diagram diamibil dari Dzone.com
Perbedaan antara MicroSevices dan arsitektur monolitik
Satu-satunya perbedaan terpenting adalah bahwa aplikasi Monolitik hanyalah SATU aplikasi (di mana semuanya bersama-sama) sementara aplikasi Microservices. banyak aplikasi kecil yang bekerja sama.
Tips Untuk Delevoper: Jika aplikasi Anda berada dalam satu repositori git dan semua anggota tim menarik dan push ke basis kode yang sama. Bro, Anda menjalankan monolit.
Manfaat MicroSevices
- developers dapat bekerja secara mandiri pada berbagai komponen (FOKUS)
- Resilience — Jika layanan turun, itu tidak menghapus seluruh aplikasi.
- Layanan dapat diperpanjang secara individual.
- Deploy independen
- Fleksibilitas — Anda dapat menggunakan bahasa/frameworks yang berbeda untuk komponen yang berbeda
Kekurangan MicroSevices
- Debugging, sedikit lebih sulit. Saat bekerja dengan layanan A, Anda mungkin perlu membuka layanan B untuk memperbaiki masalah.
- Pengujian, Alat yang ada tidak selalu dirancang untuk menangani dependensi layanan.
- Latensi, Saat layanan berkomunikasi satu sama lain
- Database Terdistribusi, Mungkin sulit untuk memiliki tabel yang berbeda di database yang berbeda. Mungkin bermanfaat bagi sebagian orang.
Apakah semua MicroSevices terhubung ke database yang sama?
Tidak! Idealnya, setiap MicroSevices memiliki tabel database sendiri.
Apa perbedaan antara API dan MicroSevices?
Tidak ada kesamaan!
API: Bertindak seperti pintu gerbang ke server. Ini memberikan pintu masuk ke audiens Anda dan developers yang menggunakan assets mereka untuk membangun aplikasi mereka sendiri
MicroSevices: Terdiri dari kumpulan kecil layanan otonom.
Sekali lagi, tidak ada kesamaan. MicroSevices dipanggil melalui API
Apakah MicroSevices harus RESTful?
Ya, kecuali jika Anda membangun dengan GraphQL.
MicroSevices 100% menggunakan API untuk berkomunikasi, jadi endpoint API perlu didefinisikan dengan baik oleh developers, untuk Konsumsi.
Kapan menggunakan arsitektur MicroSevices
- Sistem besar dan kompleks untuk meningkatkan ketahanan sistem
- Untuk mengisolasi kekhawatiran developers. Bayangkan seluruh Google memiliki satu basis kode :)
- Mengembangkan versi baru dari modul yang lebih kecil lebih cepat daripada memperbarui seluruh produk, mengurangi waktu ke pasar untuk fitur baru.
- Aplikasi kompleks yang harus sangat skalabel.
Bagaimana cara mengautentikasi komunikasi MicroSevices?
Itu tergantung pada tingkat keamanan yang diperlukan.
Mudah: Anda dapat menggunakan key di kedua aplikasi (dan mereka memeriksa silang untuk memvalidasi permintaan Anda). - Keamanan rendah
Untuk keamanan tambahan, Anda dapat mengonfigurasi komunikasi mesin-ke-mesin OAUTH2. Gunakan passport atau sejenisnya.
Cara Terbaik Menggunakan MicroSevices
- Pisahkan MicroSevices berdasarkan domain bisnis. Untuk aplikasi perbankan, ini bisa berarti melapisi sistem perbankan inti, pemberitahuan, pembayaran faktur, pinjaman, dll. ke dalam MicroSevices individu.
- Offload masalah lintas sektoral, seperti otentikasi dan penghentian SSL, ke gateway. Amazon dan Azure keduanya memiliki fitur API Gateway
- Asynchronous — Jika Anda menggunakan bahasa sinkron seperti php (laravel), susun interdependensi MicroSevices sehingga panggilan API tidak meningkatkan waktu respons yang tidak perlu.
- event driven — Seperti di atas, persyaratan bisnis seperti pemberitahuan, tugas penggunaan memori, dll. harus dipicu oleh event dan dijalankan di latar belakang.
- Libraries — Pembersih untuk MicroSevices agar dapat saling memanggil dengan cara ini
- API Gateway: API Gateway adalah titik masuk untuk Clients. Clients tidak memanggil layanan secara langsung. Sebagai gantinya, panggil API Gateway . API Gateway meneruskan panggilan ke layanan yang sesuai di bagian belakang.
Notifications::auth()->mobileNumberVerification($event->otp->phone, $event->otp); //Recommended
//Not recommended!
$client = new Client();
$response = $client->$method($baseUri . $requestUrl, [
'headers' => [],
'auth' => ['username', 'password'],
'json' => $formParams,
]);
return json_decode($response->getBody()->getContents());
Silakan periksa diagram header artikel ini untuk visual
Tip: Untuk keamanan, gunakan MicroSevices ke kotak pribadi sehingga dapat berkomunikasi melalui alamat IP pribadi.
Contoh kode MicroSevices Lumen + contoh dunia nyata
Berikut ini tautan ke aplikasi MicroSevices yang menurut saya berguna, Terletak di Lumen. Anda dappat melihatnya disini
Bagaimana saya bisa memulai? :)
lakukan saja :)
- Mulailah dengan menggambar peta skema database aplikasi Anda
- Catat microservices yang diinginkan.
- Mari kita mulai dengan API Gateway! ..
semua yang terbaik! !!