Ringkasan buku "Menciptakan Layanan Mikro"

Saya tidak mengerti apa-apa tentang arsitektur microservice, jadi saya memutuskan untuk membaca dan menguraikan buku Sam Newman, Creating Microservices. Menurut pendapat saya, itu menjadi pengantar yang bagus untuk orang-orang yang mulai menyelami topik ini.


Layanan microser


Gagasan arsitektur microservice didasarkan pada beberapa konsep: desain berorientasi subjek, pengiriman berkelanjutan, virtualisasi sesuai permintaan, otomatisasi infrastruktur, tim kecil yang berdiri sendiri, dan sistem yang dapat diskalakan. Microservice adalah layanan kecil (dapat sepenuhnya ditulis ulang dalam dua minggu), layanan mandiri yang hanya melakukan satu tugas. Pada saat yang sama, batas-batas layanan microser dibentuk atas dasar batas-batas bisnis.


Keuntungan dari pendekatan:


  • heterogenitas teknologi dimungkinkan;
  • degradasi elegan mudah dicapai;
  • masing-masing bagian dari sistem skala secara independen;
  • penyebaran layanan independen;
  • pembagian tanggung jawab yang sederhana antar tim.

Tampaknya mungkin untuk mengganti arsitektur layanan microsoft hanya dengan memasukkan kode ke perpustakaan. Tapi ini hanya memecahkan sebagian dari masalah - heterogenitas teknis, skala sederhana, penyebaran independen tidak mungkin. Plus, masalah konektivitas yang tidak terkendali tetap ada.


Dalam beberapa bahasa (misalnya, Erlang), setiap bagian dari program (modul) dapat ditingkatkan dan digunakan secara mandiri. Tapi ini agak pengecualian untuk aturan itu.


Layanan microser bukan peluru perak. Mereka tunduk pada semua masalah sistem terdistribusi. Penting untuk mempelajari cara menggunakan, menguji, dan memantau sistem seperti itu dengan cara yang berkualitas. Arsitektur microservice tidak cocok untuk semua perusahaan.


Arsitek Pembangunan


Ketika mengembangkan sistem yang terdiri dari banyak layanan, peran arsitek meningkat.


. . , , . — . , , , .


— , , .


:


  • ;
  • ;
  • .


( ) .


— , . , , .


. , . .


( DDD) — .


, , . . , , — .


« », -.


. : , , - . , -.



:


  • - ;
  • ();
  • .

-, , — . , . — . , — .


, «» , , . , - . . , .



, . . «-», .


— . . , ( ). ( ).


, — RPC REST. RPC — , , . REST — , ( REST-).


. - ( ATOM) . , , .



. : , — . -, .



.


— ( 1.5.3 2.0.0) . URI (, /v1/createUser/, /v2/createUser/), , HTTP, .


( 1.5.3 2.0.0), — , . , .



, . .


— . , , .


— API-, . , ( ).


— backend-for-frontend (BFF). (, ) API- .


, API-.



(, CMS CRM). . — , API.



. , , .


. — . , , . : ; .


, . — . . , (, , ).


. . :


  • ;
  • ;
  • , ;
  • ( Netflix).


. , (, ) . (-).


( , , ). . . .


, . , Chef, Puppet Ansible. — , . — , deb-. . , . — .


LXC- — . . Docker — , , Kubernetes.



- , , . , , -. E2e , .


- - — (), (). . — Mountebank.


(e2e) . CI, , . CDC ( ).


- . ( ).


. .


-, .


- : — . . -.


( - ) — . (, , - -). , . , . , .



.


-, , . , .


-, . , (, logstash) (, Kibana) .


( , ) -. , - .


: - .


. , .



. — , , . — , . . , .


, :


  1. . , - - . , — , .
  2. HTTP(S) Basic Auth. -, HTTPS, SSL-. -, ( Basic Auth).
  3. . , — , , .
  4. . , .
  5. - (HMAC). , , . ( JWT) . — , .
  6. API-. , , API-. , , .

. , .


. , IP- . .


. , .



«, , ­, »


, , , .




— , , - . , .


: , , . . , , .


— (graceful degradation).


— . , - .


— . , , , . , , - .


— , . , , ( ), . . «», , .


, .

— . . .



— . . .


— . . - , .


— , (), . . .


. , .



, -, :


  • , , ;
  • - , , , , ;
  • , , , .

, , .


HTTP . cache-control expires ETag . HTTP, , .


. , . , , - . , .


— . ( , , ) . , .


CAP


: , . .



Cara termudah adalah menggunakan DNS. Jika kemampuannya tidak cukup, Anda dapat menggunakan hal-hal seperti Zookeeper, Consul atau Eureka.


Dokumentasi


Layanan API perlu didokumentasikan. Sangat diinginkan bahwa kode dan dokumentasi dihubungkan dan tidak mungkin mengubah satu hal. Misalnya, Anda dapat mengambil Swagger atau HAL.


Ringkasan


Arsitektur microservice didasarkan pada beberapa prinsip:


  • pemodelan di sekitar konsep bisnis;
  • budaya otomatisasi;
  • rincian tersembunyi dari implementasi internal;
  • desentralisasi yang komprehensif;
  • penyebaran independen;
  • kegagalan terisolasi;
  • pengamatan komprehensif.

All Articles