この記事は Calendar for MySQL | Advent Calendar 2021 - Qiita の23日目です。
Happy holidays!
去年は Azure Database for MySQLに奮闘した話を書きました。 テクニカルなお話、やってみた談が聞きたい方は去年の記事をお勧めします。 こちらもぜひ読んでやってください。 qiita.com qiita.com
2019年から2020年の丸2年は新規サービス開発、運用、継続開発に費やし、実は去年のアドベントカレンダーはある仕事の最終出社日に公開したのでした。
2021年の仕事は前半企画職でプロトタイピング開発だったのでRDBに関わらずでした。
2021年後半はAuroraを使っているサービス2件に関わってますが、残念ながらMySQL自体の深淵には関わってません。
そこで、今年は社会人12年目の節目なので、MySQLと私の関わりを語ることにしました。 途中でOracleとPostgresも出てきますし、技術色はあまりないですが、アドベントカレンダーの『MySQLについてならなんでもOKです』に甘えました。
2008年11月:初めましてMySQL
新卒で勤めていた会社の内定者研修でJSP/Servlet/MySQLの勉強があり、Webアプリ3本ほどの開発を入社前にやりました。 卒業研究と合わせて苦悩していました。
大学は数学系研究室で代数はバッチリだったので、自分含め周囲の就職内定者はRDBとSQLは余裕でマスターしてました。問題は言語だ。ここでJavaを選んでしまった私は今でも呪われているかもしれない。
当時はMySQL 5.1でした。
データベースの研修は、MySQLをzipダウンロードしてきてパスを通してmysqldとmysqlをコマンドプロンプトで起動するところから始まり、テーブル設計、SQL、JDBCまでやりました、結構当時としては詰め詰めな教育だったと思います。
個人ではオライリーのHead Firstシリーズを読んでました。SQL、データベース設計、DBAの入門がしっかり書いてあります。 www.oreilly.co.jp
2009年:ほぼ社内ニート生活
2009年4月に就職しましたが、リーマンショックで新入社員研修後はある程度自由に社内ニートや社内業務をしてました。
社内研修はOracle 9gとMySQL 5.1でした。社内アプリはGoogle BigQueryだったりPostgresSQLだったり好き好きでした。 この時期に作った広報用ブログは我々同期の好みでMySQLになりました。
2010年:初めましてERMaster
2009年の年末から2010年1月くらいまで火消しプロジェクトに常駐してました。そのあとは2010年夏まで伸び伸び社内ニートでした。 仕事はOracleでしたが、好きにしていい社内の検証開発はMySQLやPostgresSQLでした。
OracleとMySQLはなんか両極端に見えますが、社内にMySQL得意な人がいたので、RDBはMySQLを使う文化がありました。それ以外も社内はSpringなどOSS利用が盛んでした。
社内のMySQL得意な人と有志が ERMaster というER図作成ツールを出してました。 ERMasterの初期バージョンはMySQL以外で動いた記憶がありません。仕方なく私は A5:SQL Mk-2 - フリーのSQLクライアント/ER図作成ソフト (松原正和) を使うことにして現在に至ります。
そんなERMasterは jfluteさん はじめ色々な方がforkしてくださっていて感慨深いです。こんな有名になるとは当時は思いもしませんでした。
2010年〜2013年
この頃はあまりMySQLに触れていません。
仕事の最初の2年ほどは欧米向けサービスでOracle 11gを使っていて、トルコ語が文字化けして困ったりしてました。
その後はメインはOracleだけど、セッション管理だけスケーラビリティとコスト削減のためMySQLという現場があり、そこで少しMySQLに関わったくらいです。
2012年の後半くらいからは、色々なきっかけで製品営業に関わるようになり、プロトタイピングやPoCには個人でMySQLを使っていました。 セットアップが楽なので何かあったらMySQLが鉄板でした。
この頃にOracleはギブアップしました。 2010年ごろの会社の目標設定でOracle DBAを取ろうとしましたが、Oracleを勉強するうちに『これLinuxそのものじゃんキリない』と悟ってDBAレベルの理解は挫折しました。 最近はもうSQLポケットリファレンスも出なくなりましたね。今でもOracleで動くSQL書けるかなあ…?
[改訂第4版]SQLポケットリファレンス | 朝井 淳 |本 | 通販 | Amazon
2013年〜2014年前半
自分が知りたいことを極めると、IPA試験のシステムアーキテクトが取りたいと思うようになりましたが、論文試験が面倒なのでやめました。 代わりに論文のないデータベーススペシャリストを取ることにしました。
Web+DB Pressの奥野さんの連載と、ミックさんの本を読みまくりました。 奥野さんの連載は本になったので買おうかなあ。。。 RDBとデータベース設計は勉強と実践が結果に出るので、仕事で役に立っています。
2014年後半〜2016年前半
2014年9月にWeb系の開発会社に転職して運用部隊に配属になりました。
運用部隊はこの会社独特の組織で、今で言うところのSREに開発を兼ねる部署で、10年20年運用しているシステムを扱うのが特徴でした。あと全社的炎上ハンターもたまにやらされた。
Web系の会社なのでMySQLとPostgresSQLを多めに扱うようになり、Javaからはほぼ隠居してました。 MySQLは関係ありませんが、 この頃からJavaコミュニティの勉強会に参加するようになりました。元後輩とDBFluteフェスにも行ったのですが、その頃はまだDBFluteを実践投入していませんでした。
運用開発主体だったので、性能改善に取り組むこともあり、性能の出るSQLはRDBによって全然違うことを学びました。 アルゴリズム改善、SQL改善、インデックス付与でレスポンス20分を3秒にした時は感動したなあ。
2016年後半〜2021年
2016年の前半にフラっと会社員を辞め無所属になりました。 それ以降参画OKいただける案件は、何故か軒並みMySQLです。 MySQLの腕で採用されたわけではないのですが、自分が興味を抱く方向に何故かMySQLとMySQLに詳しい方がいます。
2017年春夏、当時契約していた現場で、事業ごとにEOL対策チームを置くことになりました。 とある事業部のEOL対策チームの初期計画を立てる中、MySQL 5.1からのバージョンアップの見積りもしたのだけど、どうなったのだろう。
2017年秋から2018年秋位、Struts1とSpringでウェイウェイしてました。 データベースではたまに名DBA様方にSQLレビューや設計の相談でお世話になっていました。
2018年の秋冬は、EOLしたSeasarをSpringにリプレースするおひとり様案件でアーキテクトしてました。
私の前任ベンダがS2JDBCの移行に DBFlute を使うと言っておきながら検証しなかったので、私はDBFluteってなに!から奮闘したのでした。 注文だけMySQLのread replicaから読み取る要件があったので、jfluteさんにSlackで質問に答えていただいて、Spring Boot + DBFluteで複数DataSourceを使えるようにしました。
ここまでで、ポンコツですがOSS貢献って楽しいなあと思えるようになりました。
2019年〜2020年、ある日突然プロジェクトチームでインフラに拝命されてしまい、閑古鳥サービスのMySQL 5.7なら扱えるようになりました。 本来インフラは別にアサインされた人がいたのですが、多忙で体勢を抜けてしまい私に降ってきたのでした。 勉強と実践って大事ですが、Azureに慣れてしまったのでAWSもAuroraがさっぱりわかりません。
2021年はAuroraミリ知ら状態で終わります。
今後
まだまだMySQLわからないことが多すぎるので、もう一度学び直しが必要です。自分のために数冊晒しておきます。
オライリーの馬の本はMySQLに関係ない運用ノウハウとして読みたい。読みかけ。
これも積読なので消化したい
今後
2022年の2月からは技術サポート職に参加します。
面接時『MySQL以外本当に経験ないんですか』と聞かれましたが、ここ数年私の向かう道ではRDBはMySQLです。PostgresSQLとOracleはかなり勉強し直さないと使えないので経験なしと考えています、と答えるしかありませんでした。ぶっちゃけ私の頭ではサポート職は無理です
当面はDBAよりローコード開発やフロントエンドとバックエンドのアーキテクトが主体になりそうです。
どうなることかわかりませんが、私がエンジニアである限りMySQLとの関わりは切れそうにありません。 どこかで見かけた時には見守ってやってください。
最後までお読みいただきありがとうございました。良いお年を。