タグ

architectureに関するtakashabeのブックマーク (37)

  • Software Architecture Patterns

    Software comes in all types of size and shapes. Every team has different though process, works differently and the outcome of the software depends upon various factors such as client requirement, budget, time, use of available solutions to common problems etc. And if all goes well, the application does what the user expects it to do. But modern software can be complex, which can lead to complex co

    Software Architecture Patterns
  • なぜMicroservicesか?

    現職においてMonolithアーキテクチャからMicroservicesアーキテクチャへの移行とその基盤の構築に関わって2年近くが経った.未だ道半ばであるがこれまでの経験や日々のインプットをもとにいろいろ書いておこうという気持ちになった.記事ではそもそもMicroservicesアーキテクチャとは何かを整理し,なぜやるべきか?・なぜ避けるべきかを整理する. Microservices? Microservicesアーキテクチャとは「Single purpose,High cohesion,そしてLoosly Couploedなサービスを組み合わせてシステムを構築する」アーキテクチャ手法である.それぞれの原則をまとめると以下のようになる. Single purpose: 一つのことに集中しておりそれをうまくやること Loose coupling: サービスは依存するサービスについて最小限の

  • Beyond the Twelve-Factor App

    Note: This is the preface from Beyond the Twelve-Factor App: Exploring the DNA of Highly Scalable, Resilient Cloud Applications, published by O’Reilly. Buzzwords are the result of our need to build a shared language that allows us to communicate about complex topics without having to stop and do a review. Shared terminology isn’t just convenient, it’s essential for decision making, architecture de

    Beyond the Twelve-Factor App
  • 回復性の高いMicroservicesアーキテクチャを支える技術 - Mercari Engineering Blog

    メルカリバックエンドエンジニアの@yagi5です。 Mercari Advent Calendar 2018の23日目を担当します。 モノリシックなシステムは、障害が発生するとシステムが全停止してしまうことが一般的です。 しかし、Microservicesアーキテクチャでは様々なテクニックを用いて、サービス全体が停止するような障害に対処することができます。 この記事では、Microservicesにおけるシステムの回復性を高めるための技術について書いていきます。 回復性とは、障害が起こらないことを意味しません。 高い回復性を備えたシステムは、障害が発生するということを前提に、システム全体のダウンを避け、データのロスが回避されるように設計されています。 Microservicesの世界では、システムは自律的に動作する複数のサブシステムによって構成されます。 ひとつのサービスに障害が発生しても

    回復性の高いMicroservicesアーキテクチャを支える技術 - Mercari Engineering Blog
  • バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング

    こんにちは。メルペイで、決済・振込申請のバックエンドソフトウェアエンジニアをしている id:koemu です。 今日は、バッチ処理を行う理由について、考察を深めて設計に活かしていく話をしたいと思います。 はじめに バッチ処理とは、ある決まったタイミングで1つのプログラムが複数のデータを 一括処理 することを指します。この反対の言葉として、オンライン処理があります。オンライン処理とは、お客様の操作を初めとしたイベントをもとに 逐次処理 されるものです。OLTP(Online Transaction Processing)とも言います。 エントリでは、バッチ処理を採用するにあたり、どういったユースケースが適切なのかを整理して、今後のソフトウェアの設計の指針にできることを目指しています。今回は、「バッチ処理を採用するとき」と「バッチ処理の設計」の2つについて取り上げます。 バッチ処理を採用する

    バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング
  • Web Architecture 101

    Modern web application architecture overviewThe above diagram is a fairly good representation of our architecture at Storyblocks. If you’re not an experienced web developer, you’ll likely find it complicated. The walk through below should make it more approachable before we dive into the details of each component. A user searches on Google for “Strong Beautiful Fog And Sunbeams In The Forest”. The

    Web Architecture 101
  • マイクロサービスと設計原則 — 設計Night2018 登壇報告 #sekkei_n2018

    マイクロサービスの設計に対して、どう設計原則を使うのか、という話をしました。稿では、資料中のいくつかの点に補足したいと思います。 SRP (単一責任原則)単一責任原則原則について、提唱者である Robert C. Martin 氏が2014年にさらに考察している記事を紹介しました ( The Single Responsibility Principle )。 この中では、変更する理由は「人」であるということに強くフォーカスされています。この考え方は、マイクロサービスの現実の問題に非常にマッチするため、今回取り上げました。ただ、筆者個人の考えではつねにこの「人」にフォーカスするのが常に現実の問題を解決するのに役立つかは疑問で、場合によっては受け取り方には注意が必要かなと思います。単一責任原則は、この追記がなくても長く大事にされてきたものです。 マイクロサービスの統合マイクロサービスをどう

    マイクロサービスと設計原則 — 設計Night2018 登壇報告 #sekkei_n2018
  • 書籍「Clean Architecture」が最高すぎたのでエッセンスをまとめてみた

    記事では、書籍「Clean Architecture 達人に学ぶソフトウェアの構造と設計」のポイントを抽出する。ただ、削った部分も多いので、ぜひ書籍を購入してほしい。 第1部 イントロダクション ソフトウェアを「一度だけ」動かすのは、それほど難しいことではない。正しくするのは難しい。 ソフトウェアを正しくすると、不思議なことが起こる。開発や保守に必要な人材はわずかで済む。変更は簡単で迅速になる。欠陥の数は少なく、ほとんど出てこなくなる。労力は最小に抑えられ、機能性と柔軟性は最大になる。 「あとでクリーンにすればいいよ。先に市場に出さなければ!」ソフトウェア開発者たちはそう言ってごまかす。だが、あとでクリーンにすることはない。短期的にも長期的にも、崩壊したコードを書くほうがクリーンなコードを書くよりも常に遅い。早く進む唯一の方法は、うまく進むことである。 すべてのソフトウェアシステムは、2

    書籍「Clean Architecture」が最高すぎたのでエッセンスをまとめてみた
  • サーバレスアーキテクチャ入門 - Speaker Deck

    Gaming Tech Night #2 re:Born (再始動) で登壇した資料です。 https://gs2.io/

    サーバレスアーキテクチャ入門 - Speaker Deck
  • Apache Kafkaを使ったアプリ設計で反省している件を正直ベースで話す

    Apache Kafka: Producer, Broker and Consumer2017年は生まれて始めてApache Kafkaを格的に業務利用(PoCではなく番運用)した年でした。Apache Kafka的なメッセージングミドルウェアそのもののは、社内的な事情でよく使っていたのでその使い勝手に対して困惑はほとんど無かったですし、ミドルウェアとして非常に安定しているため、Kafkaクラスタそのものでの不具合らしい不具合が発生したことは一度もありませんでした。 しかし、Kafkaのトピック設計などに関してのベストプラクティスは事例ベースでもあまり見かけたことがなく、チームメンバーと悩むことも多かったです。このストーリーでは、主にKafkaを利用したアプリ設計で考えたことや失敗したことを振り返りつつ共有します。なお、パーティション数や各種バッファサイズなどのチューニング要素は今回取

    Apache Kafkaを使ったアプリ設計で反省している件を正直ベースで話す
  • お前らがModelと呼ぶアレをなんと呼ぶべきか。近辺の用語(EntityとかVOとかDTOとか)について整理しつつ考える - Qiita

    お前らがModelと呼ぶアレをなんと呼ぶべきか。近辺の用語(EntityとかVOとかDTOとか)について整理しつつ考えるmodelDDD設計 みなさんは、Modelと言われたときに何をイメージしますか? こんなアレを思い浮かべた方も多いかと思います。 マサカらせてください。やはりお前らのModelは間違っている。 アレをModelと呼ぶと何が不味いのか すみません、早速言い過ぎました。半分は正しいです。MVCの発明者、Trygve Reenskaug氏による1979年の説明によると、 Models represent knowledge. A model could be a single object (rather uninteresting), or it could be some structure of objects. 1 このように「Modelは単体のオブジェクトであっても

    お前らがModelと呼ぶアレをなんと呼ぶべきか。近辺の用語(EntityとかVOとかDTOとか)について整理しつつ考える - Qiita
  • Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える

    より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが構築できたので、その経緯と得られた知見についてお話ししたいと思います。 以下のようなトピックを考えています。 ・CQRSの定義とメリットデメリット ・DDD,CQRSを検討するにあたってのORMの選定ポイント ・構築したアーキテクチャ

    Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
  • Putting the Clean Architecture into practice — part 1

    A year ago we’ve decided to introduce a new language at Uniplaces, being Golang the choice. Despite the effort that introducing a new tool is, it can pay off in a lot of ways! It makes you think out of your box, it shows you different ways to solve problems, and mostly, it gives you the flexibility to start fresh again. Starting fresh I was super excited for having a new language in the team, it w

    Putting the Clean Architecture into practice — part 1
  • Trying Clean Architecture on Golang | HackerNoon

    Too Long; Didn't Read After reading uncle Bob’s Clean Architecture Concept, I’m trying to implement it in Golang. This is a similar architecture that we used in our company, Kurio - App Berita Indonesia, but a little different structure. The architecture does not depend on the existence of some library of feature laden software. The business rules can be tested without the UI, Database, Web Server

    Trying Clean Architecture on Golang | HackerNoon
  • Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える - pospomeのプログラミング日記

    devfest 2017 tokyo の発表資料です。 Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える from pospome 当日は入室できない人もいたらしい & 機材トラブルで10minほど開始が遅れてしまった ということで申し訳なく思っています。 また、立ち見する価値がある内容を提供できたのだろうか? とも思っています。 スライドは単体でも発表内容が伝わるように文章を多めに載せているので、 是非確認してみてください。 100ページ越えていますが・・・。 #DevFest_room2 入れなかった。。— t.junichi (@tjun1) 2017年10月9日 ものすごい立ち見人数 #Devfest17 #DevFest_room2— バトルプログラマー柴田智也@少女終末旅行 (@tomoya_shibata) 2017年10月9日 ルーム2これから並ぶ方はま

    Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える - pospomeのプログラミング日記
  • Microservices at Mercari

    1) Mercari has transitioned some services to microservices architecture running on Kubernetes in the US region to improve development velocity. 2) Key challenges in operating microservices include deployment automation using Spinnaker, and observability of distributed systems through request tracing, logging, and metrics. 3) The architecture is still evolving with discussions on service mesh and c

    Microservices at Mercari
  • 続々・リトライと冪等性のデザインパターン - あらゆる操作を冪等にする方法 - Blog by Sadayuki Furuhashi

    いつも心に冪等性。古橋です。 リトライと冪等性のデザインパターンの完結編です。 だいぶ間が空いてしまいましたが! 最後に冪等性を実装する汎用的な実装手法についてまとめていきます。 パターン6:操作ログとリクエストIDでUPDATEを冪等にする 同じIDで識別される値がUPDATEされる場合、つまりmutableである値の管理は、一般に冪等に行うのが難しい。 例えば、ユーザーごとに「最後に購入したアイテム」を更新する操作を考えてみると: 1. ユーザーAが最後に購入したアイテムをアイテム1に変更する(UPDATE) 2. ユーザーAが最後に購入したアイテムをアイテム2に変更する(UPDATE) この操作に何の対策もなくリトライを実装した場合、後続のUPDATE処理の結果を古い内容で上書きしてしまう可能性がある: 1. ユーザーAが最後に購入したアイテムをアイテム1に変更する(UPDATE)→

    続々・リトライと冪等性のデザインパターン - あらゆる操作を冪等にする方法 - Blog by Sadayuki Furuhashi
  • CDNとの付き合い方 – cat /dev/random > /dev/null &

    最近何かと話題なCDNですが、そもそもCDNってなんだろう・・・どんなことに使えるんだろう?的なことを書いてみようと思います。 一応先に言っておくと、私はCDN業者に所属したことないのであくまでも利用者として見た時の話を書きます。 また、私の考えであり、様々なワークロードがあるなかでこれがすべてではありませんので、こんな考えもあるんだなぁぐらいに思ってもらえると助かります。 そもそもCDNってなんだろうか そもそもCDNはContent Delivery Networkの略であってCache Delivery Networkの略ではありません。 要はコンテンツをクライアントに対して高速・効率的に配信するためのネットワークです。 良くCDNといえばその成り立ちからキャッシュというイメージはありますが、重要な要素の一つではあるもののCDNの全てではありません。 さらに言えばAkamaiのInt

  • 時系列データベースという概念をクラウドの技で再構築する - ゆううきブログ

    サーバ監視サービスMackerelにおいて開発中の、高解像度・長期間のサーバメトリック収集を実現するための新しい時系列データベースDiamondを紹介します。具体的には、Amazon ElastiCache、Amazon DynamoDBAmazon S3を組み合わせ、Amazon Kinesis StreamsとAWS Lambdaによりコンポーネント間を接続した、階層構造のデータストアアーキテクチャの設計と実装を解説します。 2018/06/05 追記: この記事の内容をWSA研#2でより一般的なアーキテクチャレベルでの貢献として書き直しました。 サーバレス時代におけるヘテロジニアス時系列データベースアーキテクチャ - ゆううきブログ はじめに 先日開催されたAWS Summit Tokyo 2017にて、「時系列データベースという概念をクラウドの技で再構築する」というタイトルで登壇

    時系列データベースという概念をクラウドの技で再構築する - ゆううきブログ
  • 技術的負債と向き合う

    オープンセミナー2017@岡山での発表スライドです

    技術的負債と向き合う