翻訳を担当した書籍『ソフトウェアアーキテクチャメトリクス―アーキテクチャ品質を改善する10のアドバイス』(オライリー・ジャパン)が明日(2024年1月24日)発売となります(電子書籍はオライリー・ジャパンのサイトでの購入となります)。本書は、2022年10月に出版されたChristian Ciceri, Dave Farley, Neal Ford, Andrew Harmel-Law, Michael Keeling, Carola Lilienthal, João Rosa, Alexander von Zitzewitz, Rene Weiss, Eoin Woods 著『Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture』(O'Reilly Media)の全
プロダクト技術本部の川口です。 3年間、ビッグローブ光といった固定回線のインフラ部門に所属していましたが、今年の4月に BIGLOBE の基幹システムのリニューアルを推進していく部署に異動することになりました。 所属するチームでは、ドメイン駆動設計(DDD)で開発しています。 チームにジョインすると開発チュートリアルをやることになっており、そこで IntelliJ や Spring Boot での開発の仕方を学んだり、チュートリアルを通して DDD を学んだりします。 今回は、DDD のチュートリアルで実際に作成したドメインモデルがどういう風に成長していったかについて紹介します。 勤怠管理アプリ チュートリアル 初期ドメインモデル 中期ドメインモデル 後期ドメインモデル 学んだこと、感想 勤怠管理アプリ チュートリアル お題は GitHub のパブリックリポジトリに公開されています。 ht
■真壁 徹(まかべ とおる) 北陸先端科学技術大学院大学 博士前期課程修了 修士(情報科学)。 株式会社大和総研に入社。公共向けパッケージシステムのアプリケーション開発からIT業界でのキャリアを始める。その後日本ヒューレット・パッカード株式会社に籍を移し、主に通信事業者向けアプリケーション、システムインフラストラクチャの開発に従事する。その後、クラウドコンピューティングとオープンソースに可能性を感じ、OpenStack 関連ビジネスでアーキテクトを担当。パブリッククラウドの成長を信じ、日本マイクロソフト株式会社へ。 主な著書に『しくみがわかるKubernetes Azure で動かしながら学ぶコンセプトと実践知識』(翔泳社)、『Microsoft Azure 実践ガイド』(インプレス)、共著に『Azureコンテナアプリケーション開発 ── 開発に注力するための実践手法』(技術評論社)などが
お久しぶりです。 ANDPADボードのプロダクトテックリードの原田(tomtwinkle)です。 「システム設計の面接試験」はいいぞ……! 的な記事が上がってきてせっかくなので書かねばと筆を執りました。 zenn.dev 「システム設計の面接試験」はいいぞ……! ! What's System Design Interview? 「Grokking Modern System Design Interview」「System Design Interview」とは主に外資企業の面接で行われるJob Interviewの対策マニュアルみたいなものです。 面接試験 と言いつつ内容は大体GoogleやAmazon, Meta(旧Facebook), Netflix, X(旧Twitter)等の大規模トラフィックを捌くシステムを構築する際どのようにシステムを設計するかという話なのでAWSのマネージ
1. はじめに JavaScriptデザインパターンは、JavaScriptを使ってプログラムを書くときによく出くわす問題を解決するためのガイドです。これらのパターンの背後にある考え方を理解することで、自分の問題に適用することができます。また、これらのパターンが自分のコードに役立つ場合を見つけることもできます。 2. モジュールパターン モジュールパターンは、JavaScriptのモジュールシステムの一部で、データを保護する方法を提供します。これは、モジュール内のプライベートなデータと動作を保護し、一方で公開APIを提供する方法です。これにより、プライベートとパブリックのアクセスレベルを持つ自己完結型のモジュールオブジェクトを作成することができます。 これは、JavaやC++のような言語でクラスにアクセス修飾子を使用するのに似ています。 JavaScriptでは、クロージャを使用してモジュ
ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするには 作者:Tomasz Lelek,Jon SkeetオライリージャパンAmazon ソフトウェア開発経験の最初の段階で「一つの機能には複数の選択肢が有って、メリット・デメリットがそれぞれ有り、それらはトレードオフの関係に有り、容易には決めることができない」という事実を教えてもらえる機会に遭遇できていれば、その人はとても幸運だと思う。 先輩や上司が一方的に、「一つの確かな方法」をただ伝える、みたいな場面(それが必ずしも一般的にはそうとは言えない方法であったとしても)も多いのではないでしょうか。 どんなに設計上の意思決定ができている人でも、その頭の中では「色々な選択肢の中で悩んで、ベストではないかもしれないけど、前の前の課題に対してよりベターな方法」を選んでいる。でもその思考の過程を見せてくれる人はとても少ない。
最近「マイクロサービスって大変だな」と感じることが多いので、書いてみた。 単なる感想です。 pospomeのマイクロサービス歴 面倒なのは技術ではない モノリスだと厳しい 楽しくもある 宣伝 pospomeのマイクロサービス歴 以下の企業で7年ほどマイクロサービスに携わっている。 DeNA(ゲームプラットフォーム) メルカリ(認証認可基盤) DMM(DMMプラットフォーム) DeNA, メルカリではサーバサイドエンジニアとして仕事をしていて、 DMMではプラットフォーム事業本部という120人のエンジニアが在籍する開発組織のアーキテクトとして仕事をしている。 それぞれの会社で開発の規模感、開発体制、自分の役割などが異なるので、 直接比較できないが、やはりポジション的に今のDMMが一番大変だなーと感じる。 面倒なのは技術ではない マイクロサービスというと "分散トランザクション" とか "通信
みなさん、こんにちは!プロダクト開発部の吉川(@yoshiyu0922)です。 現在、JMDCが保有している医療ビッグデータを活用して生活者や医療に新しい価値を提供する新規プロダクト開発チームのバックエンドを担当しております。 以前に新規プロダクト開発で採用している技術や設計についてこちらの記事で紹介しましたが、Go x GraphQL x DDDでプロダクト開発をしています。今回はプロダクトの開発が一区切りしてこれからリリースするということで、開発してみて良かったことやこうすれば良かったことを振り返りをしました。振り返りの内容は主にDDDに関することです。 DDDとは DDDとは「Domain-Driven Design」の略語でドメイン駆動設計と呼ばれるソフトウェア開発手法の一つです。問題を解決しようとする領域(ドメイン)をモデリングによってソフトウェアの設計や実装に反映させることで、
すでに多くの方々にお手に取っていただいておりますが、オライリージャパンから「ソフトウェア設計のトレードオフと誤り」の翻訳をフューチャーのメンバーと一緒に出版いたしました。好評なようで、発売一カ月ほどで増刷も決定いたしました。みなさまご購入いただき、ありがとうございます。初版をお買い求めになられたい方は今すぐ書店にダッシュ! トレードオフこそが設計である良い設計とか読みやすいコードみたいな話題はツイッターではバズりやすい話題です。 読みやすいコードの話題ではいろいろなレイヤーの話が出てくるのですが、因数分解すると、だいたいいくつかのカテゴリーに分かれるように思います。 命名規則とか書き方のルール 従うべきクラス構造、アーキテクチャ構成の導入 サービスの境界をどこに引くか、どのようなときに設計手法を選ぶか、どのアルゴリズムを選ぶか 名前や命名規則の統一とか書き方の統一とかは用語のリストを作って
エヴァンス氏の『ドメイン駆動設計』の背景にある基本アイデアは何かという私の捉え方のメモ書き。 ドメイン駆動設計にはいろいろな側面がある。また書籍『ドメイン駆動設計』は体系だった設計方法論ではなく、設計の考え方とやり方を経験則として言語化してみた、と捉えている。 その経験則(100%ではないが多くの場合に役に立つ原則)の背景にあるエヴァンス氏の基本的な発想は次の5つに要約できると考えている。 ソフトウェアの複雑さは事業活動の複雑さに起因する 技術的な複雑さもあるが、ソフトウェアが複雑になるのは対象領域の複雑さが主たる理由という考え方。 業務アプリケーションであれば、事業活動の複雑さが業務アプリケーションの複雑さの原因と捉える。 ドメイン駆動設計は、この事業活動の複雑さに起因するソフトウェアの複雑さをうまく扱うための工夫、というのが私の捉え方。 ドメイン駆動設計という設計のアプローチを取り入れ
Amazon.comは2023年3月22日(米国時間)、同社が提供する「Amazon Prime Video」(以後、Prime Video)の監視ツールをマイクロサービスアーキテクチャからモノリシックなアーキテクチャに移行したと明らかにした。 Prime Videoでは、視聴者がコンテンツをスムーズに受信できるように、全てのストリームを対象としたオーディオ/ビデオ品質の監視ツールを構築している。同ツールで視覚的な品質の問題(ブロックの破損や音声と映像の同期の問題など)が自動的に特定され、修正プロセスが開始される仕組みになっている。 当初、Prime Videoのビデオ品質分析(VQA)チームが所有していた監視ツールは、スケーラビリティが求められることを意図して設計されたものではなかった。そのため、Prime Videoのサービス規模が拡大し、監視ツールのITインフラも大きくなる中で、高い
技術記事『Amazon Builders' Library』にフォーカスを当てた勉強会「AWS Tech talk Night#5 クラウドネイティブ時代のエンジニアが押さえておきたい ソフトウェアの構築・運用で考慮すべき5つのポイント ~AWSプリンシパルエンジニアの技術記事をソリューションアーキテクトが解説~」。ここで、ソリューションアーキテクトの堀氏が登壇。まずは静的安定性の必要性と、AWSサービス内部の静的安定性について話します。 現代のWebサービスでほぼ当たり前になっている「静的安定性」 堀貴裕氏:私からは「高可用性を実現する静的安定性という考え方」について、発表したいと思います。静的安定性という考え方は、現代のWebサービスだと、だいたいのシステムで考えるべき考え方となっているので、本日このセッションを聞いたあとに(この)静的安定性という考え方を持ち帰ってもらって、みなさまの
Ruby on Railsの作者として知られるDavid Heinemeier Hansson(DHH)氏が自身のブログに5月4日付けで投稿した記事「Even Amazon can't make sense of serverless or microservices」(Amazonでさえサーバレスやマイクロサービスを理解できない)が話題になっています。 これはAmazon Prime Videoの技術部門が3月に自社ブログに投稿した記事「Scaling up the Prime Video audio/video monitoring service and reducing costs by 90%」(Prime Videoの音声映像監視サービスにおけるスケールアップと90%のコスト削減の実現)で紹介された、AWS Lambdaのサーバレスで作られたPrime Videoの監視サービス
Terraformを導入するにあたって、まっさらなゼロからソースを書き始めるよりかは、まずサンプルやたたき台があったほうが始めやすいと思います。 AWSコンソールからポチポチと構築した環境をそのままエクスポートしてTerraformコードに落とし込めると、AWSの画面とコードを具体的に比較でき、とても理解しやすくなります。 そこで自分はTerraformerというツールを使用しました。 既存環境をエクスポートする手法は他にもありましたがコマンド一発でサクッとできそう、かつGoogleが買収した会社のSREチーム作成ということで信頼性も高そうだったのでこちらを選択しました。 エクスポート手順事前準備Terraformのプラグインが必要になるため、こちらの記事を参考にTerraformをインストールし、作業ディレクトリで terraform init を実行しpluginをダウンロードします。
MacへのTerraform環境導入として、tfenvとgit-secretsの設定方法をまとめました。 こんにちは!コンサル部のinomaso(@inomasosan)です。 AWS環境構築でTerraformを入社前から使用していたのですが、改めて新規環境を導入した際に意外と手こずってしまったので、備忘も兼ねてブログに手順を残すことにしました。 環境 macOS Catalina 10.15.7 Homebrew 2.7.3 tfenv設定 tfenvはTerraformのバージョンマネージャーです。 Terraformは頻繁にアップデートがあるため、バージョンを簡単に切り替えられるようにします。 1. tfenvインストール Homebrewでtfenvをインストールします。 % brew install tfenv インストール後に、バージョン確認してみましょう。 % tfenv
本稿について 2019年11月、GitHub上で利用できる無料のワークフローツールのGitHub Actionsが正式にリリースされました。1 これを使って、CI/CDなどの処理を自動化することができます。 本稿では、GitHub ActionsでTerraformを実行し、Google Cloud Platformの構成管理を行う方法を紹介します。 また、GitOpsによるインフラCI/CDの作業フローも紹介します。 昨日、Bitbucket PipelinesでGCPに対してTerraformでインフラCI/CDする - Qiitaという記事を書きましたが、そのGitHub Actions版となります。 共通する内容が多いので、以降ではその記事を「Bitbucke Pipelines版」として参照させて頂きます。 更新履歴 20200504 .github/workflows/terr
『ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするには』 Tomasz Lelek、Jon Skeet 著、渋川 よしき、山田 智子、本田 健悟、辻 大志郎、宮永 崇史、小橋 昌明、柏木 祥子、岸本 卓也、後藤 玲雄、棚井 龍之介、原木 翔、山本 力世 訳 2023年5月25日発売予定 472ページ(予定) ISBN978-4-8144-0031-7 定価4,180円(税込) 「プログラムを設計するときに行った技術的な判断や選択が、後日大きな制約となる」これはプログラマなら誰しも経験したことのあることでしょう。本書は、そんなプログラミングにおける各種の設計上の選択について、トレードオフの内容やそれがどのような誤りを招きうるのかという点を踏まえて紹介する書籍です。 コードの重複、エラーや例外処理、柔軟性と複雑性のバランスのようなコードレベルの選択から、APIの設
はじめに 昨年末にGAされたLambdaのコンテナイメージ機能。 プラットフォームとしてのデプロイ方法が増えて、ますますLambdaの使い勝手が良くなってきている。 今回は、通常のZipによるデプロイではなくて、コンテナイメージでのデプロイをTerraformで自動化してみよう。 前提知識としては以下だ。 TerraformによるLambdaのデプロイ経験がある SAMによるLambdaのデプロイ経験がある(参考記事) Dockerの基本のキは理解している(参考記事) ソースコード 今回は動けば何でもよいので、AWSリソースとも接続しない、テキトーにJSONを返すだけのコードにしよう。 クエリからidを受け取り、それに応じた名前を返すような機能(getemployee)とする。 package main import ( "context" "encoding/json" "log" "g
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く