タグ

ITとdddに関するnyopのブックマーク (17)

  • 10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由|ハイクラス転職・求人情報サイト AMBI(アンビ)

    10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由 10年以上運用されているサービスには、さまざまな技術的な負債が発生しています。今後の継続的な改善のため、いったん新規開発を止めて4年かけて全面的なリニューアルを実施した「はてなブックマーク」の開発者に、プロジェクトの課題や解決する手法などを聞きました。 改善1つに数カ月かかるなら全てを書き換えられないか 2000年代にトレンドだった開発手法の負債 過去の開発意図を探る考古学的手法 データセンター移行も見据えて刷新しよう ドメインモデル設計とScalaとマイクロサービス化 コアロジックにはScalaを採用 きちんとしたドメインモデルによる設計と実装を継続したい 段階的なリリースとデータの移行という2つの大きな課題 求められる機能に沿ったデータベーススキーマに再構築 新旧の2システムを維持しながら

    10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由|ハイクラス転職・求人情報サイト AMBI(アンビ)
    nyop
    nyop 2019/12/31
  • CQRS実践入門 [ドメイン駆動設計] - little hands' lab

    この記事では、CQRSの入門として、軽量CQRS、別名クエリモデルについて解説します。 DDDの参照系処理で発生する課題 解決策 CQRSのメリット、デメリット 実装時の注意事項 部分的導入について なぜQueryServiceの定義がUseCase層なのか 整合性をどうやって担保するのか よくある誤解 データソースを分ける必要があるのか イベントソーシングとの関係 過去資料との繋がり もっと詳しく知りたい方は 現場での導入で困ったら DDDの参照系処理で発生する課題 DDDで定義されている実装パターンを使っていると、基的には永続化層との入出力はRepositoryを使うことになります。 更新系の処理ではEntityやValueObjectでドメインの知識を表現し、Repositoryを使って集約単位で永続化するという構成をとると、非常にメンテナンス性の良いものになります。 参考過去記事

    CQRS実践入門 [ドメイン駆動設計] - little hands' lab
    nyop
    nyop 2019/12/03
    DDD信者ではないものの非常に分かりやすくて良いエントリ。基幹システムになると特に更新系と参照系で求められるサービスレベルが違うし、参照系の用件も多岐に渡りがちなのぇ更新モデルと参照モデルを分ける設計はよ
  • ドメインロジックはドメインオブジェクトに凝集させる - Qiita

    こんにちは。 最近、こんなツイートしたのですが、ドメインオブジェクトではなくアプリケーションサービス1などにドメインロジックが書かれてしまうことがあります。 アプリケーションサービスはドメインロジックを配置する場所ではない、それはドメインオブジェクトの役割。アプリケーションサービスは進行役。ここを間違うから簡単にドメインモデル貧血症になってしまうんだと思います。 — かとじゅん (@j5ik2o) August 18, 2019 最近、以下の書籍(以下 増田)をマジメに読み直しました(笑)。ドメインモデル貧血症2を回避して、ドメインロジックをドメインオブジェクトに凝集させる方法に関して、増田にいろいろ書いてあったので、そのエッセンスと僕の考察を交えて解説したいと思います3。 詳しい内容は以下の増田を読んでください! コード例はScalaですが難しい表現がないので、Scalaが分からな

    ドメインロジックはドメインオブジェクトに凝集させる - Qiita
    nyop
    nyop 2019/08/24
  • ドメイン駆動設計 本格入門

    ドメイン駆動設計の考え方、ドメイン駆動設計を理解する三つのキーワード、エヴァンスのススメ、レガシーに立ち向かう、マイクロサービスとドメイン駆動設計Read less

    ドメイン駆動設計 本格入門
    nyop
    nyop 2019/03/23
  • ドメイン駆動設計を理解する3つのキーワード - ソフトウェア設計を考える

    ドメイン駆動設計との出会い 10年前に、エヴァンスのドメイン駆動設計を初めて読んだ時は、書いてある内容がほとんど理解できなかった。 あまり、面白いとも思わなかった。 当時は、現場でバグだらけのコードと格闘していた。障害が報告されるたびに、リファクタリングを参考に、該当個所の長いメソッドや大きなクラスを片端からリファクタリング。その結果、コードがわかりやすくなり、やっかいなバグが単純な修正で解消できてしまうことの効果に驚き、設計の重要性を再認識していた。 それ以前は、UNIXとC言語、OracleとPL/SQLという、オブジェクト指向ではない世界で技術を身に着けてきた。 どちらかというとオブジェクト指向には、ネガティブな印象を持っていた。現場では役に立たんだろうと。 バグとの格闘の中で、リファクタリング(設計改善)の威力を肌で感じ、その考え方とやり方がオブジェクト指向に由来するということを

    ドメイン駆動設計を理解する3つのキーワード - ソフトウェア設計を考える
    nyop
    nyop 2019/03/05
    このレベルの概念はビジネスの理解と表現というところでSAPと非常に親和性のある話だと思うんだけど、日本のSAP界隈だとあまり触れられないのが寂しさ。
  • マイクロサービスとDDDをGo言語とScala+Akkaで比較したらEventSourcingの話にもなって面白かったまとめ - yoskhdia’s diary

    Reactive Messaging Patterns読書会のなかで、「マイクロサービスとAkkaとGo」な面白い話題が出たので代表でまとめる試みエントリです。(結構、色々な話題に飛んでいるので難度高い。) まとめ方としては、会話ログを転記して、最後にまとめる形をとっています。また、議論と私の考えが混ざらないように所感は分けておきます。 ddd-cqrs-es.connpass.com TL;DR 要素技術(どんな言語使うとか、どんなアーキテクチャにするとか)の前に、組織やプロダクトの性格を考えて戦略を決めましょう。 そして、その中で最適と思われる戦術をとれるような要素技術を採用しましょう。 Akka良いよ。 ログ(一部抜粋) Slackからの引用のためテキストベースです。 事の始まりは、荒木さん(以下、 @applideveloper )の発言でした。 (この記事絡みですね。 集合知で各

    マイクロサービスとDDDをGo言語とScala+Akkaで比較したらEventSourcingの話にもなって面白かったまとめ - yoskhdia’s diary
  • 参照系と更新系の非対称性について - たなかこういちの開発ノート

    要約 (1) 参照系の要件はもっぱらデータ資源利用側から発せられ、更新系の要件はもっぱらデータ資源提供側から発せられる。 (2) よって、もし「フロントエンド・アプリ」と「バックエンド・サービス」とに階層分けするならば、参照系は「フロントエンド・アプリ」が装備すべきで、更新系は「バックエンド・サービス」が装備すべきである。 (3) 以上のように分離された参照系と更新系は、同一データ資源を扱っていても、もはや異なる境界付けられたコンテキストに属すると云うべきである。 (4) DDDにおける「CQRS」は、参照系と更新系が異なる境界付けられたコンテキストに置かれるとした場合の設計アプローチに関する論だと捉え直すことができるのではないか。 ◇ 参照系と更新系の非対称性について気付いたのは、かつて「ROA」と「SOA」の差異の質は何なのかを考えた時でした。 ROAでは、リソースを比較的“裸”に公

    参照系と更新系の非対称性について - たなかこういちの開発ノート
    nyop
    nyop 2016/04/08
    更新系の複雑さが軽視されがちなんだよね、ほんと。ムカつくくらい。
  • 「ドメイン駆動設計」の複雑さに立ち向かう

    その時は最善の実装だと思っていたことでも、月日が立つことで、それは間違いだったと気づくことがあります。 5年という歳月はそれを気づかせるには十分な時間で、 DDDをやり始めた初期の頃に書かれたコードは良くディスられたりしています。 そのコードは何を失敗していたのか?そして、それは改善するために改善した事とは? BIGLOBEにおける"今"のいいコードの書き方をできる限り具体的な事例を元に紹介します。

    「ドメイン駆動設計」の複雑さに立ち向かう
    nyop
    nyop 2015/09/06
  • 3週連続DDDその1 ドメイン駆動設計の基本を理解する

    論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452

    3週連続DDDその1 ドメイン駆動設計の基本を理解する
    nyop
    nyop 2015/09/03
  • ドメイン駆動設計という仕事の流儀

    Devlove2012 カンファレンス 発表資料。 ドメイン駆動設計。アプリケーションアーキテクチャ、開発プロセス、設計スタイル。腕を磨く。Read less

    ドメイン駆動設計という仕事の流儀
    nyop
    nyop 2015/06/13
  • 集約、エンティティ、バリューオブジェクト

    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が最近リリースされ、重要な変...

    集約、エンティティ、バリューオブジェクト
    nyop
    nyop 2015/02/23
  • 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」の発表資料が素晴らしい #devsumi - プログラマの思索

    「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」の発表資料が素晴らしい #devsumi デブサミ2014の発表資料を読んでいて、僕の中では「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」が一番心に残った。 ラフなメモ書き。 以下の発表資料の文章を引用している。 【元ネタ】 Developers Summit 2014 で「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」という内容で発表してきました - sifue's blog 2014/02/14 デブサミ2014【14-A-6】Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所 #devsumiA - Togetterまとめ 【0

    「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」の発表資料が素晴らしい #devsumi - プログラマの思索
    nyop
    nyop 2014/03/06
  • ドメイン駆動設計入門

    第1回 しょぼべん ( http://connpass.com/event/10849/ ) で話しした、イミュータブルデータモデル(世代編)です。

    ドメイン駆動設計入門
  • 僕と地豆とDDD - 都元ダイスケ IT-PRESS

    Domain-Driven Design: Tackling Complexity in the Heart of Software 作者: Eric Evans出版社/メーカー: Addison-Wesley Professional発売日: 2003/08/22メディア: ハードカバー購入: 4人 クリック: 113回この商品を含むブログ (89件) を見る Domain-Driven Design: Tackling Complexity in the Heart of Software というソフトウェア設計に関するがある。 この設計の考え方は、略してDDDと呼ばれたが、同時に「DDD難民」という言葉さえも生み出したらしい。ハードカバーによる560ページ、6000円を超える、洋書である。今思えば怖い物知らずだった。知らなかったとは言え、よくもまぁこのを手にとったものだ…。 この

    僕と地豆とDDD - 都元ダイスケ IT-PRESS
  • ドメイン駆動設計・俯瞰編・アプリケーション構築 - Strategic Choice

    俯瞰『アプリケーション構築』を俯瞰します。赤がパターンです。 補足背景には常に「ユビキタス言語」「モデル駆動設計」があります。 モデルとソースコードの乖離を避けるため「実践的モデラ」も前提になります。「レイヤ化アーキテクチャ」で層化し、ドメイン層を分離します。 「利口なUI」は、ドメイン駆動設計では使用しません。ドメイン層のモデルは、基的に「エンティティ」「値オブジェクト」「サービス」が構成要素となります。 「モジュール」で分割統治します。ライフサイクル管理に「集約」「ファクトリ」「リポジトリ」を使用します。

    nyop
    nyop 2011/04/27
  • 『DevLOVE 今、未来に繋がるために帆を立てるとき。』(デブサミ2011再演)に参加してきた - Diary of absj31

    4月23日 DevLOVE 今、未来に繋がるために帆を立てるとき。(東京都) ◆横を縦に!デブサミ2011の再演◆ 2011/2/17〜18に目黒雅叙園で開催されたDevelopers Summit 2011 (通称:デブサミ2011)4トラックが同時併催で走るセッションの中で 最も、受講者の方がどのセッションを選択するか迷った、 2/18の朝一番のセッション4つを、スピーカーのみなさま、会場を 提供してくださる楽天さまのお陰で、DevLOVEが横並びから 縦並びへ転換し、再演いたします 上記こくちーずページからの抜粋。ichitani (TwitterID:@papanda)さんによるDevLoveの説明、今回の勉強会に至る経緯等のトークの後、4立てで開催始まりました。 ちなみに開催会場であった楽天タワー2号館内の開催会場はめちゃめちゃ広かったです。定員200名でしたがキャパ的には全然

    『DevLOVE 今、未来に繋がるために帆を立てるとき。』(デブサミ2011再演)に参加してきた - Diary of absj31
    nyop
    nyop 2011/04/24
    うぅむ。行きたかった。。。
  • なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423

    AIを使ったオートモーティブ領域のサービスとして、タクシー営業を最適化するお客様探索ナビを開発しています。 データサイエンティスト、ドメインアルゴリズムエンジニアが開発した結果を、MLOps、サーバサイドエンジニアがデータパイプラインとサーバAPIとして構築し、最終的にタクシー乗務員向けの最適走行ナビアプリとして提供しています。 このアーキテクチャの信頼性に対する取り組みとして、データパイプライン中でタクシー運行シミュレーションによる評価行ったり、API末端で案内経路に異常が発生していないか、交通規制を守って走行できるかのチェックなど、複数の施策を行っています。 スコープをアーキテクチャの信頼性にしぼり、データパイプラインとアーキテクチャの全体像をお話した後、信頼性を担保するために、行っている施策とそれを取り組むに至った考え方を紹介します。

    なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
    nyop
    nyop 2011/04/23
  • 1