Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クラウドソーシングLancersを支える技術と最近行ったこと@AWS User Group –...

kenz
May 20, 2014

クラウドソーシングLancersを支える技術と最近行ったこと@AWS User Group – Japan 東京勉強会

kenz

May 20, 2014
Tweet

More Decks by kenz

Other Decks in Programming

Transcript

  1. © 2014 for LANCERS, inc All Rights Reserved 自己紹介(基本情報) 氏名

    田邊 賢司 世代 1979年生まれ ・第一期(2002年~2009年) ・ 業務系基幹システム開発 ・ メガバンク系、生保損保 ・第二期(2010年~2014年03月) ・Q&Aシステム開発 ・ソーシャルアプリ開発 ・ソーシャルゲーム開発 ・第三期(2014年04月~死ぬまで) ・ランサーズにJOIN 略歴 1 https://www.facebook.com/kenz.tanabe
  2. © 2014 for LANCERS, inc All Rights Reserved 会社紹介(概要) 2

    ランサーズ株式会社 設立 事業内容 ビジョン 2008年4月1日 クラウドソーシングサービス「Lancers」の運営 「時間と場所に囚われない新しい働き方の創出」 依頼数ベースで 年間300%成長中 月間依頼数推移
  3. © 2014 for LANCERS, inc All Rights Reserved クラウドソーシングとは? •

    米国で2000年頃に誕生したインターネットサービスの一つ • 仕事を頼みたい人や企業と、自分のスキルや労働力を売りたい人を ネット上でマッチングすること 満員電車にサヨナラする方法 ~時間と場所にとらわれない新しい働き方~ 秋好 陽介(著) Cloud(雲)ではなく Crowd(群衆) 3
  4. © 2014 for LANCERS, inc All Rights Reserved サービス紹介「Lancers」 4

    日本初+国内最大級の オンライン完結型アウトソーシングサービス 依頼数 約33万件 依頼総額 約263億円 会員数 約32万人 依頼案件の例 • ロゴ、イラスト • Webシステム、スマホ • データ入力、記事作成
  5. © 2014 for LANCERS, inc All Rights Reserved 仕事タイプに合わせて選べる3つの依頼方式 5

    歯科医院のロゴマーク作成 提案:32件 納期:7日間 発注額:5万円 特定地域不動産データ収集 1作業:5円 件数:1,400件 納期:10日 映画データの情報収集 1作業:25円 件数:100件 納期:3日 FLASHのゲーム制作 提案:9件 納期:3か月 発注額:100-500万円 美容室ホームページの制作 提案:8件 納期:1か月 発注額:10-50万円 Webサービスのネーミング 提案:305件 納期:7日間 発注額:2万円 【コンペ方式】 【プロジェクト方式】 【タスク方式】 ロゴ・ネーミング・バナー等 Web制作・アプリ開発等 記事/コラム・データ収集等
  6. © 2014 for LANCERS, inc All Rights Reserved ランサーズの会員詳細 7

    毎月報酬を得ている 4,000人 生活できる報酬を得ている 200人
  7. © 2014 for LANCERS, inc All Rights Reserved ランサーズを支える技術 9

    ▪ バージョン管理、CIツール ▪リリース FabricでApp全台に一括適用 (Python製の一括デプロイツール) デプロイ後にAPIでリリース 情報を自動通知 Nanapiさんの ChatWorkPluginを独自拡張
  8. © 2014 for LANCERS, inc All Rights Reserved やったことその1:プレAWS環境 •

    スポットインスタンスで24時間稼働 • t1.microの料金 • オンデマンドインスタンス • $0.026/h(¥1,935/月) • リザーブドインスタンス(重度1年) • $0.016/h(¥1,191/月、初期費用¥2,237) • スポットインスタンス • 約$0.0031/h(約¥231/月) • スポットインスタンスのPricing History 毎年2月ごろ高騰する傾向 (大学の研究室等が利用)
  9. © 2014 for LANCERS, inc All Rights Reserved プレAWS環境 •

    スポットインスタンスで24時間稼働 • Web操作では固定プライベートIPアドレスを指定できない • AWS CLIで起動 • 入札価格より高くなるとTerminateされる • 余裕をもって設定 • スポットインスタンスのリクエストコマンド aws ec2 request-spot-instances --spot-price "0.108" --instance-count 1 --type "one-time" --launch- specification "{ ¥ ¥"ImageId¥":¥"ami-xxxxxxxx¥", ¥ ¥"InstanceType¥":¥"t1.micro¥", ¥ ¥"NetworkInterfaces¥":[{ ¥ ¥"DeviceIndex¥":0, ¥ ¥"SubnetId¥":¥"subnet-xxxxxxxx¥", ¥ ¥"PrivateIpAddresses¥":[{ ¥ ¥"PrivateIpAddress¥":¥"10.0.x.xx¥", ¥ ¥"Primary¥":¥"true¥" ¥ }] ¥ }] ¥ }" 入札額を高めに設定 プライベートIP アドレスを設定
  10. © 2014 for LANCERS, inc All Rights Reserved やったことその2:Appサーバーのスケールアップ •

    年300%のアクセス増でAppサーバーの負荷が増大 • c3.largeも同時に検討 • m1.mediumとほぼ同価格でECUは3.5倍、vCPUが2個 m1.mediumと月額 500円しか違わない
  11. © 2014 for LANCERS, inc All Rights Reserved • c3.largeの2個のCPUを均等に使えるか検証

    • Apacheのmod_phpはpreforkのみ推奨 • worker(スレッド)は非推奨 • apache benchで実際に確認 Appサーバーのスケールアップ top - 17:55:56 up 5 min, 1 user, load average: 0.04, 0.01, 0.00 Tasks: 127 total, 12 running, 115 sleeping, 0 stopped, 0 zombie Cpu0 : 77.6%us, 6.9%sy, 0.0%ni, 12.5%id, 0.0%wa, 0.0%hi, 3.1%si, 0.0%st Cpu1 : 80.9%us, 4.6%sy, 0.0%ni, 13.3%id, 0.0%wa, 0.0%hi, 1.2%si, 0.0%st Mem: 3850064k total, 594148k used, 3255916k free, 12640k buffers Swap: 2097144k total, 0k used, 2097144k free, 82828k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1021 apache 20 0 756m 50m 25m R 19.2 1.4 0:01.52 httpd 1022 apache 20 0 756m 50m 25m R 18.8 1.4 0:01.43 httpd 1026 apache 20 0 756m 50m 25m R 18.2 1.4 0:01.44 httpd 1019 apache 20 0 757m 51m 25m R 17.8 1.4 0:01.33 httpd 1027 apache 20 0 756m 49m 25m R 17.8 1.3 0:00.99 httpd 1020 apache 20 0 758m 52m 25m R 17.5 1.4 0:01.42 httpd 1411 apache 20 0 759m 53m 25m R 17.5 1.4 0:01.36 httpd 1025 apache 20 0 772m 73m 32m R 17.2 1.9 0:01.84 httpd 1408 apache 20 0 757m 52m 25m R 17.2 1.4 0:01.44 httpd 1023 apache 20 0 756m 52m 27m R 16.8 1.4 0:01.42 httpd 972 haproxy 20 0 23140 1700 484 R 7.3 0.0 0:00.45 haproxy $ ab -n 100 -c 10 http://xxxx.lancers.jp/
  12. © 2014 for LANCERS, inc All Rights Reserved Appサーバーのスケールアップ •

    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> プロセスをこまめに削 除してメモリを確保 移行前 移行後
  13. © 2014 for LANCERS, inc All Rights Reserved • プレ環境など、最悪一時的に使えなくなってもあまり影響のない環境に

    ついては、スポットインスタンスを有効活用することで、コストをおさ えることができる。 • 常に最新のインスタンスのウォッチが重要。新しいインスタンスの発表 などの情報にはアンテナをはりましょう。きっと幸せになれます。 • スケールアップ時にはチューニングを行うと更にパフォーマンスを引き 出せることが多いです。単純にスケールアップするだけではなく、最適 なチューニングも同時に必ず考えましょう。 今日のまとめ
  14. © 2014 for LANCERS, inc All Rights Reserved エンジニア積極採用中 18

    • 働き方を変えたい方 • 最新の技術が好きな方 • 世界に打って出たい方 お気軽にご連絡下さい! [email protected]
  15. ご清聴ありがとうございました [2014/05/20 AWS User Group – Japan 東京勉強会] ランサーズ株式会社 CTO

    田邊 賢司 [Tanabe Kenji] 「時間と場所に囚われない新しい働き方の創出」