イベント駆動アーキテクチャにおける落とし穴についてお話しています。 こちらは JJUG CCC 2024 Spring の講演用資料です。 Code: https://github.com/nrslib/pubsubdoc # URL YouTube: https://www.youtu…
JavaScriptフレームワークを取り巻く状況は、常に変化を続けています。近年では、サーバーサイドレンダリング(SSR)とクライアントサイドレンダリング(CSR)のバランスは、重要な検討事項です。 ChatGPTのRemix採用 2024年9月、ChatGPTがNext.jsからRemixに移行したことが明らかになりました。この出来事は、Remixの母体であるReact Router系のコミュニティで大きな話題となり、移行の理由について様々な憶測を呼びました。 JavaScriptエキスパートのWes Bos氏(学習動画教材とかを作っている人)は、ChatGPTのフロントエンドのソースコードを分析し、OpenAIがRemixを採用した理由について独自の考察を展開しました。 www.youtube.com 緊急で動画を回すWes Bos氏 Wes Bos氏の分析によると、ChatGPTのア
はじめに クリーンアーキテクチャは、ソフトウェア設計の分野で非常に重要な概念です。 しかし、その理解は容易ではなく、明確な正解が存在するわけではありません。 多くの人が異なる解釈を持ち、他の設計思想と混在していることもあります。 この記事では、自分なりの視点からクリーンアーキテクチャを解釈し、その整理した内容を共有します。 このアーキテクチャの目的は、システムの各層を独立させ、変更に強く、テストしやすい設計を実現することです。 この記事では、クリーンアーキテクチャの基本概念、Golangでの実装方法、およびディレクトリ構成について詳しく説明します。 なお、この記事では個人的な見解を述べており、必ずしも正解を書いているわけではありません。もし誤りがあれば、ぜひご指摘いただけると幸いです。 クリーンアーキテクチャの基本概念 クリーンアーキテクチャの元となったのは、ロバート・C・マーチン(通称「
はじめに 転職後の二つの喪失感への対応 所属チームの現状とMonotaROのアプリケーション/サービス共通基盤(所謂プラットフォーム) 所属チームの状況 社内プラットフォームの状況 マイクロサービス開発のためのテンプレートの導入 開発のロケットスタート:テンプレートの早期提供 テンプレート作成の5つの要点 1. ベンダー非依存なObservabilityの実装 2. CI/CDを早期に提供(特にLinterを最初期に) 3. APIプロトコルとして、JSON over HTTPとgRPCの双方をサポート 4. 最低限の薄いフレームワーク 5. セントラルProtobufリポジトリの提供 現在の取り組み (2023年10月以降)と今後の展開 さいごに はじめに はじめまして、MonotaROのCTO-Officeに所属する伊藤と申します。 github.com recruit.monotar
モノリスでは大変なので、マイクロサービスやモジュラーモノリスにして認知負荷を減らしたり、生産性の劣化に抗いたいという考え方がある。 モジュラーモノリスとは モジュラーモノリスについては、だいたい infoq.com のモノリスシリーズ(?)を読めば良いんじゃないか。 有名なのは Shopify のヤツ。 モノリスとマイクロサービスの中間にある、1 アプリケーションなんだけどモノリスでは無い、アプリ内でモジュール分けされているアーキテクチャのこと。app/ の直下に MVC を置くんじゃなくて、COMPONENTS (例えば billing)/app/ の下に MVC を置く、ようなイメージ。 モジュラーに移行するタイミング 僕の感覚だと、数百モデルは全然モノリスで扱えると思っている。少なくとも 300 models 程度でモジュラーにしていく必要はまったく感じない。 世の中で見つけたモデル
2023年は「Cloud Run を触って覚える」をテーマとした ひとりアドベントカレンダー を開催しており、Cloud Run のさまざまな機能や Cloud Run でよく使う構成などをご紹介しています。 最終日、25日目は Cloud Run を中心としたサーバーレス アーキテクチャをいくつか紹介します。2023年にちなんで23個のアーキテクチャを用意しました。 Cloud Run の概要は「gihyo.jp」で解説していますので、こちらもぜひご覧ください。 Web アプリケーション + API の 3-Tier 構成 (SPA) Web アプリケーション + API の 3-Tier 構成 (SPA) SPA (Single Page Application) がフロントになり、バックエンドの API サーバーとして Cloud Run を使用するアーキテクチャです。SPA は N
元Google・現Microsoftのソフトウェアエンジニアであるジュリオ・メリノ氏が、現代のWindows 11の基盤アーキテクチャとなっているWindows NT系と、FreeBSDやLinuxなどに代表されるUNIX系を比較した考察をまとめています。 Windows NT vs. Unix: A design comparison - by Julio Merino https://blogsystem5.substack.com/p/windows-nt-vs-unix-design ・開発の経緯 MicrosoftはDOS系となるMS-DOSを1981年8月に、Windows 1.0を1985年11月にリリースしました。そして、DOS系の後継としてOS/2をIBMと共同開発していましたが、プロジェクトが難航したため、OS/2とは別となるMicrosoft独自の「Windows N
先日、スクラムフェス福岡でこういう話をしてきました。 speakerdeck.com 特に国内ではここ1, 2年界隈を騒がせている "Four Keys" と呼ばれる4つの指標についての話で、乱暴に内容を一言でまとめるなら、「Four Keysをちゃんと使いたかったらまず出典の本を読もうぜ」というものでした。 元々、Four Keysとか、それを包含する「開発生産性」と呼ばれる分野の世間での使われ方に妙な違和感をずっと感じていたのでこういう話をしに行ったのですが、講演後に現地で議論したりとか、あとこの資料を公開した後の反響を見たりしていて、1つ気づいたことがありました。 それは、世の中でいう "Four Keys" に実は2つの意味があって、その2つがひたすら混同され続けているのでは ということでした。 その2つというのはこれ↓です。 デリバリのパフォーマンスを測る指標 組織のパフォーマン
概要 名前付け 抽象度 インフラアーキテクチャ図 チーム 認証情報 変更(デプロイ)のライフサイクル DRYの誤用 コードの検索性 モジュール間の依存 アプリケーションレイヤーとの違い まとめ 概要 TerraformのStateやModuleに関する設計に関する考慮点をざっくり書く 名前付け ユビキタス言語とディレクトリ名や変数名を合わせて認知負荷を下げる リソース名でなく役割・機能ベースのディレクトリ名にして認知負荷を下げる プロダクトのコードネームはユビキタス言語なのでディレクトリ名にしても問題ない ModuleやStateのREADME.mdを書く https://github.com/terraform-docs/terraform-docs を使う うまく説明が書けない場合は設計に問題がある可能性がある チームメンバーが利用できるように考慮する いつどのようなときに使えばいいか
公開日 2024/06/26更新日 2024/07/25モダンな開発環境のBtoB SaaSアーキテクチャ特集 技術選定のポイントと今後の展望 ご好評頂いているアーキテクチャ特集の第三弾となる今回は、BtoB SaaSを提供する企業10社にご協力頂き、技術選定のこだわりや今後の展望をご寄稿いただきました。アーキテクチャを通して、各社の事業特性や設計思想にも触れられる内容となっております。※ご紹介は企業名のアルファベット順となっております 株式会社あしたのチーム あしたのチームは「誰もが "ワクワク" 働ける世界を創る」をビジョンに掲げ、人事評価制度の構築・運用・クラウド化で "人と組織の成長" を支援しています。今回は、2024年4月にリリースされた同社の新サービス:パフォーマンスマネジメントプラットフォーム『Cateras™』のアーキテクチャについてご説明します。 アーキテクチャ選択の背
About ようこそプロジェクトに貢献するにはGeneral コード補完コメントからコードを生成コードからコメントの自動生成GitHub CopilotとのクイックQ&A正規表現プログラミング言語間の翻訳タイプヒンティング構造化データからのオブジェクト生成コードからドキュメントへClient Side Tips Copilot スニペットハンドリングGitHub Copilot ショートカット定義に移動便利なファイルのピン留めDesign Patterns AI が理解可能な命名規則一貫性のあるコーディングスタイルハイレベルアーキテクチャを先に小さなコードチャンクで作業するコンテキストレス・アーキテクチャ微細な OSS 依存関係の排除Collaboration AIフレンドリーなドキュメンテーションプロンプトとコード生成プロセスのコーチングTesting ユニットテストの作成テストコード生
この記事は、株式会社カオナビ Advent Calendar 2023の2日目です。 カオナビでは2022年9月からArchitectural Decision Record(以下ADR)を導入開始しました。本記事ではADRを導入し実際に一年間運用して見た経過をご報告しつつ、導入のポイントや注意点について紹介します。 ADRをなぜ導入したのか? まずADRについて簡単に説明すると、「アーキテクチャー設計の記録をドキュメントとして残すこと」 です。Michael Nygardのブログ記事が初出のようです。 ソフトウェア開発を行っていく間には、途中で様々な設計決定をする必要があります。例えばウェブアプリケーションであれば、データベースはMySQLにしようとか、キャッシュはRedisを使おうとかという実行環境の決定の話から、実際のプログラムの基本構造といったところまで様々です。 この設計決定は、
はじめに 最近、ソフトウェアアーキテクチャを改めて勉強しようと2冊の本「ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ」と「アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築」を読んだので要点と感想を備忘としてまとめます。 ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築 概要とポイント ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ アーキテクチャには正解も間違いもない。ただトレードオフがあるだけだ。 この本はアーキテクチャを考えるための思考から、代表的なアーキテクチャスタイルの紹介やアーキテクトとしてのソフトスキル(対人スキルやチーム運営、キャリアパス等)まで網羅的にまとめられているものとなります。 アーキテクチャの技術
ソフトウェアアーキテクチャはシステムの成功に不可欠な要素であり、ソフトウェア開発者にはこの分野における効果的なスキルが求められる。しかし、その学習資料はまだ十分ではないのが現実である。株式会社えにしテックの代表取締役 島田浩二氏は、ソフトウェアアーキテクチャに関する書籍を多数翻訳している。Developers Summit 2023 Summerに登壇した島田氏は、数々の書籍から学んだソフトウェアアーキテクチャの重要なエッセンスを紹介した。 ソフトウェアアーキテクチャとは? 3つの定義を紹介 島田氏は2009年に株式会社えにしテックを設立。2011年からは一般社団法人日本Rubyの会の理事を務めている。島田氏が翻訳に携わった書籍には、『進化的アーキテクチャ』『ソフトウェアアーキテクチャハードパーツ』、『ソフトウェアアーキテクチャの基礎』『Design It!』(いずれもオライリージャパン)
独自のビジネスモデルを持ち、競争優位を獲得しているモノタロウ。事業拡大に合わせて、モノタロウの成長をテクノロジーで支えるTech組織も進化してきました。現在Tech組織は、より高度なビジネス価値を生み出せるようにするため、サプライチェーンの高度化、パーソナライゼーションでの商品検索に着目し、アーキテクチャの再構築とシステムのモダナイズに取り組んでいます。また、そこに向けて組織体制のアップデートやカルチャーの醸成にも力を入れています。 今回は、MonotaRO CTO 普川泰如氏のインタビューから、その実態に迫っていきます。まず第1章ではモノタロウが会社として掲げるビジョンとビジネスの特徴について説明します。それを踏まえて第2章では、そのビジョンやビジネスを実現するためのシステムとその課題、モダナイゼーションについて、第3章ではその技術的な取り組みを実行するためのTech組織の体制について紹
概要 本記事は、スクラムを管理するアプリケーションをクリーンアーキテクチャの考え方で実装し、WebからもCLIからも動かせるようにしたという実践を紹介するものです。学習のための個人開発で作成したサンプルアプリケーションの設計と実装を適宜紹介することで、クリーンアーキテクチャに対する理解を深めることが目的です。 モチベーション なぜ現代の開発現場で定着しているクリーンアーキテクチャのアプリを手元で実装してみようと思ったかというと、私自身Webエンジニアとして働く中で、クリーンアーキテクチャの実践例は入出力をWebに限定したものばかりだったからです。 しかし、「詳細に依存せず抽象に依存すること」と唱えるクリーンアーキテクチャにとって、Webはただの詳細です。そこで、入力元、出力先を問わないアプリケーションはどのような書き味になるのか、自分で確かめてみたくなりました。 例えば、「ドメイン層は独立
CQRSとは CQRS(Command Query Responsibility Segregation、コマンド・クエリ責務分離)は、ソフトウェアアーキテクチャパターンの一つで、つまりシステムのコマンド部分をクエリ部分から分離します。基本的な考え方は、データの書き込み操作(コマンド)と読み取り操作(クエリ)を異なるモデルで扱うことです。これにより、スケーラビリティ/パフォーマンス/セキュリティの観点で柔軟な設計が可能となり、クエリ要件に合わせて最適化が実現できます。 CQRSの基本構成としては、 コマンドモデル(書き込みモデル):データの作成、更新、削除といった書き込み操作を担当します。このモデルは、データの整合性と一貫性を確保するために最適化されています。 クエリモデル(読み取りモデル):データの読み取り操作を担当します。このモデルは、クエリのパフォーマンスを最大化するために最適化され
はじめに CastingONEでバックエンドエンジニアをやっている清水です。 この記事ではクリーンアーキテクチャについて学んだけど具体的にどのように実装すれば良いのかという悩みがあったので実装例をまとめてみた記事になります。 クリーンアーキテクチャで実装されたサンプル実装のうちGitHubのスター数が多いリポジトリをピックアップして、設計内容を紹介していきます。 具体的にどこにどんな実装をするべきなのかも含めて紹介していきます。 処理を一部省略して紹介するため実際の処理内容を確認したい場合はGitHubでご確認お願いします。 クリーンアーキテクチャとは クリーンアーキテクチャは、ソフトウェア設計の原則を適用して、依存性の方向性を逆転させ、ビジネスロジックから詳細(フレームワークやデータベース)を分離するアーキテクチャパターンです。これにより、テストしやすく、メンテナンス性が高く、柔軟性のあ
クロスプラットフォームのワークスペースアプリ「Notion」を提供するNotion Labsは2024年7月10日(米国時間)に公式ブログで、NotionのブラウザバージョンのデータキャッシュにWebAssembly(WASM)実装の「SQLite3 WASM/JS」(以後、WASM版SQLite3)を採用した事例を紹介する記事を公開した。 2021年ごろ、WindowsおよびmacOS版のNotionデスクトップアプリにおけるパフォーマンス向上を目的にSQLiteを採用した同社は、ネイティブのモバイルアプリでもSQLiteを採用してきた。そして、ブラウザ版アプリには、WASM版SQLite3を採用したという。 Notion Labsは「WASM版SQLite3を採用することで、全ての最新ブラウザでページ間の遷移のパフォーマンスを20%改善できた。インターネット接続など外部要因によりAPI
こんにちは。スタディサプリの小中高プロダクト基盤開発グループでProduct Platform Engineer兼テックリードをやっている@tooooooooomyです。 今回は、WebアプリケーションにGoの並行処理機構を導入してSLOを改善し、WebAPIを100倍速くした話をしたいと思います。 前提条件 システムを0から作らない場合、アーキテクチャの改善の際には前提条件が付きものです。そこでまずは今回のシステムの前提条件をお話します。 対象となるシステムと、アーキテクチャ 今回対象とするシステムは、ここでは security-tracker と呼び、Webアプリケーション本体はGoで書かれています。 スタディサプリの各アプリケーションにおけるユーザーのログ1を、Amazon Kinesis Firehoseを通して、リクルート全体のセキュリティチームが管理するS3バケット(スタディサ
こんにちは。技術本部Sansan Engineering Unit Master Data Groupの古本です。 普段は、営業DXサービス「Sansan」の名刺交換した人や企業に関するニュースを表示し、お知らせする「企業ニュース」や「企業情報」を扱うシステムの開発をしています。 最近、マイクロサービスで作られた企業ニュースのシステムをモノレポ構成に移行しました。 今回はその時に行ったことについて話します。 モノレポ(mono repo)とは 本ブログで類似の記事があったので引用します。 一連のソースコードを単一のリポジトリで管理している状態のことです。 特に、実装言語、またはサブシステムやドメインといった何らかの区切りでリポジトリを分けている場合に、それらを集約することをモノレポ化と言います。 マイクロサービスアーキテクチャのリポジトリ構成を漸進的にモノレポに移行した話 今回も複数レポジ
はじめに 技術評論社様より発刊されているSoftware Designの2024年5月号より「レガシーシステム攻略のプロセス」と題した全8回の連載が始まりました。 本連載では、ZOZOTOWNリプレイスプロジェクトについて紹介します。2017年に始まったリプレイスプロジェクトにおいて、ZOZO がどのような意図で、どのように取り組んできたのか、読者のみなさんに有益な情報をお伝えしていければと思いますので、ご期待ください。第1回目のテーマは、「ZOZOTOWNリプレイスプロジェクトの全体アーキテクチャと組織設計」です。 目次 はじめに 目次 ZOZOTOWNリプレイスの背景、目的 背景 目的 柔軟なシステム 開発生産性 技術のモダン化 採用強化 ZOZOTOWNリプレイスの歴史とアーキテクチャの変遷 アーキテクチャの変遷 2004年〜2017年:オンプレミス(リプレイス前) 2017年〜20
※本記事は、技術評論社「Software Design」(2024年1月号)に寄稿した連載記事「Google Cloudを軸に実践するSREプラクティス」からの転載1です。発行元からの許可を得て掲載しております。 はじめに 前回はDatadogによるクラウド横断のモニタリング基盤について解説しました。 今回はCloudflareとは何か、なぜ使っているのか、各サービスとポイント、キャディでの活用例を紹介します。 ▼図1 CADDiスタックにおける今回の位置付け Cloudflare とは 本記事では、Cloudflare社が提供しているプラットフォーム全体を「Cloudflare」とします。 Cloudflareは、ひと昔前までは数あるシンプルなCDN(Contents Delivery Network)サービスの1つでした。CDNとは、コンテンツの配信を最適化するためのネットワークです。
こんにちは。エンジニアリンググループの武井です。 私は現在、デジカルチームに所属し、クラウド電子カルテ、エムスリーデジカルの開発に携わっています。 昨年夏にエムスリーに入社し、早くも半年が経過しました。 digikar.co.jp この記事では、私が入社してから4ヶ月目に取り組んだ、バッチ処理の運用改善について振り返ります。 特に、新しくチームに加わったメンバーとして意識した点に焦点を当ててみたいと思います。 これから新しいチームに参加する方の参考になれば幸いです。 改善したバッチ 現状の正確な理解 現状に馴染む技術選定 自分なりの+αを加える 改善の結果 We're hiring 改善したバッチ 今回の改善対象は、特定の医療機関に紐づく全患者の全カルテをPDFファイルとして出力する、というバッチです。 デジカルのデータを医療機関側にエクスポートする用途で使われています。 移行前のアーキテ
Nikkei Advent Calendar 2023の 14 日目は IDE がやっていきます。いま Web チーム内の基盤改善を専門とするチームで活動しています。自分が入社するより前に作られてメンテナンスがあまりされていなかったシステムを、現代でも戦えるようにするお仕事をしています。メンテナンスを放置することはセキュリティ的によくないので、メンテナンスを専業で行っています。最近の自分の仕事は、今日紹介する rnikkei と呼ばれるマイクロサービス群の Node.js バージョンを、v12 から v18(一部は v20) まで引き上げることです。この rnikkei は当初「爆速の日経」と呼ばれていた頃に設計・実装されたサービスです。今日はそのような過去に作られたサービスにもう一度スポットライトを当ててみようと思います。 see: https://marketing.itmedia.c
ログラスの龍島(@hryushm)です。最近は秋に備えて干し芋を作る練習をする日々を過ごしています。 ログラスではオニオンアーキテクチャを採用してしてDDDを実践しています。直近プロダクトのスケールによってデータのレポーティング、集計処理のパフォーマンス劣化の問題が顕在化、早急な対応を迫られる事態となっていました。その対応としてRDBMS(PostgreSQL)からDWH(BigQuery)へ一部のクエリを移行しました。オニオンアーキテクチャの恩恵で移行が比較的容易であり、実装自体は1ヶ月というスピードで終えることで顧客に素早く価値提供できたため、実例として記事にしたいと思います。 オニオンアーキテクチャと利点 オニオンアーキテクチャ自体の説明は多数の記事があるため省きますが、弊社松岡の記事が理解しやすいと思います。 記事中にあるレイヤードアーキテクチャと比較した時に肝となる、依存性逆転の
こんにちは、サイオステクノロジー武井です。今回は、「RAG構築のためのAzure OpenAI Serviceリファレンスアーキテクチャ詳解」と題しまして、マイクロソフトが提供するRAG導入のためのリファレンスアーキテクチャについて解説します。 ※ 本記事の内容がベースとなっているオンラインセミナーのアーカイブが以下のYouTubeで配信されています。ぜひ見てね!! Azure OpenAI Service リファレンスアーキテクチャとは? マイクロソフトは、Azureでのシステム構築に役立つ様々な設計パターン(リファレンスアーキテクチャ)を提供しています。これらのパターンを参考にすれば、問題なく簡単にシステムを構築することが可能です。ゼロから設計を始める必要はありません。 https://learn.microsoft.com/ja-jp/azure/architecture/brows
概要 SwiftUI Advent Calendar 2023 の 21 日目です。 最近趣味で iOS の podcast クライアントを SwiftUI で作っているのですが、やってみると podcast クライアントはアプリとしてそれなりに難しいことがわかってきました。作っているうちにどんどん状態管理が複雑になってきて、個人開発でなぜこんなにがんばりが必要なんだと思って開発が止まっていたのですが、最近 iOS 17 の登場をきっかけにアプリを全般的に書き直すことにして、同時にアーキテクチャを変えてみました。これにより構成がシンプルになって開発効率が上がり、開発を再開することができました。具体的には、 from: 1画面に1つ ViewModel(ObservableObject)を作り、 View から ViewModel を監視する MVVM to: View から直接 Model
最近、package by feature というディレクトリ構成が様々なところで出てきています[1]。例をあげると、これらで見れます。 next.js の app router bulletproof-react 他人がはやく読めるコードを書くために しかし、package by feature について簡潔にまとまった資料がまだないため、人に紹介するときに不便です。そこで今回は package by feature とは何なのか、何が良いのかについてまとめます。 package by feature とは? package by feature とは、ディレクトリを feature 単位でまとめる手法のことです。 # package by feature src/ └ feature/ └ recordList/ (記録を表示するための機能群) ┝ DailyAverage.tsx ┝
Amazon Web Services ブログ アプリケーション開発者のための PostgreSQL アーキテクチャに関する検討: パート 1 アプリケーション層は多くのクラウドアーキテクチャで世界中がアクセスする部分ですが、使用しているデータベースに合わせてアプリケーションを最適化する方法を検討することはほとんどないようです。リレーショナルデータベースエンジンを使用するときは、スキーマの設計だけでなく、アプリケーションが管理可能で、スケーラブルで、パフォーマンスが高いことを保証するために、データベースがストレージシステムに対してデータを読み書きする方法を理解することが重要です。シリーズのパート 1 となるこの投稿では、PostgreSQL の主要な用語について説明し、次に、Amazon Aurora PostgreSQL 互換エディションまたは Amazon Relational Dat
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く