はじめに
訳あって前半部分だけ記載しています。
自己紹介
Amebaスマートフォンプラットフォーム
- 2012年4月スタート
- 延べ300サービス
- Developerサイトにアプリケーションを登録
- Ameba Developerセンターの役割
- 公開・停止などをしている
- 運用に問題が合った場合に、Developerの業績にも影響
- 正確なデータ処理などBtoBに近い
抱えている問題
- 保守運用コストの増大
- レガシー化
- 内政のフレームワークが放置
- スパゲティコード化
- 冗長なシステムアーキテクチャのオーバーヘッド
- 設定やプロビジョニングの暗黙知化
- フレームワークやミドルウェアの設定値があやしい
- 一貫性が無い
- 本当に正しいのか分からない
- 秘伝のタレ化しかChef cookbookやデプロイスクリプト
- WEBサーバのcookbookのはずなのに、そのノードを起動するためだけのcookbookになっている
- 怖くてsudo Chef clientがたたけ無い
リファクタリングしよう
- チーム構成
- 今のサービスのリソースは私1人だけ…
- インフラエンジニアもいるが兼務
- 仲間を探そう
- 主要スキルセット
- 色々なものを求められている
- 諸事情によりJavaエンジニアが多いので、JavaScriptは辛いかも…
- 内政フレームワークを使っているので、学習コストが高い
- 設けるサービスではないので予算も取れない
使っているライブラリ、フレームワークも多い
そもそも作りなおした方が良い?
- 犠牲的アーキテクチャ
- 捨てるまでに多くの価値を生み出しているので、捨てて作りなおす
解決に向けたアプローチ
- コストとリソースのバランス崩壊
- 内政フレームワークからの脱却
- 生産性が高いものを
暗黙知化
- 時間経過で積み上がるもの
- 無くすのは無理!
- ドキュメント化し続けるのも結構大変
- 暗黙知を状態として管理しない
- コードで宣言的にする
- 環境変数、設定ファイル、イメージファイル
- GitHubEnterprize上で変更の差分も終える
解決策
- Spring Boot + Docker
- 車内用、社外用でDockerコンテナを分けた
- 技術スタックもバッサリ捨てた
- SpringBootでサポートもされたJOOQを使った
- jQueryは辛くなったのでVie.jsを使った
作りなおした結果
サービスの運用について
自己紹介
- 山田岳人
- Amebaポイント事業室
- ポイントサービス運用
サーバサイドエンジニア
運用してどうだったのか
- 運用して便利だったこと
Spring Boot導入の背景
- Amebaのポイントサービス
- システム要件
- 100万PV/Day (画面)
- 100万Request/Day (API)
- ポイントサービス特有の問題がある
- 仮想通貨の性質を持つため、会社として利用できるミドルウェア等にも制限
- ダウンタイムは賠償問題
業務改善命令を出されることも
諸事情で3ヶ月で3人でリリースして欲しい
解決策
- JVMとSpring Frameworkの信頼性
- Spring Bootの高い生産性と保守性
- 既存サービスのJavaリソースの再利用