ホーム自己紹介ブログ
NO.52
DATE2020. 10. 07

Micro Frontends を調べたすべて

Micro Frontends に関わる記事を 100 件以上読みました(参考記事に記載しています)。そこから得た Micro Frontends についてこの投稿に記録します。 また、調査メモについて、次のリポジトリに残しています。

GitHub - silverbirder/think-micro-frontends
Contribute to silverbirder/think-micro-frontends development by creating an account on GitHub.
github.com

発端

Micro frontends | Technology Radar | Thoughtworks
We've seen significant benefits from introducing microservices, which have allowed teams to scale the delivery of independently deployed and maintained services. Unfortunately, we've also seen [...]
www.thoughtworks.com

実績企業

  • Airbnb
  • Allegro
  • Amazon
  • Beamery
  • Bit.dev
  • BuzzFeed
  • CircleCI
  • DAZN
  • Elsevier
  • Entando
  • Facebook
  • Fiverr
  • Hello Fresh
  • IKEA
  • Klarna
  • Microsoft
  • Open Table
  • OpenMRS
  • Otto
  • Paypal
  • SAP
  • Sixt
  • Skyscanner
  • Smapiot
  • Spotify
  • Starbucks
  • Thalia
  • Upwork
  • Zalando
  • ZEISS

ProsCons

Pros

観点内容
独立性・任意のテクノロジーと任意のチームで開発可能 /
展開・特定の機能をエンドツーエンド(バック、フロント、デプロイ)で確実に実行可能
俊敏性・特定のドメインについて最高の知識を持つチーム間で作業を分散すると、リリースプロセスが確実にスピードアップして簡素化される。 / ・フロントエンドとリリースが小さいということは、リグレッションテストの表面がはるかに小さいことを意味する。リリースごとの変更は少なく、理論的にはテストに費やす時間を短縮できる。 / ・フロントエンドのアップグレード/変更にはコストが小さくなる

Cons

観点内容
独立性・独立できず、相互接続しているチームが存在しがち / ・多くの機能で複数のマイクロフロントエンドにまたがる変更が必要になり、独立性や自律性が低下 / ・ライブラリを共有すること自体は問題ないが、不適切な分割によって作成された任意の境界を回避するための包括的な場所として使用すると、問題が発生する。 / ・コンポーネント間の通信の構築は、実装と維持が困難であるだけでなく、コンポーネントの独立性が取り除かれる / ・横断的関心事への変更ですべてのマイクロフロントエンドを変更することは、独立性が低下する
展開・より大きな機能の部分的な実装が含まれているため、個別にリリースできない / ・サイト全体の CI / CD プロセス
俊敏性・重複作業が発生する / ・検出可能性が低下した結果、一部の標準コンポーネントを共有できず、個別のフロントエンド間で実装が重複してしまう。 / ・共有キャッシュがないと、各コンポーネントは独自のデータセットをプルダウンする必要があり、大量の重複呼び出しが発生する。
パフォーマンス・マイクロフロントエンドの実装が不適切な場合、パフォーマンスが低下する可能性がある。

統合パターン

Micro Frontends – The Missing Piece Of The Puzzle In Feature Teams - Bluesoft
bluesoft.com
統合選択基準技術
サーバーサイド統合良好な読み込みパフォーマンスと検索エンジンのランキングがプロジェクトの優先事項であること・Podium / ・Ara-Framework / ・Tailor / ・Micromono / ・PuzzleJS / ・namecheap/ilc
エッジサイド統合サーバーサイド統合と同じ・Varnish EDI / ・Edge Worker / / CDN / ・ Akamai / ・ Cloudfront / ・ Fastly / ・CloudFlare / ・ Fly.io
クライアント統合さまざまなチームのユーザーインターフェイスを 1 つの画面に統合する必要があるインタラクティブなアプリケーションを構築すること・Ajax / ・Iframe / ・Web Components / ・Luigi / ・Single-Spa / ・FrintJS / ・Hinclude / ・Mashroom
ビルド時統合他の統合が非常に複雑に思われる場合に、 / 小さなプロジェクト(3 チーム以下)にのみ使用すること・ Bit.dev / ・ Open Components / ・ Piral

機能

コミュニケーション

developer.mozilla.org
GitHub - postaljs/postal.js: JavaScript pub/sub library supporting advanced subscription features, and several helpful add-ons.
JavaScript pub/sub library supporting advanced subscription features, and several helpful add-ons. - postaljs/postal.js
github.com

データ共有

  • ストレージ
    • URL
    • Cookie
    • Local Storage/Session Storage

モジュール共有

  • webpack
Module Federation | webpack
webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.
webpack.js.org
Externals | webpack
webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.
webpack.js.org
DllPlugin | webpack
webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.
webpack.js.org

ルーティング

Vaddin router

How to use React Router in Hilla applications | Vaadin
Learn how to integrate and utilize React Router with Hilla for seamless routing.
vaadin.com

キャッシュ

developer.mozilla.org developer.mozilla.org

認証

  • JWT
JSON Web Tokens - jwt.io
JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signature (JWS).
jwt.io

計測

  • Google Analytics
  • Navigation Timing API
  • Resource Timing API
  • High Resolution Time API
  • User Timing API
  • Frame Timing API
  • Server Timing API
  • Performance Observer

Real User Monitoring

  • SpeedCurve
  • Catchpoint
  • New Relic
  • Boomerang.js
  • Parfume.js
  • sitespeed.io

Synthetics Monitoring

  • Lighthouse
  • WebpageTest

アクセス履歴

developer.mozilla.org

分割ポリシー

フロントエンドを分割する方針について

  • 水平分割
    • 画面内にある要素で分割
    • ビジネス上の機能
  • 垂直分割
    • 画面毎に分割

Web サイト ⇔Web アプリ

Microfrontends: An approach to building Scalable Web Apps
Microfrontends: An approach to building Scalable Web Apps

マイクロフロントエンドは、かなりのオーバーラップがあるバンドの中央部分の大部分に最も適しています。バンドの両極端に該当するプロジェクトにマイクロフロントエンドアーキテクチャを実装しようとすると、生産性に反するそうです。

リポジトリ

パターンProsCons技術
モノリポコードベース全体に簡単にアクセスできる。 / (検出可能性が高い)モノリポジトリは、特に大規模なチームで作業しているときに、 / 動作が遅くなる傾向があり、バージョン管理下のコミットとファイルの数が増加する。・nx.dev / ・lerna
マルチリポ・マルチリポジトリは、非常に大規模なプロジェクトと / それに取り組む非常に大規模なチームがある場合に最適。マルチリポジトリ環境では、各マイクロアプリを / 個別にビルドする必要がある。

他アーキテクチャ

アーキテクチャ名関係リンク
Modular Monolith・Deconstructing the Monolith – Shopify Engineering / ・kgrzybek/modular-monolith-with-ddd
Enterprise Architecture (Clean Architecture)・Building an Enterprise Application with Vue / ・soloschenko-grigoriy/vue-vuex-ts
Jam StackJam Stack
App ShellApp Shell モデル

書籍

Micro Frontends in Action - Michael Geers
Learn how to apply the microservices approach to the frontend. A guide to simplifying unwieldy frontends by composing them from small, well-defined units.
www.manning.com

参考記事

  • https://blog.bitsrc.io/communication-between-micro-frontends-67a745c6cfbe
  • medium.com
  • medium.com
  • medium.com
  • https://levelup.gitconnected.com/podium-easy-server-side-micro-frontends-385f3a4cd346
  • https://levelup.gitconnected.com/micro-frontend-curry-506b98a4cfc0
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • https://itnext.io/building-micro-frontend-applications-with-angular-elements-34483da08bcb
  • https://blog.pragmatists.com/independent-micro-frontends-with-single-spa-library-a829012dc5be
  • https://blog.bitsrc.io/state-of-micro-frontends-9c0c604ed13a
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • https://codeburst.io/breaking-a-large-angular-app-into-microfrontends-fb8f985d549f
  • medium.com
  • https://tech.buzzfeed.com/micro-frontends-at-buzzfeed-b8754b31d178
  • https://blog.bitsrc.io/serverless-microfrontends-in-aws-999450ed3795
  • medium.com
  • medium.com
  • medium.com
  • https://blog.bitsrc.io/tools-and-practices-for-microfrontends-dab0283393f2
  • medium.com
  • medium.com
  • https://blog.bitsrc.io/how-we-achieved-smooth-navigation-across-micro-frontends-42130577924d
  • https://eng.collectivehealth.com/gracefully-scaling-web-applications-with-micro-frontends-part-i-162b1e529074
  • https://eng.collectivehealth.com/gracefully-scaling-web-applications-with-micro-frontends-part-ii-8fa730d05b14
  • medium.com
  • medium.com
  • https://medium.com/@rchaves/building-microfrontends-part-i-creating-small-apps-710d709b48b7
  • https://blog.bitsrc.io/6-patterns-for-microfrontends-347ae0017ec0
  • https://medium.jonasbandi.net/frontend-monoliths-run-if-you-can-voxxed-day-zuerich-2019-d8d714ff361a
  • medium.com
  • medium.com
  • medium.com
  • https://engineering.contaazul.com/evolving-an-angularjs-application-using-microfrontends-2bbcac9c023a
  • https://blog.bitsrc.io/11-popular-misconceptions-about-micro-frontends-d5daecc92efb
  • medium.com
  • medium.com
  • https://blog.bitsrc.io/sharing-dependencies-in-micro-frontends-9da142296a2b
  • medium.com
  • medium.com
  • https://levelup.gitconnected.com/brief-introduction-to-micro-frontends-architecture-ec928c587727
  • https://itnext.io/prototyping-micro-frontends-d03397c5f770
  • https://blog.bitsrc.io/mini-web-apps-a-bounded-context-for-microfrontends-with-microservices-f1482af9276f
  • medium.com
  • https://medium.embengineering.com/micro-front-end-and-web-components-ce6ae87c3b7f
  • medium.com
  • medium.com
  • https://blog.bitsrc.io/building-react-microfrontends-using-piral-c26eb206310e
  • medium.com
  • https://itnext.io/implementing-microfrontends-in-gatsbyjs-using-ara-framework-a95ee79cc0e7
  • https://itnext.io/strangling-a-monolith-to-micro-frontends-decoupling-presentation-layer-18a33ddf591b
  • https://itnext.io/page-building-using-micro-frontends-c13c157958c8
  • medium.com
  • medium.com
  • medium.com
  • https://medium.embengineering.com/micro-front-ends-webpack-manifest-b05fc63a0d53
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • https://medium.embengineering.com/micro-front-ends-server-side-rendering-2b515220a56e
  • medium.com
  • medium.com
  • https://itnext.io/the-micro-frontends-journey-tech-agnostic-principle-b61414b19505
  • medium.com
  • https://medium.embengineering.com/micro-front-ends-76171c02ab17
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • https://blog.bitsrc.io/how-to-develop-microfrontends-using-react-step-by-step-guide-47ebb479cacd
  • medium.com
  • medium.com
  • https://towardsdatascience.com/looking-beyond-the-hype-is-modular-monolithic-software-architecture-really-dead-e386191610f8
  • medium.com
  • https://levelup.gitconnected.com/easy-svelte-micro-frontends-with-podium-34aa949bed02
  • medium.com
  • https://blog.bitsrc.io/using-es-modules-with-dynamic-imports-to-implement-micro-frontends-7c840a38890e
  • medium.com
  • medium.com
  • medium.com
  • medium.com
  • https://levelup.gitconnected.com/a-micro-frontend-solution-for-react-1914b19663b
  • medium.com
  • https://floqast.com/engineering-blog/post/implementing-a-micro-frontend-architecture-with-react/
  • https://blog.bitsrc.io/how-we-build-micro-front-ends-d3eeeac0acfc
  • medium.com
  • https://blog.bitsrc.io/implementing-micro-front-end-with-single-spa-and-react-eeb4364100f
  • redhat.com
  • medium.com
  • https://www.esentri.com/composing-micro-frontends-server-side
  • https://dev.to/dabit3/building-micro-frontends-with-react-vue-and-single-spa-52op
  • https://dev.to/florianrappl/11-popular-misconceptions-about-micro-frontends-463p
  • https://dev.to/rsschouwenaar/thoughts-about-micro-frontends-in-2020-39ed
  • https://dev.to/onerzafer/understanding-micro-frontends-1ied
  • https://dev.to/aregee/breaking-down-the-last-monolith-micro-frontends-hd4
  • https://dev.to/thejoin95/micro-frontends-from-the-00s-to-20s-5a2
  • https://dev.to/florianrappl/communication-between-micro-frontends-41fe
  • https://dev.to/phodal/micro-frontend-architecture-in-action-4n60
  • https://dev.to/jondearaujo/the-approaches-and-challenges-of-micro-frontends-a-theoretical-introduction-176
  • https://dev.to/scriptedalchemy/micro-frontend-architecture-replacing-a-monolith-from-the-inside-out-3ali
  • https://dev.to/abhinavnigam2207/an-approach-to-micro-frontend-architecture-mvp-with-nextjs-2l84
  • https://dev.to/jamesmh/using-micro-uis-to-extend-legacy-web-applications-166
  • https://dev.to/jonisar/11-must-know-frontend-trends-for-2020-13e1
  • https://dev.to/manfredsteyer/6-steps-to-your-angular-based-microfrontend-shell-1nei
  • https://dev.to/coroutinedispatcher/working-on-modularising-android-app-314c
  • https://dev.to/remast/my-software-architecture-resources-g38
  • https://dev.to/open-wc/open-wc-scoped-elements-3e47
  • medium.com
  • medium.com
  • medium.com
  • https://dev.to/kleeut/how-do-you-share-authentication-in-micro-frontends-5glc
  • https://github.com/ChristianUlbrich/awesome-microfrontends
  • https://github.com/rajasegar/awesome-micro-frontends
  • https://github.com/MPankajArun/awesome-micro-frontends
  • https://github.com/phodal/microfrontends
  • https://martinfowler.com/articles/micro-frontends.html
  • https://thenewstack.io/microfrontends-the-benefits-of-microservices-for-client-side-development
  • https://allegro.tech/2016/03/Managing-Frontend-in-the-microservices-architecture.html
  • https://engineering.hellofresh.com/front-end-microservices-at-hellofresh-23978a611b87
  • http://tech.opentable.co.uk/blog/2016/04/27/opencomponents-microservices-in-the-front-end-world/
  • http://tech.opentable.co.uk/blog/2015/02/09/dismantling-the-monolith-microsites-at-opentable/
  • medium.com
  • https://blog.senacor.com/microfrontends/
  • https://www.infoq.com/news/2018/08/experiences-micro-frontends/
  • https://dzone.com/articles/building-micro-frontends-with-single-spa-and-react
  • https://www.agilechamps.com/microservices-to-micro-frontends/
  • https://gustafnk.github.io/microservice-websites/
  • https://hub.packtpub.com/what-micro-frontend/
  • https://www.thoughtworks.com/de/radar/techniques/micro-frontends
  • http://blog.wolksoftware.com/microlibraries-the-future-of-web-development
  • https://xebia.com/blog/the-monolithic-frontend-in-the-microservices-architecture/
  • https://x-team.com/blog/micro-frontend/
  • https://menelaos.dev/devweek-sf-2020/
  • https://www.infoq.com/news/2020/07/microfrontends-vue-yoav-yanovski/
  • https://www.infoq.com/articles/microfrontends-business-needs
  • https://www.infoq.com/articles/architecture-trends-2020/
  • https://www.infoq.com/news/2018/08/experiences-micro-frontends/
  • https://www.infoq.com/news/2020/01/strategies-micro-frontends/
  • speakerdeck.com
フロントエンド

-

シェアする

フォローする

次のページ

技術におけるアンテナの張り方 (巨人の肩に乗れ!)

前のページ

Zalando tailor で Micro Frontends with ( LitElement & etcetera)

関連する記事

タグ「フロントエンド」の記事

ヒューマンインターフェース ガイドライン という言葉を知りました。

最近、ヒューマンインターフェース ガイドライン(HIG)という言葉を知りました。 「ヒューマンインターフェイスガイドライン」には、どのAppleプラットフォームでも優れた体験を設計できるようにするためのガイドとベストプラクティスが含まれてい

2026-01-24

フロントエンド
AIの利用上限に達した時にすることを残しておく

主にWeb関連の個人開発をしている際に心がけていることを書きます。 月末に近づくにつれ、AIの利用上限に達してしまうことがあります。 その状況になった時、以下のいずれかの選択肢が私の中では残っています。 課金して利用上限を増やす 無料モデル

2026-01-22

フロントエンド
AI
CSSで頑張らなくても、SVGで楽にできるときもある

個人サイトをリニューアルをしています。 ノート風のデザインを目指して、スタイルを調整していました。 ノートの見た目は、現実にあるノートを再現しようとCSSを書いていました。 現在、以下の画像のようなノートになっています。 ノート風デザインの

2026-01-20

フロントエンド
← ブログ一覧へ