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.

メルカリにおける自動化への取り組み (automation-night2 LT)

1,417 views

Published on

Automation-Night #2 LT資料です。

Published in: Technology
  • Be the first to comment

メルカリにおける自動化への取り組み (automation-night2 LT)

  1. 1. author: SRE: - "k-oguma" メルカリにおける自動化への取り組み Automation-Night #2 LT資料
  2. 2. % whoami • メルカリSREチームに 2017/12 join • 弊社メルカリ創業者の一人、山田進太郎 がウノウ(2001/8設立) という以前立ち上げていた会社でウノウラボ(2006/04オープン) ブログという技術情報を共有してくれた神ブログがありました。 当時それには大変お世話になったエンジニア、学生だった人もい るのではないでしょうか。 • 私もその一人です
  3. 3. 当時あった ウノウラボのブログのコンセプト ■皆が自由に集まる「場」を作る わたしがやりたいのは「皆に使ってもらえるサービスを作ること」。たとえ作っても、使ってもらえない のなら意味はないのです。 ウノウラボでは、通常では社内ノウハウになるものでも公開してしまうことがあります。ノウハウを社 外に出しても別に構わない。もともとオープンソースソフトウェアを使わせてもらって仕事をしているの で、コミュニティに還元できることはしたいと思っています。ウノウラボ、エンジニアにとって最初は本 当につらかったと思います。人数も少なかったので、毎週のように投稿する順番が回ってきて、極限 までアウトプットを出し続けた感じでしょうか。初めはあまり反応がなかったけれど、こういう試みは誰 もやっていなかったので、徐々に注目されるようになりました。いまではいろいろな人に見てもらえる ようになったし、優秀なエンジニアのリクルーティングにも貢献しています。 http://jibun.atmarkit.co.jp/ljibun01/rensai/leader/30/01.html@IT 自分戦略研究所アーカイブスより抜粋
  4. 4. % whoami • 元ゲーム会社のインフラエンジニアで主に以下を担当していました • Provisioning, Deployの自動化 • ゲーム、Web環境 • SCM/CVS (SVN, Git)環境構築運用 • Testの自動化、CI環境構築/運用 • その他社内基盤設計構築運用、NW設計構築運用 • インフラ/情報セキュリティ • etc
  5. 5. 本題
  6. 6. tech.mercari.com で、`自動化` を検索してみた http://tech.mercari.com/search?q=%E8%87%AA%E5%8B%95%E5%8C%96
  7. 7. 33件あった
  8. 8. % URL1=http://tech.mercari.com/search?q=%E8%87%AA%E5%8B%95%E5%8C%96;URL2=$(curl -s "$URL1" | grep -A 1 pager-next | awk -F" '/href/{print $2}');curl -s {$URL1,$URL2} | grep 'class="entry-title-link"' | awk -F> '{print $2}' | awk -F < '{print $1}' メルカリQA-SETの組織づくりについてまとめてみました 社内の面倒な手作業はZapierにやらせようーーノンプログラマーでも業務自動化ができるツールを導入してみて カラクリ メルカリ カウル - iOS版アプリの週1アップデートを支えるAutomationとKarakuri 次世代Continuous DeliveryプラットフォームであるSpinnakerを体験してみよう! 出社したら自動でSlackに通知する US版Mercariのリニューアルと今後 (サーバサイド) 自動交渉AIから見る&quot;AI同士がつながる世界&quot; メルカリの分析チームとは?その全ての疑問にひとつひとつ答えます 技術書を作るための技術スタック メルカリのQAエンジニアがテスト自動化に挑んだ話 Firebase Dev Summit 2017に参加してきました #FirebaseSummit 退屈なブラウザ作業はSeleniumにやらせようーーはじめてでもできるブラウザ操作自動化 JIRAで使えるQA用テスト管理ツール「Zephyr」と「TestFLO」を試してみた Souzoh iOS Talkを開催しました #souzohios 第1回 Mercari Tech Conf を開催しました メルカリQA-SETチームが進めているテスト自動化についての質問まとめ メルカリの技術を体験する7つのブース! 〜Mercari Tech Conf 2017の楽しみ方〜 WEB+DB PRESS Vol.100の特集記事は「メルカリ開発ノウハウ大公開」です! 「hbstudy#75 SRE大全:メルカリ編」で登壇しました SpinnakerによるContinuous Delivery メルカリQA-SETチームが考えているQAやテストの未来のはなし GolangでSlack Interactive Messageを使ったBotを書く 「Be Professional Day」でちょっと便利なQAテストツールを作った話 Appiumの新しいGUIツール、appium-desktopがよくなってきてるぞう モダンなテスト管理プロセスのためにテスト管理ツール3つを比較検討したはなし QAのためのChatOps!テストデータを作成するSlackコマンドを作ってみた 監視だけじゃない!デプロイにMackerelを使う話 3つのnginxをうまく使い分けよう〜nginx、OpenResty、Tengine〜 Widebullet〜API Gateway with JSON-RPC〜 インフラチーム改め Site Reliability Engineering (SRE) チームになりました nginx-build〜nginxのビルドプロセスを自動化〜 cachectld〜無駄なページキャッシュの削除を自動化〜 iOSアプリのリリースフロー自動化ツールfastlaneのmeetupに通訳で参加しました タイトルだけ引っこ抜いてみた
  9. 9. どのような傾向があるか
  10. 10. 機械からみたメルカリの自動化の傾向 ( 今回scrapingなし、ブログタイトルだけ) • 分類 • Computers & Electronics/Programming Confidence • 0.8299999833106995 • Science/Computer Science Confidence • 0.75 • 強調された文字列 • QA, Zapier, Continous, version application Support Automatic WORK_OF_ART, business automation OTHER
  11. 11. なるほどわからん。
  12. 12. メルカリにおける自動化への取り組みの全体像や 最近の事例をLTの短い時間でコンパクトにまとめて伝え (ry
  13. 13. 普段の我々SREの業務の流れの一例 1.出勤 1.Wi-Fiを利用した自動出勤打刻がされる 2.出社しない人は、slackで `bot hello` と書くとchatopsで自動出勤打刻される 2.タスク管理をする 1.slack で `add todo <やることを書く>` と書くとJIRAに自動的にTodoを追加 3.業務を遂行する 1.Codingが終わり、PRを出す 2.その後はCI/CD 1.PRがTriggerでCIがテストやBuildが自動的に実行される 2.CodeReviewは人間の目と、ものによってはReviewも一部自動化 3.Merged 4.CDがDeployを実行 4.退勤時は出勤と同じく自動で打刻
  14. 14. アカウント作成の自動化例 Wi-Fi打刻 1.必要事項を登録 (スマホのMacアドレスなど) 2.自動的にWi-Fi打刻が出来るようになる VPNアカウント作成 3.必要条件を満たした人が、slackで `account create vpn` と書く 4.自動的にVPN Clientのprofileが配布される
  15. 15. アカウント作成の自動化例 SSH userの作成 1.rpmbuild用のrepositoryとprovisioning 用のrepositoryに PullRequest(PR) を出す 1.この認証情報はGithubに登録されているSSH公開鍵を利 用してrpmbuildされる 2.Reviewが通り、Merged 3.必要なサーバ群、Cluster等に自動的にSSH userが作成さ れる
  16. 16. っていうのは、私が入る前から出来ていました! ここで会場から笑いが巻き起こる
  17. 17. Deploybotや、Wi-Fi打刻などについて詳しい情報は以下で! Mercariサーバサイドデプロイ: 現在と未来(Mercari Tech Conf 2017) by siroken3 監視だけじゃない!デプロイにMackerelを使う話 by @siroken3 大人のスタートアップは大人のリリースができる。そう、ChatOpsならね。 by siroken3 出社したら自動でSlackに通知する by @masartz
  18. 18. 全体的には、こんなことやっています BPD合宿の開催!! テーマは自動化!!
  19. 19. BPD == 'Be Professional Day'
  20. 20. BPDは、毎回合宿スタイルというわけではありません。 自分たちが作りたいものを作る時間 Be Professional Days が開催されました 過去に開催したBPDのブログ記事
  21. 21. BPD合宿
  22. 22. BPD合宿 Theme | 開発テーマ ”Karakuri Days” Focus Automation
  23. 23. Judgment Criteria | 選考基準 1. How much convenience it can provide(便利になった度) Has high practicality and can help improve our services or facilitate smoother workflow 実用性が高く、アウトプットを通じてよりサービスの進化や業務の円滑化などの成果に つながっているか? 2. Level of technological difficulty(技術的難易度) Does the realized product solve some sort of technical problem at a high difficulty level? 実現したアウトプットがに技術的課題を解決し、難易度の高いチャレンジをしているか? 3. Forward-thinking / GoBold Degree (先進性/GoBol度) Is it a “GoBold” challenge aiming to create new value? 未だ見ぬ成果を目指しGoBoldな話題性の高いチャレンジとなっているか? BPD合宿
  24. 24. BPD合宿 開発中の様子
  25. 25. BPD合宿 スケジュール一部抜粋 2泊3日で各々開発開始!! 開始から28時間後の 2日目の18時に締め切り。 夜には皆で飲みの開始! 少なくても実質10時間以上はやりたい開発に集中できる!! 2/27(火)BPD 1日目 12:00 到着 チェックイン 13:00 ランチ 14:00 ブリーフィング BPD開始 19:00 夕食(立食) 2/28(水)BPD 2日目 08:30 朝食 13:00 昼食 18:00 発表希望者の提出締め切りと発表者の選定開始 ※成果物(URLやGithub)を貼り付ける ※希望者多数の場合は抽選 ※発表用の資料作成は任意 19:00 BPD発表会 & 夕食(立食)
  26. 26. BPD合宿 発表会
  27. 27. BPD合宿 で主に作られたもの • 業務効率化してくれるツール • Slack関連 • Bot • Chatops • Channel • 全てのChannelから人気のメッセージを検知して投稿してくれるChannel • Facebook Messenger Auto-Reply Bot • ロボホンを使ったもの • 個人が便利になるツール • 引越し先物件を予約 • 予約が取りづらいお店の予約空きを検知して通知 • リマインダーツール • デザイン関連 • サーチ • 機械学習
  28. 28. BPD合宿
  29. 29. BPD合宿 で私が作ったもの DB Migration tool 目的: 業務効率化, 改善を行いたい • DB Migration作業をするのはSRE • SRE以外が触れられない本番環境が存在する (IT統制) • なぜツールが必要? • DBが分散している • 確認および証跡作業は毎回同じ。時間もかかる • リージョンごとにDBが別れている
  30. 30. BPD合宿 で私が作ったもの DB Migration tool Ruby の rake db:migrate みたいなものではなくて、以下のようなもの Migration作業を開始する準備をするツール (合宿中に作れたのは以下まで) 1.Github PRの内容を見てmigration用のSQLを検知する 2.その対象のtableを持つDB Server を確認 3.実際にmigrationで流すsql fileを準備しておく 4.対象のDB ServerにMySQLで接続し、Slave ではないことを確認
  31. 31. BPD合宿 で私が作ったもの DB Migration tool そのGithub repositoryをお見せすることが出来ないので、詳細を説明します
  32. 32. BPD合宿 で私が作ったもの (内容の詳細) 1.[準備] makeコマンドで、ツールが使えるように環境構築する 2.Github PRの内容を見てmigration用のSQLを検知する 3.SQLの内容をチェック (CREATEなのかALTERなのかINSERTな のかなど)し、軽く構文チェックを行う
  33. 33. BPD合宿 で私が作ったもの (内容の詳細) 4.そのmigration対象のtable名を取得する • この時のWebAPI Client用に DEBUG mode, NO_CACHE modeも一応実装 5.あとで使うためにそのPRに含まれている対象のsql fileをgit- fetch, git-checkoutしておく 6.mysqlにつなぎにいって SLAVEではないかなどを確認する
  34. 34. 使ったもの • Lang • Ruby • Golang • Shell script (bash) • Github APIv3 (REST API) • GraphQLで実装したかった!! • 当日いきなり試したけど、file/directory名の検査がつらいから時間的にも厳しそうで途中 で断念 • 以下に相当するものがv4のGraphQLで現在無いことが分かった • https://developer.github.com/v3/repos/contents/#response-if-content-is-a- file • https://developer.github.com/v3/repos/contents/#response-if-content-is-a- directory
  35. 35. BPDでやれて良かったこと • 新しいことに挑戦ができた • Golangをあまり書いたことがなかったので、チャレンジで きる機会が持てた • Github API v4のGraphQLに触れられた
  36. 36. 今後の予定 • 追加機能 • Logger • DROP/TRUNCATE文のときは一旦RENAME文に変換 • Validation • Reviewer • 正しいCHARSETになっているかなど • etc
  37. 37. 総じて言えることは楽しい!!! 自動化楽しい!! 自動化によって時間ができて、また自動化をするw!
  38. 38. でも自動化するときにちゃんと考えておきたいこと。守りたいこと。 • 面倒でも必要最低限のDocは書く (自動生成でも良い) • README, Command help, Src comment • src嫁っていう投げやりなだけでは良くない • 誰かと一緒に働いている。読める言語、読めない言語は人それぞれ • 読めても読む時間が掛かる。 #<= たった1,2行説明があれば良かっただけなのに • 可読性が悪いコードも0ではないはず • 他の人がメンテしづらい、理解しづらいものだったら属人化する • その自動化は個人用? 他の人にも使ってもらえている? • 2度以上やることは自動化を考える • けど、3回目はあるの? • 誰得?
  39. 39. でも自動化するときにちゃんと考えておきたいこと。守りたいこと。 皆に喜ばれる自動化を考えよう
  40. 40. メルカリでは、一緒に働いてくれる人を広い職種で大募 集しています。(本気)
  41. 41. ご静聴ありがとうございました。

×