この記事は animateLAB Advent Calendar 2015 8日目の記事です。
こんばんは、ポエムおじさんこと@kariaです。今日はどんなポエムを書こうかな?と思いながら昨日のかんがーさんの記事を読み返してたら極めてアツい記事であったことに改めて気付きました。ありがとうございました!!
しかし今日は、明後日に出番を控えるsugicyanのハードルを下げるためにポエります。
皆さんはDBAという用語をご存知でしょうか。ご存知ない方もいると思いますのでとりあえずIT用語辞典へのリンクを置いておきます。
DBAとは|DataBase Administrator - 意味/解説/説明/定義 : IT用語辞典
そう、DBAとはDatabase Administrator、つまりデータベース管理者のことを指します。
MySQLやらPostgreSQLやらOracleやら、RDBMSのお世話になっているアプリケーションやプロダクトは星の数ほど存在するでしょう。ということは、それらのDBの面倒を見るDBAも星の数ほど存在するはずです。
大事なことなのでもう一度言います。DBAも星の数ほど存在するはずです。
……現実にはどうでしょう?試しに、QiitaのDBAタグに何件投稿があるか見てみます。
DBAに関する情報が集まっています。現在0件の投稿があります。 また0人のユーザーがDBAタグをフォローしています。
0件じゃん!DBAに関する情報が集まってない!!
実態としては、アプリケーションエンジニアがDBの面倒を見たり、インフラエンジニアがDBの面倒を見たり、運用担当者がDBの面倒を見たり……といった兼任ポジションを取っていて(もしくは実態として兼任状態になっていて)、独立してDBAというポジションを置いているプロジェクトというのは相当大規模な企業・プロジェクトでもない限り存在しないのではないかと思います。
DBAと他のエンジニア業を兼任する場合は、どの場合でもメリットデメリットがあって一概にどれが良いとは言えません。インフラエンジニアがDBの面倒を見ていたら、いつの間にかインフラエンジニア以外はDBは触ってはいけないことになっていたり、本来はアプリケーションが実現すべきことがDBの機能で実現されていたりとか、ありますよねー。運用担当者が投入した秘伝のタレ的なinsert文やupdate文やdelete文を止めにかかったりとか、ありますよねー。あれ、なんだか目にゴミが入ったようだ……。
個人的にはDBAは物凄く大切なポジションだと思います。それは何故か。DBのレスポンスが遅いということは、多くの場合アプリケーションのレスポンス遅延に直結してくるからです。
そのような場合、最適なクエリを発行するように見直したり、適切なインデックスによりコスト削減を目指したり、スキーマやテーブルの構造自体を見直したり、札束を叩いてより高速なハードウェアやクラウドサービスへ移行したり、場合によってはDBへのリクエスト発行自体を減らすようアプリケーションのコード自体を見直したり、キャッシュ機構の利用を考えたりしなくてはなりません。
よく読めばわかる通り、これらのお仕事はDBAだけの力でできるものではありません。他のエンジニアであったりとか、場合によってはエンジニア以外も巻き込んでいかなくてはなりません。もちろん、DBAという特別な存在を仕立て上げなくてもエンジニア皆にDB最適化の意識があれば何ら問題はありません。人類皆DB最適化の鬼!素晴らしい!
……という夢を見たんだ。