Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
楽楽明細の開発を支える技術
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
A1
April 24, 2017
Programming
660
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
楽楽明細の開発を支える技術
2017/4/21 合同ビアバッシュ発表資料
A1
April 24, 2017
More Decks by A1
See All by A1
プロダクトのことは何でもNotebookLMに聞こう / NotebookLM for on boarding
eichisanden
2
150
Kotlin2でdataクラスの copyメソッドを禁止する/Data class copy function to have the same visibility as constructor
eichisanden
1
1k
短納期でローンチした新サービスをJavaで開発した話/launched new service using Java
eichisanden
6
4.3k
トラブルゼロで乗り切ったTypeScript移行/trouble-free TypeScript migration
eichisanden
3
3.7k
スクラム開発チームをLessでスケールさせた話/Scaling Scrum team with Less
eichisanden
0
6.3k
息の長いサービスのフロントエンドを少し改善する営み/frontend-improvement
eichisanden
3
3.1k
実はGitLabで使えるmermaid.js/gitlab-mermaid.js
eichisanden
1
840
既存 Web アプリケーションへの React.js 適用/react for web application
eichisanden
0
1.9k
楽楽明細でやってるChatOps/Development with ChatOps
eichisanden
0
1.2k
Other Decks in Programming
See All in Programming
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
250
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
0
320
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
220
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.8k
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
190
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
170
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
AIで効率化できた業務・日常
ochtum
0
160
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
990
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
160
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Un-Boring Meetings
codingconduct
0
330
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
A designer walks into a library…
pauljervisheath
211
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
380
GraphQLとの向き合い方2022年版
quramy
50
15k
Tell your own story through comics
letsgokoyo
1
980
Transcript
楽楽明細の開発を⽀支える 技術 株式会社ラクス ファイナンシャルクラウド開発3課 Eiichi Mita 2017/4/21
⾃自⼰己紹介 • Eiichi Mita • Twitter/Qiita/Github/mstdn.jp: @eichisanden • 2014年6⽉月⼊入社(Ops=> SIer
=> ラクス) • ⼊入社以来、楽楽明細を担当 • ポケモンおじさん WANTED!!
None
楽楽明細 • 2013年にサービスイン • Java 8/Tomcat/Apache/PostgreSQL • 現在、開発者は3名 • ⼀一番多い時でメンバー8名
現在は、マンパワーはないが ⼩小回りが利くので、⼩小さな改善はし やすいタイミング YYY ͠Α͏ͥ :FBI
ただ、やることが多く開発や改善に時間を取れ ない ։ൃ ӡ༻ ׂΓࠐ ΈλεΫ όάର Ԡ վળ ಋೖࢧԉ
αϙʔτ
ӡ༻ ׂΓࠐΈ λεΫ αϙʔτ όάରԠ վળ ಋೖ ࢧԉ ։ൃ こうしたい
銀の弾丸はないので地道に改善して いっている
開発フロー
Subversion + Redmineでの コードレビューが⾟辛い(結構前の話 ですが) 課題 チケットに「xxxクラスの何⾏行⺫⽬目の…」と書いた り、該当箇所のコード貼りつけたり、とにかく⾟辛 かった(ましてオフショア相⼿手なら尚更…)
GitLab導⼊入 解決 マージリクエストベースでの開発 レビュアーもレビュイーも⼤大幅に負担軽減
Gitのブランチ運⽤用 解決 Gitフローを多少アレンジした感じでやって います。
NBTUFS WEFW GFBUVSF GFBUVSF GFBUVSF こんな感じ
Gitだとコミットの単位を調整しやすい 解決 git add -p や git rebase -i などを駆使してレビューし
やすい単位でコミットを分割。 リファクタリングと業務要件の実装は分けてコミット。
テスト
テストがない!!! 課題 ※実際は、ない訳ではなく、 過去に作成したJUnitのテストをメンテできずにビルドからも外され塩 漬けになったいた。 テストコードのメンテはそれなりに⼯工数が掛るので、致し⽅方ない⾯面 も。。
テストを復活させた 解決 殆どのテストコードはそのまま使えた ただし、少しの修正で蘇⽣生できないテスト は捨てた 㱺ݹ͍ͷݻࣥ͢ΔΑΓ早くテストがある 状態に戻すことが先決だった!!
Mockito導⼊入 解決 以前は依存するクラスを動かすために、テ ストごとにDIコンテナを起動していた 㱺͍͘͢͝͠ɺґଘ͢ΔΫϥεΛಈ͔ͨ͢Ίͷ setupも⼤大変。 本質的じゃないところで疲弊してテストがメンテで きなかたのかも(想像) Mockを活⽤用してテストしたいコードに集 中できるようになった
JUnitを3から4へバージョンアップ 解決 テストの階層化やパラメータ化が可能にな り、より分かりやすくテストが書けるよう になった 㱺ϊϋΛษڧձΛ։࠵ͯ͠νʔϜʹ ڞ༗した
コミット時のテスト⾃自動実⾏行とカバ レッジも⾒見えるようにした 解決
テストが失敗するとすぐ分かるように 解決 リアルなおっさんが怒って詰め寄ってき ます
E2Eテスト
リリース前のリグレッション テストが⾟辛い 課題 でも、デグレが怖いのでやらない訳にも いかない
Seleniumテストを導⼊入(準備中) 解決 SeleniumラッパーはSelenideを使⽤用しています。 去年のSeleniumアドベントカレンダーに記事を書きました。 http://qiita.com/EichiSanden/items/ea857b46cbf5435b0c3b
リリース時の疎通確認が⾟辛い 課題 サーバも増えてきたし、 もはや⼿手動でやるレベルじゃなくなってきた
Selenideでテストを作成 解決 次回のリリースから本格的に使⽤用予定
DBマイグレーション
元々、DDLは差分パッチSQLで管理していたが、ど の環境にどこまで当てたか分かりにくかった 課題 CFHJO BMUFSUBCMFIPHFBEE DPMVNODPMUFYU DPNNJU CFHJO JOTFSUJOUPIVHB JE
WBM WBMVFT BBB CCC DPNNJU CFHJO ESPQUBCMFHPNJ DPNNJU 20170419_1.sql 20170420_1.sql 20170420_2.sql
Flywayを導⼊入した • flyway info でどこまで当っているか確認できる • flyway migrate を実⾏行すれば、まだ適⽤用していない パッチだけを当ててくれる
• 本番環境はどこまで当っているか⾃自明なので、検証環 境でのみ利⽤用 • Flywayはバージョンダウンには対応していないが、 そこは割り切った(たまに欲しい時があるが、バー ジョンダウンのSQLを常に書くのは割に合わないた め) 解決
運⽤用
アプリからのエラー通知がメールで来るが ⼤大量すぎて⼤大事なものが埋もれてしまう 課題
無駄なアラートを減らす取り組み 解決⽅方法 ɾηογϣϯ͕Εͨޙͷૢ࡞ ɾbotからのアクセス ɾμϯϩʔυதʹΩϟϯηϧ͞Εͨ ɾϥΠϒϥϦ͕ग़ྗ͢ΔແବͳΤϥʔ など内部エラーを減らす取り組みを地道に⾏行っている あるサーバーからの通知数が 1年前 1127通
-> 今年 377通に激減 メールをチェックする時間短縮と重要なアラートを⾒見 逃すリスクが減った!
DevOps(的な)
開発担当とインフラ担当が分かれており、 すごく典型的なDevOpsの問題がある 課題
• 組織的な問題まで踏み込めないので、出来 ることをやるのみ 解決できていないが…
依頼した作業の背景をきちんと説明する 㱺తഎܠΛ理解してもらうことで同じゴールを⺫⽬目指せる 考え⽅方の違うことを理解する 㱺͓ޓ͍ओு͕͋ΔͷͰาΈدΔ͜ͱ͕⼤大事 運⽤用系のシェルなど、GitLab上で共同メンテ しようと準備中 㱺࠷ॳগ͠ରҙݟ͕͋ͬͨɺϝϦοτΛઆ໌ͯͬ͠ ͯΈΔ͜ͱʹɻOpsにもGitLabを使ってもらって相互レ ビューし合うのが理想 やっていること
Infrastructure as Code ɾखॱॻϕʔεͷڥߏஙਏ͍ͷͰɺAnsibleなど、オー ケストレーションツールを使っていきたい。 ɾサーバーが増えるたびに動作確認するのも⾟辛いので、そろ そろコード化しないとキツイ 㱺ͱΓ͋͑ͣϩʔΧϧ։ൃڥͷߏஙͰAnsibleや ServerSpecを使って広めようとしている。 (⼩小さく始めて実績を作ると広めやすいと思っている)
やりたい
今後やりたいことは沢⼭山... フレームワーク乗り換え マイクロサービス Docker AWS アジャイル/スクラム デザインガ イド React/AngularJS/Vue Sass/Less/Stylus
EsLint Gradleで依存関係解決 PostCSS ローカル開発環境の⾃自動構築 Elastic Search/Kibana/Embulk CI/CD Jenkins2/GitLab CI Swagger Go Babel Webpack
バイブル
ご清聴ありがとうございました