タグ

articleとarchitectureに関するefclのブックマーク (20)

  • フロントエンドのディレクトリ設計思想

    はじめに フロントエンドのディレクトリ構成、世の中に色んな「推し」が有って悩みますよね。 例えば、、、 さらに最近は、App Directoryの登場や、それに合わせたNext.js公式の「推し」構成がドキュメント化されたりと、さらに色々なパターンが出てきています。 記事の趣旨 記事では、具体的な構成そのものではなく、 様々ある構成を横串で見通して整理できる設計思想を紹介します。 新しい推し構成の紹介ではなく、構成を考えたり決めたりするときに役立つ抽象的・汎用的な指針を提供できればと考えています。 基となる考え 分割の方向 一般的に、アーキテクチャにおける分割には2つの方向が有ります。 (出典も良書なのでリンクを貼っておきます: https://www.amazon.co.jp/dp/4873119820) これはディレクトリにおいても同じだと思っていて、筆者は分かりやすさのために

    フロントエンドのディレクトリ設計思想
    efcl
    efcl 2024/03/11
    共通のLayerと機能ごとのFeatureのディレクトリ構造の組み合わせ
  • How Netflix Scales its API with GraphQL Federation (Part 1)

    Netflix is known for its loosely coupled and highly scalable microservice architecture. Independent services allow for evolving at different paces and scaling independently. Yet they add complexity for use cases that span multiple services. Rather than exposing 100s of microservices to UI developers, Netflix offers a unified API aggregation layer at the edge. UI developers love the simplicity of w

    How Netflix Scales its API with GraphQL Federation (Part 1)
    efcl
    efcl 2024/03/07
    GraphQL Federartionのアーキテクチャについて
  • キャッシュを活用するために必要な知識と勘所 - そーだいなるらくがき帳

    どうもキャッシュバスターズ、 id:Soudai です。 Cache(以下、キャッシュ)は特定の場面に置いて劇的な効果を発揮し、様々な問題を解決する反面、新たなコンポートやミドルウェアが追加され、複雑性が上がり、運用のレベルが上がるため、扱いに注意する必要があります。 キャッシュを活用することで、パフォーマンスの改善や負荷軽減が行われ、コンピュータリソースの最適化によるサーバコストの削減や、レスポンスの改善によるユーザエクスペリエンスの改善がされます。 反面、その劇的な効果に毒され安易に多用すると、サービスが強くキャッシュに依存してしまい、非常に壊れやすくなり、運用が難しくなってしまいます。これをWeb界隈では「キャッシュは麻薬」と比喩されて、戒められてきました。 そのためキャッシュを使わずにサービスが運用できるのであれば使わないに越したことはないのですが、ある一定以上の規模になった際にコ

    キャッシュを活用するために必要な知識と勘所 - そーだいなるらくがき帳
    efcl
    efcl 2023/12/31
    キャッシュの更新パターン
  • Version Skew

    There is a phrase that is very frequently used at Google and other big tech companies. It’s a nice and short phrase. And the problem it describes is broadly applicable to modern software engineering. Yet it doesn’t seem to be used much outside of the Google diaspora, and there doesn’t seem to be an alternative naming for the concept either. The phrase is version skew or for short: skew. Version sk

    Version Skew
    efcl
    efcl 2023/10/28
    デプロイ時に、クライアントとサーバのバージョンがずれてエラーが起きる"Version Skew"の問題について。 バージョンロック、下位互換性、上位互換性、バージョン管理などの対応方法について。
  • MySQL UUIDs - Bad For Performance

    All of Percona’s open-source software products, in one place, to download as much or as little as you need.

    MySQL UUIDs - Bad For Performance
    efcl
    efcl 2023/10/07
    UUIDをprimary keyとして利用した時の局所性の問題について
  • Blitz(後編):リアルタイムユーザー解析エンジンを実現する技術(強整合な解析) - PLAID engineer blog

    PLAIDではPersonalizationに特化したリアルタイムユーザー解析エンジン(Blitz)を自分達で開発し、KARTEの基盤として使ってきました。今回新たに刷新した解析エンジンのコア要素である「強整合な解析」を実現する具体的なアーキテクチャ、技術選定の内容を紹介します。

    Blitz(後編):リアルタイムユーザー解析エンジンを実現する技術(強整合な解析) - PLAID engineer blog
    efcl
    efcl 2023/10/07
    Bigtableを分散キューの代わりに利用する。 Bigtableはキーが偏るとhot spotになるので、hash + user + timestampをキーにして、timestamp部分をレンジでスキャン + TTLで消すことで特定の期間のデータを取得する分散DBとして利用
  • Skip the API, Ship Your Database

    Skip the API, Ship Your Database Author Name Ben Johnson @benbjohnson @benbjohnson Image by Annie Ruygt With Fly.io, you can get your app running globally in a matter of minutes, and with LiteFS, you can run SQLite alongside your app! Now we’re introducing LiteFS Cloud: managed backups and point-in-time restores for LiteFS. Try it out for yourself! My favorite part about building tools is discover

    Skip the API, Ship Your Database
    efcl
    efcl 2023/09/14
    SQLiteのレプリケーションを使って、read-onlyなレプリカを渡すことでAPIじゃなくてDBを使ったデータのやりとりをするというパターン
  • Design Trade-offs in Bundler: The Rationale Behind Creating Rspack · web-infra-dev · Discussion #1

    chinese version Before embarking on the development of Rspack, we explored various build tools and frameworks, including extensive use of Webpack, Vite, esbuild, and Rollup in real-world production environments. To provide some context, our team, known as the WebInfra Team, is responsible for overseeing the company's suite of front-end build tools and frameworks. Some of these are open-source, whi

    Design Trade-offs in Bundler: The Rationale Behind Creating Rspack · web-infra-dev · Discussion #1
    efcl
    efcl 2023/09/02
    Rspackの開発の目的やwebpack/parcel/esbuild/rollupなどのbundlerのアーキテクチャについて。 webpackにはデバッグやパフォーマンスの問題があり、Vite/Rollupも大規模プロジェクトではパフォーマンスにビルド環境の差異の問題があり、es
  • ソフトウェアはなぜバージョンアップしなければならないのか - Qiita

    はじめに 社内インフラの運用担当者にとってソフトウェアのバージョンアップは地味な割に大変な業務です。 特に社内のオンプレサーバで動いているようなソフトウェアの場合、バージョンアップに伴う諸々の調整をそのソフトウェアを利用している各部署と行う必要があります。 そんなときに「今は忙しいからバージョンアップを先送りしてほしい」「このバージョンはスキップしてもよいのでは?」なんて声が各部署から聞こえてきます。バージョンアップの価値を各部署に理解してもらうのは大変です。 この文章はそんな時になぜバージョンアップしなければならないのかを上司や各部署のマネージャに伝えるために書きます。 ソフトウェアの有効期限は2-5年 まず、第一に、ソフトウェアというものは無限に使えるわけではなく、一定の有効期限があり、それを過ぎると徐々に動かなくなってきます。俗にいう「何もしてないのに動かなくなった問題」です。 なぜ

    ソフトウェアはなぜバージョンアップしなければならないのか - Qiita
    efcl
    efcl 2023/07/29
    パージョンアップ頻度と難易度について。 頻度が低いほど難易度が高くなるため、スパイクが発生する。EOLとなりサポートが切れた場合は、より難易度が高くなる
  • メルコイン決済基盤における分散トランザクション管理 | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2023 の7日目の記事です。 はじめに こんにちは。メルコイン Payment Platform チームの @sapuri です。 メルコインではマイクロサービスアーキテクチャを採用しており、お客さまによりアプリの操作が行われると、それぞれのマイクロサービスを横断してリクエストが処理されます。 メルコインの Payment Platform は、お客さまの残高の管理や各種帳簿の作成などの決済事業のための基盤となる仕組みを提供しています。 そのなかで、Payment Service は決済トランザクションを管理するサービスとして、下位層のサービスが提供する各種決済手段を利用して、上位層のサービスが共通して利用できる決済 API を提供しています。 この記事ではマイクロサービスアーキテクチャにおける分散トランザクション管理の課

    メルコイン決済基盤における分散トランザクション管理 | メルカリエンジニアリング
    efcl
    efcl 2023/06/15
    Sagaパターンによるrecoveryトランザクション
  • Modern alternatives to BEM

    Brainstorming a handful of new CSS organization acronyms August 26, 2022 When I first heard Nicole Sullivan talk about OOCSS, I thought “Oooh, smart.” When I read Jonathan Snook’s riff on that idea in SMACSS I thought “Oooh, smart.” When I heard Harry Roberts say “never use IDs in your CSS files” I said “Oooh, smart.” But when BEM and roboclasses came around… I didn’t have the same reaction. I nev

    Modern alternatives to BEM
    efcl
    efcl 2022/09/04
    CSSに`@layer`やWeb Componentsなどの新しい概念が増えたことで、CSSの設計がどのように変わっていくかについて。
  • GitHub - phodal/clean-frontend: Clean Frontend Architecture:整洁前端架构

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - phodal/clean-frontend: Clean Frontend Architecture:整洁前端架构
    efcl
    efcl 2021/01/10
    フロントエンドでのクリーンアーキテクチャについて。 UIフレームワークにおけるロジックの偏り、クリーンアーキテクチャの概念的な解説や実装ガイド
  • Tools for Systems Thinkers: The 6 Fundamental Concepts of Systems Thinking

    In this series on systems thinking, I share the key insights and tools needed to develop and advance a systems mindset for dealing with complex problem solving and transitioning to the Circular Economy. I have taught thousands of hours of workshops in systems, sustainability and design, and over the years refined ways of rapidly engaging people with the three dimensional mindset needed to think an

    Tools for Systems Thinkers: The 6 Fundamental Concepts of Systems Thinking
    efcl
    efcl 2021/01/05
    システム思考の6つのツール/単語。 相互接続性、合成、創発(Emergence)、フィードバックループ、因果関係
  • アプリケーションにおける権限設計の課題 - kenfdev’s blog

    日々権限設計で頭を抱えてます。この苦悩が終わることは無いと思ってますが、新しい課題にぶつかっていくうちに最初のころの課題を忘れていきそうなので、現時点での自分の中でぐちゃぐちゃになっている情報をまとめようと思い、記事にしました。 所々で「メリット」「デメリット」に関連する情報がありますが、そのときそのときには色々と感じることがあっても、いざ記事にまとめるときに思い出せないものが多々ありました。フィードバックや自分の経験を思い出しながら随時更新する予定です。 TL;DR(長すぎて読みたくない) 想定する読者や前提知識 この記事での権限とは 権限の種類 ACL(Access Control List) RBAC(Role-Based Access Control) ABAC(Attribute-Based Access Control) どの権限モデルを採用するべきか 権限を適用する場面 機能

    アプリケーションにおける権限設計の課題 - kenfdev’s blog
    efcl
    efcl 2020/02/25
    権限設計についてのapproach。 ACL, RBAC, ABAC、権限管理や集約、Policy Agent
  • ロギングベストプラクティス - kawasima

    #翻訳 https://www.scalyr.com/blog/the-10-commandments-of-logging/ CC BY 4.0 @Brice Figureau 1.自分でログの書き出しをしない printfをつかったり、ログエントリを自分でファイルに書き出したり、ログローテションを自分でやったりしてはいけない。運用担当者にお願いして、標準ライブラリやシステムAPIコールを使うようにしよう。そうすれば、実行中のアプリケーションが他のシステムコンポーネントと適切に連携して、特別なシステム設定なしに適切な場所またはネットワークサービスにログを記録できるようになる。 ロギングライブラリを使いたければ、特にJavaの世界にはLog4j, JCL, slf4j, logbackなど多くのものが存在する。私はslf4jとlogbackを組み合わせて使うのが好きだ。とてもパワフルで、設

    ロギングベストプラクティス - kawasima
    efcl
    efcl 2020/01/17
    ログ出力についてのTips集。 ログレベル、カテゴリ、メッセージ、パースのしやすさ、人間の読みやすさ、流量、機密情報を入れない
  • 実践クリーンアーキテクチャ with Java

    この記事について こちらの記事はクリーンアーキテクチャの Java 実装による解説記事です。 MVC フレームワークに組み込むために一部変更している部分もあります。 それをふまえてご覧ください。 講演内容が @IT さまに記事にしていただけました。 あわせてご参照ください。 https://www.atmarkit.co.jp/ait/articles/1907/08/news002.html クリーンアーキテクチャよりも軽量で無理なく導入しやすいアプリケーションアーキテクチャパターンを考案しました。 https://nrslib.com/adop/ スライド JJUG CCC 2019 Spring での発表資料です。 この発表をするにあたって記事を書くことにしました。 YouTube YouTube でこちらの解説を行いました。 その他解説もしています。もしよろしければチャンネル登録を

    実践クリーンアーキテクチャ with Java
    efcl
    efcl 2019/05/24
    クリーンアーキテクチャについて
  • Designing Resilient Systems Beyond Retries (Part 1): Rate-Limiting

    Designing Resilient Systems Beyond Retries (Part 1): Rate-Limiting
    efcl
    efcl 2019/03/28
    Grabのマイクロサービスにおける障害からの回復性(レジリエンス)について。 Circuit Breaker、リトライ戦略、Rate-Limiting、Bulkheading(availability zonesの分離とか)、アーキテクチャ(冪等性、Pub/Subでの非同期)、カオスエンジニアリング
  • 技術要素編: web アプリが新陳代謝を続けるための依存関係の厳選(新規開発のメモ書きシリーズ1)

    新規開発したプロダクトについて 「世の中に URL は出ているが、まだ正式公開していない」という微妙な位置付けなのでプロダクト名と詳細は避けつつ述べます。短めの開発期間で急いでつくって、慌てて年末にβ版をリリースしたところです。 次の動きに向けてまったりしたり、Inside Frontend の開催に向けて四苦八苦しているところでメモ書きです。 このシリーズの他の記事はこちら。 ビルド設定編: UA に応じた最適な JS バンドルの配信と webpack との距離感 コード設計編: context による縦軸分類とレイヤードアーキテクチャ アーキテクチャ編: SSR と CDN ( Fastly ) とユーザー依存情報の分離 依存するパッケージの厳選 新しい技術、ライブラリを試すこと、それらを使って生産性の向上にチャレンジすることは必要です。とはいえ、程度が過ぎると逆に生産性を下げかねない

    技術要素編: web アプリが新陳代謝を続けるための依存関係の厳選(新規開発のメモ書きシリーズ1)
    efcl
    efcl 2018/02/19
    ウェブアプリの技術選定、ビルド設定、コード設計、アーキテクチャについての連載記事。 新規開発する際にどのような理由でライブラリやビルドツール、ディレクトリ構造などの採用したか、配信におけるCDNやパフォー
  • Choo, architecture & performance

    Almost every Choo release so far has managed to include more features, and reduce the size on disk. In the upcoming v6 release we’re now sitting at 3.8Kb. People often ask how it’s possible to pack a “batteries included” browser framework into something that’s about an order of magnitude smaller than conventional options. This post is intended to break down the bits that make up Choo, and explain

    Choo, architecture & performance
    efcl
    efcl 2017/06/19
    ウェブフロントを作成する小さなフレームワークであるChooのアーキテクチャについての解説。 Chooを構成する小さなライブラリやなぜそれを選択しているかやパフォーマンスについての記事
  • The Log: What every software engineer should know about real-time data's unifying abstraction | LinkedIn Engineering

    The Log: What every software engineer should know about real-time data's unifying abstraction I joined LinkedIn about six years ago at a particularly interesting time. We were just beginning to run up against the limits of our monolithic, centralized database and needed to start the transition to a portfolio of specialized distributed systems. This has been an interesting experience: we built, dep

    The Log: What every software engineer should know about real-time data's unifying abstraction | LinkedIn Engineering
    efcl
    efcl 2016/04/08
    Kafkaの設計思想。 ログは時間軸で並んだテーブルの一種。 スケールできる分散ログシステム
  • 1