Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

5億件以上の求人情報を蓄積する汎用クローラエンジンのアーキテクチャと運用

1,721 views

Published on

「クローリングのスペシャリストが語る、クローラー運用の裏側!#crawler_ops」に登壇した際の資料です。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

5億件以上の求人情報を蓄積する汎用クローラエンジンのアーキテクチャと運用

  1. 1. © Goalist Co.,Ltd. All rights reserved. 5億件以上の求人情報を蓄積する 汎用クローラエンジンのアーキテクチャと運用 株式会社ゴーリスト 鈴木 隆宏 2016/08/21 #crawler_ops
  2. 2. © Goalist Co.,Ltd. All rights reserved. INDEX 1.自己紹介 2.会社紹介 3.クロール基盤 概要 4.クロール基盤 アーキテクチャ 5.クロール基盤 運用 6.今後の課題 2
  3. 3. © Goalist Co.,Ltd. All rights reserved. 自己紹介 3
  4. 4. © Goalist Co.,Ltd. All rights reserved. 名前 - 鈴木 隆宏(すーざん、すずたか、@_suzutt) 経歴 - 2016年6月にゴーリストに入社 - クローラ保守・運用 - Webサービス開発 - 以前はERPパッケージベンダーでパッケージ開発・保守 4
  5. 5. © Goalist Co.,Ltd. All rights reserved. 会社紹介 5
  6. 6. © Goalist Co.,Ltd. All rights reserved. 社名 株式会社ゴーリスト(Goalist Co.,Ltd) 住所 東京都千代田区神田須田町1‐18 アーバンスクエア神田ビル2階 設立 2011年1月5日 資本金 1,000 万円 役員 代表取締役 CEO 加藤 龍 取締役 CTO 入倉 康輔 取締役 COO 林 慶宗 事業内容 Airbnb・民泊運用データ分析・提供サービス「BnBInsight」 求人マーケットの戦略立案に特化した3C分析サービス「3Chart」 アポイントの獲得支援に特化したテレアポ管理ツール「KeyTalk」 高精度営業リスト生成ツール「Listlus」 求人情報アラートサービス「Reagle」 HRに特化したデータベース&ニュースメディア「HRog」 6
  7. 7. © Goalist Co.,Ltd. All rights reserved. クロールの目的は? 7
  8. 8. © Goalist Co.,Ltd. All rights reserved.8
  9. 9. © Goalist Co.,Ltd. All rights reserved. 求人データ集計サービス 9
  10. 10. © Goalist Co.,Ltd. All rights reserved. 人材業界向けオウンドメディア 10
  11. 11. © Goalist Co.,Ltd. All rights reserved. 民泊データ分析 11
  12. 12. © Goalist Co.,Ltd. All rights reserved. 導入企業様(一部抜粋) 東京大学 100社を超える人材会社や、事業会社の採用担当者、研究機関にご利用いただいております。 12
  13. 13. © Goalist Co.,Ltd. All rights reserved. 取得サイト数 約150サイト サービスを支える独自クロール基盤 取得総件数 5億件超 月間取得求人件数 2,000万件 稼働中サーバー台数 160台 マスタDB件数 900万件 最大取得項目数 50項目 13
  14. 14. © Goalist Co.,Ltd. All rights reserved.14 サービスを支える独自クロール基盤
  15. 15. © Goalist Co.,Ltd. All rights reserved. ここから本題 15
  16. 16. © Goalist Co.,Ltd. All rights reserved. クロール基盤 概要 16
  17. 17. © Goalist Co.,Ltd. All rights reserved. クロール基盤開発の主要件 17
  18. 18. © Goalist Co.,Ltd. All rights reserved. 18
  19. 19. © Goalist Co.,Ltd. All rights reserved. few people 19
  20. 20. © Goalist Co.,Ltd. All rights reserved. クロール基盤開発の主要件 1. 最小限の開発・運用工数で多くの求人媒体に対応すること 2. エンジニア以外のメンバーでも運用可能であること 20
  21. 21. © Goalist Co.,Ltd. All rights reserved. HOW? 21
  22. 22. © Goalist Co.,Ltd. All rights reserved. サイトごとに異なるクロール・スクレイプ処理のルールを 設定により吸収する方式を採用 22
  23. 23. © Goalist Co.,Ltd. All rights reserved. 1つのエンジン(=ソースコード) 23
  24. 24. © Goalist Co.,Ltd. All rights reserved. 媒体ごとに設定ファイル 24
  25. 25. © Goalist Co.,Ltd. All rights reserved. 設定ファイルとEC2インスタンスの用意のみで 様々な求人サイトへ対応可能 EC2 instance config files 25
  26. 26. © Goalist Co.,Ltd. All rights reserved. プログラミング不要 エンジニアではないメンバーでも取得が可能 26
  27. 27. © Goalist Co.,Ltd. All rights reserved. クロール基盤 アーキテクチャ 27
  28. 28. © Goalist Co.,Ltd. All rights reserved. EC2 instance contents jar scraped files Amazon S3 ・ ・ ・ start Amazon RDS job results config files 28 scheduler
  29. 29. © Goalist Co.,Ltd. All rights reserved. EC2 instance contents jar ・・・ scraped files Amazon S3 ・ ・ ・ scheduler start Amazon RDS job results config files 29
  30. 30. © Goalist Co.,Ltd. All rights reserved. Amazon S3 ・ ・ ・ Amazon Redshift 30 format & deliver
  31. 31. © Goalist Co.,Ltd. All rights reserved. 言語 Java(JSoup/WebDriver) 運用規模 150サイト/160EC2インスタンス S3容量 約8TB AWS運用コスト 約20万円/月 運用工数 約20h/週 31
  32. 32. © Goalist Co.,Ltd. All rights reserved. AWSを徹底利用 AWS Lambda Amazon EC2 Amazon S3 Amazon CloudFront Amazon DynamoDB Amazon Redshift Amazon API Gateway Amazon RDS 32
  33. 33. © Goalist Co.,Ltd. All rights reserved. クロール基盤 運用 33
  34. 34. © Goalist Co.,Ltd. All rights reserved. クロール設定ファイルについて 34
  35. 35. © Goalist Co.,Ltd. All rights reserved. 「検索結果ページ」と「詳細ページ」からなる サイトのクロールに特化 35
  36. 36. © Goalist Co.,Ltd. All rights reserved.36 検索結果ページ 詳細ページ
  37. 37. © Goalist Co.,Ltd. All rights reserved. 設定する内容 1.ページングルール 2.詳細ページのURL取得ルール 37
  38. 38. © Goalist Co.,Ltd. All rights reserved. ページングルール 38 https://www.google.co.jp/#q=goalist&page=1 https://www.google.co.jp/#q=goalist&page=2 1ページ目 2ページ目 ※URLは架空です。
  39. 39. © Goalist Co.,Ltd. All rights reserved. ページングルール 39 300 件 (0.30 秒) #resultStats 1ページあたり3件の 詳細ページURL
  40. 40. © Goalist Co.,Ltd. All rights reserved. 詳細ページのURL取得ルール 40 div.g > div:nth-child(1) > h3:nth-child(1) > a:nth-child(1)
  41. 41. © Goalist Co.,Ltd. All rights reserved. nextPagePreStr=&page= nextPagePostStr= searchResultCountSelector=#resultStats searchResultCountPreStr= searchResultCountPostStr=件 searchResultCountByPage=3 detailPageUrlSelector=div.g >div:nth-child(1) > h3:nth-child(1) > a:nth-child(1) 41 ページングルール 詳細ページのURLルー ル 設定ファイル例
  42. 42. © Goalist Co.,Ltd. All rights reserved. サイト改変があった場合、設定ファイルのみ修正すればOK 42
  43. 43. © Goalist Co.,Ltd. All rights reserved. 非エンジニアでも運用可能 43
  44. 44. © Goalist Co.,Ltd. All rights reserved. スクレイプについても同様 (`・ω・´ )キリッ 44
  45. 45. © Goalist Co.,Ltd. All rights reserved. 運用のポイント 45
  46. 46. © Goalist Co.,Ltd. All rights reserved. 運用コストの最小化 インスタンス起動と同時にクロール開始 取得が終わると自動で停止 46
  47. 47. © Goalist Co.,Ltd. All rights reserved. サイト改変に素早く対応 ジョブ実行結果をChatWorkに随時通知 Amazon EC2 47
  48. 48. © Goalist Co.,Ltd. All rights reserved. 2ヶ月間、運用してみた感想 48
  49. 49. © Goalist Co.,Ltd. All rights reserved. ノンプラグラミングでクロールできるため、 サイト改変対応が楽 49 ◎
  50. 50. © Goalist Co.,Ltd. All rights reserved. ある程度のWeb知識があれば、2,3週間くらいで、 ほぼ一人で運用できるようになる 50 ◎
  51. 51. © Goalist Co.,Ltd. All rights reserved. サイトによっては設定のみで スクレイプするのは辛い (繰り返し処理、条件分岐の設定も追加したい) 51 △
  52. 52. © Goalist Co.,Ltd. All rights reserved. 設定ファイル変更のたびに インスタンスを起動するのが少し面倒 52 △
  53. 53. © Goalist Co.,Ltd. All rights reserved. 今後の課題 53
  54. 54. © Goalist Co.,Ltd. All rights reserved. 汎用化 データの高精度化 54
  55. 55. © Goalist Co.,Ltd. All rights reserved. インフラ構成の汎用化 55
  56. 56. © Goalist Co.,Ltd. All rights reserved. 管理画面の追加 56
  57. 57. © Goalist Co.,Ltd. All rights reserved. 動的ページのクロール汎用化 57
  58. 58. © Goalist Co.,Ltd. All rights reserved. より汎用的なサイト構造に対応するクローラエンジンへ 58
  59. 59. © Goalist Co.,Ltd. All rights reserved. 文字列処理(自然言語処理)の精度向上、機械学習の採用 59
  60. 60. © Goalist Co.,Ltd. All rights reserved. 次期バージョンのクローラ開発へ より汎用的で、誰もが簡単に利用できる クローラを作りたい... 60
  61. 61. © Goalist Co.,Ltd. All rights reserved. 新領域のビックデータサービスを 開発してくれるエンジニアを絶賛募集中です! 開発エンジニア絶賛募集中! 61
  62. 62. © Goalist Co.,Ltd. All rights reserved. Thanks for your attention! 62

×