SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
© RakSul,Inc. All Rights Reserved.
一枚岩なレガシーシステムを
ラクスルではどのようにRebuildしているのか?
生まれ変わらNight -技術的負債からの一発逆転 -
ラクスル株式会社 二串 信弘
2018/11/29
© RakSul,Inc. All Rights Reserved.
About me
Nobuhiro Nikushi
二串 信弘  
● Works for RAKSUL INC. from 2017/3
● Tech Lead in Raksul Platform Team
● Favorite Languages: Ruby, Golang,
TypeScript, etc
● Private: English, Violin, 子育て
Server-Side Engineer, Tech Lead in RAKSUL
github: @nikushi
twitter: @nikushi_jp
© RakSul,Inc. All Rights Reserved.
About RAKSUL INC.
「仕組みを変えれば、
    世界はもっと良くなる」
VISION
Better System, Better World
ファブレス型印刷/広告EC
“ラクスル”
物流のUber
“ハコベル”
Business
印刷や物流といった伝統的な産業で事業を展開
複数の産業を革新するBtoBプラットフォームを通じた持続的成長
ファブレス型印刷/広告EC
“ラクスル”
物流のUber
“ハコベル”
今日のスコープ
印刷のラクスルのシステムの裏側を話します
© RakSul,Inc. All Rights Reserved.
Main Theme
© RakSul,Inc. All Rights Reserved.
● ラクスルにおける技術負債
● Raksul Platform Projectでやっている技術負債解消のアプローチ
● 新しいRailsプロジェクトについて
● まとめ
今日の話
© RakSul,Inc. All Rights Reserved.
エンジニア20名強、他プロダクトオーナ、エンジニアリングマネージャー、プロダクトマ
ネージャーが在籍
チーム数: 4スクラム
技術スタック
● インフラ AWS (EC2, S3, RDS Aurora, etc)、一部GCP
● サーバサイド Ruby on Rails, PHP(Symfony, etc), Golang, etc
● フロントエンド Vue.js, Nuxt.js, jQuery, etc
※ ハコベル事業は含まない
現在のラクスルの規模感
© RakSul,Inc. All Rights Reserved.
開発の周辺環境
Chat Deploy/Ops
Error
Monitoring/Notification
CI
Stable
Infrastructure
AWS managed by SRE
team
Code Review
© RakSul,Inc. All Rights Reserved.
         
良いところは沢山ある
© RakSul,Inc. All Rights Reserved.
開発の現場の課題
© RakSul,Inc. All Rights Reserved.
例えば
● どこを修正すればいいか分からないので隣のチームに質問しにいく
● 影響範囲がわからない。想定外の場所でエラーが発生。
● 同じバグを何度も引く
● 新人のシステムキャッチアップコストが高くbootstrapに時間がかかる
開発の現場で起きていたこと
© RakSul,Inc. All Rights Reserved.
歴史的経緯が積み重なり複雑で巨大に成長してしまったリポジトリ
● 初見では把握できない複雑なディレクトリ構成
● 様々なサービス、機能が全部入り
● 結合度が高い
なぜそうなったか? - 直接的な原因
© RakSul,Inc. All Rights Reserved.
根本は以下に集約される
● 印刷というビジネスドメインをシステム化することのそもそもの難しさ
● 適切な分解無しに、複数ドメイン・機能を混ぜてしまったこと
○ 紙の印刷サービスを売るECだけでなく、他のサービス(新聞折込やポスティン
グなどの付加価値付きの集客支援サービス、紙以外の商材、etc)の混入
○ デザイン機能、見積もり機能など
なぜそうなったか? - 根本的な要因
© RakSul,Inc. All Rights Reserved.
Rebuildを決意
開発効率が上がらない
負債が負債を呼ぶ悪循環
ひいては今後の事業成長の足かせになりかねない
Rebuildを決意
cf. そうだ、ラクスルを作り直そう!https://tech.raksul.com/2017/12/18/raksul-platform-project/
© RakSul,Inc. All Rights Reserved.
戦略
© RakSul,Inc. All Rights Reserved.
● 既存コード(PHP)はリファクタせず、新しくリライト
● ビジネスドメインとレイヤーを意識して分割
● 新しいシステムは原則に従う
○ 各システムはモノリシックに
○ 1システム1データベース
戦略
© RakSul,Inc. All Rights Reserved.
● 既存コード(PHP)はリファクタせず、新しくリライト
● ビジネスドメインとレイヤーを意識して分割
● 新しいシステムは原則に従う
○ 各システムはモノリシックに
○ 1システム1データベース
戦略
© RakSul,Inc. All Rights Reserved.
我々はPHPのコードを捨て、新しく作り変えていく道を選択した
既存のPHP をリファクタするという選択は無かった
● エンジニアの得意言語の変化
○ 創業時 = PHPが得意なエンジニア
○ 現在 = Ruby On Railsが得意なエンジニア
● Rebuild後のシステム価値
○ リファクタした場合の価値 << リライトした場合の価値
Ruby on Railsを主フレームワークに採用
既存コード(PHP)はリファクタせず、新しくリライト
© RakSul,Inc. All Rights Reserved.
● 既存コード(PHP)はリファクタせず、新しくリライト
● ビジネスドメインとレイヤーを意識して分割
● 新しいシステムは原則に従う
○ 各システムはモノリシックに
○ 1システム1データベース
戦略
© RakSul,Inc. All Rights Reserved.
ビジネスドメインとレイヤーを意識して分割
印刷EC 顧客基盤や認証
決済
データチェック機能
集客支援・広告系EC
ECレイヤー
個別見積もり、etc...
発注ディスパッチ処理
原価管理
コスト最適化
etc...
汎用機能レイヤー
印刷SCMレイヤー
ビジネス
ドメイン
ビジネスドメインに関係な
く使える機能は汎用レイ
ヤーへ
汎用系の一種。
印刷SCM機能は
ラクスルの根幹部分
© RakSul,Inc. All Rights Reserved.
● 既存コード(PHP)はリファクタせず、新しくリライト
● ビジネスドメインとレイヤーを意識して分割
● 新しいシステムは原則に従う
○ 各システムはモノリシックに
○ 1システム1データベース
戦略
© RakSul,Inc. All Rights Reserved.
● 各システムはモノリシックに作り、凝縮度を高め開発効率を上げる。
● つまり、マイクロサービス化しない。組織の規模に合わないマイクローサービス化は
かえって開発効率を下げたり、把握コスト、DevOps等のオーバヘッドを生む。
● 20名少々のエンジニア = 5つくらいのチーム。1チーム 1~2リポジトリくらいをメンテ
できるくらいが開発効率的にもベスト。
各システムはモノリシックに、マイクロサービス化はしない
© RakSul,Inc. All Rights Reserved.
● アプリケーションをまたいで DBを参
照しない。
● 過去の経験も踏まえてアンチパ
ターンを踏まない
● よくあるアンチパターンな構成 = モ
ノリシックなデータベースが中心に
あり、ユーザー向け、管理画面や
APIなどの多数のWebアプリが読
み書きしている状態
1システム、1データベース
© RakSul,Inc. All Rights Reserved.
Blue Print
共通機能
Payment
Ops
API DB
User/
Auth
Ops
API DB
DataCheck/
Prepress
Ops
API DB
印刷ECOps
API DB
Printing
Ops
API DB
Web
EC機能
Other Business are the same
Web: Publicサイト
Ops: 管理画面
API: Internal API
Web
ExtAPI
Users
Printing
Companies
集客・広告Ops
API DB
Web
© RakSul,Inc. All Rights Reserved.
Blue Print
共通機能
Payment
Ops
API DB
User/
Auth
Ops
API DB
DataCheck/
Prepress
Ops
API DB
印刷ECOps
API DB
Printing
Ops
API DB
Web
EC機能
Other Business are the same
Web: Publicサイト
Ops: 管理画面
API: Internal API
Web
ExtAPI
Users
Printing
Companies
集客・広告Ops
API DB
Web
Development is ongoing!
© RakSul,Inc. All Rights Reserved.
Inside of raksul-core
Introducing monolithic architecture of our new
Rails project
© RakSul,Inc. All Rights Reserved.
● 既存システム(github:raksul/raksul) の置き換えとしてスタート
● 印刷ECドメインにフォーカス
● データベースは既存データベースを参照
raksul-core, the new place for raksul.com
raksul
(existing PHP sytem)
DB
LB
GET https://raksul.com/path/to/page
raksul-core
(The new raksul.com in Rails)
置き換え機能、新機能既存ページ
The Raksul’s Database
© RakSul,Inc. All Rights Reserved.
3種類のコンポーネントを定義
3コンポーネント同居による凝縮度を上げた Rails app
Database
Models
Thor
CLI(Batch)
Controllers
Views,
Serializers
Controllers
Views,
Serializers
Controllers
Serializers
Web Ops API
raksul.com 管理画面 api.raksul.local
責務
Web
● Public Web Site
● フロント向けAPI(BFF)も兼任
Ops
● 管理画面(CR、経理など)
● フロント向けAPI(BFF)も兼任
API
● Internal Web APIs for other
systems
Layering of raksul-core
© RakSul,Inc. All Rights Reserved.
● この構成で1年ほど運用できている
● 開発効率は非常によい
● raksul-coreのナレッジは他のリポジトリに横展開している
この構成で運用して
© RakSul,Inc. All Rights Reserved.
● モノリシック => 肥大化していく
○ raksul-coreの責務なのかどうかの見極め
○ 別システムへの切り分けの提案
課題もある
© RakSul,Inc. All Rights Reserved.
取り組み
© RakSul,Inc. All Rights Reserved.
水曜日のラクスル
● 水曜午後の社内勉強会
● テーマななんでも良い
● 準備不要
● 技術的不安の相談なども
ペアプロ、モブプロ
● 難しい課題への取り組み時に
● 心理的安全性
● コードレビュー負担の軽減
水曜日のラクスル、ペアプロ、モブプロ
© RakSul,Inc. All Rights Reserved.
まとめ
© RakSul,Inc. All Rights Reserved.
● ラクスルのRebuildは現在進行系です
● 我々はシステム設計のディスカッションや日々の発見を通じて、ラクスルのシステム
をより良くしていく取り組みをしています
● プロジェクトはチャレンジングです。我々はRebuildを通してレベルの高いシステム
を目指しています
● やることは沢山あります!
Rebuilding is On Going
© RakSul,Inc. All Rights Reserved.
We Are Hiring!
© RakSul,Inc. All Rights Reserved.
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてくださいレガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてくださいIsamu Suzuki
 
AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)Akio Katayama
 
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメNode.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメIsamu Suzuki
 
極貧Webサービス運用 kawasaki.rb #044
極貧Webサービス運用 kawasaki.rb #044極貧Webサービス運用 kawasaki.rb #044
極貧Webサービス運用 kawasaki.rb #044Misao X
 
Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術Isamu Suzuki
 
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜Terui Masashi
 
モバイルゲームにおけるAWSの泥臭い使い方
モバイルゲームにおけるAWSの泥臭い使い方モバイルゲームにおけるAWSの泥臭い使い方
モバイルゲームにおけるAWSの泥臭い使い方Junpei Nakada
 
グラフ解析で社長の脳内さらす!
グラフ解析で社長の脳内さらす!グラフ解析で社長の脳内さらす!
グラフ解析で社長の脳内さらす!Kazuki Morozumi
 
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部Daisuke Nagao
 
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)Terui Masashi
 
JAWS-UG Osaka 2013.11.02 Feel the Elesticity v2.0
JAWS-UG Osaka 2013.11.02 Feel the Elesticity v2.0JAWS-UG Osaka 2013.11.02 Feel the Elesticity v2.0
JAWS-UG Osaka 2013.11.02 Feel the Elesticity v2.0Toshiyuki Konparu
 
Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]真吾 吉田
 
VRディープ座談会 introduction ojima
VRディープ座談会 introduction ojimaVRディープ座談会 introduction ojima
VRディープ座談会 introduction ojimaHideki Ojima
 
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化するAWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化するmizugokoro
 
Serverless Meetup Tokyo #2 オープニング
Serverless Meetup Tokyo #2 オープニングServerless Meetup Tokyo #2 オープニング
Serverless Meetup Tokyo #2 オープニング真吾 吉田
 
Serverless Meetup Tokyo #5 Opening
Serverless Meetup Tokyo #5 OpeningServerless Meetup Tokyo #5 Opening
Serverless Meetup Tokyo #5 Opening真吾 吉田
 
サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策Keiichi Hagiwara
 
継続?移行?Oracle SE2 RACのサポート終了に向けた備え
継続?移行?Oracle SE2 RACのサポート終了に向けた備え継続?移行?Oracle SE2 RACのサポート終了に向けた備え
継続?移行?Oracle SE2 RACのサポート終了に向けた備え株式会社クライム
 
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事Hiroyuki Hiki
 
20170314 aws handson
20170314 aws handson20170314 aws handson
20170314 aws handsonSix Apart
 

Was ist angesagt? (20)

レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてくださいレガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
 
AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)
 
Node.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメNode.jsで使えるファイルDB"NeDB"のススメ
Node.jsで使えるファイルDB"NeDB"のススメ
 
極貧Webサービス運用 kawasaki.rb #044
極貧Webサービス運用 kawasaki.rb #044極貧Webサービス運用 kawasaki.rb #044
極貧Webサービス運用 kawasaki.rb #044
 
Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術
 
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
 
モバイルゲームにおけるAWSの泥臭い使い方
モバイルゲームにおけるAWSの泥臭い使い方モバイルゲームにおけるAWSの泥臭い使い方
モバイルゲームにおけるAWSの泥臭い使い方
 
グラフ解析で社長の脳内さらす!
グラフ解析で社長の脳内さらす!グラフ解析で社長の脳内さらす!
グラフ解析で社長の脳内さらす!
 
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
 
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
 
JAWS-UG Osaka 2013.11.02 Feel the Elesticity v2.0
JAWS-UG Osaka 2013.11.02 Feel the Elesticity v2.0JAWS-UG Osaka 2013.11.02 Feel the Elesticity v2.0
JAWS-UG Osaka 2013.11.02 Feel the Elesticity v2.0
 
Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]
 
VRディープ座談会 introduction ojima
VRディープ座談会 introduction ojimaVRディープ座談会 introduction ojima
VRディープ座談会 introduction ojima
 
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化するAWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
 
Serverless Meetup Tokyo #2 オープニング
Serverless Meetup Tokyo #2 オープニングServerless Meetup Tokyo #2 オープニング
Serverless Meetup Tokyo #2 オープニング
 
Serverless Meetup Tokyo #5 Opening
Serverless Meetup Tokyo #5 OpeningServerless Meetup Tokyo #5 Opening
Serverless Meetup Tokyo #5 Opening
 
サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策
 
継続?移行?Oracle SE2 RACのサポート終了に向けた備え
継続?移行?Oracle SE2 RACのサポート終了に向けた備え継続?移行?Oracle SE2 RACのサポート終了に向けた備え
継続?移行?Oracle SE2 RACのサポート終了に向けた備え
 
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
 
20170314 aws handson
20170314 aws handson20170314 aws handson
20170314 aws handson
 

Ähnlich wie 一枚岩なレガシーシステムを ラクスルではどのようにRebuildしているのか?

[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...Insight Technology, Inc.
 
JTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoTJTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoTNobuyuki Matsui
 
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...オラクルエンジニア通信
 
クラウドを活かし、強みにするISVの可能性 桑原里恵
クラウドを活かし、強みにするISVの可能性 桑原里恵クラウドを活かし、強みにするISVの可能性 桑原里恵
クラウドを活かし、強みにするISVの可能性 桑原里恵Sapporo Sparkle k.k.
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)uchan_nos
 
第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料Tae Yoshida
 
Cake php×国産!オープンソースcms「basercms」が熱い!
Cake php×国産!オープンソースcms「basercms」が熱い!Cake php×国産!オープンソースcms「basercms」が熱い!
Cake php×国産!オープンソースcms「basercms」が熱い!Ryuji Egashira
 
Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所Tetsuya Odashima
 
企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーション企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーションOsaka University
 
業務価値分析によるIT部門の変革アプローチ 2013
業務価値分析によるIT部門の変革アプローチ 2013業務価値分析によるIT部門の変革アプローチ 2013
業務価値分析によるIT部門の変革アプローチ 2013UNIRITA Incorporated
 
セミナ受講レポート NRI Senju V12
セミナ受講レポート NRI Senju V12セミナ受講レポート NRI Senju V12
セミナ受講レポート NRI Senju V12Yukio Saito
 
ITサービスによる価値の創出に向けて
ITサービスによる価値の創出に向けてITサービスによる価値の創出に向けて
ITサービスによる価値の創出に向けてUNIRITA Incorporated
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例terurou
 
[db tech showcase OSS 2017] A22: NoSQL:誰のための、何のためのデータベース?その将来は?by Aerospike, ...
[db tech showcase OSS 2017] A22: NoSQL:誰のための、何のためのデータベース?その将来は?by Aerospike, ...[db tech showcase OSS 2017] A22: NoSQL:誰のための、何のためのデータベース?その将来は?by Aerospike, ...
[db tech showcase OSS 2017] A22: NoSQL:誰のための、何のためのデータベース?その将来は?by Aerospike, ...Insight Technology, Inc.
 
20160301 5日でできるクラウドで始めるデータ利活用 新日鉄住金ソリューションズ株式会社
20160301 5日でできるクラウドで始めるデータ利活用 新日鉄住金ソリューションズ株式会社20160301 5日でできるクラウドで始めるデータ利活用 新日鉄住金ソリューションズ株式会社
20160301 5日でできるクラウドで始めるデータ利活用 新日鉄住金ソリューションズ株式会社オラクルエンジニア通信
 
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Dai Utsui
 

Ähnlich wie 一枚岩なレガシーシステムを ラクスルではどのようにRebuildしているのか? (20)

[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
 
JTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoTJTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoT
 
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
 
「明日の認証会議 3」講演用スライド 20141002(配布用)
「明日の認証会議 3」講演用スライド 20141002(配布用)「明日の認証会議 3」講演用スライド 20141002(配布用)
「明日の認証会議 3」講演用スライド 20141002(配布用)
 
クラウドを活かし、強みにするISVの可能性 桑原里恵
クラウドを活かし、強みにするISVの可能性 桑原里恵クラウドを活かし、強みにするISVの可能性 桑原里恵
クラウドを活かし、強みにするISVの可能性 桑原里恵
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
 
データマート対応した話
データマート対応した話データマート対応した話
データマート対応した話
 
Saleshub
SaleshubSaleshub
Saleshub
 
第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料
 
Cake php×国産!オープンソースcms「basercms」が熱い!
Cake php×国産!オープンソースcms「basercms」が熱い!Cake php×国産!オープンソースcms「basercms」が熱い!
Cake php×国産!オープンソースcms「basercms」が熱い!
 
Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所
 
企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーション企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーション
 
業務価値分析によるIT部門の変革アプローチ 2013
業務価値分析によるIT部門の変革アプローチ 2013業務価値分析によるIT部門の変革アプローチ 2013
業務価値分析によるIT部門の変革アプローチ 2013
 
セミナ受講レポート NRI Senju V12
セミナ受講レポート NRI Senju V12セミナ受講レポート NRI Senju V12
セミナ受講レポート NRI Senju V12
 
ITサービスによる価値の創出に向けて
ITサービスによる価値の創出に向けてITサービスによる価値の創出に向けて
ITサービスによる価値の創出に向けて
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
 
[db tech showcase OSS 2017] A22: NoSQL:誰のための、何のためのデータベース?その将来は?by Aerospike, ...
[db tech showcase OSS 2017] A22: NoSQL:誰のための、何のためのデータベース?その将来は?by Aerospike, ...[db tech showcase OSS 2017] A22: NoSQL:誰のための、何のためのデータベース?その将来は?by Aerospike, ...
[db tech showcase OSS 2017] A22: NoSQL:誰のための、何のためのデータベース?その将来は?by Aerospike, ...
 
Amazon Redshift 概要 (20分版)
Amazon Redshift 概要 (20分版)Amazon Redshift 概要 (20分版)
Amazon Redshift 概要 (20分版)
 
20160301 5日でできるクラウドで始めるデータ利活用 新日鉄住金ソリューションズ株式会社
20160301 5日でできるクラウドで始めるデータ利活用 新日鉄住金ソリューションズ株式会社20160301 5日でできるクラウドで始めるデータ利活用 新日鉄住金ソリューションズ株式会社
20160301 5日でできるクラウドで始めるデータ利活用 新日鉄住金ソリューションズ株式会社
 
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会
 

一枚岩なレガシーシステムを ラクスルではどのようにRebuildしているのか?

  • 1. © RakSul,Inc. All Rights Reserved. 一枚岩なレガシーシステムを ラクスルではどのようにRebuildしているのか? 生まれ変わらNight -技術的負債からの一発逆転 - ラクスル株式会社 二串 信弘 2018/11/29
  • 2. © RakSul,Inc. All Rights Reserved. About me Nobuhiro Nikushi 二串 信弘   ● Works for RAKSUL INC. from 2017/3 ● Tech Lead in Raksul Platform Team ● Favorite Languages: Ruby, Golang, TypeScript, etc ● Private: English, Violin, 子育て Server-Side Engineer, Tech Lead in RAKSUL github: @nikushi twitter: @nikushi_jp
  • 3. © RakSul,Inc. All Rights Reserved. About RAKSUL INC.
  • 8. © RakSul,Inc. All Rights Reserved. Main Theme
  • 9. © RakSul,Inc. All Rights Reserved. ● ラクスルにおける技術負債 ● Raksul Platform Projectでやっている技術負債解消のアプローチ ● 新しいRailsプロジェクトについて ● まとめ 今日の話
  • 10. © RakSul,Inc. All Rights Reserved. エンジニア20名強、他プロダクトオーナ、エンジニアリングマネージャー、プロダクトマ ネージャーが在籍 チーム数: 4スクラム 技術スタック ● インフラ AWS (EC2, S3, RDS Aurora, etc)、一部GCP ● サーバサイド Ruby on Rails, PHP(Symfony, etc), Golang, etc ● フロントエンド Vue.js, Nuxt.js, jQuery, etc ※ ハコベル事業は含まない 現在のラクスルの規模感
  • 11. © RakSul,Inc. All Rights Reserved. 開発の周辺環境 Chat Deploy/Ops Error Monitoring/Notification CI Stable Infrastructure AWS managed by SRE team Code Review
  • 12. © RakSul,Inc. All Rights Reserved.           良いところは沢山ある
  • 13. © RakSul,Inc. All Rights Reserved. 開発の現場の課題
  • 14. © RakSul,Inc. All Rights Reserved. 例えば ● どこを修正すればいいか分からないので隣のチームに質問しにいく ● 影響範囲がわからない。想定外の場所でエラーが発生。 ● 同じバグを何度も引く ● 新人のシステムキャッチアップコストが高くbootstrapに時間がかかる 開発の現場で起きていたこと
  • 15. © RakSul,Inc. All Rights Reserved. 歴史的経緯が積み重なり複雑で巨大に成長してしまったリポジトリ ● 初見では把握できない複雑なディレクトリ構成 ● 様々なサービス、機能が全部入り ● 結合度が高い なぜそうなったか? - 直接的な原因
  • 16. © RakSul,Inc. All Rights Reserved. 根本は以下に集約される ● 印刷というビジネスドメインをシステム化することのそもそもの難しさ ● 適切な分解無しに、複数ドメイン・機能を混ぜてしまったこと ○ 紙の印刷サービスを売るECだけでなく、他のサービス(新聞折込やポスティン グなどの付加価値付きの集客支援サービス、紙以外の商材、etc)の混入 ○ デザイン機能、見積もり機能など なぜそうなったか? - 根本的な要因
  • 17. © RakSul,Inc. All Rights Reserved. Rebuildを決意 開発効率が上がらない 負債が負債を呼ぶ悪循環 ひいては今後の事業成長の足かせになりかねない Rebuildを決意 cf. そうだ、ラクスルを作り直そう!https://tech.raksul.com/2017/12/18/raksul-platform-project/
  • 18. © RakSul,Inc. All Rights Reserved. 戦略
  • 19. © RakSul,Inc. All Rights Reserved. ● 既存コード(PHP)はリファクタせず、新しくリライト ● ビジネスドメインとレイヤーを意識して分割 ● 新しいシステムは原則に従う ○ 各システムはモノリシックに ○ 1システム1データベース 戦略
  • 20. © RakSul,Inc. All Rights Reserved. ● 既存コード(PHP)はリファクタせず、新しくリライト ● ビジネスドメインとレイヤーを意識して分割 ● 新しいシステムは原則に従う ○ 各システムはモノリシックに ○ 1システム1データベース 戦略
  • 21. © RakSul,Inc. All Rights Reserved. 我々はPHPのコードを捨て、新しく作り変えていく道を選択した 既存のPHP をリファクタするという選択は無かった ● エンジニアの得意言語の変化 ○ 創業時 = PHPが得意なエンジニア ○ 現在 = Ruby On Railsが得意なエンジニア ● Rebuild後のシステム価値 ○ リファクタした場合の価値 << リライトした場合の価値 Ruby on Railsを主フレームワークに採用 既存コード(PHP)はリファクタせず、新しくリライト
  • 22. © RakSul,Inc. All Rights Reserved. ● 既存コード(PHP)はリファクタせず、新しくリライト ● ビジネスドメインとレイヤーを意識して分割 ● 新しいシステムは原則に従う ○ 各システムはモノリシックに ○ 1システム1データベース 戦略
  • 23. © RakSul,Inc. All Rights Reserved. ビジネスドメインとレイヤーを意識して分割 印刷EC 顧客基盤や認証 決済 データチェック機能 集客支援・広告系EC ECレイヤー 個別見積もり、etc... 発注ディスパッチ処理 原価管理 コスト最適化 etc... 汎用機能レイヤー 印刷SCMレイヤー ビジネス ドメイン ビジネスドメインに関係な く使える機能は汎用レイ ヤーへ 汎用系の一種。 印刷SCM機能は ラクスルの根幹部分
  • 24. © RakSul,Inc. All Rights Reserved. ● 既存コード(PHP)はリファクタせず、新しくリライト ● ビジネスドメインとレイヤーを意識して分割 ● 新しいシステムは原則に従う ○ 各システムはモノリシックに ○ 1システム1データベース 戦略
  • 25. © RakSul,Inc. All Rights Reserved. ● 各システムはモノリシックに作り、凝縮度を高め開発効率を上げる。 ● つまり、マイクロサービス化しない。組織の規模に合わないマイクローサービス化は かえって開発効率を下げたり、把握コスト、DevOps等のオーバヘッドを生む。 ● 20名少々のエンジニア = 5つくらいのチーム。1チーム 1~2リポジトリくらいをメンテ できるくらいが開発効率的にもベスト。 各システムはモノリシックに、マイクロサービス化はしない
  • 26. © RakSul,Inc. All Rights Reserved. ● アプリケーションをまたいで DBを参 照しない。 ● 過去の経験も踏まえてアンチパ ターンを踏まない ● よくあるアンチパターンな構成 = モ ノリシックなデータベースが中心に あり、ユーザー向け、管理画面や APIなどの多数のWebアプリが読 み書きしている状態 1システム、1データベース
  • 27. © RakSul,Inc. All Rights Reserved. Blue Print 共通機能 Payment Ops API DB User/ Auth Ops API DB DataCheck/ Prepress Ops API DB 印刷ECOps API DB Printing Ops API DB Web EC機能 Other Business are the same Web: Publicサイト Ops: 管理画面 API: Internal API Web ExtAPI Users Printing Companies 集客・広告Ops API DB Web
  • 28. © RakSul,Inc. All Rights Reserved. Blue Print 共通機能 Payment Ops API DB User/ Auth Ops API DB DataCheck/ Prepress Ops API DB 印刷ECOps API DB Printing Ops API DB Web EC機能 Other Business are the same Web: Publicサイト Ops: 管理画面 API: Internal API Web ExtAPI Users Printing Companies 集客・広告Ops API DB Web Development is ongoing!
  • 29. © RakSul,Inc. All Rights Reserved. Inside of raksul-core Introducing monolithic architecture of our new Rails project
  • 30. © RakSul,Inc. All Rights Reserved. ● 既存システム(github:raksul/raksul) の置き換えとしてスタート ● 印刷ECドメインにフォーカス ● データベースは既存データベースを参照 raksul-core, the new place for raksul.com raksul (existing PHP sytem) DB LB GET https://raksul.com/path/to/page raksul-core (The new raksul.com in Rails) 置き換え機能、新機能既存ページ The Raksul’s Database
  • 31. © RakSul,Inc. All Rights Reserved. 3種類のコンポーネントを定義 3コンポーネント同居による凝縮度を上げた Rails app Database Models Thor CLI(Batch) Controllers Views, Serializers Controllers Views, Serializers Controllers Serializers Web Ops API raksul.com 管理画面 api.raksul.local 責務 Web ● Public Web Site ● フロント向けAPI(BFF)も兼任 Ops ● 管理画面(CR、経理など) ● フロント向けAPI(BFF)も兼任 API ● Internal Web APIs for other systems Layering of raksul-core
  • 32. © RakSul,Inc. All Rights Reserved. ● この構成で1年ほど運用できている ● 開発効率は非常によい ● raksul-coreのナレッジは他のリポジトリに横展開している この構成で運用して
  • 33. © RakSul,Inc. All Rights Reserved. ● モノリシック => 肥大化していく ○ raksul-coreの責務なのかどうかの見極め ○ 別システムへの切り分けの提案 課題もある
  • 34. © RakSul,Inc. All Rights Reserved. 取り組み
  • 35. © RakSul,Inc. All Rights Reserved. 水曜日のラクスル ● 水曜午後の社内勉強会 ● テーマななんでも良い ● 準備不要 ● 技術的不安の相談なども ペアプロ、モブプロ ● 難しい課題への取り組み時に ● 心理的安全性 ● コードレビュー負担の軽減 水曜日のラクスル、ペアプロ、モブプロ
  • 36. © RakSul,Inc. All Rights Reserved. まとめ
  • 37. © RakSul,Inc. All Rights Reserved. ● ラクスルのRebuildは現在進行系です ● 我々はシステム設計のディスカッションや日々の発見を通じて、ラクスルのシステム をより良くしていく取り組みをしています ● プロジェクトはチャレンジングです。我々はRebuildを通してレベルの高いシステム を目指しています ● やることは沢山あります! Rebuilding is On Going
  • 38. © RakSul,Inc. All Rights Reserved. We Are Hiring!
  • 39. © RakSul,Inc. All Rights Reserved. Thank you!