冬のインターンSunrise2017 データベースコースふりかえり

こんにちは。システム本部 三浦(@hironomiu)です。

f:id:hironomiu:20171121143923j:plain

このエントリーでは、10月28日(土)、29日(日)に開催した冬のエンジニアインターン「Sunrise2017 データベースコース」をふりかえりたいと思います!

講義

講義はワークショップと座学の2つを行いました。ワークショップではSunrise生一人に対し各2台のサーバを用意し1台を負荷+アプリケーションサーバ、もう1台をデータベースサーバの役割や、1台をマスター、1台をスレーブの役割などとして割り当て、データベースサーバについて様々なトピックを実技形式で学んでいきました。

ワークショップサーバ環境説明 f:id:hironomiu:20171121154632p:plain

ワークショップ前半では各種モニタリングコマンド(dstat,top..etc)やデータベース(MySQL)のモニタリングなどを行い限界性能やパフォーマンスチューニングなどを行っていきました。

ワークショップ Chapter1抜粋 f:id:hironomiu:20171121160210p:plain

ワークショップ Chapter2抜粋 f:id:hironomiu:20171127161832p:plain

ワークショップ後半では実際にレプリケーション、バックアップリストアなどを経験しトラフィックを捌くだけでなく実際のサービスでは必要となる要素についても学んでいきます。ただし実務で耐えられるレベルでの技能習得が目的ではありませんので基礎的なオペレーションを中心に短時間で行っていきます。

ワークショップ レプリケーション(GitHub)

github.com

ワークショップ バックアップリストア(GitHub)

github.com

座学では「第1章 DBサーバの性能計測、サイジング、I/O特性」「2章 DBサーバのシステム要件、運用保守」「第3章 サービスの成長とあわせたDBの拡張戦略」「第4章 DBサーバのI/O戦略」の4章立てでこれまで行ってきたワークショップから実際のサービス運営を踏まえたデータベースの拡張と運用戦略の補強として講義を組み込んでいきました。

座学講義資料(GitHub)

github.com

最終課題

講義後には、ここまで行ってきた講義の内容を用いてアウトプットする「最終課題」を設けました。この最終課題は5人1チーム、チームごとにサポータが1名つく形で行います。お題はこちらで架空のWebサービスを用意し、サービスの概要、アクセス数などサイジングにまつわる情報、SLAとしてクリアしたい情報などを合わせて提示しました。そのお題からSunrise生の皆さんには最終課題でアウトプットする内容はデータベースサーバの「サイジング」と「構成図」、サービス仕様として明示した処理にまつわる「テーブル定義(DDL文)」、「SQL文」と妥当であるアクセスパスであることを「実際のサーバにDDLとSQLを実行しexplainにより検証した結果」などとしました。

最終課題資料抜粋


f:id:hironomiu:20171121155603p:plain


集合写真

最終発表後の集合写真です。二日間のハードなインターンだったと思いますが全員笑顔で終えることができ開催者としてホッとしています!

f:id:hironomiu:20171121144104j:plain

終わりに

非常に短期間のインターンで、どこまでインプットを盛り込みつつアウトプットの時間を取れるか開催者としても苦心したインターンでした。データベース(RDBMS)は長く使われてきた技術のため世の中に情報が溢れていますが、実際に負荷を掛けてみたり、テーブル定義やSQL文の作成、そのSQL文が妥当なアクセスパスの検証などをインターンで経験することは、とても意義があると考えインターンのテーマとしてデータベース(RDBMS)にフォーカスを当てて開催しました。自画自賛となりますが結果としては上手くいったと思っています。インターンに参加されたSunrise生の皆さんには、今後どこかでこの経験と知識が役に立てば幸いです。

Special Thanks

今回の「Sunrise2017 データベースコース」は講師の私だけでなく講義と最終課題の全行程で3名の現場エンジニアのサポータに協力してもらい開催しました。

「りっきー」「ともかつ」「あっきー」ありがとう!