スタートアップ インフラアンチパターン
スタートアップ × インフラ
〜爆速開発を行う4社の開発を支えるインフラ戦略〜
株式会社FABRIC TOKYO
CTO 中筋 丈人
自己紹介
中筋 丈人
株式会社FABRIC TOKYO CTO
略歴:
- 陸上自衛隊 重迫撃砲副砲手
- SIer インフラ構築/業務システム開発 など
- NHN系 サービス企画/インフラエンジニア
- Amazon
- 現職
@takenakasuji
今日の話
時間的制約、スキル的制約、ヘッドカウント的制約など様々な制約をかかえるスタートアップにおいて、
ありがちなインフラのアンチパターンを実例をもとに紹介し、知見を共有します。
今日の話
時間的制約、スキル的制約、ヘッドカウント的制約など様々な制約をかかえるスタートアップにおいて、
ありがちなインフラのアンチパターンを実例をもとに紹介し、知見を共有します。
闇のインフラとの戦いの記録
前提
- サービスローンチ1年時点でジョイン
- インフラ専任のエンジニアは当時から不在
- もともとのインフラはベンダーさんやそれまでにいたエンジニアが構築
インフラ構成
EC2
ECシステム
EC2
ELB
RDS
(Multi-AZ)
RDS
(Read Replica)
EC2
生産管理システム
EC2
ELB
可視化
抽出
アップロード
セグメンテーション
ユーザ属性設定
- S3
- SES
- Lambda
- Athena
- CloudFront
- Mackerel
可視化
セキュリティグループ欠乏症パターン
(; ̄Д ̄)なんじゃと?
セキュリティグループ欠乏症パターン
症例
セキュリティグループが欠乏していることで、どこからでもアクセスが試行できる状態になってしまっていた。また、パブリックアクセスもenableな設定だった。
※ユーザ、パスワードは適切に設定してあります
治療法
RDSにアクセスするSGにInbound ruleを限定。また、SG全体の設定に疑義が生じたので速やかにauditを行った。
Semi-AZパターン
EC2
ECシステム
ELB
RDS
(Multi-AZ)
ap-northeast-1a
工工エエエ(´Д`;)エエエ工工
Semi-AZパターン
症例
冗長構成が中途半端な状態。ELBとRDSはMulti-AZな設定になっているが、EC2は片肺にだけ1台設置されているので可用性が低い。
※High-Trafficなシステムは意図的に片肺にする場合もあり
治療法
- EC2もMulti-AZな構成にする
- スケールアップよりもスケールアウト
- なぜか無駄に大きいインスタンスが立ち上がっていた。。
ステートフルパターン
EC2
ECシステム
EC2
ELB
RDS
(Multi-AZ)
社内ユーザ
記事投稿
画面
ECサイトにお知らせを掲載するためのCMS的な機能が実装されている。
社内ユーザは記事と写真を投稿することができる。
投稿した写真はEC2の/public/images的なディレクトリに保存される。
( ゚д゚) ・・・
(つд⊂)ゴシゴシ
(;゚д゚) ・・・
(つд⊂)ゴシゴシゴシ
_, ._
(;゚ Д゚) …!?
ステートフルパターン
症例
ELBに振り分けられたEC2の/public/imagesに写真が保存されるため、その投稿を閲覧しようとした際、他のEC2に振り分けられると画像がNot Foundになる。サーバを複数台構成(Semi-AZパタターンの解消)にしたら発覚。
治療法
短期的解決
- lsyncdでアップされた画像をサーバ間で転送
長期的解決
- S3に画像を保存
- 画像だけでなくログファイルもEC2には保存しない
- とにかくEC2にはステート(状態)をもたない
Single-VPCパターン
EC2
Production
EC2
ELB
RDS
EC2
Staging
EC2
ELB
RDS
VPC
工工エエエ(´Д`;)エエエ工工
Single-VPCパターン
症例
本番環境とステージング環境が同じVPC内に存在している。
加えてSGも細分化されていない。VPCの設定やSGの変更を加えたくとも本番環境への副作用が未知数になり、サービス開発の妨げとなる。
治療法
短期的解決
- SGをSingle-VPCに最適化しセキュリティリスクを最小化
- 具体的には、細かく分割し本番環境への副作用をなくす
長期的解決
- VPCを分けましょう
- システムが多い場合はAWSアカウントからわける方法もあり
Rootアカウント運用パターン
ガクガク((( ;゚Д゚)))ブルブル
Rootアカウント運用パターン
症例
アカウント開設後、IAMを使用せずにRootアカウントでManagement Consoleへのログインや各種設定などを行なっている。
治療法
- Rootアカウントには強度の強いパスワード、MFAを設定し、基本的に使用せず寝かせる
- メンバーの役割、システムの観点でIAMでグループやユーザを作成し、運用する
勘所
-
セオリー通りは本当に大事
- 公式やコミュニティのドキュメントをちゃんと読む
- AWSのベストプラクティスやホワイトペーパーなど
-
スタートアップ支援プログラムを利用する(AWS Activateなど)
- クラウドインテグレーターもプログラムを提供
- だれかをDisるのではなくどうすれば解決するかにフォーカスする
- 少ない人数で開発しているので、問題の本質を見極め短期的な解決と長期的な解決の二軸で修正を続けていく
We're Hiring!!
- サーバサイドエンジニア
- カスタムオーダーECサイトの開発
- 生産管理システムの開発
- フロントエンドエンジニア
- カスタムオーダーECサイトの開発
- React / Vue.js使用
- UIデザイナー
ご静聴ありがとうございました!
スタートアップインフラアンチパターン
By Taketo Nakasuji
スタートアップインフラアンチパターン
- 3,229