Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...
こんにちは、食べログシステム本部長の京和です。 本エントリでは Shopify の Engineering Blog から、Kirsten Westeinde による「Deconstructing the Monolith: Designing Software that Maximizes Developer Productivity」を翻訳して掲載します。 食べログではユーザーや飲食店に価値を届けるスピードを最大化するべく、マイクロサービス化などをはじめとしたこれまでの組織やアーキテクチャを刷新するための取り組みを始めています。しかし、マイクロサービスはアプリケーションアーキテクチャとインフラアーキテクチャが複雑に絡み合ったシステムで技術的難易度が非常に高く、適切に構築できなければ「分散されたモノリス」と呼ばれるアンチパターンに陥ります。1 Shopifyではマイクロサービスではなく、
モジュラモノリスに移行する理由 ─ マイクロサービスの自律性とモノリスの一貫性を両立させるアソビューの取り組み 大規模なソフトウェア開発においてモノリシックかマイクロサービスかというアーキテクチャの議論がありますが、近年は第3の選択肢としてモジュラモノリスが話題になっています。いったんマイクロサービス化に舵を切りながら現在はモジュラモノリスに取り組むアソビューの考え方や進め方について、VPoEの兼平大資(disc99)さんによる寄稿です。 アソビューでは、現在の事業状況にマッチしていることや過去の経緯から、モジュラモノリスを中心としたアーキテクチャを採用しています。 今回は、なぜその選択をし、どのように実現しているかを紹介します。 記事の前半では、アソビューが提供する事業や、アーキテクチャに対する考え方、開発組織の歩みなどを説明します。 中盤以降は、アソビューにおけるモジュラモノリスへの取
こんにちは、食べログシステム本部長の京和です。 本エントリでは Shopify の Engineering Blog から、Kirsten Westeinde による「Deconstructing the Monolith: Designing Software that Maximizes Developer Productivity」を翻訳して掲載します。 食べログではユーザーや飲食店に価値を届けるスピードを最大化するべく、マイクロサービス化などをはじめとしたこれまでの組織やアーキテクチャを刷新するための取り組みを始めています。しかし、マイクロサービスはアプリケーションアーキテクチャとインフラアーキテクチャが複雑に絡み合ったシステムで技術的難易度が非常に高く、適切に構築できなければ「分散されたモノリス」と呼ばれるアンチパターンに陥ります。1 Shopifyではマイクロサービスではなく、
アクロクエスト アドベントカレンダー 12月9日 の記事です。 普段は Java, Python でバックエンドの開発をしている大塚優斗です😃 最近は Spring フレームワークのメジャーアップデートなどで盛り上がっていますね! 10月にこんな記事を見かけて、Spring Modulith がとても気になっていたので、手元で試したことを書いていきます✍️ Spring Modulith とは Spring Modulith でできること 0. Spring Modulith でのパッケージの扱いについて 1. モジュール構造の検証 循環参照の検知 別モジュールへのアクセス違反の検知 2. モジュールに閉じた結合テスト 単一のアプリケーションモジュールで結合テストができること Bootstrap モードによって、結合テスト時に他モジュールの Bean 生成ができること 3. イベントによ
この記事はUbie Engineering Advent Calendar 2023の一日目です。よろしくお願いします。 背景 ユビーのシステムは言語が多様化してきたことにより、認知負荷の増加や運用負荷の増加、開発支援に仕組みづくりかけるコストの増加などの問題が発生していました。この課題を解決するためにNode.jsとGoに言語を絞っていくという意思決定をしたのが昨年です。これについては以下の記事で詳しく解説しています。 ちょうど去年のアドベントカレンダーの記事なのでこれから一年経ちました。ここでは以下のように述べられています。 Server-Side Kotlin などで書かれている既存サービスを、この技術選定の文脈でリプレイスすることは今のところ考えていません。 ただし、多くの既存サービスはドメインたくさん抱えすぎ問題があったり、色々とレガシーだったりして、徐々に別サービスに切り出して
LINEのサービス開発拠点の1つである「LINE KYOTO」のオフィスで開催する技術イベント「LINE KYOTO 交流会 ~3年ぶりのおこしやす~」。ここで京都開発室K2チームの古田氏が登壇。出前館における加盟店プロダクトのリプレイスについて話します。 古田氏の自己紹介 古田大志氏:では「出前館マイクロサービスにおける加盟店管理画面のBFFアーキテクチャ」というお題で発表します。古田大志と申します。よろしくお願いします。 まず自己紹介を軽くします。LINEでサーバーサイドエンジニアをやっていて、主な技術領域はJavaやKotlinやSpring Boot、最近だとTerraformを触ったりしています。(スライドを示して)GitHubのアカウントはこんな感じになってます。 僕はもともと競技プログラミングをしていて、CSの分野に興味を持ち、Webを触り始めた背景があります。 現状、LIN
「【ハイブリッド開催】Rubyで追求するモジュラモノリスの可能性」は、バックエンドにRubyを採用している株式会社タイミー、hacomono社、ワンキャリア社が、Rubyにおけるモジュラモノリスの可能性や良い点、悪い点を共有する勉強会です。ここで株式会社タイミーの須貝氏が登壇。まずは、Railsでモジュラモノリスを実現する3つの代表的パターンと、各パターンの評価について話します。 須貝氏の自己紹介 須貝俊 氏:では、「RailsでModular Monolithを選択された御社に質問したいN個の疑問」というタイトルで発表をしたいと思います。 (スライドを示して)まずは自己紹介をしたいと思います。須貝と申します。タイミーには、2022年1月からジョインしています。スポットワークシステム領域というところで、チーム名がIronBank Squadという、企業さま向けの請求や、ワーカーさまへの給与
「【ハイブリッド開催】Rubyで追求するモジュラモノリスの可能性」は、バックエンドにRubyを採用している株式会社タイミー、hacomono社、ワンキャリア社が、Rubyにおけるモジュラモノリスの可能性や良い点、悪い点を共有する勉強会です。ここで株式会社hacomonoの志賀氏が登壇。まずは、モジュラモノリスを導入する前の状況と、モジュラモノリスを選んだ理由について話します。 志賀氏の自己紹介 志賀誠氏(以下、志賀):みなさん、こんにちは。 会場:こんにちは。 志賀:うれしい、返事がきた(笑)。オフラインで話すのが久々すぎて声が出るかちょっと心配だったんですが、なんとかなりそうなのでやっていきたいと思います。 今日お話しする内容ですが、「hacomono TECH BLOG」で事前に書いた内容と若干かぶるところがあるので、もし読んだ方がいたら、おさらい程度だと思って目をとおしてもらえると幸
「【ハイブリッド開催】Rubyで追求するモジュラモノリスの可能性」は、バックエンドにRubyを採用している株式会社タイミー、hacomono社、ワンキャリア社が、Rubyにおけるモジュラモノリスの可能性や良い点、悪い点を共有する勉強会です。ここで株式会社hacomonoの志賀氏が登壇。続いて、モジュラモノリス実現のための取り組みについて話します。前回はこちらから。 モジュラモノリスを導入に向けて境界分けをどうするか 志賀誠氏:じゃあ今度は、モジュラモノリスの実現の方法について説明します。(スライドを示して)Railsでモジュラモノリスを導入するにあたって、パッと思いつくもので、このスライドにあるような問題があるかと思います。 1個は、やはりRailsはRubyなので、なんでも書けちゃうということがあると思います。もうやろうと思ったらいくらでも越境できちゃう境界区域とかがあると思います。 も
ビジネス開発部のバックエンドエンジニアの伊藤です。主にトクバイのビジネスサイドの開発を担当しています。 Shopify記事の影響もありしばらく前からモジュラモノリスが注目されるようになりました。 我々が開発しているトクバイではモノリシックに構築されており、各機能が密結合になりメンテナンスしづらくなっています。 今回、新機能プロジェクトを担当する上で各機能をモジュール分割・コンポーネント化することを試してみました。 Packwerk PackwerkはShopifyが開発しているGemで、Railsアプリケーションをモジュール分割する手助けをしてくれます。 USAGEに書かれていることを要約すると、大規模なアプリケーションは境界を作り境界間の依存関係をコードレベルで最小にしようということだと考えています。 後述しますが幾つかのエコシステム導入する事で、よりモジュラモノリス化を促すことができま
STORES 予約 でエンジニアリングマネージャーをしている Natsume です。 STORES 予約 は10年モノの45万行、380テーブルある大きなモノリスの Rails アプリケーションです。 業種にとらわれない汎用的な予約システムであり、それらに対応するように複雑なコードベースになっています。また、ここ 1~2 年はプロダクト間連携を進めており、各基盤やアプリケーションともつなげていく開発を進めています。今後も新規プロダクトとの連携や機能開発を進めるには、少しでも認知負荷を上げずに開発しやすい状態を保ち続けるか、が重要だと感じました。 その課題感の中で、今回はモジュラモノリスを選択し導入をしましたので、そちらのお話をしたいと思います! 現状の課題感 私が入社した3年前から STORES 予約 の開発メンバーは3倍になり比較的新しいメンバーが多く、また古くからいるエンジニアも少数な
ほぼ創業時から副業で手伝っているAlp社の同僚がモジュラモノリスの実現方法をScalaMatsuri2020で発表したので気になる方はどうぞ。 横の境界だけきった状態から、途中でモジュラモノリスに舵を切ったのでDB分割はこれからですが、それ以外の部分はキレイに分離できています。 自分がモジュラモノリスに重要だと考えているのは以下の2点です。 いかに少ない手数でマイクロサービス化できるか マイクロサービス化した場合と同じ制約をコードに持たせられるか パッケージで制限するのは少し制約として弱いと思っている。 この方法は、アプリ側は内部通信用adapterを叩くclientのDIを差し替えるだけでマイクロサービスとして切り出せるし、境界外のコードは参照すらできないようになってるのでマイクロサービスと全く同じ制約をもたせられている。とても良い感じに実現できた👍 ScalaMatsuri 2020
SmartHR、LayerX のアーキテクチャをそれぞれ話す「マイクロサービス?モノリス?2 社のアーキテクチャから見るPros/Cons」。ここで株式会社 LayerXのmosa氏が登壇。ここからは、開発を進める中で出てきた追加要件と、モジュラモノリスの検討について紹介します。前回はこちらから。 マイクロサービス間でのデータ同期方法 榎本悠介氏(以下、榎本):実際にデータ同期をどうやるか、マイクロサービス間でどうやってデータを同期させるかという話に移ります。前提として、プライベートAPIを叩いてデータを同期するのは悪手だと思っています。 申請された情報を渡して請求書レコードを作らせる、申請情報を入れる時に、(スライドを指の)バクラク請求書部分がAPIになっていると同期処理になってしまうので、もともとやりたかった、ただ申請をしたかっただけの人にとっては遅くなったり、他の障害に引きずられて本
はじめに 先日、開発していたマーケティングSaaSをようやくリリースすることができました。以下、サービスページ: サービスの詳細な説明や顧客ターゲットなどはここでは省きますが、一言で表現すると、ワンクリックで様々なマーケティングデータを一元管理できるプロダクトになっています。 このプロダクトでは、初期からモジュラモノリス設計を採用し、その選択は結果的には良かったと感じています。この記事では、シード期からモジュラモノリスを選択した経緯と、その所感を書きたいと思います。 モジュラモノリスを採用した経緯 モジュラモノリスとは モジュラモノリスとは、アプリケーション全体が一つのコードベースやプロジェクトとして管理され、単一のアプリケーションとしてデプロイされるが、その内部はモジュール化されているアーキテクチャのことです。各モジュールは独立して開発・保守され、特定の機能を担当しますが、デプロイメント
「価値提供スピードを上げるための技術的負債への向き合い方」は、DMMオンラインサロン事業部がこれまで向き合ってきた技術的負債とその解決策について、深く掘り下げるイベントです。ここでアーキテクトチームの塚原氏が登壇。現在取り組んでいるマイクロサービス・モジュラモノリス化プロジェクトについて話します。 塚原氏の自己紹介 塚原諒氏:こんばんは。今日は「マイクロサービス・モジュラモノリス化によるシステム負債の解消プロジェクト」というタイトルで発表します。 (スライドを示して)まずは自己紹介をさせてください。名前は塚原諒といいます。2022年の4月に中途でDMMに入社して、オンラインサロン事業部のアーキテクトチームに所属しています。 ふだんは本日紹介するマイクロサービス、モジュラモノリスでのリプレイス業務を主にやっています。(スライドには)書いていないんですが、好きなテキストエディタは「Vim」です
中小規模のLaravelは、初期はモジュラモノリスで運用し、サービスが複雑/大規模になって行く過程で、モジュールをマイクロサービス化していく運用が初期開発が抑えられ、かつクリーンなコードも実現できて良いのではないのでしょうか? モジュラモノリスとは モノリスアプリケーション内で、ドメインモデル等を単位としてモジュールに分解し、モノリスのように1つのデプロイパイプラインだけを持ちつつも、マイクロサービスのようにシステムのモジュール化・独立性を両立したモノリスアプリケーション。 モジュラモノリスの長所 モジュラモノリスの長所として、以下のようなものが挙げられるかと思います。 モノリスであるため、開発がマイクロサービスと比較し容易である コンテキストの境界がモジュール毎に明白になる モジュール毎にマイクロサービス化を進める事が可能である モジュラモノリスの短所 モジュラモノリスの短所として、以下
はじめに 皆様こんにちは、株式会社プラハのAwataです。 今回は、直近の開発において、マイクロサービスを検討をしたがモジュラモノリスを採用した経緯を書いていこうと思います。 案件の詳細に興味がある方は、以前書いたリーダーの振り返り記事を読んで頂ければと思います。 ※マイクロサービスやモジュラモノリスが何なのか?というそれぞれの詳細にはこの記事では触れませんのでご注意ください。 TL;DR マイクロサービスは思ったよりも難しい 組織的な問題がないならマイクロサービスはきっとまだ早い 将来的にマイクロサービスにするかもしれないなら、モジュラモノリスがいいかもしれない なぜマイクロサービスを検討したか 今回の案件では、既存システムとの連携が必須でしたが、既存システムのコードがかなり汚く、手を入れることが難しい状態でした。 そのため、既存システムのコードは極力触らずに新規サービスを開発したいと考
初めまして、株式会社スマートラウンドCTOの小山(@doyaaaaaken)です。 昨年末Startup CTO of the year 2022というイベントに出場して優勝し、その際のピッチ内容について解説する連続記事をこれまで書いてきました。 今回の記事はその4本目の記事となります。 もうじき今年のStartup CTO of the yearが開催されようとしている中、このシリーズが3本で止まっていた事実を思い出し、 「今年中にしか出せないネタなので書かねば!」 という気持ちになり急遽駆け込みで書きました。 拙い部分があればご容赦ください。 なお優勝ピッチ解説シリーズの他の記事は以下リンク先で公開しています。👇 🔗【優勝ピッチ解説(1)】スマートラウンドの開発体制ではスクラムをどう改変したか? 🔗【優勝ピッチ解説(2)】スマートラウンドでISMS認証を取得した背景および得た知見
ScalaMatsuri 2020は、2020年10月17日~18日にオンラインで開催されたアジア最大級の国際Scalaカンファレンスです。ここで、アルプ株式会社の竹尾氏が、「モジュラモノリスで表現する複雑なドメイン領域と境界」というテーマで登壇。前半は「Scalebase」の概要と創業当初の環境について話をしました。 アルプ株式会社の取締役 竹尾正馬氏(以下、竹尾):それでは始めます。アルプ株式会社の竹尾です。本日は「モジュラモノリスで表現する複雑なドメイン領域と境界」について発表します。よろしくお願いします。質問は発表終了後や、Discode内でまとめて回答したいと思います。 まず私、竹尾は、アルプ株式会社で取締役をしています。2018年に会社を共同創業して、エンジニアリング全般を担当しています。新卒の時には、サイバーエージェントのアドテクスタジオという部署でScalaをやっていました
背景 著者が開発に携わるサービスは拡大期にあり、リアーキしてモノリスからモジュラーモノリス化しようと計画している。 著者はモジュラーモノリス化することで著書・チームトポロジーで描かれるようなストリームアラインドチームができていく、という理想を抱いていたのだが、どうもそれにはハードルがあるように感じたので、課題感を言語化し、それにどう対処していくかを考えた。 チームトポロジー的理想と、それに対する課題 ▼理想 逆コンウェイ戦略によりモジュール分割され、そこに必要な職能のメンバーが集まってストリームアラインドチームができる。エンジニアの認知負荷は減少し、コミュニケーションや意思決定はチーム内で完結し、アウトカムが最大化される。 ▼課題 「PMによる日々の施策立案は、現在想定しているモジュールに閉じた形ではなされていない」という現実がある。このままでは、モジュール分割を達成しても、各プロジェクト
ScalaMatsuri 2020は、2020年10月17日~18日にオンラインで開催されたアジア最大級の国際Scalaカンファレンスです。ここで、アルプ株式会社の竹尾氏が、「モジュラモノリスで表現する複雑なドメイン領域と境界」というテーマで登壇。後半はモジュラモノリスの構築方法について話をしました。前回の記事はこちら。 実際のモジュラモノリス構築方法 竹尾正馬氏(以下、竹尾):実際どうやって構築していったかを「How Did We Design It?」で説明していきます。まずScalebaseのアプリケーションは、こんなイメージです。依存性逆転の原則を適用して、上位レイヤーから下位レイヤーのみの参照を可能にしています。それぞれのレイヤーについて説明します。 Primary AdapterとSecondary Adapterは後々説明しますが、外部通信の役割を果たすものだと思ってください
「【ハイブリッド開催】Rubyで追求するモジュラモノリスの可能性」は、バックエンドにRubyを採用している株式会社タイミー、hacomono社、ワンキャリア社が、Rubyにおけるモジュラモノリスの可能性や良い点、悪い点を共有する勉強会です。ここで株式会社タイミーの須貝氏が登壇。続いて、タイミーがどうやってモジュラモノリス化を進めているかについて話します。前回はこちらから。 タイミーが抱えていた課題 須貝俊 氏:続いて、タイミーがどうやってモジュラモノリス化を進めているかというところをより具体的に話していきたいと思います。 (スライドを示して)課題としてはスライドに示したようなものがあって、コード上で何が何に依存しているのか把握しきれない状態になっていました。上記に伴う変更による影響範囲がわからない。また、エンジニアの増加に伴ってチームも増えていくため、チームの責任範囲を明確にしていく必要が
私たちのサービス(note)のバックエンドは、Model 数が 800 以上と比較的大規模なモノリシックRailsアプリケーションで構成されています。 また関わるエンジニアの人数も40名程度のため、開発効率の低下、バグの増加といった課題が顕在化してきました。 このような課題に対しマイクロサービスアーキテクチャを検討しましたが、アーキテクチャ検討の前にまずはドメイン分割を進める必要があると考えました。 そこで Packwerk という Shopify が開発した gem を導入することにしました。 Packwerk は、モジュラーモノリス化を支援してくれる gem です。 設定したディレクトリをモジュールとみなし、モジュール間の依存関係を静的解析で検出してくれます。 モジュール化は基本的にはファイル移動だけなので、ドメイン分割を段階的に進めることができ、やり直しも容易にできます。 これらの特
エキサイト株式会社メディアの開発担当の佐々木です。 弊社では、現在CMSの再開発をSpringBoot使って構築しています。現時点では人数とかも少数な為、モノリスな構成になっていますが、将来的にはマイクロサービスにはする予定で、最近少し聞くようになってきたモジュラモノリスの構成を意識して、プロジェクトを作成しています。Gradleのマルチプロジェクトを使用してモジュールごとにプロジェクトを分けて開発を行っています。下記にて概要を解説します。 一般的なSpringBootの構成 一般的なSpringBootのディレクトリ構成は下記のようになります。 ├── gradle │ └── wrapper └── src ├── main │ ├── java │ │ └── com │ │ └── example │ │ └── demo │ │ ├── c
PHPカンファレンス2023「Symfony+Doctrine ORMで始める安全なモジュラモノリス」のスライドです。 ## トーク概要 モノリス全盛期〜マイクロサービスブームを経て、近年、両者のいいところ取りができるアーキテクチャとしてモジュラモノリスが話題になることも増えてきました。PHPでも流行のLaravelフレームワークでのやり方やハマりポイントの記事がありますが、基本的に密結合を指向しているLaravelをベースにかなり無理をして実現している事例を見かけます。 私が数年にわたってSymfony+Doctrine ORMをベースにモジュラモノリスでアプリケーションを開発してきた経験から、Laravelベースで開発するよりも数段楽にモジュラモノリスを実現できることを証明したいと思います。
こんにちは!アソビューでVPoE兼テックリードをしている兼平です! 先日、エンジニアHubにて「モジュラモノリスに移行する理由 ─ マイクロサービスの自律性とモノリスの一貫性を両立させるアソビューの取り組み」という執筆させてもらったのですが、こちらではこの記事の裏話的な内容を書ければと思います。 eh-career.com 記事の構成について アソビュー社は創業から10年以上経過し、事業としてもシステムとしても様々な歴史を辿ってきました。 その中で、得てきた経験や背景を踏まえ、現在実践している内容を公開できればと思い記事の執筆をさせて頂きました。 また今回のテーマであるモジュラモノリスはShopifyの事例が有名です。 モジュラモノリスの考え方は自体は決して目新しいものではく、モノリスとして自然と実践していた方もいると思いますが、まだマイクロサービスなどのアーキテクチャと比べ認知が広がって
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く