Layanan microser untuk pemula

Melihat kembali ke masa lalu sekitar lima tahun yang lalu, Anda dapat melihat seberapa banyak telah berubah sejak saat itu sikap terhadap arsitektur layanan-mikro. Awalnya mereka sangat populer. Mengikuti kesuksesan Netflix, Amazon dan Gilt.com, para pengembang memutuskan bahwa pengembangan layanan-layanan microsoft tidak berbeda dengan pengembangan aplikasi. Sekarang semua orang mengerti bahwa layanan mikro adalah gaya arsitektur baru yang efektif untuk menyelesaikan masalah tertentu, memiliki kelebihan dan kekurangannya.

Untuk memahami apa itu layanan microser dan dalam kasus apa mereka harus digunakan, kami beralih ke Jaime Buelta, penulis Hands-On Docker untuk Microservices dengan Python. Dia berbicara tentang kelebihan arsitektur ini, dan juga berbagi rekomendasi untuk pengembang yang berencana untuk beralih dari monolit.

gambar

Manfaat dan risiko


Aplikasi monolitik tradisional menggabungkan semua kemampuannya dalam satu modul yang terhubung. Dalam kasus layanan mikro, yang terjadi adalah yang sebaliknya. Aplikasi ini dibagi menjadi layanan yang lebih kecil, berdiri sendiri yang dapat digunakan secara independen, diperbarui, dan diganti. Setiap layanan mikro dibuat untuk satu tujuan bisnis dan dapat berinteraksi dengan layanan mikro lainnya menggunakan mekanisme sederhana.

Buelta menjelaskan: “Arsitektur layanan mikro adalah cara untuk menyusun sistem di mana beberapa layanan independen berkomunikasi satu sama lain dengan cara tertentu (ini biasanya terjadi dengan layanan web RESTful). Fitur utama adalah bahwa setiap layanan mikro mampu memperbarui dan menggunakan secara terpisah dari yang lain. "
Arsitektur microservice menentukan tidak hanya bagaimana Anda membuat aplikasi Anda, tetapi juga bagaimana tim Anda diatur.

“Satu tim independen dapat bertanggung jawab penuh atas layanan mikro. Ini memungkinkan organisasi untuk tumbuh tanpa menyatukan pengembang, ”Buelt menjelaskan.
Salah satu keuntungan utama dari layanan microser adalah bahwa mereka memungkinkan Anda untuk memperkenalkan inovasi tanpa dampak khusus pada sistem secara keseluruhan. Dengan bantuan layanan mikro, Anda dapat melakukan penskalaan horizontal, memiliki batasan modul yang jelas, menggunakan berbagai teknologi dan melakukan pengembangan paralel.

Ketika ditanya tentang risiko yang terkait dengan layanan mikro, Buelta menjawab: “Kesulitan utama dalam mengimplementasikan arsitektur (terutama ketika beralih dari monolith) adalah untuk membuat desain di mana layanan akan benar-benar independen. Jika ini tidak dapat dicapai, maka komunikasi antar-layanan akan menjadi lebih sulit, yang akan menyebabkan biaya tambahan. Layanan Microsoft membutuhkan profesional yang akan membentuk arah pengembangan dalam jangka panjang. Saya merekomendasikan organisasi yang ingin beralih ke arsitektur seperti itu untuk menunjuk seseorang yang bertanggung jawab atas "gambaran besar". Kita perlu melihat layanan-layanan microsoft lebih luas, ”kata Jaime.

Transisi dari monolit ke layanan mikro


Martin Fowler, seorang penulis dan konsultan perangkat lunak yang terkenal, menyarankan mengikuti prinsip "pertama adalah monolit". Hal ini disebabkan oleh fakta bahwa menggunakan arsitektur layanan mikro sejak awal pengembangan itu berisiko, karena dalam banyak kasus hanya cocok untuk sistem yang kompleks dan tim pengembangan besar.
“Kriteria utama yang seharusnya mendorong Anda untuk beralih ke arsitektur baru adalah ukuran tim Anda. Kelompok kecil tidak boleh melakukan ini. Dalam kondisi seperti itu, pengembang sudah memahami segala sesuatu yang terjadi dengan aplikasi tersebut, dan selalu dapat mengajukan pertanyaan klarifikasi kepada seorang kolega. Monolith bekerja dengan sempurna dalam situasi ini, dan karena itu hampir setiap sistem dimulai dengan itu, ”kata Jaime. Ini mengkonfirmasi "aturan dua pizza" Amazon, yang menurutnya tim yang bertanggung jawab atas satu layanan mikro dapat diberi makan dengan dua pizza - jika tidak terlalu besar.

“Seiring pertumbuhan perusahaan dan tim pengembangan, koordinasi yang lebih baik mungkin diperlukan. Programmer sering mulai saling mengganggu. Memahami tujuan potongan kode tertentu menjadi lebih sulit. Dalam kasus seperti itu, transisi ke layanan mikro masuk akal - ini akan membantu untuk berbagi tanggung jawab dan membawa kejelasan pada gambaran keseluruhan sistem. Setiap tim dapat menetapkan tujuan sendiri dan bekerja terutama secara independen, memberikan antarmuka eksternal yang jelas. Namun, agar transisi seperti itu masuk akal, harus ada banyak pengembang, ”tambah Buelt.

Rekomendasi untuk bermigrasi ke layanan mikro


Menjawab pertanyaan tentang apa rekomendasi praktis yang dapat digunakan pengembang ketika beralih ke layanan microser, Buelta mengatakan: "Kunci untuk arsitektur layanan microser yang sukses adalah bahwa setiap layanan harus se independen mungkin."
Timbul pertanyaan: "Bagaimana Anda bisa membuat layanan independen?" Cara terbaik untuk menemukan saling ketergantungan suatu sistem adalah dengan memikirkan kemungkinan-kemungkinan baru: “Jika Anda ingin menambahkan fungsi baru, dapatkah itu diterapkan dengan mengubah hanya satu layanan? Apa jenis fungsi yang memerlukan koordinasi beberapa layanan mikro? Apakah mereka akan sering atau jarang digunakan? Tidak mungkin untuk membuat desain yang sempurna, tetapi setidaknya Anda dapat menggunakannya untuk membuat keputusan yang tepat dan tepat, "jelas Buelt.

Jaime menyarankan untuk beralih ke arsitektur dengan benar sehingga Anda tidak harus mengulang semuanya nanti. “Setelah transisi selesai, mengubah batas layanan microser akan lebih sulit. Adalah bermanfaat untuk mencurahkan lebih banyak waktu untuk fase awal proyek, "tambahnya.
Pindah dari satu pola desain ke desain lainnya adalah langkah serius. Kami bertanya masalah apa yang dihadapi Jaime dan timnya selama migrasi ke layanan mikro, yang ia jawab:

“Faktanya, kesulitan utama berhubungan dengan orang. Masalah-masalah ini biasanya diremehkan, tetapi beralih ke layanan Microsoft sebenarnya mengubah cara kerja pengembang. Tugasnya tidak mudah! " Dia menambahkan: “Saya pribadi mengalami masalah serupa. Misalnya, saya harus melatih dan memberikan saran kepada pengembang. Sangat penting untuk menjelaskan mengapa perubahan tertentu diperlukan. Ini membantu orang memahami alasan untuk memperkenalkan semua inovasi yang mungkin tidak mereka sukai.

Ketika bergerak dari arsitektur monolitik, banyak kesulitan dapat muncul ketika menggunakan aplikasi yang sebelumnya dirilis sebagai modul tunggal. Dibutuhkan analisis yang lebih teliti untuk memastikan kompatibilitas ke belakang dan meminimalkan risiko. Untuk mengatasi tugas ini terkadang sangat sulit. "

Alasan memilih Docker, Kubernetes, dan Python sebagai tumpukan teknologi Anda


Kami bertanya Buelt teknologi apa yang ia sukai untuk mengimplementasikan layanan-layanan microser. Mengenai pilihan bahasa, jawabannya sederhana: “Python adalah pilihan terbaik bagi saya. Ini adalah bahasa pemrograman favorit saya! .. Bahasa ini cocok untuk layanan microser. Mudah dibaca dan mudah digunakan. Selain itu, Python memiliki fungsi yang luas untuk pengembangan web dan ekosistem dinamis dari modul pihak ketiga untuk kebutuhan apa pun. Kebutuhan ini termasuk menghubungkan ke sistem lain, seperti database, API eksternal, dll. "

Docker sering disebut-sebut sebagai salah satu alat paling penting untuk layanan microser. Buelta menjelaskan alasannya:

“Docker memungkinkan Anda untuk merangkum dan menyalin aplikasi dalam paket standar yang nyaman. Ini mengurangi ketidakpastian dan kompleksitas lingkungan. Ini juga sangat menyederhanakan transisi dari pengembangan ke produksi aplikasi. Selain itu, waktu yang diperlukan untuk menggunakan peralatan berkurang. Anda dapat menempatkan beberapa kontainer di lingkungan yang berbeda (bahkan pada sistem operasi yang berbeda) dalam satu kotak fisik atau mesin virtual. "

Tentang Kubernetes:

“Kubernetes memungkinkan Anda untuk menggunakan beberapa wadah Docker secara terkoordinasi. Hal ini membuat pengembang berpikir secara berkelompok, mengingat lingkungan produksi. Ini juga memungkinkan Anda untuk mendefinisikan sebuah cluster menggunakan kode sehingga penyebaran baru atau perubahan konfigurasi didefinisikan dalam file. Semua ini membuat metode yang mungkin seperti GitOps (saya menulis tentang mereka di buku saya), sambil mempertahankan konfigurasi penuh dalam sistem kontrol versi. Setiap perubahan dibuat dengan cara yang spesifik dan reversibel, karena merupakan git biasa. Berkat ini, sangat mudah untuk memulihkan atau menggandakan infrastruktur. ”

“Anda harus menghabiskan waktu mempelajari Docker dan Kubernetes, tetapi itu sangat berharga. Kedua alat ini sangat kuat. Selain itu, mereka mendorong Anda untuk bekerja sedemikian rupa untuk menghindari masalah selama produksi, ”kata Buelt.

Layanan Mikro Multilingual


Saat mengembangkan layanan mikro, Anda dapat menggunakan berbagai teknologi, karena idealnya tim independen bertanggung jawab atas masing-masingnya. Buelta membagikan pendapatnya tentang layanan mikro multibahasa: “Layanan mikro multi bahasa sangat bagus! Ini adalah salah satu keunggulan utama arsitektur. Contoh khas dari layanan mikro multibahasa adalah transfer kode lawas yang ditulis dalam satu bahasa ke bahasa baru. Layanan Microsoft dapat menggantikan yang lain yang menyediakan antarmuka eksternal yang sama. Namun, kodenya akan sangat berbeda. Misalnya, saya beralih dari aplikasi PHP lama, menggantikannya dengan analog yang ditulis dengan Python. " Jaime menambahkan: "Bekerja dengan dua platform atau lebih pada saat yang sama akan membantu untuk lebih memahami mereka dan memahami dalam hal apa lebih baik menggunakannya."

Sementara kemampuan untuk menggunakan layanan mikro multibahasa adalah keuntungan arsitektur yang hebat, itu juga dapat meningkatkan biaya transaksi. Buelta menyarankan: “Kita perlu mengetahui ukurannya. Tidak masuk akal untuk menggunakan alat baru setiap waktu dan menghilangkan kesempatan tim untuk berbagi pengetahuan satu sama lain. Angka-angka spesifik mungkin tergantung pada ukuran perusahaan, tetapi sebagai aturan, tidak masuk akal untuk menggunakan lebih dari dua atau tiga bahasa yang berbeda tanpa alasan yang jelas. Anda tidak perlu mengembang tumpukan teknologi - maka pengembang akan dapat berbagi pengetahuan dan mulai menggunakan alat yang tersedia dengan cara yang paling efisien. "

Tentang penulis


Jaime Buelta adalah seorang programmer profesional dan pengembang Python yang, selama bertahun-tahun karirnya, telah menemukan banyak teknologi berbeda. Dia telah mengembangkan perangkat lunak untuk berbagai bidang dan industri, termasuk aerospace, jaringan dan komunikasi, serta sistem SCADA industri, layanan video game online, dan layanan keuangan.

Sebagai bagian dari berbagai perusahaan, ia menangani bidang fungsional seperti pemasaran, manajemen, penjualan, dan desain game. Jaime adalah pendukung otomatisasi dan ingin komputer melakukan semua kerja keras, membuat orang fokus pada hal-hal yang lebih penting. Dia saat ini tinggal di Dublin dan secara teratur berbicara di konferensi PyCon di Irlandia.

Source: https://habr.com/ru/post/id480914/


All Articles