非技術者でもわかる! マイクロサービスを簡単に解説してみた
こんばんは!
1日で2つ目の記事は珍しい!
技術系の記事を書くのはもっと珍しい!?
どうも、システムエンジニア業を営む福井で生きる小倉のよっちゃんです。
先日、日経新聞に「さらばスパゲティコード、「マイクロサービス」で分割」という記事があがっていて、お恥ずかしながらマイクロサービスなるものを知らなかったので、ちゃんと調べてみました。
システムを構成する機能を切り分けた「マイクロサービス」の活用が進んでいる。プログラムが複雑に入り組んだ「スパゲティ状態」に陥る事態を避けて、開発や運用を容易にする。眼鏡専門店「JINS」を運営するジンズは、あらゆるモノがネットにつながる「IoT」基盤に採用した。
引用:日経新聞「さらばスパゲティコード、「マイクロサービス」で分割」より
この記事は10分で読めます。
スパゲティコードとは?
まず、非技術者の方にご説明します。
プログラミングをしていて、最初は設計された綺麗なメソッド(処理・手続き)、関数を作ることが多いです。一般的にプログラミングのソースコード(文字)は、ステップ数(行数)が1関数や1メソッド1000ステップ以内ってのが普通です。
ただし、運用が変わったり、ニーズが変わったりして、事象が変遷するのに合わせて人間と同様に生き物のように変わっていきます。
様々な機能をつけたり、固有の処理をつけたりしていきます。
この時に最初の開発者と同じでない人が処理を付け足すと、どんどんコードに多くの人のロジックや書き方のクセが入ってくるし、処理がゴチャゴチャになってきます。1関数で1万ステップといった秘伝のたれのような鬼コードなども実際に見かけることがあります。
それは、まるでスパゲティのように絡まりあった複雑なソースコードになります。
それをエンジニアの間では「スパゲティコード」と呼んでいます。
モノリシック(一枚板)なアーキテクチャとは何か?
マイクロサービスを知るその前にまず既存のシステムの在り方。
今までのシステムの在り方は、1つのサービスで複数の機能を有して提供してきました。これをモノリシック(一枚板)なアーキテクチャと言います。
どうして、このモノリシックな在り方だったのか?
その答えは、大手システム会社はウォーターフォールという設計から開発まで滝が落ちるように一気通貫で開発するスタイルを持っていたので、様々な機能を1つのサービスに組み込んでいました。
(以前書いた記事「アジャイル開発に大手が乗り気。で、アジャイル開発ってなんすか?」に詳しく書いています)
しかし、アジャイル開発が台頭して活発になってきたため、1サービス1機能程度のシステムが増えてきました。
モノリシックなアーキテクチャはこんなイメージ。
マイクロサービス(Microservices)とは?
いよいよ本題です。
マイクロサービス(Microservices)とは・・・
マイクロサービスは、小さなサービス単位を互いに連携させるアーキテクチャです
引用:事例つき!マイクロサービスとは?基礎知識からメリットとデメリットまでを解説
前述のモノリシックは1つのサービスに複数の機能がついていましたが、マイクロサービスでは1つのサービスに1つの機能程度になっています。
変化の強い時代には、開発期間が長くなりやすいウォーターフォールよりも、小回りの利くアジャイル開発が適しており、そうなってくるとモノリシックなアーキテクチャよりも、マイクロサービスの方が合理的です。
複数の機能を小さなサービスに分割しているので、上述しているスパゲティコードになりにくい、ということを日経新聞の記事では掲載しています。
マイクロサービスのイメージはこんな感じ。
マイクロサービスにはどのようなものがあるか?
イメージしやすいものとしては、AmazonのAWS(Amazon Web Services)、GoogleのGCP(Google Cloud Platform)、MicrosoftのMicrosoftAzureですね。
クラウド型のインフラサービスを提供しているものですが、それぞれ細かく機能を提供しています。
AWSをよく使うので、それに例えて言えば、ファイルサーバなサービスが欲しければS3(Simple Storage Service)を使う。プログラムを動かしたいならLambda。DNSを管理したいならRoute 53といったように、用途に合わせたサービスを組み合わせて使っていきます。
身近なものでたとえ話をしましょう。
小倉流にかみ砕いてみます。
モノリシックなアーキテクチャは、ショッピングセンターのように1つの建物で色々な店舗(機能)が使えます。しかし、敷地面積は広く土地を確保するのが難しく、建設するのも時間がかかります。
マイクロサービスは商店街みたいなイメージですね。1つ1つの小規模な専門店がそろっていて、必要に応じたお店を使うといった感じです。敷地面積が狭い分、土地が確保しやすく、建設も素早い。
実際の手続きはどのようにするのか?
ここからは少しエンジニア感のあるお話。
API(Application Programming Interface)というものを使い、Aというプログラム・サービスからBというプログラム・サービスを呼び出す手続きがあります。
APIにもいろいろと種類があって、REST(REpresentational StateTransfer)やRPC(Remote Procedure Call)、SOAP(Simple Object Access Protocol)といったものがあります。
WEB系でよく使われるのがREST APIで、URLのような形で処理の要求(リクエスト)をすることが出来ます。
例:https://ogura.com/getAnko?hosiikazu=10
※小倉に対して餡子提供で10個よこせ、という要求です。
これからは細かく小回りが利く構造と開発がオススメ
様々なサイトを見ていて、エンジニア向けで少し難しい感じがあったので、できるだけわかりやすく書いてみました。
もっと細かく知りたい方は、今回参考にしたサイトを下記に掲載していますので、ご覧ください。
個人的には、変化が早くビジネス駆動型でシステム開発をしていくならば、アジャイル開発×マイクロサービスがオススメですね。
小回りが利いて、ニーズへの対応が早い。結果を出すやり方は今のところ、これがよさそうです。
自社開発しているシステムは、今後マイクロサービスなアーキテクチャでやっていかなあかんなぁと考えさせられました。
開発者の方は、時代に合わせた手法を選択して、人々の暮らしや生き方がもっと便利に豊かになるものを開発していきましょう!
参考サイト:
0コメント