TECHNODIGITAL > STRENGTH > ミドルウェア
強み
Personal Skillミドルウェア
テクノデジタルのエンジニア集団は、下記のミドルウェアを主に利用したシステム構築を行っていますので、これらのミドルウェアでの実績と経験が豊富です。
1、Webサーバー
Apache
- 全世界でNo1シェアを誇るWebサーバー
- 多種のモジュールが存在し、幅広い機能と多くの実績をもつミドルウェアです。
Nginx
- 近年、急速にシェアを伸ばしている軽量かつ高速なWebサーバー
- ApacheのC10K問題がクローズアップされる中、注目を浴びているミドルウェアです。C10K問題とは、クライアント数が1万を超えるとサーバーがパンクするというトラブルが発生する問題で、元々のApacheではクライアント数が1万を超える事態が想定されていませんでした。Apacheがスレッドモデルであることに対し、Nginxはイベントループモデルを用いていますので、大量のアクセスに対し、メモリを効率よく、かつスレッド生成コストを抑えることで高速な処理を行うことができます。また、リバースプロキシサーバーとして負荷分散にも活用されます。
Tomcat
- 動的にWebページを生成するJavaサーブレット/JSPを実行するためのアプリケーションサーバー
- Tomcat自身がWebサーバーとしても動作しますが、Webサーバーとしては簡易機能レベルであるため、他のWebサーバーと連動して構築されることが主流です。負荷の高いアプリケーションや、大量アクセスに対して有用ですが、Java特有のチューニングで大きく性能が変わることもあり、エンジニアの熟練度により性能が大きく左右されます。
Node.js
- Javascriptを処理するアプリケーションサーバー
- イベントループモデルと、ノンブロッキングI/Oを特徴とし、Javascriptで記述できることから、クライアント処理と、サーバーサイド処理を同じ言語で統一できることが利点です。
2、KVS
Memcached
- 高速キャッシュであるKey-Value Store(KVS)が注目されるきっかけとなったオンメモリキャッシュミドルウェア
- メモリにだけ保存されることから、揮発しても支障がない一時的なキャッシング用途に利用されます。またKVSとしては、様々なプログラム言語、ライブラリ、ミドルウェアがこのプロトコルに対応しているため、容易にシステムに導入できます。
Kyoto Tycoon
- Tokyo Tyrantの後継となるKVSミドルウェア
- データをディスクストレージへ退避することが可能であり、Memcachedに比べデータの永続性を必要とされるキャッシング用途に利用されます。Memcached互換プロトコルも提供されていることから、Memcachedからの移行も容易です。
Redis
- アトミック(不可分)なデータ型に対応したKVSミドルウェア
- Memcachedが文字列データのみを扱うのに対し、Redisではデータ型そのままを格納することができるため、アトミックな操作が行えることが特徴です。負荷分散や、トランザクション(不可分処理単位)にも対応し、高速性能と一貫性、高性能を兼ね備えています。
DynamoDB
- アマゾンウェブサービス(AWS)が提供するフルに管理可能なNoSQLデータベース
- Memcached等に比べ処理性能は若干低いのですが、AWS環境で、特に意識することなく複数の異なるデータセンターに複製して保管することで、耐障害性を高めるアベイラビリティゾーン(AZ)環境に分散してデータを保持することができます。
3、データベース
Oracle
- Oracleが提供する商用の定番リレーショナルデータベース
- 高性能と数多くの実績に裏打ちされた安定を誇り、RACなどの構成により強固なクラスタリング構築にも対応します。データベースを基盤とした多種サブシステムの構築や、データの保全性、データトランザクションに対する処理性能を求める場合に多く採用されます。ただし、費用が高いため、費用対効果の見極めが必要です。
MySQL/MariaDB
- オープンソースでは世界で最も普及しているリレーショナルデータベース
- 高速性能とシンプルさが特徴とされていましたが、現在は機能も充実し、商用データベースと比べても遜色のない品質と高速性、機能性を誇ります。またストレージエンジンを選択することができるのも特徴の一つです。現在はOracleがMySQLの所有権を持ち、GNU GPLと商用ライセンスのデュアルライセンスで提供していますが、商用ライセンスの範囲が曖昧な点が注意点です。MariaDBは、MySQLのオリジナルコードの作者が、MySQLの派生版として開発したMySQL互換リレーショナルデータベースであり、GNU GPLで提供されています。
PostgreSQL
- 高機能を売りとしたオープンソースのリレーショナルデータベース
- 追記型アーキテクチャであり、MultiVersion Concurrency Control(MVCC)方式で可用性が高いことが特徴です。レコードを世代管理しているため、不要なレコードを削除するvacuum処理が24時間365日稼働するシステムには不向きであったため、業務用システムで用いられることが多かったのですが、現在は様々な工夫により、この問題を低減させる機能が盛り込まれているため、コンシューマ向けシステムに対しても利用場面が増えつつあります。同じMVCC方式のOracleはUNDOセグメントによりレコード世代管理を実現しています。
4、メールサーバー(MTA)
sendmail
- 歴史が古く、メールサーバーの代名詞的な存在のメールサーバー
- 他サービスとの連携や拡張などにおいて、高い柔軟性と機能を有しています。ただし、ソースコードの肥大と、設定が煩雑であり、セキュリティーホールになりやすいことが欠点です。
qmail
- シンプルで安定し、セキュリティの強固さが特徴のメールサーバー
- ローカル配送からリモート配送、リレー配送などの処理が小さな機能のプログラムに分割され、それぞれの連携がファイルを介することで実現し、それぞれが独立、協調して動作します。そのため、機能の拡張処理など、カスタマイズのしやすさも特徴です。
Postfix
- sendmail互換のバランスのとれたメールサーバー
- sendmail互換でありながら、運用の簡易化や、性能、セキュリティが強化されたメールサーバーです。最近では、sendmailの煩わしさから、Postfixが採用されることが多く、複雑な設定やカスタマイズを必要しない場合はpostfixが向いています。
5、リバースプロキシサーバー/ロードバランサ
Pound
- プログラムも小さく設定がシンプルで、開放型システム間相互接続(OSI)の第7層:アプリケーション層(L7)で動作するロードバランサ
- シンプルにロードバランシングを行いたい場合に適しています。プログラムが小さくシンプルであることから小型サーバーなどの組み込み系でも利用されることがあります。
HAProxy
- L7ロードバランサ
- Poundよりも細かな設定ができる負荷分散のためのL7ロードバランサ。OSIの第4層:トランスポート層(L4)で働く透過型リバースプロキシとしても動作します。HTTP/HTTPS以外のリバースプロキシとしても利用することができます。
Nginx
- リバースプロキシ/ロードバランサとしても利用できるWebサーバー
- 基本はWebサーバーですが、リバースプロキシ/ロードバランサとしても標準で高度な機能を保有しています。コンテンツキャッシュから、ディレクトリ単位での振り分けなど、Webサーバー/リバースプロキシ両方の挙動を細かく制御できることが特徴です。
Apache/mod_proxy/mod_proxy_balancer
- Apache用のリバースプロキシ/ロードバランサ
- Apacheとこのモジュールを利用することにより、リバースプロキシ/ロードバランサとして動作させることができます。既存のApacheに容易に組み込むことができ、現行コンテンツと共存して動作させることが可能になります。
Varnish Cache
- Webサーバーのリバースプロキシ
- キャッシュを生かして高速処理を実現することができるのが特徴で、細かな設定はVisual Component Library (VCL)という設定言語で柔軟にカスタマイズすることが可能です。
6、メッセージキュー
SQS
- AWS上で利用するメッセージキューサービス
- 高速で、信頼性が高く、スケーラビリティに優れています。AWSのメリットである使用した分だけ料金を支払うことができます。
7、形態素解析エンジン/検索エンジン関連
Kuromoji
- Java で記述されたオープンソースライブラリ
- 文章から意味を持つ最小の単位(形態素)を抽出する形態素解析ライブラリです。Apache Lucene(全文検索ソフトウェア)にも日本語形態素解析エンジンとして採用されています
Solr
- オープンソースの全文検索システム
- MeCabやKuromojiなどの形態素解析エンジンを利用して、単語ごとのインデックス化による高速検索を行うことができます。
RELATED STRENGTH INDEX
STRENGTH > 先端技術とアイデアを融合 > 新技術への取り組み
STRENGTH > 先端技術とアイデアを融合 > 特殊技術