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
A1
April 24, 2017
Programming
670
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
160
Kotlin2でdataクラスの copyメソッドを禁止する/Data class copy function to have the same visibility as constructor
eichisanden
1
1.1k
短納期でローンチした新サービスをJavaで開発した話/launched new service using Java
eichisanden
6
4.3k
トラブルゼロで乗り切ったTypeScript移行/trouble-free TypeScript migration
eichisanden
3
3.8k
スクラム開発チームをLessでスケールさせた話/Scaling Scrum team with Less
eichisanden
0
6.4k
息の長いサービスのフロントエンドを少し改善する営み/frontend-improvement
eichisanden
3
3.2k
実はGitLabで使えるmermaid.js/gitlab-mermaid.js
eichisanden
1
860
既存 Web アプリケーションへの React.js 適用/react for web application
eichisanden
0
2k
楽楽明細でやってるChatOps/Development with ChatOps
eichisanden
0
1.2k
Other Decks in Programming
See All in Programming
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.5k
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
220
Go 1.27 における memory allocation の高速化
andpad
0
300
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
220
リアルな遅延を測る仕様
kota_yata
1
120
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
430
Flow は今どうなっているか
mizdra
PRO
0
680
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
250
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.1k
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
120
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
720
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
250
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Why Our Code Smells
bkeepers
PRO
340
58k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
エンジニアに許された特別な時間の終わり
watany
108
250k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
380
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
260
Scaling GitHub
holman
464
140k
Optimizing for Happiness
mojombo
378
71k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
480
A Tale of Four Properties
chriscoyier
163
24k
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
バイブル
ご清聴ありがとうございました