1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Fundamentals of Data Engineering (English Edition) 輪読会資料第2回分 2023/4/17開催

Last updated at Posted at 2023-04-12

本記事の位置づけ

下記書籍を用いた輪読会の資料として作成しています。
https://amzn.asia/d/bC6DhKi

今回の対象範囲は、下記のとおりです。
I.Foundation and Building Blocks > 3.Designing Good Data Architecture >
Major Architecture Concepts > Tight Versus Loose Coupling:Tiers, Monoliths, and Microservices

概要

  • Monolith = tightly coupled, Microservices = loose coupled
  • Microservicesがおすすめだけど、Monolithの方がプロトタイプ作るのは向いている。

本編

Data architectureの種類

  • tightly coupled:相互に依存している "centralized,中央集権化されている"
  • loose coupling:お互いに強く依存していない"decentralized,中央集権化されていない"
    • common standards, ownership, 責任、説明可能性を設定(assign)することが大切。

Architecture tiers

Architectureとはデータ、アプリケーションなどの層のこと。理解することが大切。

  • Single tier : データベースとアプリが強く結合されている(tightly coupled)
    • databaseなどが落ちればすべてが落ちる。
    • プロトタイプには向いているが、本番環境には向いていない。
  • Multitier : n-tierともいう
    • 層が独立している。
    • lower layerはupper layerに依存しないが、upper layerはbottom layerに依存する。
    • e.g. three-tier-architecture
    • リソースの競合がなくなる。
    • shared-nothing architecture : 一つ一つのリクエストを一つのnodeが担当。リソースを共有しない。
    • shared disk architecture :同じdisk,メモリに全てのnodeがアクセスする。

Monolith

  • 一つのcodebase,一つのマシンでアプリとUIを提供する
    • Technical coupling : Architecture tiersを指す
    • Domain coupling : ドメインの結合方法を指す
  • tight couplingはモジュール化の不足を伴う。コンポーネントの再利用が難しいor不可能になる。
  • データチームは複雑化するMonolithを解決することを無視し、大きな泥の塊(big ball of mud)してしまう。
  • chap4でmonotlith/distributed technologiesの議論をする。またdistribuetd monolithもある
  • (感想)Monolith = tightly coupled. distribuetd monolithは両刀使い?

Microservices

  • Monolithの反対
  • Microservicesは、分かれていて、一元化されておらず、loosely coupledである。
  • それぞれのサービスは特定のfunctionがあり、それぞれ結合していない。
  • Monolithを分解できない場合は、並行してmicroservices-friendly のarchitectureを作り始めましょう。
  • Monolithを分解する場合は、ステークホルダーからも賛同を得ましょう。

Considerations for data architecture

  • 理想としては、現実に合う(pragmatically)loose couplingを使いましょう。ただし限界などを認識しましょう。
  • モジュール化、loose couplingするようなreversible technologyも選択しましょう。
  • Single vs Multitiered : domainをどうやってarchitectureから分けるか検討しましょう。
    • centralization : 一つにすべてのドメインのデータを集約
    • data mesh: それぞれのソフトウェアチームがデータの準備に責任がある。
  • Monolithは必ずしも悪いわけではない。早く実装したいならMonotlithの方が簡単だが、次第に分けていくことも踏まえておいてね。

英語で困ったこと

英訳で困った

  • keeping them agnostic of data (kindle P159周辺)
     - "データに関係なく"
     - Schema on write, Schema on read
  • Monolith 一枚岩?
  • ";"の役割 e.g.Monolithの1文目

技術面で困った

  • Figure3-5下、build in redundancy(冗長性)とは具体的にどのような状況?またその後"For instance~"の例もあまりイメージ的なかった
  • function, domain, tier, layerのそれぞれの違いは?(domainの例として、sales,inventoryと記載がある)
    • tierとlayerは同じでは。DatabaseやFunctionの単位のこと。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?