OCHaCafe Season4 #4の資料です. デモのソースコード等はこちらをご参照ください.
マイクロサービスにおける認証と認可の、一般論としての設計パターンを調べたところ、Web 上の複数の記事で似たようなパターンが登場していた。ここでは、まず認証と認可が実現したい一般的な要件と、そのマイクロサービスでの難しさを整理し、認証と認可に分けて調査したパターンをまとめた。 あくまで “一般論” なので、実際には個々のドメインにあわせてアレンジが必要 往々にしてこの “アレンジ” に価値が宿るものだが、まずはセオリーを知っておきたいというモチベーションで調査した Web 上の記事を読んでまとめただけなので、手を動かしての確認はしておらず、理解が甘い部分はご容赦ください 具体的な通信方式やサービス間通信のセキュリティといった具体論までは踏み込めていない。このへんはサービスメッシュやゼロトラストネットワークといったトピックが登場すると思われる これらは次回以降の Todo としています その
自分が複数のシステムの開発を経験して得た確信として、「認証と認可と課金とコアドメインの分離がめちゃくちゃ重要である」というものがあるので、コレを整理してアウトプットしていく 分離するモチベーションとは Microservice文脈でいうと、デプロイ独立性だったり、リソースの最適配分だったり、障害の局所化だったり、開発組織とのマッピングだったりがメリットとして語られることが多い。 だが、ここで取り上げたいのは戦術的DDD的観点でのコンテキスト分離の有用性である。 ※ちなみにコンテキスト分離のみであればモジュラモノリスだけで実現可能。 戦術的DDD的観点での関心事の分離によるメリットとは コンテキストが分離されていることによって、境界をまたぐ際に「このI/Fは正しいのか?」を都度考えることを強制することができる。 境界がなければ意図しない密結合を生みやすくなってしまう。 もちろん、境界を超える
研修中に「マイクロサービス」の解説をしていると,たまに「モノリス分割」に関する質問が出てディスカッションをすることがある.当然ながら万能な分割アプローチはないけど,例えば DDD (Domain-driven design) などのアプローチを選択するなど,選択肢はいろいろある.そして最近「モノリス分割」に役立つアプローチを紹介した martinfowler.com の記事「How to break a Monolith into Microservices」を読んだ. 具体的には以下の「計8種類」のアプローチが紹介されている.原著を翻訳するのではなく,あくまで個人的なメモとしてまとめる.なお,日本語も個人的に載せているため,参考程度にしてもらればと! Warm Up with a Simple and Fairly Decoupled Capability(シンプルかつ分離された機能で準
Microservices Platform TeamでTech leadをしている@deeeeeeetです. 昨年のMTC2018ではMicroservices Platformチームの立ち上げから1年で僕らが取り組んできたことを紹介しました. speakerdeck.com 具体的にはStranglerパターンによるMonolithからMicroservicesへの段階的なリクエスト移行を行うためのAPI gatewayの開発や,Microservicesのインフラのセットアップを簡単にしサービス開発チームのSelf-service化を進めるためのStarter-kitの開発,GoでのMicroservicesの開発を高速で始めるためのTemplateプロジェクトの開発,Spinnakerの導入などについて紹介しました. これらはPlatformとして最低限の機能を整備したにすぎず,さ
2019年9月24日、株式会社メルカリにて、エンジニア向けイベント「Mercari Bold Challenge ~CTOとエンジニアが赤裸々に語る 変化と挑戦~」が開催されました。社員数は1,800人を超え、40ヵ国以上の国から多様な人材が集まり急成長を続けるメルカリ。一方で、急成長に伴って新たな課題も生まれています。そこで今回は「Bold Challenge(大胆な挑戦)」というテーマで、メルカリのエンジニア組織の変化と挑戦について、そのリアルを語ります。プレゼンテーション「なぜMicroservicesか?」に登場したのは、株式会社メルカリ Software Engineer, Microservices Platformの中島大一氏。講演資料はこちら メルカリ、マイクロサービス化の歴史 中島大一氏:「なぜMicroservicesか?」というタイトルで発表させていただきます、@de
ソフトウェアのセキュリティは複雑な問題だが,それぞれのサービスがセキュリティを扱わなくてはならないマイクロサービスを採用することで,さらに複雑なものになる – 先日ロンドンで開催されたMicroservices ConferenceでDavid Borsos氏は,マイクロサービスベースのシステムにおける4つのエンドユーザ認証方法を評価した自身の講演の中で,このように説明した。 従来のモノリシックなアーキテクチャでは,ひとつのサーバがすべてのユーザ情報を保持することで,認証されたユーザの検証とHTTPセッションの生成を行なうことが可能だ。マイクロサービスアーキテクチャでは,ユーザはサービスの集合体と対話するため,それぞれのサービスがユーザが誰であるかを知る,潜在的な必要性がある。単純な解決方法は,モノリシックなシステムと同じパターンをマイクロサービスシステムにも適用することだが,すべてのサー
この記事はMERPAY TECH OPENNESS MONTHの15日目の記事です。 こんにちは。メルペイのPayment PlatformチームでPaymentServiceの開発を担当するエンジニアの @foghost です。 メルペイではマイクロサービスのアーキテクチャで決済システムを開発しています。その中でPaymentServiceは決済トランザクション管理の基盤サービスとして、下位層のサービス(外部サービスも含め)が提供する各種決済手段を利用して、上位層のサービス(メルカリ、NFC,コード払いなど)に必要な決済フローを共通APIとして提供しています。PaymentServiceが提供する決済処理に複数のサービスを跨いでお金の動きを正確に管理する必要があるので、作り始めた頃から決済トランザクション管理を最も重要な課題として、サービスを跨いでもデータの整合性が取れる仕組みを作ってき
現職においてMonolithアーキテクチャからMicroservicesアーキテクチャへの移行とその基盤の構築に関わって2年近くが経った.未だ道半ばであるがこれまでの経験や日々のインプットをもとにいろいろ書いておこうという気持ちになった.本記事ではそもそもMicroservicesアーキテクチャとは何かを整理し,なぜやるべきか?・なぜ避けるべきかを整理する. Microservices? Microservicesアーキテクチャとは「Single purpose,High cohesion,そしてLoosly Couploedなサービスを組み合わせてシステムを構築する」アーキテクチャ手法である.それぞれの原則をまとめると以下のようになる. Single purpose: 一つのことに集中しておりそれをうまくやること Loose coupling: サービスは依存するサービスについて最小限の
メルカリバックエンドエンジニアの@yagi5です。 Mercari Advent Calendar 2018の23日目を担当します。 モノリシックなシステムは、障害が発生するとシステムが全停止してしまうことが一般的です。 しかし、Microservicesアーキテクチャでは様々なテクニックを用いて、サービス全体が停止するような障害に対処することができます。 この記事では、Microservicesにおけるシステムの回復性を高めるための技術について書いていきます。 回復性とは、障害が起こらないことを意味しません。 高い回復性を備えたシステムは、障害が発生するということを前提に、システム全体のダウンを避け、データのロスが回避されるように設計されています。 Microservicesの世界では、システムは自律的に動作する複数のサブシステムによって構成されます。 ひとつのサービスに障害が発生しても
どちらも大変素晴らしい記事で、大変よくまとまっていながら主張が入っていて読みごたえのある文だった。それに比べたら、以下の文はまとまりもない駄文だが、それでもどうしてもこの話題には物申したくなる自分がいる。知見と呼べるほどでもないけれど、3年間マイクロサービスのことを考え続けてきた者の率直な感想として、読んでいってもらえたら嬉しい。 tl;drこの記事を通して、僕が結局何が言いたいのかというと、マイクロサービスはもっと開かれたものであってほしいということだ。複数のビジネスをやるならマイクロサービスの考え方を導入する権利があるし、すでにマイクロサービスをやっているなら、マイクロサービスのことを考えるのは基盤チームだけじゃなくてみんなであるべきだ。 マイクロサービスは「やる」か「やらない」かではない前者のdeeeetさんの記事は、全くマイクロサービスを知らない人がぜひ読むべき、本当に良い記事だと
モダンな Web アプリを異なる JavaScript フレームワークを使う複数チームで開発するためのテクニック はじめに この記事は翻訳記事です。 原著者の許可をとって翻訳・掲載しています。 原文はこちらです。 翻訳者 マイクロフロントエンドとは? マイクロフロントエンドという言葉は 2016 年の終わりにThoughtWorks Technology Radarで言及されました。 それはマイクロサービスの考え方をフロントエンドに拡張したものです。 現在の Web のトレンドは多機能でパワフルな SPA です。 SPA はフロントエンドとバックエンドを切り離すという、マイクロサービスの考え方に基づいています。 開発をすすめていくと、特に複数のチームで管理している場合 フロントエンド層が肥大化して管理が難しくなりがちです。 これを「モノリシックなフロントエンド」と呼びます。 マイクロフロン
こんにちは。Synergy! 開発チームの松本です。 以前の記事でも少し触れたのですが、当社シナジーマーケティングのプロダクトである Synergy! は、2015 年以前に作られたモノリスと、それ以降に作られたマイクロサービスのハイブリッド型として稼働しています。 この数年、マイクロサービスを実践してきてつくづく感じているのは、全てのチームがマイクロサービスアーキテクチャスタイルの本質を理解した上で開発や運用を行うということの難しさです。「分散されたモノリス」なんていう話も聞きますが、これもやはり、本質を理解しないままマイクロサービスを実践した例です。 2014 年に書かれた martinfowler.com の記事 "Microservices" は、マイクロサービスアーキテクチャを 9 つの特性に分解してその本質を述べた素晴らしいドキュメントです。これをチームの教育に使うことで前述の
Microservicesの世界においてService meshは大きなキーワードになった.KubeCon 2017やKubeCon 2018 EUにおいても多くのセッションをService mesh(もしくはその代表格であるIstio)が占めており注目の高さも伺える.もちろんMicroservicesを進めるMercariにおいても導入を検討しており今後重要なコンポーネントの1つになると考えている.本記事ではそもそもなぜService meshという考え方が登場したのか,なぜ重要なのか? その実装としてのIstioとは何で何ができるのか? について簡単にまとめてみる. 参考文献 Service meshを一番理想的な形でサービスに使い始めその考え方を広めたのはLyftだ(と思う).LyftはIstioのコアのコンポーネントであるEnvoyを開発しそれを用いてService meshを構築
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く