ITアーキテクトって何だろう その1

こんにちは。三苫です。

この記事はTECHSCORE Advent Calendar 2014、14日目の記事です。

この記事は、私がITアーキテクトって何だろうと学習した記録です。たぶん、全三回程度になると思います。

本記事は書籍「システムアーキテクチャ構築の原理」をもとに書かれています。不明点あれば本書をあたるのが確実です。

ニック・ロザンスキ、イオイン・ウッズ 榊原 彰(監訳) 牧野裕子(訳) (2008).
システムアーキテクチャ構築の原理 翔泳社

要約

あらゆるシステムには静的構造、動的構造、外部から観測できる振る舞い、品質特性が存在する。それらを提示することができるものがアーキテクチャであり、要求を実現するために考えられる複数の候補アーキテクチャから最適なものを決定することがシステムアーキテクトの仕事である。

ITアーキテクトは、設計の根拠を問われたときにそれを説明できなければいけない。そのため3つ明らかにしなければいけないことがある。システムにかかわる利害関係者、システムをある側面から見た構造、横断的な視点から見た構造の3つである。それらは、ステークホルダ、ビューポイント、パースペクティブビューと呼ばれる。

対象・目的

本記事は、そもそもITアーキテクトとは何ぞやという事を私が学習した内容をまとめるために書かれています。ITアーキテクトとしてシステム全体を俯瞰して開発を進めていってほしいと言われてなんとなくハイと答えたもののITアーキテクトが何をするのか何も知らないなぁというレベルからスタートしています。

したがって「このIT業界、マネジメント職につかず技術者としてやっていくならITアーキテクトの方面に進むべきなんだろう」と漠然と思っているものの、ITアーキテクトって何をするのかわかってないままシステム全体の設計やITアーキテクトというポジションを期待されるようになった人々が対象となります。

対象

  • ITアーキテクトの仕事を漠然としか知らない人
  • システムの設計を任され設計したものの、設計の根拠を問われると説明に窮する人

目的

  • ITアーキテクトがすべき仕事とは何かを知ること
  • 原理・原則を根拠にもつアーキテクチャ設計ができること
  • アーキテクチャを他の開発者に伝えるための文書化が行えること

アーキテクチャとは?

ITアーキテクトたるもの、アーキテクチャとは何かという事から知らなければなりません。あらゆるシステムはアーキテクチャを持ちます。アーキテクチャとは日本語で構造の事です。システムにはその内側から見ると静的構造、動的構造があります。外側から見ると外部から観測される振る舞いがありアーキテクチャ固有の品質特性があります。

静的構造

静的構造とは、設計時の要素とその配置を指します。あらゆる要素があるので一概にこれが静的構造とは言えませんがソフトウェア的にはクラスや構造体やディレクトリ構造やモジュール、ミドルウェア的にはサービスの配置やポートなど。物理的にはCPU、サーバー、ケーブル、ラックなどを想像してもらえばよいでしょう。

動的構造

動的構造とは、実行時の要素とその相互作用を指します。クラスXがクラスYにメッセージを送る。データAを登録するとeメールBが送信されるなどの例を想像してもらえばよいでしょう。

外部から観測される振る舞い

外部から観測される振る舞いとは、システムの外部の観察者から見てわかる振る舞いの事で、動的構造とよく似ていますが、システムを内部動作をブラックボックスとしてとらえた時の動作と考えればよいでしょう。

アーキテクチャ固有の品質特性

アーキテクチャ固有の品質特性とは外部から見てわかるシステムの非機能的特性の事です。パフォーマンスやスケーラビリティ、セキュリティなどがそれにあたります。どのような条件で、レスポンスタイムは早いのか。特定条件下で速度低下が生じるとすればそれはどのような傾向を示すか。障害発生時にダウンタイムは生じるのか、データベースへのアクセスはどのセグメントからだけアクセスできるのかという特性をイメージすればよいでしょう。

それらをまとめるのはだれ?

これでアーキテクチャという言葉が何を指すのかわかりました。アーキテクトはシステムのアーキテクチャにたいしてどのような役割を担う必要があるのでしょうか?

すべてのシステムにはアーキテクチャがあると言いました。ではそのアーキテクチャはだれが作り上げるものなのでしょうか?

それを作り上げるのがアーキテクトの仕事です。最近であれば開発に利用するフレームワークを選択すればアーキテクチャまで決まってしまうことがあります。しかし、そのフレームワークを選択するのもアーキテクトの仕事なのです。

どうやって選択する?

アーキテクチャを選択するとはどういう事でしょう?

たとえば要求を実現しようと検討したときに3つぐらい実現手法が思いついたとしましょう。たとえば、お客様に定期的に安売り情報を届けたい場合です。eメールを送信する、FAXを送る、営業さんを雇い戸別訪問させるなどいろいろな方法が考えられます。どの手法を選択すればいいでしょう?思いついたもののうち、自分が一番気に入ったものを選べばよいのでしょうか?

適当に選択すると「なぜeメールを送るようにしたんだ?うちのお客様はeメールアカウント持たない方がほとんどだぞ?」と、言われてしまうかもしれません。

システムはそれに関わる関係者の要求を満たす必要があります。要求を満たす手法を選択しなければいけません。この手法を選択すれば要求をこのレベルで満たせるのだから、これで行くということをみんなに説明しなければいけません。
どうすればそんなことができるでしょう?

今日はここまで

次回は、そのあたりを中年男性である私と一緒に探っていきましょう。

Comments are closed, but you can leave a trackback: Trackback URL.