ملخص كتاب "إنشاء الخدمات المصغرة"

أنا لا أفهم أي شيء عن هندسة الخدمات الصغيرة ، لذلك قررت قراءة كتاب Sam Newman ، إنشاء خدمات صغيرة ، وتحديده. في رأيي ، تبين أنها مقدمة جيدة للأشخاص الذين بدأوا الغوص في هذا الموضوع.


الخدمات الدقيقة


تعتمد فكرة بنية الخدمات المصغرة على عدة مفاهيم: التصميم الموجه نحو الموضوع ، والتسليم المستمر ، والافتراضية عند الطلب ، وأتمتة البنية التحتية ، والفرق الصغيرة المستقلة ، والأنظمة القابلة للتطوير. Microservice هي خدمة صغيرة (يمكن إعادة كتابتها بالكامل في غضون أسبوعين) ، وهي خدمة مستقلة تؤدي مهمة واحدة فقط. في الوقت نفسه ، يتم تشكيل حدود الخدمات الصغيرة على أساس حدود الأعمال.


مزايا النهج:


  • عدم التجانس التكنولوجي ممكن ؛
  • يمكن تحقيق التدهور الأنيق بسهولة ؛
  • الأجزاء الفردية من النظام يتم قياسها بشكل مستقل ؛
  • النشر المستقل للخدمات ؛
  • تقاسم بسيط للمسؤوليات بين الفرق.

يبدو أنه من الممكن استبدال بنية الخدمات المصغرة ببساطة عن طريق وضع الكود في المكتبات. لكن هذا لا يحل سوى جزء من المشاكل - التباين الفني ، التحجيم البسيط ، النشر المستقل أمر مستحيل. بالإضافة إلى ذلك ، تبقى مشكلة الاتصال غير المنضبط.


في بعض اللغات (على سبيل المثال ، Erlang) ، يمكن تحجيم الأجزاء الفردية من البرنامج (الوحدات) ونشرها بشكل مستقل. لكن هذا بالأحرى استثناء للقاعدة.


الخدمات المصغرة ليست رصاصة فضية. تخضع لجميع مشاكل النظم الموزعة. من المهم معرفة كيفية نشر واختبار ومراقبة هذا النظام بطريقة جيدة. هندسة الخدمات المصغرة ليست مناسبة لجميع الشركات.


مهندس تطوير


عند تطوير نظام يتكون من العديد من الخدمات ، يزداد دور المهندس المعماري.


. . , , . — . , , , .


— , , .


:


  • ;
  • ;
  • .


( ) .


— , . , , .


. , . .


( 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


: , . .



أسهل طريقة هي استخدام DNS. إذا لم تكن قدراته كافية ، يمكنك استخدام أشياء مثل Zookeeper أو Consul أو Eureka.


توثيق


يجب توثيق خدمات API. من المستحسن للغاية أن يتم توصيل الرمز والوثائق وأنه من المستحيل تغيير شيء واحد. على سبيل المثال ، يمكنك أن تأخذ Swagger أو HAL.


ملخص


تعتمد بنية الخدمات المصغرة على عدة مبادئ:


  • النمذجة حول مفاهيم الأعمال ؛
  • ثقافة الأتمتة ؛
  • تفاصيل خفية للتنفيذ الداخلي ؛
  • اللامركزية الشاملة ؛
  • نشر مستقل ؛
  • فشل معزول
  • ملاحظة شاملة.

All Articles