FLINTERS Engineer's Blog

FLINTERSのエンジニアが綴る技術ブログ

ドメイン駆動設計(DDD)との格闘 - 広義のドメイン・狭義のドメインの理解

こんにちは、株式会社FLINTERSで企画職 (Product Owner、ProductManager、ProjectManager、雑用係などの総称)として働く加藤と申します。 私は、主に、インターネット広告代理店などデジタルマーケティングを実践されている企業へ、Yahoo!GoogleFacebookなどの広告媒体が提供するAPIなどを活用した、業務用のアプリケーションを開発提供するお仕事に携わっております。

引き続きFLINTERSでは、ブログ投稿強化月間です。

企画職としてのドメイン駆動設計(DDD)への参加する時の心得について書いておりますが、第3回となる今回は、ドメイン駆動設計(DDD)における、【ドメイン】という言葉の謎に迫っていきたいと思います。

前回までの振り返り

第1回では、企画職として実践できるようになっておきたい、ドメイン駆動設計(DDD)の手法として4つをあげ、第2回で、ユビキタス言語について述べてきました。

【企画職として実践したいDDD手法】

  1. ユビキタス言語の発見・作成・普及
  2. 広義のドメイン・狭義のドメインの発見・作成
  3. コンテキスト境界の発見・作成
  4. コンテキスト境界同士の関係性の発見・作成

今回は、ドメイン駆動設計(DDD)という名前の通り、鍵となる考え方の【ドメイン】という言葉について理解を掘り下げていきたいと思います。 ※あくまで私個人の考え方なので、「おい!全然間違っているぞ」という部分を見つけた方は優しく教えて下さい

ドメインという言葉が混乱の元

続きを読む

はじめよう GKE Autopilot

こんにちは、清水です。巷で話題の GKE Autopilot について旧来のものと何が違うのか調べ、実際にクラスタを作って挙動を確認してみました。

ちなみに、所属しているチームのプロダクトである CRALY[^1] は社内で最初の Kubernetes クラスタ(GKE)上で構築されたプロダクトです。

  • なにが嬉しいのか
    • ノードとノードプールの管理が不要になり、ワークロードに集中して運用が行えるようになった
    • ノードごとの課金だったのが Pod ごとの課金になった
  • スタンダード環境との違いは
    • リージョンクラスタのみ
    • リリースチャンネルの登録が必要
    • イメージは Containerd を含む Container-Optimized OS のみ
    • ノードとノードプールがフルマネージド
    • マシンタイプは e2 のみ。GPU はサポート外
    • セキュリティ的な観点で、Service の spec.externalIPs は使えない
    • QoS Class は Guaranteed であること(request, limit が同じ)
  • 向いているユースケース
  • Autopilot を試してみる
    • Cluster autoscaler
    • Node auto provisioning(e2-medium でホストできない Pod)
    • Node auto provisioning(ノードセレクタを指定した Pod)
  • さいごに

cloud.google.com

続きを読む

SQL パイプライン開発に便利な Dataform 7つのお気に入りポイント

こんにちは。河内です。 最近はデータ基盤の構築も取り組んでいたりします。

社内では他の DWH が使われている事例がありますが、今回の基盤ではデータソースとの親和性や価格面などを考慮し BigQuery で行くことにしました。 BigQuery 上で多くのデータを順次変換してデータを生成するために何らかのワークフローエンジンが必要でした。

社内の他のシステムではワークフローエンジンとして Digdag を採用している例が多いですが、このシステムでは Kubernetes 上でサービスを運用しているため、当初(2020年12月)は Argo Workflow 上でクエリを順次実行することを構想していました。構想中に DataformGoogle に買収され、無料で使えるようになったというニュースが飛び込んできたため、触って感触が良いことを確かめた後、Dataform を使っていくことにしました。

dataform.co

Dataform は SQL パイプラインを定義し、実行するための環境を提供してくれます。 まだまだ使いこなしているとは言えないかもしれませんが、現時点で私が気に入っている点について書きます。

続きを読む

Prismaを使ってサクッとGraphQLのバックエンドを作成する!

こんにちは。菅野です。

最近はスマホアプリ全盛期ですね。誰しもが毎日たくさんのアプリを使っていると思います。
アプリでしかサービスを展開していないものもたくさんあったりします。

そのアプリを開発するときには、バックエンド側はFirebaseのようなmBaaSを利用するのが一番手軽だと思います。
ただ、mBaaSが用意するデータベースの中にはちょっと特殊なものもありますよね。別のサービスに乗り換えたくなったときとかに困るのでは?と思ったりもします。
あと、DBはRDBであることが要件の場合も少し悩ましいです。

そこで、mBaaSに頼らずに手軽にアプリのデータ置き場を作成できるか試してみるためにPrismaを使ってGraphQLのバックエンドを作成してみたので紹介します。

Prismaとは

www.prisma.io

Prismaとはnode.jsのORMです。特徴はGraphQLとの親和性の高さです。

良いところ

  • GraphQLと親和性が高い
  • DBのマイグレーションツールも付属
  • TypeScriptに対応しているので型安全
  • N+1問題に対応してるみたい

今回はこのPrismaを使ってGraphQLサーバーをササッと作ってみようと思います。

続きを読む

ドメイン駆動設計(DDD)との格闘 - ユビキタス言語には不屈の闘志が不可欠

こんにちは、株式会社FLINTERSで企画職 (Product Owner、ProductManager、ProjectManager、雑用係などの総称)として働く加藤と申します。 私は、主に、インターネット広告代理店などデジタルマーケティングを実践されている企業へ、Yahoo!GoogleFacebookなどの広告媒体が提供するAPIなどを活用した、業務用のアプリケーションを開発提供するお仕事に携わっております。

ただいまFLINTERSでは、ブログ投稿強化月間ということで、前回のブログ ドメイン駆動設計(DDD)との格闘 - 突然DDD実践チームにPOとして参加することになったら - FLINTERS Engineer's Blogに続き、ドメイン駆動設計(DDD)を実践するチームに企画職として参加する時の心得について書いていきたいと思います。

この投稿の内容

第2回となる今回は、ドメイン駆動設計(DDD)における、ユビキタス言語(UBIQUITOUS LANGUAGE)との付き合い方について、紹介していきたいと思います。

企画職に求められるドメイン駆動設計(DDD)への貢献(前回からの引用)

おそらく、ドメイン駆動設計(DDD)の開発プロジェクトへ企画者として参加する場合、ドメイン (一旦、ここでは、その開発プロジェクトで解決したいビジネス上の課題というような定義にしておきましょう)にたいして、そのエキスパートである、または、相対的にチーム内で知見があり、発注者・利用者の中のドメインエキスパートから課題や知識をヒアリングし、ソフトウェアで解決できるように落とし込んでいくことが期待されていると思います。

こうした、期待に応えるために、企画職として実践できるようになっておきたい、ドメイン駆動設計(DDD)の手法は4つです。

  1. ユビキタス言語の発見・作成・普及
  2. 広義のドメイン・狭義のドメインの発見・作成
  3. コンテキスト境界の発見・作成
  4. コンテキスト境界同士の関係性の発見・作成

では、さっそく今回は、ユビキタス言語の謎に迫っていきましょう。

ユビキタス言語がなぜ大切なのか?

続きを読む