さらば巨大モノリス,こんにちはドミノ倒し

それはJavaオブジェクト指向が10年以上前に通った道だ.DLL地獄だともっとか.

従来のシステムは機能同士が密接に連携していることが多く、機能を変更する際に影響範囲の確認やテストに手間がかかる。これに対し、マイクロサービスは機能同士が緩やかに結びついており、ある機能を変更しても他の機能に影響を与えずに済む。これを疎結合と呼ぶ。ジンズのIoT基盤のように、継続的に機能を改善していくやり方が容易になるわけだ。

疎結合にすれば云々はその通りだ.しかし疎結合に作ることは意外に難しい.

マイクロサービスは銀の弾丸ではなく、問題は解決するどころかむしろ悪化することも多い.マイクロサービス抜きでスパゲッティコードになるなら,マイクロサービスを入れてもやはりスパゲッティになるだろう.



スパゲッティを微塵切りにして,「さあ小さなモジュールに『切り分け』ました.これでスパゲッティプログラムはなくなりました!」。しかし、その次に始まるのは,小さなモジュール同志をひたすらつなぎ合わせるお仕事.それはまるで巨大なジグソーパズル.どことどこが繫がるかは作った本人にも分からない.*1

システムを構成する機能を単一のプロセスとして実行する

「プロセス」は技術用語だから,そういう意味で使うと混乱するぞ.記者なら基本単語くらい知っておくべき.

https://b.hatena.ne.jp/entry/s/www.nikkei.com/article/DGXMZO44083340T20C19A4000000/

  • id:enhanky 世の中には「DLL地獄」というワードがありましてね……。モジュール化は銀の弾丸じゃないんですよ。
  • id:tsu_nyan スパゲティをクルクルっと丸めたものが散乱したゴミ屋敷のイメージ。舞台は全世界へ
  • id:ardarim スパゲティを細切れに刻んで細かく小分けにしました!ご賞味下さい!
  • id:yaskohik 「分散スパゲティ」の語感が好き。どっかで使いたい。(本文は読んでない)
  • id:NOV1975 そのうちマイクロサービスのことをタコ足配線って呼び始めると思うよ。


ドミノ倒し 100個 ギミック 10個 付き セット おもちゃ ピタゴラ 子供【安心・安全の30日間保証付き:食品検査済み】【全12色×100 (44×21×7mm) 】 Mag-Building ピタゴラスイッチ 玉転がし 積み木 スロープ 木製 立体パズル 知育玩具 おもちゃ 誕生日 入学 入園 クリスマス プレゼント キュボロお探しの方に (60pcs)NextX スロープおもちゃ カラフルスロープ くるくるボール 積み木 組立式知育おもちゃ コースター積み木おもちゃ DIY積み木 立体パズルおもちゃ  想像力、創造力育てる 知育玩具 子供、女の子 男の子 148pcs(Happy Time)
ドミノとか積み木って,マイクロモジュール?

技術力軽視の和製マイクロサービスが行き着く先は,「ドミノたおし」とか「積み木崩し」だと思う.

  • id:daishi_n マイクロサービス化はアーキテクチャデザインがキッチリしてないと死ぬよ。できるところは限られる。ACIDトランザクション系をマイクロサービスにすると相当めんどい
  • id:jaguarsan マイクロサービスが多すぎて管理しきれない話とか単一障害点が出来まくった話めっちゃ聞く
  • id:nil0303 データの整合性が取れなくて、無理矢理整合性を維持しようと変なAPIの使い方した挙げ句、速度が絶望的に遅くなった上に手が付けられないスパゲッティモドキが出来上がる気がする。
  • id:yukisno 本文に一言もスパゲティコードにどう関係するか書いてないような



それと,たぶん英語力も必須.

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャ

Building Microservices: Designing Fine-Grained Systems

Building Microservices: Designing Fine-Grained Systems

プロダクションレディマイクロサービス ―運用に強い本番対応システムの実装と標準化

プロダクションレディマイクロサービス ―運用に強い本番対応システムの実装と標準化

Microservice Architecture: Aligning Principles, Practices, and Culture

Microservice Architecture: Aligning Principles, Practices, and Culture

Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization

Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization

Practical Microservices: Build Event-driven Architectures With Event Sourcing and Cqrs

Practical Microservices: Build Event-driven Architectures With Event Sourcing and Cqrs

Microservices Patterns: With examples in Java

Microservices Patterns: With examples in Java

Microservices in Action

Microservices in Action

Microservices: Patterns and Applications: Designing Fine-Grained Services by Applying Patterns

Microservices: Patterns and Applications: Designing Fine-Grained Services by Applying Patterns

Testing Java Microservices: Using Arquillian, Hoverfly, AssertJ, JUnit, Selenium, and Mockito

Testing Java Microservices: Using Arquillian, Hoverfly, AssertJ, JUnit, Selenium, and Mockito

Microservices Development Cookbook: Design and build independently deployable, modular services

Microservices Development Cookbook: Design and build independently deployable, modular services

Practical Microservices Architectural Patterns: Event-Based Java Microservices with Spring Boot and Spring Cloud

Practical Microservices Architectural Patterns: Event-Based Java Microservices with Spring Boot and Spring Cloud

Mastering Microservices with Java: Build enterprise microservices with Spring Boot 2.0, Spring Cloud, and Angular, 3rd Edition

Mastering Microservices with Java: Build enterprise microservices with Spring Boot 2.0, Spring Cloud, and Angular, 3rd Edition

Hands-On Microservices with Kotlin: Build reactive and cloud-native microservices with Kotlin using Spring 5 and Spring Boot 2.0

Hands-On Microservices with Kotlin: Build reactive and cloud-native microservices with Kotlin using Spring 5 and Spring Boot 2.0

Microservices for the Enterprise: Designing, Developing, and Deploying

Microservices for the Enterprise: Designing, Developing, and Deploying

Microservice Patterns and Best Practices: Explore patterns like CQRS and event sourcing to create scalable, maintainable, and testable microservices

Microservice Patterns and Best Practices: Explore patterns like CQRS and event sourcing to create scalable, maintainable, and testable microservices

*1:できの良いモジュールだと,そうはならない.しかし従来型の開発で,OOPも使いこなせずモジュール化も実現できずスパゲッティになった人が作れば,それはより巨大でより複雑でよりデバッグ困難な超分散多次元スパゲッティになるだけだ.