SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
ランサーズでのAWS活用事例
http://www.lancers.jp/
「時間と場所にとらわれない、新しい働き方を創る」
[2016/11/12 JAWS UG 山形]
ランサーズ株式会社
インフラエンジニア
金澤 裕毅 [Kanazawa Yuki]
© 2016 for LANCERS, inc All Rights Reserved
自己紹介
• 氏名:金澤 裕毅
• 出身:宮城県仙台市
• 学歴:山形大学大学院理工学研究科
• 平中研究室(ネットワーク専攻)
• 職歴:
• 第一期(2002年~2010年)
• Windowsパッケージ開発
• ASP開発、インフラ担当
• 札幌に2年間転勤
• 第二期(2010年~2013年11月)
• 不動産ポータル、地域SNS
• 第三期(2013年11月~現在)
• ランサーズ株式会社 インフラエンジニア
• 所属:JAWS-UG 山形支部
© 2016 for LANCERS, inc All Rights Reserved
本日お話しさせていただく内容
ランサーズ(株)のご紹介
AWS移行とVPC設計
ランサーズのEC2運用
MySQLのRDS化
CloudFrontでCDN化
CloudSearchで全文検索化
© 2016 for LANCERS, inc All Rights Reserved
ランサーズ(株)のご紹介
ランサーズのEC2運用
MySQLのRDS化
CloudFrontでCDN化
CloudSearchで全文検索化
AWS移行とVPC設計
© 2016 for LANCERS, inc All Rights Reserved
会社概要
従業員
約 150 名
資本金
12 億 4904 万 4254 円 ( 資本準備金を含む )
株主
創業者、KDDI、インテリジェンス、グロービス・
キャピタル・パートナーズ、GMO
VenturePartners、グリーグループ、コロプラ、 オ
プト
本社所在地
会社名
ランサーズ株式会社 (LANCERS,INC.)
所在地
〒150-0002 東京都渋谷区渋谷 3-10-13
渋谷 R TOKYU REIT 渋谷Rビル 9F
設立
2008 年 4 月
事業
クラウドソーシング事業
http://www.lancers.jp/
ランサーズが提供する「クラウドソーシング」
Crowd(群衆) Sourcing(外注)
Web上で個人等に 業務委託
※エスクロー決済
※プラットフォーム Fee
受託者
(ワーカー)
発注者
(クライアント)
発注
作業
納品
「時間と場所にとらわれない働き方」
141のカテゴリ
国内市場における仕事受給の流れ
1000億円以上の仕事流通
依頼額の54%が
東京の企業
受注額の75%が
地方の個人
3.2%
3.5%
5.0%
8.5%
12.0%
13.6%
54.3%
5.0%
7.8%
11.2%
11.5%
19.6%
20.2%
24.7%
東京
中部
関西
東京以外の関東
東京
関西
東京以外の関東
中部
九州
北海道、東北中四国
九州
中四国北海道、東北
東京
54.3%
東京以外
75.3%
7
仕事の依頼例(一部のカテゴリを抜粋)
• コンペ方式
• プロジェクト方式
• タスク方式
ランサーからもスキル商品を出品可能
自分のスキルや得意を商品に見立てて出品、逆にできないことはお願いする
スキルサービスECを4月より開始しました
スキルはもちろん「得意なこと」も
詳しくは「ランサーズストア」で検索
チラシ、ライティング、SEOコンサル、似顔絵作成、wordpress構築など
個人が持つ多種多様な「スキルや得意」を相互に売り買いしています
© 2016 for LANCERS, inc All Rights Reserved 10
AWS移行とVPC設計
ランサーズのEC2運用
MySQLのRDS化
CloudFrontでCDN化
CloudSearchで全文検索化
ランサーズ(株)のご紹介
© 2016 for LANCERS, inc All Rights Reserved
ランサーズの稼働環境
• App:EC2
• Apache + PHP
• WebSocket:EC2
• メッセージサービス
• node.js
• DB:MySQL 5.6(Aurora)
• MultiAZ配置
• HAProxyで負荷分散
• Memcahed(ErastiCache)
• セッション情報
• Redis(ErastiCache)
• PubSubでWebSocketと連動
• 全文検索:CloudSearch
• SQSで連動
• ストレージ:S3
• アップロードファイル保存用
• CDN:CloudFront
• サムネイルや静的ファイルをキャッシュ
• OriginはEC2(Appサーバー)
EC2
App S3
Aurora
Reader
ELB
CloudFront
SQS
Cloud Search
Route53
EC2
instance
WebSocket
ErastiCache
Memcached
ErastiCache
Redis
Aurora
Writer
© 2016 for LANCERS, inc All Rights Reserved
なぜAWSに移行しようと思ったのか
12
 HDD圧迫(大容量プランにするか???)
 Appサーバメモリ逼迫(4GBだったため、不足。。。)
 スケールしない(AP2台 DB2台の構成 DNSラウンドロビンだった)
⇒契約したプラン上、1台だけ増やす、HDD増量が出来ない
移行を考え出した「きっかけ」
 2012年からサービス拡大期へ
 TV紹介も狙い出す
AWS移行前の「問題例」
どれぐらいアクセス
が増えるのか?
TV効果は一時的?
© 2016 for LANCERS, inc All Rights Reserved
AWS移行後のシステム構成(2012/5)
S3
Bucket
Elastic
Load Balancer
EC2
WebServer
Elastic
Load Balancer
EC2
DB Slave
EC2
DB Slave
EC2
DB Master
ap-northeast-1a
移行後
App App
移行前
DB Master DB Slave
Internet
Internet
Data Center
DNSラウンド
ロビン
© 2016 for LANCERS, inc All Rights Reserved
AZを分散して冗長化(2014/5)
© 2016 for LANCERS, inc All Rights Reserved
AppとDBを2つのAZに分散する意味
RDS Master RDS Read Replica
App
ap-northeast-1a
EC2
instance
ELB
App
EC2
instance
App
EC2
instance
RDS Multi AZ RDS Read Replica
App
ap-northeast-1c
EC2
instance
ELB
App
EC2
instance
App
EC2
instance
AZ間の通信遅延は
数ミリ〜数十ミリ
secレベル
• AZレベルの障害を想定
Route53
© 2016 for LANCERS, inc All Rights Reserved
RDS Multi AZ
AppとDBを2つのAZに分散する意味
RDS MasterRDS Read Replica
App
ap-northeast-1a
EC2
instance
ELB
App
EC2
instance
App
EC2
instance
RDS Read Replica
App
ap-northeast-1c
EC2
instance
ELB
App
EC2
instance
App
EC2
instance
• AZレベルの障害を想定
Route53
© 2016 for LANCERS, inc All Rights Reserved
ランサーズのEC2運用
AWS移行とVPC設計
MySQLのRDS化
CloudFrontでCDN化
CloudSearchで全文検索化
ランサーズ(株)のご紹介
© 2016 for LANCERS, inc All Rights Reserved
コストパフォーマンスの高いインスタンスを探す
• AWS Price List API から価格データを取得
• 月額日本円に換算
© 2016 for LANCERS, inc All Rights Reserved
コストパフォーマンスの高いインスタンスを探す
オンデマンド月額 CPU数 メモリ
t2.nano 約770円 1 0.5GB
t2.micro 約1540円 1 1GB
t2.small 約3080円 1 2GB
t2.medium 約6160円 2 4GB
t2.large 約12320円 2 8GB
価格は2倍
単位で上昇
1コアで一番お得
2コアで一番お得
• t2系インスタンスの場合
• t2.nanoがCPU的に一番お得
• t2.micro x 1 と t2.nano x 2は同じ費用
• t2.mediumもお得
• 2コアのインスタンスでCPU的に一番安い
• ※CPUクレジット数は違うので注意
© 2016 for LANCERS, inc All Rights Reserved
コストパフォーマンスの高いインスタンスを探す
オンデマンド月額 CPU数 ECU(CPU力) メモリ
m1.medium 約9350円 1 2 3.75GB
m1.large 約18700円 2 4 7.5GB
m3.large 約14900円 2 6.5 7.5GB
m4.large 約13400円 2 6.5 8GB
c3.large 約9850円 2 7 3.75GB
c4.large 約10230円 2 8 3.75GB
r3.large 約15400円 2 6.5 15.25GB
• コストパフォーマンスはm1 < m3 < m4 の順に高い
• 新しいインスタンスの方が高くなる傾向にある
• m系よりもc系、r系の方がコストパフォーマンスが高め
• 全体的にCPUよりもメモリのほうが割高
CPU最適化
メモリ最適化
現行世代
旧世代
© 2016 for LANCERS, inc All Rights Reserved
メモリを節約するテクニック
• ELBのSSL Terminate機能を利用
• EC2内ではhttpのみで通信する
• Apacheのmod_sslをやめるとメモリ使用量が半減
• プロセスをこまめに切る
• Apacheのmod_phpのGCをアテにしない
• 早めに切ってメモリを確保
• プロセスの起動回数が増えるのでCPU消費は増える
• プロセスモデルではなくスレッドモデルを採用する
• Apacheならpreforkではなくworker等の利用を検討
EC2
ELB
https://www.lancers.jp/ http://www.lancers.jp/
SSL
Terminate
© 2016 for LANCERS, inc All Rights Reserved
Appをm1.medium→c3.largeに移行(2014/5)
• c3.largeに合わせてチューニング
• CPUはm1.mediumの3.5倍
• 2CPU
• メモリはm1.mediumと同じ
• 3.75GB
•CPUを利用してメモリを節約
•結果
• レスポンス時間が1/3に短縮
• サーバー台数を4台削減
• 費用も削減
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 20
ServerLimit 190
MaxClients 190
MaxRequestsPerChild 50
</IfModule>
プロセスをこまめに削
除してメモリを確保
移行前 移行後
© 2016 for LANCERS, inc All Rights Reserved
EC2インスタンスの料金体系
• オンデマンドインスタンス
• 時間単位
• リザーブドインスタンス
• 1年、または3年単位でまとめ買い
• No Upfront (前払い無し)
• Partial Upfront (一部前払い)
• All Upfront (全額前払い)
• →50%~75%の割引
• スポットインスタンス
• 入札方式のインスタンス
• 入札価格より高くなると削除される
• →最大90%割引
• ※t2系はサポートしていない
© 2016 for LANCERS, inc All Rights Reserved
リザーブドインスタンスの損益分岐点(c4.large)
オンデマンド
リザーブド3年
一括払い
リザーブド1年
一括払い
スポット(目安)
リザーブド1年
損益分岐点(8ヶ月)
リザーブド3年
損益分岐点(17ヶ月)
© 2016 for LANCERS, inc All Rights Reserved
スポットインスタンスの活用
• t1.microの料金
• オンデマンドインスタンス
• $0.026/h(¥1,935/月)
• スポットインスタンス(時価目安)
• 約$0.0031/h(約¥231/月)
• スポットインスタンスのPricing History
• c系インスタンスは競争が激しい
• t1.microは平和な傾向
時々高騰して削除される
© 2016 for LANCERS, inc All Rights Reserved
Amazon Linux
• AWSがCentOS 6をベースに独自にチューニングしたLinux
• 最新のカーネルとAWS独自のパッケージを用意
• AWS用に最適化
• すべてのインスタンスクラスに対応
• インスタンスクラスに応じてパラメータを自動チューニング
• RDSのParamater Groupと同様
• AWS SDKインストール済
• cloud-init機能
• EC2インスタンス起動時に様々なパラメータを渡したり、ソフト
ウェアをインストールしたりできる
• セキュリティ脆弱性への対応が早い
• 大事!
Red Hat LinuxのクローンOS
© 2016 for LANCERS, inc All Rights Reserved
Amazon LinuxとCentOSの違い
CentOS 6.8 CentOS 7.2 Amazon Linux 2016.09
カーネル 2.6.32-642.6.1 3.10.0-327.36.3 4.4.19-29.55
glibc 2.12-1.192 2.17-106 2.17-106
Apache 2.2.15-54 2.4.6-40 2.2.31-1.8
2.4.23-1.66
Nginx 1.10.1-1.28
MySQL 5.1.73-7 mariadb 5.5.50-1 5.5-1.6
5.6.33-1.21
PostgreSQL 8.4.20-6 9.2.15-1 9.2.18-1.59
PHP 5.3.3-48 5.4.16-36 5.3.29-1.8
5.4.45-1.75
5.5.38-2.118
5.6.26-1.128
OpenSSL 1.0.1e-48 1.0.1e-51 1.0.1k-15.96
nkf 2.0.8b-6.2
Git 1.7.1-4 1.8.3.1-6 2.7.4-1.47
ImageMagick 6.7.2.7-5 6.7.8.9-15 6.7.8.9-15.2
© 2016 for LANCERS, inc All Rights Reserved
MySQLのRDS化
ランサーズのEC2運用
AWS移行とVPC設計
CloudFrontでCDN化
CloudSearchで全文検索化
ランサーズ(株)のご紹介
© 2016 for LANCERS, inc All Rights Reserved
29
RDS化後のシステム構成(2013/12)
S3
Bucket
Elastic
Load Balancer
EC2
WebServer
Elastic
Load Balancer
EC2
DB Slave
EC2
DB Slave
EC2
DB Master
ap-northeast-1a
S3
Bucket
Elastic
Load Balancer
EC2
WebServer
ap-northeast-1a
RDS
Master
RDS Read Replica
RDS
Multi AZ
ap-northeast-1c
RDS化前 RDS化後
© 2016 for LANCERS, inc All Rights Reserved 30
RDS(MySQL)のメリット
• Multi AZ配置
• マスタDBと異なるAZにスタンバイを用意
• 障害時に自動フェイルオーバー
• 停止時間は2分~7分(計測値)
S3
Bucket
Elastic
Load Balancer
EC2
WebServer
ap-northeast-1a
RDS
Master
RDS Read Replica
RDS
Multi AZ
ap-northeast-1c
db-master.xxxxx.ap-northeast-1.rds.amazonaws.com
© 2016 for LANCERS, inc All Rights Reserved
RDS(MySQL)のメリット
• リードレプリカ(参照専用スレーブ)を手軽に作成できる
• メニューから選択するだけ
© 2016 for LANCERS, inc All Rights Reserved 32
RDS(MySQL)のメリット
• ポイントタイムリカバリ
• 任意の時間にDBを戻すことが可能
• 35日前まで保管可能(要設定)
© 2016 for LANCERS, inc All Rights Reserved
RDS(MySQL)のメリット
• ClowdWatch
• EC2よりも豊富(空きメモリ、空きHDDも確認可)
© 2016 for LANCERS, inc All Rights Reserved 34
RDS(MySQL)のメリット
• スナップショット機能
• Manual Snapshot
• 手動スナップショット
• インスタンス削除時に取得するか訊かれる
• Automated Snapshot
• 毎日自動的に取得される差分スナップショット
• 35日間まで取得可能
• マスターDBが消えると削除される
© 2016 for LANCERS, inc All Rights Reserved 35
RDS(MySQL)のデメリット
• EC2に比べて割高
• r3.large:$0.2/h(東京リージョン)
• db.r3.large:$0.285/h(東京リージョン)
• MultiAZスタンバイ機は使えない
• でも料金は2台分
S3
Bucket
Elastic
Load Balancer
EC2
WebServer
ap-northeast-1a
RDS
Master
RDS Read Replica
RDS
Multi AZ
ap-northeast-1c
バックアップ専用
利用不可
© 2016 for LANCERS, inc All Rights Reserved 36
RDS(MySQL)のデメリット
• SSHログインできない
• RDS接続用のEC2サーバーを用意
• mysqldumpのエクスポート結果もここに格納
MySQL
Client
EC2
RDS
db-master.xxx.ap-northeast-1.rds.amazonaws.com
$ mysql -h db-master.xxx.ap-northeast-1.rds.amazonaws.com -u mysqluser –p
© 2016 for LANCERS, inc All Rights Reserved 37
RDS(MySQL)のデメリット
• Tritonn、Mroongaが使えない
• 日本語全文検索ができるMySQLパッケージ
• RDSを選択したら全文検索は自前で構築する必要がある
• Groongaとか
• Solrとか
• ErasticSearchとか
mysql> SELECT * FROM timetable WHERE MATCH(title) AGAINST("クラウド");
+----+-----------------------------------------------------+---------------------+
| id | title | start |
+----+-----------------------------------------------------+---------------------+
| 35 | 「クラウドソーシングLancers」を支えるRDS for MySQL | 2014-03-15 17:00:00 |
+----+-----------------------------------------------------+---------------------+
1 row in set (0.00 sec)
© 2016 for LANCERS, inc All Rights Reserved
SSH Tunnelingで外部からMySQL接続
EC2
Aurora
Reader
SSH Tunneling
サーバー
• SSH Tunnelingサーバー経由でPrivate VPCの参照用MySQLに接続
• エンジニア以外の社員もSQLでデータ取得
・SQLクライアント
・接続先:社内サーバー
・接続ポート:8025(任意に設定)
$ ssh -N -f -p 22 -i /home/mysqluser/.ssh/ec2.id_rsa ec2-
user@EC2のIPアドレス -g -L 8025:lancers001.xxx.ap-
northeast-1.rds.amazonaws.com:3306
Lancers
EC2
instance
© 2016 for LANCERS, inc All Rights Reserved
Auroraの登場
• クラウドを前提にMySQLを再構築
• 2014/11に発表
• 2015/10 より東京リージョンでも利用可能に
• →ランサーズでは、2016/1にAuroraに移行
© 2016 for LANCERS, inc All Rights Reserved
Auroraのメリット:パフォーマンス
• レプリケーションの効率化
• Log structured Storage
• 他多数…
RDS Aurora
MasterとReplicaのストレージが共有されている
© 2016 for LANCERS, inc All Rights Reserved
Auroraのメリット:レプリカ遅延の解消
• Auroraでメンテナンスなしでカラム追加可能に
• MySQL 5.6はオンラインDDL機能がサポートされている
• →RDSではリードレプリカのReplica Lagが大きく、
稼働中のALTER TABLEができなかった
RDS Aurora
大きな
Replica Lag
が発生
Replica Lagは
msレベル
mysql> ALTER TABLE t1 ADD COLUMN c1 tynyint(1) NOT NULL DEFAULT 0; mysql> ALTER TABLE t1 ADD COLUMN c1 tynyint(1) NOT NULL DEFAULT 0;
MasterとReplicaのストレージが共有されている
© 2016 for LANCERS, inc All Rights Reserved
Aurora移行後のReplica Lag
RDS Aurora
• Auroraはほぼ30ms以下
© 2016 for LANCERS, inc All Rights Reserved
カラム追加時のReplica Lag
24.5GB、1000万件のテーブルにカラム追加したときの計測結果
インスタンスタイプ 処理時間 Replica Lagの時間 CPU使用率
RDS: r3.xlarge 4時間32分 最大15000秒 Master:約10%
Slave: 約1%
Aurora:r3.xlarge 2時間12分 最大2秒 Writer:約47%
Reader: 約17%
RDS Aurora
• 大きなテーブルでも遅延は2秒以下
• メンテナンスなしのカラム追加が可能に
© 2016 for LANCERS, inc All Rights Reserved
Auroraのメリット:RRが15台まで可能
• RDS
• 1マスターにつき5台まで
• TV放映用に予備2台分確保
• 作成時間:約10~40分
• リードレプリカの上限値が増加
• Aurora
• 1マスターにつき15台まで
• TV放映用に13台確保できる
• 作成時間:約5分
データ取得用
1台
App用
2台
TV放映用
2台(予備)
多層構成にすれば
2台以上可能だが
Replica Lagが
大きくなる
データ取得用
1台
App用
2台
TV放映用
13台
© 2016 for LANCERS, inc All Rights Reserved
Auroraのメリット:MultiAZ費用の削減
• RDSのMulti AZ 1台分費用削減できる
• Auroraは障害時にReaderの1台がWriterに昇格する仕組み
45
WebServer
ap-northeast-1a
Master
Read Replica
Multi AZ
ap-northeast-1c
EC2
instance
Read ReplicaRead Replica
RDS
WebServer
ap-northeast-1a
Reader
ap-northeast-1c
ReaderReader
Aurora
Writer
EC2
instance
EC2
instance
MultiAZ分の
費用がかから
ない
© 2016 for LANCERS, inc All Rights Reserved
インスタンスタイプ
• インスタンスクラスはdb.r3.large以上(2016/11/5現在)
• t2系のインスタンスが今後サポートされる予定
© 2016 for LANCERS, inc All Rights Reserved
CloudFrontでCDN化
ランサーズのEC2運用
MySQLのRDS化
CloudSearchで全文検索化
AWS移行とVPC設計
ランサーズ(株)のご紹介
© 2016 for LANCERS, inc All Rights Reserved
CDN(Content Delivery Network)とは
• Web配信のために最適化されたネットワーク
• 世界の各地にキャッシュサーバ(エッジロケーション)を配置
• 一番近いエッジロケーションがキャッシュしたコンテンツを返す
CDNなし CDNあり
エッジロケーション
© 2016 for LANCERS, inc All Rights Reserved
CloudFrontの導入前の画像アクセスフロー
EC2
instance
EC2
App
User
S3
NFS
Route531.サムネイル要求
2.サムネイル存在チェック
→なし
3.元画像を要求4.サムネイル作成
1回目 2回目
EC2
instance
EC2
App
User
S3
NFS
Route531.サムネイル要求
2.サムネイル存在チェック
→あり
4.NFSのキャッシュ
を返す
5. NFSに保存
NFSのHDDが
逼迫
img.lancers.jp img.lancers.jp
img.lancers.jp img.lancers.jp
© 2016 for LANCERS, inc All Rights Reserved
CloudFrontの導入後の画像アクセスフロー
EC2
App
User
S3
Route531.サムネイル要求
2. Edge Locationの
キャッシュを返す
1回目 2回目
EC2
App
User
S3
Route53
1.サムネイル要求
2.元画像を要求
3.サムネイル作成
&Edge Locationに保存
2.キャッシュチェック
→なし
2.キャッシュチェック
→あり
EC2
instance
EC2
instance
NFS NFS
img.lancers.jp
img-origin.lancers.jp img-origin.lancers.jp
img.lancers.jp
img.lancers.jp
img.lancers.jp
© 2016 for LANCERS, inc All Rights Reserved
CloudFrontの適用
• Distributionの設定
• Route53でDNSのレコードを変更
• Webサーバーの設定変更
<VirtualHost *:80>
- ServerName img.lancers.jp
+ ServerName img-origin.lancers.jp
© 2016 for LANCERS, inc All Rights Reserved
CloudSearchで全文検索化
ランサーズのEC2運用
MySQLのRDS化
CloudFrontでCDN化
AWS移行とVPC設計
ランサーズ(株)のご紹介
© 2016 for LANCERS, inc All Rights Reserved
全文検索とは
• SQLのLIKEは前方一致しかインデックスが効かない
SELECT * FROM users WHERE user_name LIKE '金澤%' -- 前方一致インデックスで検索可能
SELECT * FROM users WHERE user_name LIKE '%金澤%' -- 中間一致、後方一致はインデックス不可
© 2016 for LANCERS, inc All Rights Reserved
全文検索エンジン
• Namazu
• 日本で古くから普及していた全文検索エンジン
• Lucene系
• Lucene
• Java実装の全文検索ライブラリ
• Solr
• Luceneで構築された全文検索エンジン
• AWS CloudSearchで採用
• Erasticsearch
• Lucene基盤の分散検索エンジン
• AWS Erastisearch Serviceで採用
• Senna系
• Senna
• Tritton(MySQLバインディング)
• Groonga
• Sennaの後継検索エンジン
• Mroonga(MySQLバインディング)
SQLのMATCH〜AGEINST
構文で検索可能
RDSでは未サポート
ログ分析のプラット
フォームとして主に
利用されている
Amazon
CloudSearch
Amazon
Elasticsearch Service
© 2016 for LANCERS, inc All Rights Reserved
日本語の形態素解析器
• JUMAN
• 形態素解析器の先駆け
• 京大で開発
• Kakashi
• Namazuで主に採用
• Chasen
• JUMANから派生した
• Namazuで主に採用
• Mecab
• C++実装(各言語の派生バージョンあり)
• Namazu、Lucene、Solr等で幅広く採用
• MySQL 5.7ではMecabプラグインをサポート
• Kuromoji
• Java実装
• Solr、Erasticsearchで主に採用
SQLのMATCH〜AGEINST
構文で検索可能
RDSでは未サポート
© 2016 for LANCERS, inc All Rights Reserved
CloudSearchのメリット
• EC2でSolrを構築するのに比べて
• インストール作業不要
• Dashboardから新規ドメインを作成
• 自動スケールアウト
• 自動スケールアップ
• Multi AZ機能をサポート
• 冗長性を確保可能
スケールの設定
MultiAZの設定
Indexの設定
ご清聴ありがとうございました!
ランサーズ株式会社
インフラエンジニア
金澤 裕毅 [Kanazawa Yuki]
「時間と場所にとらわれない、新しい働き方を創る」
[2016/11/12 JAWS UG 山形]
http://www.lancers.jp/

Contenu connexe

Tendances

NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャNoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
Yasuhiro Matsuo
 

Tendances (20)

ついに解禁!Amazon Aurora徹底検証!
ついに解禁!Amazon Aurora徹底検証!ついに解禁!Amazon Aurora徹底検証!
ついに解禁!Amazon Aurora徹底検証!
 
[Aurora事例祭り]AWS Database Migration Service と Schema Conversion Tool の使いドコロ
[Aurora事例祭り]AWS Database Migration Service と Schema Conversion Tool の使いドコロ[Aurora事例祭り]AWS Database Migration Service と Schema Conversion Tool の使いドコロ
[Aurora事例祭り]AWS Database Migration Service と Schema Conversion Tool の使いドコロ
 
はじめてのAmazon Aurora
はじめてのAmazon AuroraはじめてのAmazon Aurora
はじめてのAmazon Aurora
 
AWS Black Belt Techシリーズ Amazon EBS
AWS Black Belt Techシリーズ  Amazon EBSAWS Black Belt Techシリーズ  Amazon EBS
AWS Black Belt Techシリーズ Amazon EBS
 
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャNoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
 
Amazon Aurora Deep Dive (re:Invent 2015 DAT405 日本語翻訳版)
Amazon Aurora Deep Dive (re:Invent 2015 DAT405 日本語翻訳版)Amazon Aurora Deep Dive (re:Invent 2015 DAT405 日本語翻訳版)
Amazon Aurora Deep Dive (re:Invent 2015 DAT405 日本語翻訳版)
 
日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント
日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント
日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント
 
Aurora
AuroraAurora
Aurora
 
Rds徹底入門
Rds徹底入門Rds徹底入門
Rds徹底入門
 
オンプレからAuroraへの移行とその効果
オンプレからAuroraへの移行とその効果オンプレからAuroraへの移行とその効果
オンプレからAuroraへの移行とその効果
 
JAWS-UG山形 AWSのきほん 2016/11/12
JAWS-UG山形 AWSのきほん 2016/11/12 JAWS-UG山形 AWSのきほん 2016/11/12
JAWS-UG山形 AWSのきほん 2016/11/12
 
AWS Database Migration Serviceの紹介
AWS Database Migration Serviceの紹介AWS Database Migration Serviceの紹介
AWS Database Migration Serviceの紹介
 
20140315 jawsdays i2 instance io performance
20140315 jawsdays i2 instance io performance20140315 jawsdays i2 instance io performance
20140315 jawsdays i2 instance io performance
 
Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門
 
JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門
JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門
JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門
 
AWS初心者向けWebinar RDBのAWSへの移行方法(Oracleを例に)
AWS初心者向けWebinar RDBのAWSへの移行方法(Oracleを例に)AWS初心者向けWebinar RDBのAWSへの移行方法(Oracleを例に)
AWS初心者向けWebinar RDBのAWSへの移行方法(Oracleを例に)
 
AmazonのDNSサービス Amazon Route 53の使いかたと裏側
AmazonのDNSサービス Amazon Route 53の使いかたと裏側AmazonのDNSサービス Amazon Route 53の使いかたと裏側
AmazonのDNSサービス Amazon Route 53の使いかたと裏側
 
Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行
 
AWS上で使えるストレージ十番勝負
AWS上で使えるストレージ十番勝負AWS上で使えるストレージ十番勝負
AWS上で使えるストレージ十番勝負
 
Redshift勉強会
Redshift勉強会Redshift勉強会
Redshift勉強会
 

En vedette

En vedette (8)

2016.11.24-CommunityMarketingCommunity
2016.11.24-CommunityMarketingCommunity2016.11.24-CommunityMarketingCommunity
2016.11.24-CommunityMarketingCommunity
 
Omoidoriのファンづくりマーケティング
OmoidoriのファンづくりマーケティングOmoidoriのファンづくりマーケティング
Omoidoriのファンづくりマーケティング
 
サイボウズ式コミュニティとの関わり方
サイボウズ式コミュニティとの関わり方サイボウズ式コミュニティとの関わり方
サイボウズ式コミュニティとの関わり方
 
第1回 Mauticハンズオン資料:資料ダウンロードフォームの仕組み作り
第1回 Mauticハンズオン資料:資料ダウンロードフォームの仕組み作り第1回 Mauticハンズオン資料:資料ダウンロードフォームの仕組み作り
第1回 Mauticハンズオン資料:資料ダウンロードフォームの仕組み作り
 
20161124 cmc kickoff
20161124 cmc kickoff20161124 cmc kickoff
20161124 cmc kickoff
 
20161111 re:Work meetupYamagata2016 酒と仕事とテレワークとぎょり
20161111 re:Work meetupYamagata2016 酒と仕事とテレワークとぎょり20161111 re:Work meetupYamagata2016 酒と仕事とテレワークとぎょり
20161111 re:Work meetupYamagata2016 酒と仕事とテレワークとぎょり
 
エフスタ!!HOKKAIDO エンジニアが この先 生き残るには
エフスタ!!HOKKAIDO エンジニアが この先 生き残るにはエフスタ!!HOKKAIDO エンジニアが この先 生き残るには
エフスタ!!HOKKAIDO エンジニアが この先 生き残るには
 
2013年9月 jawsug山形 「こんにちは芋煮会 ようこそ新世界へ」
2013年9月 jawsug山形 「こんにちは芋煮会 ようこそ新世界へ」2013年9月 jawsug山形 「こんにちは芋煮会 ようこそ新世界へ」
2013年9月 jawsug山形 「こんにちは芋煮会 ようこそ新世界へ」
 

Similaire à 【JAWS UG 山形】ランサーズでのAWS活用事例

SAP on AWS紹介資料 - Dec, 2014
SAP on AWS紹介資料 - Dec, 2014SAP on AWS紹介資料 - Dec, 2014
SAP on AWS紹介資料 - Dec, 2014
Matsumoto Hiroki
 
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
Masahito Zembutsu
 

Similaire à 【JAWS UG 山形】ランサーズでのAWS活用事例 (20)

20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
 
【JAWS-UG Sapporo】はじめてのAWSワークショップ 概説
【JAWS-UG Sapporo】はじめてのAWSワークショップ 概説【JAWS-UG Sapporo】はじめてのAWSワークショップ 概説
【JAWS-UG Sapporo】はじめてのAWSワークショップ 概説
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
 
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
 
ヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージ
 
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
 
Oracle Cloud IaaS活用:VMwareをそのままパブリック・クラウドへ&Windowsならオラクル [Oracle Cloud Days T...
Oracle Cloud IaaS活用:VMwareをそのままパブリック・クラウドへ&Windowsならオラクル [Oracle Cloud Days T...Oracle Cloud IaaS活用:VMwareをそのままパブリック・クラウドへ&Windowsならオラクル [Oracle Cloud Days T...
Oracle Cloud IaaS活用:VMwareをそのままパブリック・クラウドへ&Windowsならオラクル [Oracle Cloud Days T...
 
AWS Database Migration Service ご紹介
AWS Database Migration Service ご紹介AWS Database Migration Service ご紹介
AWS Database Migration Service ご紹介
 
SAP on AWS紹介資料 - Dec, 2014
SAP on AWS紹介資料 - Dec, 2014SAP on AWS紹介資料 - Dec, 2014
SAP on AWS紹介資料 - Dec, 2014
 
頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜
頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜
頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜
 
AWSのNoSQL入門
AWSのNoSQL入門AWSのNoSQL入門
AWSのNoSQL入門
 
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
 
【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化
 
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
 
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデートAWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
 
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
 
Classmethod awsstudy ec2rds20160114
Classmethod awsstudy ec2rds20160114Classmethod awsstudy ec2rds20160114
Classmethod awsstudy ec2rds20160114
 
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
 
20170803 bigdataevent
20170803 bigdataevent20170803 bigdataevent
20170803 bigdataevent
 

【JAWS UG 山形】ランサーズでのAWS活用事例

  • 2. © 2016 for LANCERS, inc All Rights Reserved 自己紹介 • 氏名:金澤 裕毅 • 出身:宮城県仙台市 • 学歴:山形大学大学院理工学研究科 • 平中研究室(ネットワーク専攻) • 職歴: • 第一期(2002年~2010年) • Windowsパッケージ開発 • ASP開発、インフラ担当 • 札幌に2年間転勤 • 第二期(2010年~2013年11月) • 不動産ポータル、地域SNS • 第三期(2013年11月~現在) • ランサーズ株式会社 インフラエンジニア • 所属:JAWS-UG 山形支部
  • 3. © 2016 for LANCERS, inc All Rights Reserved 本日お話しさせていただく内容 ランサーズ(株)のご紹介 AWS移行とVPC設計 ランサーズのEC2運用 MySQLのRDS化 CloudFrontでCDN化 CloudSearchで全文検索化
  • 4. © 2016 for LANCERS, inc All Rights Reserved ランサーズ(株)のご紹介 ランサーズのEC2運用 MySQLのRDS化 CloudFrontでCDN化 CloudSearchで全文検索化 AWS移行とVPC設計
  • 5. © 2016 for LANCERS, inc All Rights Reserved 会社概要 従業員 約 150 名 資本金 12 億 4904 万 4254 円 ( 資本準備金を含む ) 株主 創業者、KDDI、インテリジェンス、グロービス・ キャピタル・パートナーズ、GMO VenturePartners、グリーグループ、コロプラ、 オ プト 本社所在地 会社名 ランサーズ株式会社 (LANCERS,INC.) 所在地 〒150-0002 東京都渋谷区渋谷 3-10-13 渋谷 R TOKYU REIT 渋谷Rビル 9F 設立 2008 年 4 月 事業 クラウドソーシング事業 http://www.lancers.jp/
  • 6. ランサーズが提供する「クラウドソーシング」 Crowd(群衆) Sourcing(外注) Web上で個人等に 業務委託 ※エスクロー決済 ※プラットフォーム Fee 受託者 (ワーカー) 発注者 (クライアント) 発注 作業 納品 「時間と場所にとらわれない働き方」 141のカテゴリ
  • 11. © 2016 for LANCERS, inc All Rights Reserved 10 AWS移行とVPC設計 ランサーズのEC2運用 MySQLのRDS化 CloudFrontでCDN化 CloudSearchで全文検索化 ランサーズ(株)のご紹介
  • 12. © 2016 for LANCERS, inc All Rights Reserved ランサーズの稼働環境 • App:EC2 • Apache + PHP • WebSocket:EC2 • メッセージサービス • node.js • DB:MySQL 5.6(Aurora) • MultiAZ配置 • HAProxyで負荷分散 • Memcahed(ErastiCache) • セッション情報 • Redis(ErastiCache) • PubSubでWebSocketと連動 • 全文検索:CloudSearch • SQSで連動 • ストレージ:S3 • アップロードファイル保存用 • CDN:CloudFront • サムネイルや静的ファイルをキャッシュ • OriginはEC2(Appサーバー) EC2 App S3 Aurora Reader ELB CloudFront SQS Cloud Search Route53 EC2 instance WebSocket ErastiCache Memcached ErastiCache Redis Aurora Writer
  • 13. © 2016 for LANCERS, inc All Rights Reserved なぜAWSに移行しようと思ったのか 12  HDD圧迫(大容量プランにするか???)  Appサーバメモリ逼迫(4GBだったため、不足。。。)  スケールしない(AP2台 DB2台の構成 DNSラウンドロビンだった) ⇒契約したプラン上、1台だけ増やす、HDD増量が出来ない 移行を考え出した「きっかけ」  2012年からサービス拡大期へ  TV紹介も狙い出す AWS移行前の「問題例」 どれぐらいアクセス が増えるのか? TV効果は一時的?
  • 14. © 2016 for LANCERS, inc All Rights Reserved AWS移行後のシステム構成(2012/5) S3 Bucket Elastic Load Balancer EC2 WebServer Elastic Load Balancer EC2 DB Slave EC2 DB Slave EC2 DB Master ap-northeast-1a 移行後 App App 移行前 DB Master DB Slave Internet Internet Data Center DNSラウンド ロビン
  • 15. © 2016 for LANCERS, inc All Rights Reserved AZを分散して冗長化(2014/5)
  • 16. © 2016 for LANCERS, inc All Rights Reserved AppとDBを2つのAZに分散する意味 RDS Master RDS Read Replica App ap-northeast-1a EC2 instance ELB App EC2 instance App EC2 instance RDS Multi AZ RDS Read Replica App ap-northeast-1c EC2 instance ELB App EC2 instance App EC2 instance AZ間の通信遅延は 数ミリ〜数十ミリ secレベル • AZレベルの障害を想定 Route53
  • 17. © 2016 for LANCERS, inc All Rights Reserved RDS Multi AZ AppとDBを2つのAZに分散する意味 RDS MasterRDS Read Replica App ap-northeast-1a EC2 instance ELB App EC2 instance App EC2 instance RDS Read Replica App ap-northeast-1c EC2 instance ELB App EC2 instance App EC2 instance • AZレベルの障害を想定 Route53
  • 18. © 2016 for LANCERS, inc All Rights Reserved ランサーズのEC2運用 AWS移行とVPC設計 MySQLのRDS化 CloudFrontでCDN化 CloudSearchで全文検索化 ランサーズ(株)のご紹介
  • 19. © 2016 for LANCERS, inc All Rights Reserved コストパフォーマンスの高いインスタンスを探す • AWS Price List API から価格データを取得 • 月額日本円に換算
  • 20. © 2016 for LANCERS, inc All Rights Reserved コストパフォーマンスの高いインスタンスを探す オンデマンド月額 CPU数 メモリ t2.nano 約770円 1 0.5GB t2.micro 約1540円 1 1GB t2.small 約3080円 1 2GB t2.medium 約6160円 2 4GB t2.large 約12320円 2 8GB 価格は2倍 単位で上昇 1コアで一番お得 2コアで一番お得 • t2系インスタンスの場合 • t2.nanoがCPU的に一番お得 • t2.micro x 1 と t2.nano x 2は同じ費用 • t2.mediumもお得 • 2コアのインスタンスでCPU的に一番安い • ※CPUクレジット数は違うので注意
  • 21. © 2016 for LANCERS, inc All Rights Reserved コストパフォーマンスの高いインスタンスを探す オンデマンド月額 CPU数 ECU(CPU力) メモリ m1.medium 約9350円 1 2 3.75GB m1.large 約18700円 2 4 7.5GB m3.large 約14900円 2 6.5 7.5GB m4.large 約13400円 2 6.5 8GB c3.large 約9850円 2 7 3.75GB c4.large 約10230円 2 8 3.75GB r3.large 約15400円 2 6.5 15.25GB • コストパフォーマンスはm1 < m3 < m4 の順に高い • 新しいインスタンスの方が高くなる傾向にある • m系よりもc系、r系の方がコストパフォーマンスが高め • 全体的にCPUよりもメモリのほうが割高 CPU最適化 メモリ最適化 現行世代 旧世代
  • 22. © 2016 for LANCERS, inc All Rights Reserved メモリを節約するテクニック • ELBのSSL Terminate機能を利用 • EC2内ではhttpのみで通信する • Apacheのmod_sslをやめるとメモリ使用量が半減 • プロセスをこまめに切る • Apacheのmod_phpのGCをアテにしない • 早めに切ってメモリを確保 • プロセスの起動回数が増えるのでCPU消費は増える • プロセスモデルではなくスレッドモデルを採用する • Apacheならpreforkではなくworker等の利用を検討 EC2 ELB https://www.lancers.jp/ http://www.lancers.jp/ SSL Terminate
  • 23. © 2016 for LANCERS, inc All Rights Reserved Appをm1.medium→c3.largeに移行(2014/5) • c3.largeに合わせてチューニング • CPUはm1.mediumの3.5倍 • 2CPU • メモリはm1.mediumと同じ • 3.75GB •CPUを利用してメモリを節約 •結果 • レスポンス時間が1/3に短縮 • サーバー台数を4台削減 • 費用も削減 <IfModule prefork.c> StartServers 10 MinSpareServers 10 MaxSpareServers 20 ServerLimit 190 MaxClients 190 MaxRequestsPerChild 50 </IfModule> プロセスをこまめに削 除してメモリを確保 移行前 移行後
  • 24. © 2016 for LANCERS, inc All Rights Reserved EC2インスタンスの料金体系 • オンデマンドインスタンス • 時間単位 • リザーブドインスタンス • 1年、または3年単位でまとめ買い • No Upfront (前払い無し) • Partial Upfront (一部前払い) • All Upfront (全額前払い) • →50%~75%の割引 • スポットインスタンス • 入札方式のインスタンス • 入札価格より高くなると削除される • →最大90%割引 • ※t2系はサポートしていない
  • 25. © 2016 for LANCERS, inc All Rights Reserved リザーブドインスタンスの損益分岐点(c4.large) オンデマンド リザーブド3年 一括払い リザーブド1年 一括払い スポット(目安) リザーブド1年 損益分岐点(8ヶ月) リザーブド3年 損益分岐点(17ヶ月)
  • 26. © 2016 for LANCERS, inc All Rights Reserved スポットインスタンスの活用 • t1.microの料金 • オンデマンドインスタンス • $0.026/h(¥1,935/月) • スポットインスタンス(時価目安) • 約$0.0031/h(約¥231/月) • スポットインスタンスのPricing History • c系インスタンスは競争が激しい • t1.microは平和な傾向 時々高騰して削除される
  • 27. © 2016 for LANCERS, inc All Rights Reserved Amazon Linux • AWSがCentOS 6をベースに独自にチューニングしたLinux • 最新のカーネルとAWS独自のパッケージを用意 • AWS用に最適化 • すべてのインスタンスクラスに対応 • インスタンスクラスに応じてパラメータを自動チューニング • RDSのParamater Groupと同様 • AWS SDKインストール済 • cloud-init機能 • EC2インスタンス起動時に様々なパラメータを渡したり、ソフト ウェアをインストールしたりできる • セキュリティ脆弱性への対応が早い • 大事! Red Hat LinuxのクローンOS
  • 28. © 2016 for LANCERS, inc All Rights Reserved Amazon LinuxとCentOSの違い CentOS 6.8 CentOS 7.2 Amazon Linux 2016.09 カーネル 2.6.32-642.6.1 3.10.0-327.36.3 4.4.19-29.55 glibc 2.12-1.192 2.17-106 2.17-106 Apache 2.2.15-54 2.4.6-40 2.2.31-1.8 2.4.23-1.66 Nginx 1.10.1-1.28 MySQL 5.1.73-7 mariadb 5.5.50-1 5.5-1.6 5.6.33-1.21 PostgreSQL 8.4.20-6 9.2.15-1 9.2.18-1.59 PHP 5.3.3-48 5.4.16-36 5.3.29-1.8 5.4.45-1.75 5.5.38-2.118 5.6.26-1.128 OpenSSL 1.0.1e-48 1.0.1e-51 1.0.1k-15.96 nkf 2.0.8b-6.2 Git 1.7.1-4 1.8.3.1-6 2.7.4-1.47 ImageMagick 6.7.2.7-5 6.7.8.9-15 6.7.8.9-15.2
  • 29. © 2016 for LANCERS, inc All Rights Reserved MySQLのRDS化 ランサーズのEC2運用 AWS移行とVPC設計 CloudFrontでCDN化 CloudSearchで全文検索化 ランサーズ(株)のご紹介
  • 30. © 2016 for LANCERS, inc All Rights Reserved 29 RDS化後のシステム構成(2013/12) S3 Bucket Elastic Load Balancer EC2 WebServer Elastic Load Balancer EC2 DB Slave EC2 DB Slave EC2 DB Master ap-northeast-1a S3 Bucket Elastic Load Balancer EC2 WebServer ap-northeast-1a RDS Master RDS Read Replica RDS Multi AZ ap-northeast-1c RDS化前 RDS化後
  • 31. © 2016 for LANCERS, inc All Rights Reserved 30 RDS(MySQL)のメリット • Multi AZ配置 • マスタDBと異なるAZにスタンバイを用意 • 障害時に自動フェイルオーバー • 停止時間は2分~7分(計測値) S3 Bucket Elastic Load Balancer EC2 WebServer ap-northeast-1a RDS Master RDS Read Replica RDS Multi AZ ap-northeast-1c db-master.xxxxx.ap-northeast-1.rds.amazonaws.com
  • 32. © 2016 for LANCERS, inc All Rights Reserved RDS(MySQL)のメリット • リードレプリカ(参照専用スレーブ)を手軽に作成できる • メニューから選択するだけ
  • 33. © 2016 for LANCERS, inc All Rights Reserved 32 RDS(MySQL)のメリット • ポイントタイムリカバリ • 任意の時間にDBを戻すことが可能 • 35日前まで保管可能(要設定)
  • 34. © 2016 for LANCERS, inc All Rights Reserved RDS(MySQL)のメリット • ClowdWatch • EC2よりも豊富(空きメモリ、空きHDDも確認可)
  • 35. © 2016 for LANCERS, inc All Rights Reserved 34 RDS(MySQL)のメリット • スナップショット機能 • Manual Snapshot • 手動スナップショット • インスタンス削除時に取得するか訊かれる • Automated Snapshot • 毎日自動的に取得される差分スナップショット • 35日間まで取得可能 • マスターDBが消えると削除される
  • 36. © 2016 for LANCERS, inc All Rights Reserved 35 RDS(MySQL)のデメリット • EC2に比べて割高 • r3.large:$0.2/h(東京リージョン) • db.r3.large:$0.285/h(東京リージョン) • MultiAZスタンバイ機は使えない • でも料金は2台分 S3 Bucket Elastic Load Balancer EC2 WebServer ap-northeast-1a RDS Master RDS Read Replica RDS Multi AZ ap-northeast-1c バックアップ専用 利用不可
  • 37. © 2016 for LANCERS, inc All Rights Reserved 36 RDS(MySQL)のデメリット • SSHログインできない • RDS接続用のEC2サーバーを用意 • mysqldumpのエクスポート結果もここに格納 MySQL Client EC2 RDS db-master.xxx.ap-northeast-1.rds.amazonaws.com $ mysql -h db-master.xxx.ap-northeast-1.rds.amazonaws.com -u mysqluser –p
  • 38. © 2016 for LANCERS, inc All Rights Reserved 37 RDS(MySQL)のデメリット • Tritonn、Mroongaが使えない • 日本語全文検索ができるMySQLパッケージ • RDSを選択したら全文検索は自前で構築する必要がある • Groongaとか • Solrとか • ErasticSearchとか mysql> SELECT * FROM timetable WHERE MATCH(title) AGAINST("クラウド"); +----+-----------------------------------------------------+---------------------+ | id | title | start | +----+-----------------------------------------------------+---------------------+ | 35 | 「クラウドソーシングLancers」を支えるRDS for MySQL | 2014-03-15 17:00:00 | +----+-----------------------------------------------------+---------------------+ 1 row in set (0.00 sec)
  • 39. © 2016 for LANCERS, inc All Rights Reserved SSH Tunnelingで外部からMySQL接続 EC2 Aurora Reader SSH Tunneling サーバー • SSH Tunnelingサーバー経由でPrivate VPCの参照用MySQLに接続 • エンジニア以外の社員もSQLでデータ取得 ・SQLクライアント ・接続先:社内サーバー ・接続ポート:8025(任意に設定) $ ssh -N -f -p 22 -i /home/mysqluser/.ssh/ec2.id_rsa ec2- user@EC2のIPアドレス -g -L 8025:lancers001.xxx.ap- northeast-1.rds.amazonaws.com:3306 Lancers EC2 instance
  • 40. © 2016 for LANCERS, inc All Rights Reserved Auroraの登場 • クラウドを前提にMySQLを再構築 • 2014/11に発表 • 2015/10 より東京リージョンでも利用可能に • →ランサーズでは、2016/1にAuroraに移行
  • 41. © 2016 for LANCERS, inc All Rights Reserved Auroraのメリット:パフォーマンス • レプリケーションの効率化 • Log structured Storage • 他多数… RDS Aurora MasterとReplicaのストレージが共有されている
  • 42. © 2016 for LANCERS, inc All Rights Reserved Auroraのメリット:レプリカ遅延の解消 • Auroraでメンテナンスなしでカラム追加可能に • MySQL 5.6はオンラインDDL機能がサポートされている • →RDSではリードレプリカのReplica Lagが大きく、 稼働中のALTER TABLEができなかった RDS Aurora 大きな Replica Lag が発生 Replica Lagは msレベル mysql> ALTER TABLE t1 ADD COLUMN c1 tynyint(1) NOT NULL DEFAULT 0; mysql> ALTER TABLE t1 ADD COLUMN c1 tynyint(1) NOT NULL DEFAULT 0; MasterとReplicaのストレージが共有されている
  • 43. © 2016 for LANCERS, inc All Rights Reserved Aurora移行後のReplica Lag RDS Aurora • Auroraはほぼ30ms以下
  • 44. © 2016 for LANCERS, inc All Rights Reserved カラム追加時のReplica Lag 24.5GB、1000万件のテーブルにカラム追加したときの計測結果 インスタンスタイプ 処理時間 Replica Lagの時間 CPU使用率 RDS: r3.xlarge 4時間32分 最大15000秒 Master:約10% Slave: 約1% Aurora:r3.xlarge 2時間12分 最大2秒 Writer:約47% Reader: 約17% RDS Aurora • 大きなテーブルでも遅延は2秒以下 • メンテナンスなしのカラム追加が可能に
  • 45. © 2016 for LANCERS, inc All Rights Reserved Auroraのメリット:RRが15台まで可能 • RDS • 1マスターにつき5台まで • TV放映用に予備2台分確保 • 作成時間:約10~40分 • リードレプリカの上限値が増加 • Aurora • 1マスターにつき15台まで • TV放映用に13台確保できる • 作成時間:約5分 データ取得用 1台 App用 2台 TV放映用 2台(予備) 多層構成にすれば 2台以上可能だが Replica Lagが 大きくなる データ取得用 1台 App用 2台 TV放映用 13台
  • 46. © 2016 for LANCERS, inc All Rights Reserved Auroraのメリット:MultiAZ費用の削減 • RDSのMulti AZ 1台分費用削減できる • Auroraは障害時にReaderの1台がWriterに昇格する仕組み 45 WebServer ap-northeast-1a Master Read Replica Multi AZ ap-northeast-1c EC2 instance Read ReplicaRead Replica RDS WebServer ap-northeast-1a Reader ap-northeast-1c ReaderReader Aurora Writer EC2 instance EC2 instance MultiAZ分の 費用がかから ない
  • 47. © 2016 for LANCERS, inc All Rights Reserved インスタンスタイプ • インスタンスクラスはdb.r3.large以上(2016/11/5現在) • t2系のインスタンスが今後サポートされる予定
  • 48. © 2016 for LANCERS, inc All Rights Reserved CloudFrontでCDN化 ランサーズのEC2運用 MySQLのRDS化 CloudSearchで全文検索化 AWS移行とVPC設計 ランサーズ(株)のご紹介
  • 49. © 2016 for LANCERS, inc All Rights Reserved CDN(Content Delivery Network)とは • Web配信のために最適化されたネットワーク • 世界の各地にキャッシュサーバ(エッジロケーション)を配置 • 一番近いエッジロケーションがキャッシュしたコンテンツを返す CDNなし CDNあり エッジロケーション
  • 50. © 2016 for LANCERS, inc All Rights Reserved CloudFrontの導入前の画像アクセスフロー EC2 instance EC2 App User S3 NFS Route531.サムネイル要求 2.サムネイル存在チェック →なし 3.元画像を要求4.サムネイル作成 1回目 2回目 EC2 instance EC2 App User S3 NFS Route531.サムネイル要求 2.サムネイル存在チェック →あり 4.NFSのキャッシュ を返す 5. NFSに保存 NFSのHDDが 逼迫 img.lancers.jp img.lancers.jp img.lancers.jp img.lancers.jp
  • 51. © 2016 for LANCERS, inc All Rights Reserved CloudFrontの導入後の画像アクセスフロー EC2 App User S3 Route531.サムネイル要求 2. Edge Locationの キャッシュを返す 1回目 2回目 EC2 App User S3 Route53 1.サムネイル要求 2.元画像を要求 3.サムネイル作成 &Edge Locationに保存 2.キャッシュチェック →なし 2.キャッシュチェック →あり EC2 instance EC2 instance NFS NFS img.lancers.jp img-origin.lancers.jp img-origin.lancers.jp img.lancers.jp img.lancers.jp img.lancers.jp
  • 52. © 2016 for LANCERS, inc All Rights Reserved CloudFrontの適用 • Distributionの設定 • Route53でDNSのレコードを変更 • Webサーバーの設定変更 <VirtualHost *:80> - ServerName img.lancers.jp + ServerName img-origin.lancers.jp
  • 53. © 2016 for LANCERS, inc All Rights Reserved CloudSearchで全文検索化 ランサーズのEC2運用 MySQLのRDS化 CloudFrontでCDN化 AWS移行とVPC設計 ランサーズ(株)のご紹介
  • 54. © 2016 for LANCERS, inc All Rights Reserved 全文検索とは • SQLのLIKEは前方一致しかインデックスが効かない SELECT * FROM users WHERE user_name LIKE '金澤%' -- 前方一致インデックスで検索可能 SELECT * FROM users WHERE user_name LIKE '%金澤%' -- 中間一致、後方一致はインデックス不可
  • 55. © 2016 for LANCERS, inc All Rights Reserved 全文検索エンジン • Namazu • 日本で古くから普及していた全文検索エンジン • Lucene系 • Lucene • Java実装の全文検索ライブラリ • Solr • Luceneで構築された全文検索エンジン • AWS CloudSearchで採用 • Erasticsearch • Lucene基盤の分散検索エンジン • AWS Erastisearch Serviceで採用 • Senna系 • Senna • Tritton(MySQLバインディング) • Groonga • Sennaの後継検索エンジン • Mroonga(MySQLバインディング) SQLのMATCH〜AGEINST 構文で検索可能 RDSでは未サポート ログ分析のプラット フォームとして主に 利用されている Amazon CloudSearch Amazon Elasticsearch Service
  • 56. © 2016 for LANCERS, inc All Rights Reserved 日本語の形態素解析器 • JUMAN • 形態素解析器の先駆け • 京大で開発 • Kakashi • Namazuで主に採用 • Chasen • JUMANから派生した • Namazuで主に採用 • Mecab • C++実装(各言語の派生バージョンあり) • Namazu、Lucene、Solr等で幅広く採用 • MySQL 5.7ではMecabプラグインをサポート • Kuromoji • Java実装 • Solr、Erasticsearchで主に採用 SQLのMATCH〜AGEINST 構文で検索可能 RDSでは未サポート
  • 57. © 2016 for LANCERS, inc All Rights Reserved CloudSearchのメリット • EC2でSolrを構築するのに比べて • インストール作業不要 • Dashboardから新規ドメインを作成 • 自動スケールアウト • 自動スケールアップ • Multi AZ機能をサポート • 冗長性を確保可能 スケールの設定 MultiAZの設定 Indexの設定
  • 58. ご清聴ありがとうございました! ランサーズ株式会社 インフラエンジニア 金澤 裕毅 [Kanazawa Yuki] 「時間と場所にとらわれない、新しい働き方を創る」 [2016/11/12 JAWS UG 山形] http://www.lancers.jp/