Your SlideShare is downloading. ×
ドリコムを支える課金ライブラリを支えるJenkins
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

ドリコムを支える課金ライブラリを支えるJenkins

852
views

Published on

16新卒エンジニア勉強会でしゃべった資料です(公開用)

16新卒エンジニア勉強会でしゃべった資料です(公開用)

Published in: Technology

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
852
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Copyright Drecom Co., Ltd. All Rights Reserved. ドリコムを支える課金ライブラリを 支えるJenkins 2015/03/23 16新卒エンジニア勉強会 @sue445
  • 2. Copyright Drecom Co., Ltd. All Rights Reserved. @sue445 ● 福岡生まれ福岡育ち ● 福岡教育大学卒 ● 2009年4月~: 某SI系企業新卒入社(前職) ● 2012年7月~: ドリコム 今のお仕事 ● iOS/Androidアプリの課金ライブラリのメンテ ● 社内ツール、社内ライブラリ開発 ● サーバサイド全般(アプリ~インフラまで横断的に) ● PO (Precure Ojisan) 自己紹介
  • 3. Copyright Drecom Co., Ltd. All Rights Reserved. ● フルボッコヒーローズの事前登録ガチャ(フライング ゲットガチャ)開発 ○ ドリコムのフライングゲットガチャの舞台裏 #ksgstudy - くりにっき ○ http://sue445.hatenablog. com/entry/2014/07/12/204741 ● ドリコムAdventCalendarの主犯 ○ ドリコム Advent Calendar 2014 - Adventar ○ http://www.adventar.org/calendars/518 その他やってたこと
  • 4. Copyright Drecom Co., Ltd. All Rights Reserved. 【今期の嫁】キュアトゥインクル
  • 5. Copyright Drecom Co., Ltd. All Rights Reserved. 今期の黄色は肩背中出し!!!!
  • 6. Copyright Drecom Co., Ltd. All Rights Reserved. 【本妻】キュアピース
  • 7. Copyright Drecom Co., Ltd. All Rights Reserved. エンジニアの仕事机
  • 8. Copyright Drecom Co., Ltd. All Rights Reserved. エンジニアの仕事机
  • 9. Copyright Drecom Co., Ltd. All Rights Reserved. エンジニアの仕事机 机には多数の技術書
  • 10. Copyright Drecom Co., Ltd. All Rights Reserved. エンジニアの仕事机
  • 11. Copyright Drecom Co., Ltd. All Rights Reserved. エンジニアの仕事机 全社員サブディスプレ イ支給
  • 12. Copyright Drecom Co., Ltd. All Rights Reserved. ● Jenkinsとは? ● ドリコムでのJenkinsの使われ方 ● dpoint(課金ライブラリ)について ● dpointでのJenkins活用事例 ● おまけ ● まとめ Agenda
  • 13. Copyright Drecom Co., Ltd. All Rights Reserved. ● http://jenkins-ci.org/ ● Javaで書かれたオープンソース継続的インテグレーション ツール(Wikipediaより) ○ 継続的インテグレーション = 開発時の品質改善や自動 化推進 ● プラグインでいろいろ拡張できる Jenkinsとは?
  • 14. Copyright Drecom Co., Ltd. All Rights Reserved. 会社全体で1つのJenkins使っているというわけではなく、アプリ ごとに野良Jenkinsが乱立しているので全部は把握していない 具体例 ● 開発中アプリのテスト ● 開発サーバへのデプロイ ● テストアプリの配信 ● ライブラリのドキュメントの作成 ● etc ドリコムでのJenkinsの使われ方
  • 15. Copyright Drecom Co., Ltd. All Rights Reserved. ● iOS/Androidのアプリの中間ポイントシステム ○ 魔法石やダイヤをサーバで管理する仕組み ● 2013年以降に出たアプリで全部使われているはず ○ ガルロワ、フルボッコなど ● 詳細は「ドリコムAdventCaledar」で検索 ○ http://sue445.hatenablog. com/entry/2014/12/01/000000 dpoint(課金ライブラリ)について
  • 16. Copyright Drecom Co., Ltd. All Rights Reserved. ● Rubyで書かれているライブラリ(gem) ● 開発はほぼ僕1人 dpoint(中間ポイントシステム)について
  • 17. Copyright Drecom Co., Ltd. All Rights Reserved. 開発はほぼ僕1人(でした) 重要なのでもう一度
  • 18. Copyright Drecom Co., Ltd. All Rights Reserved. Σ(゚Д゚) 重要なのでもう一度
  • 19. Copyright Drecom Co., Ltd. All Rights Reserved. ● 機能改修 ● 負荷対応、パフォーマンスチューニング ● AppleやGoogleの課金の仕組みが変わった時の対応 ● その他諸々の緊急対応 ● まともにやってると1人じゃ絶対回せない ○ バグがあるとライブラリを導入しているアプリ全体に影響 するので絶対にバグは出せない ○ 課金がバグってると会社は誤った売上を計上することに なるので超シビア ○ 今はメンテナ増えたけど1年以上僕1人で面倒を見てた dpointでやってること
  • 20. Copyright Drecom Co., Ltd. All Rights Reserved. よろしい
  • 21. Copyright Drecom Co., Ltd. All Rights Reserved. ならば自動化だ!
  • 22. Copyright Drecom Co., Ltd. All Rights Reserved. ● 今日話すこと ○ GitLabにpushされたbranchの自動テスト ○ 静的解析 ● 今日話さないこと ○ ドキュメント生成 自動化していること
  • 23. Copyright Drecom Co., Ltd. All Rights Reserved. GitLabへpushされたbranchの自動テスト git push
  • 24. Copyright Drecom Co., Ltd. All Rights Reserved. GitLabへpushされたbranchの自動テスト POST webhook
  • 25. Copyright Drecom Co., Ltd. All Rights Reserved. GitLabへpushされたbranchの自動テスト テスト
  • 26. Copyright Drecom Co., Ltd. All Rights Reserved. GitLabへpushされたbranchの自動テスト 結果をチャット 通知
  • 27. Copyright Drecom Co., Ltd. All Rights Reserved. テスト結果の通知
  • 28. Copyright Drecom Co., Ltd. All Rights Reserved. 開発スタイルはほぼgit flow
  • 29. Copyright Drecom Co., Ltd. All Rights Reserved. master/develop/MRをそれぞれテスト master branch develop branch topic branch (MergeRequest / PullRequest)
  • 30. Copyright Drecom Co., Ltd. All Rights Reserved. ● MergeRequest, PullRequest (topic branch) ○ コードレビューの単位で常にテストを行い、テストが通っ たものだけをdevelopにmergeする ● develop branch ○ 開発中のメインブランチを常にテストすることでどこでバ グが混入したのかをいち早く検知できる ● master branch ○ masterはいつでもリリースできる状態のものなので、常 にテストは通っている ○ 全てのテストが通ったものだけしかリリースしない Jenkinsで自動テストを行う粒度
  • 31. Copyright Drecom Co., Ltd. All Rights Reserved. MRにはカーチャンによる温かみのあるテスト結果
  • 32. Copyright Drecom Co., Ltd. All Rights Reserved. テストケースは約900個... (約3分)
  • 33. Copyright Drecom Co., Ltd. All Rights Reserved. x 27パターン = 計24000ケース
  • 34. Copyright Drecom Co., Ltd. All Rights Reserved. x 27パターン = 計24000ケース 丸1つが900個のテ ストケース
  • 35. Copyright Drecom Co., Ltd. All Rights Reserved. ● Rubyの各バージョン ○ 2.0系, 2.1系, 2.2系 ● Ruby on Railsの各バージョン ○ 4.0系, 4.1系, 4.2系 ● 特定のmigrarionを適用するか(indexの有無) ○ 大人の事情で。。。 ● activerecord-turntableの利用有無 ○ データベースの分割ライブラリ ○ https://github.com/drecom/activerecord-turntable ● 運用上今のところありえない組み合わせを除去 ● 3 x 3 x 2 x 2 - 9 = 27 内訳
  • 36. Copyright Drecom Co., Ltd. All Rights Reserved. 考えられる全ての組み合わせ はテストすべき
  • 37. Copyright Drecom Co., Ltd. All Rights Reserved. それがプロとしての当たり前
  • 38. Copyright Drecom Co., Ltd. All Rights Reserved. 3分 x 27パターン = 81分 だがしかし
  • 39. Copyright Drecom Co., Ltd. All Rights Reserved. (;´Д`)
  • 40. Copyright Drecom Co., Ltd. All Rights Reserved. 速くするにはどうした らいいか?
  • 41. Copyright Drecom Co., Ltd. All Rights Reserved. マシンを増やせばい い 【結論】
  • 42. Copyright Drecom Co., Ltd. All Rights Reserved. 言い換えると
  • 43. Copyright Drecom Co., Ltd. All Rights Reserved. レベルを上げて物理 で殴ればいい
  • 44. Copyright Drecom Co., Ltd. All Rights Reserved. Master master
  • 45. Copyright Drecom Co., Ltd. All Rights Reserved. Master + Slave x 8 master slave
  • 46. Copyright Drecom Co., Ltd. All Rights Reserved. マシン9台でCPU 17コア master slave 趣味で社内ツールをいくつか立て ているのでそのサーバにJenkins のSlaveを相乗りしている
  • 47. Copyright Drecom Co., Ltd. All Rights Reserved. 17並列で81分 ->11分
  • 48. Copyright Drecom Co., Ltd. All Rights Reserved. ● http://openstack.jp/ ● クラウド上でサーバのインスタンスを作るための環境 ○ 平たく説明するとAWSの社内版(みたいなもの) ● 弊社では開発用途や社内ツールくらいなら自由にインスタンス が立てられる ● 自分の場合JenkinsのSlaveも必要に応じて増減している ○ itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb - くりにっき ○ http://sue445.hatenablog. com/entry/2015/03/19/001919 OpenStack
  • 49. Copyright Drecom Co., Ltd. All Rights Reserved. pronto + rubocopでコーディング規約違反を検知し、ボットが自 動で指摘 ● https://github.com/mmozuras/pronto ● https://github.com/bbatsov/rubocop ● メリット ○ MergeRequestやPullRequestが作られたら勝手に動く ので忘れない ○ 人間によるコードレビューの工数削減 ○ 人間が言うと角が立つけどボットに言わせると角が立た ない 静的解析
  • 50. Copyright Drecom Co., Ltd. All Rights Reserved. 行単位で教えてくれる
  • 51. Copyright Drecom Co., Ltd. All Rights Reserved. 問題なければLGTM LGTM = Look good to me (大丈夫そう)
  • 52. Copyright Drecom Co., Ltd. All Rights Reserved. ● 弊社では毎週主要エンジニアで集まるMTGがあって、「今週 のgem」のコーナーでgemリリースのアナウンスはしてる ● それとは別に速報的な位置づけでgemのリリース通知も自 動化した 【おまけ】gemリリース通知の自動化
  • 53. Copyright Drecom Co., Ltd. All Rights Reserved. 【おまけ】gemリリース通知の自動化 git push --tags rake drecom:release gem push 社内gemサーバ
  • 54. Copyright Drecom Co., Ltd. All Rights Reserved. 【おまけ】gemリリース通知の自動化 社内gemサーバ POST webhook
  • 55. Copyright Drecom Co., Ltd. All Rights Reserved. 【おまけ】gemリリース通知の自動化 結果をチャット 通知 社内gemサーバ
  • 56. Copyright Drecom Co., Ltd. All Rights Reserved. カーチャンによる温かみのあるアナウンス
  • 57. Copyright Drecom Co., Ltd. All Rights Reserved. ● rake drecom:releaseは社内gem(drecom_gem)の機能 ○ 社内gemサーバへのリリースを簡易化してる ○ 社内gemが間違えて社外のrubygems.orgに公開され るのを防止する機能もある ○ 【詳細】RubyKaigi2014で発表した - mitaku.log http://mitaku.github.io/blog/2014/09/22/rubykaigi- 2014-speech/ ● fluentdっていうとbigdataやログの集約ってイメージがある けど、webhookを受けることができるしチャット通知のプラグ インが豊富なのでこういう風にカジュアルな通知にも利用で きる 詳しいこと
  • 58. Copyright Drecom Co., Ltd. All Rights Reserved. ● 機械がやるべき仕事 ○ スクリプトを1回書けばずっと使いまわせる ○ 単調な作業 ○ 時間がかかる作業 ● 人間がやるべき仕事 ○ 人間の目で見ないと判断できないもの ■ デザイン崩れなど ○ 1回しか行わない作業 機械がやるべき作業と人間がやるべき作業の切り分けが大切 全部が全部自動化はできない
  • 59. Copyright Drecom Co., Ltd. All Rights Reserved. ● 機械に任せられることで人間は楽をできる ● 1人でたくさんの仕事をこなせるようになるので、レバレッジを 効かせることができる ● 一度自動化したものは誰でも使えるようになる ● 結果的に自分が楽になればみんなが楽になる まとめ(自動化のすすめ)