Rails Developers Meetup 2017での発表内容です。 大きいRailsアプリケーションの可読性を保つためのコツについてまとめました。

ビジネス ドメインの理解を反映するマイクロソフトサービスまたはコンテキスト境界ごとのドメイン モデルを設計する このセクションでは、複雑なサブシステムへの取り組みが必要な場合に実装する高度なマイクロサービスについて、またドメイン専門家の知識と絶えず変化するビジネス ルールに由来するマイクロサービスについて説明します。 このセクションで使用するアーキテクチャ パターンは、図 7-1 に示すように、ドメイン駆動設計 (DDD) とコマンドクエリ責務分離 (CQRS) の手法に基づいています。 図 7-1。 外部マイクロサービス アーキテクチャとマイクロサービスごとの内部アーキテクチャ パターンとの対比 ただし、ASP.NET Core Web API サービスの実装方法や、Swashbuckle または NSwag を使った Swagger メタデータの公開方法など、データ駆動型マイクロサービ
はじめに .bash_profileと.bashrcでユーザ環境のカスタマイズはよくやってますが、 その使い分けについてまじめに確認したことがなかったのでメモをしておきます。 .bash_profileと.bashrc ユーザがLinuxにログインすると、ホームディレクトリにある.bash_profileと .bashrcが実行されるようになっています。 ユーザは、これらの中に環境変数やコマンドのエイリアスの設定を自由に追加できます。 .bash_profileと.bashrcの使い分けについて sshでログインすると、.bash_profile -> bashrcの順に実行されます。 これは.bash_profileのソースの上のあたりを見るとすぐにわかります。
1. The document discusses RESTful APIs and gRPC, comparing their characteristics and use cases. 2. RESTful APIs typically use HTTP and JSON to access resources via URLs while gRPC uses protocol buffers and HTTP/2 for efficient streaming and RPC. 3. gRPC is better suited for microservices and mobile apps due to its ability to handle streaming and performance, while REST is more widely used due to i
目的¶ LS4の用途の一つにWebサービスの画像ストレージシステムがあります。このようなWebサイトでは、アプリケーションサーバの前面にHTTPリバースプロキシを設置しているでしょう。 もしHTTPリバースプロキシとして nginx を使っているなら、nginxの “X-Accel-Redirect” 機能を組み合わせる事で、アプリケーションサーバのCPU負荷とトラフィックを削減することができます。 このドキュメントでは、次のようなWebバックエンドシステムを想定しています: Internet | load balancer / reverse proxy (1) / (5) / App (3) (2) | ----------- GW / | +-------------+ (4)| | | | | | +-|--+ +----+ +----+ | MDS | | DS | | DS |
1. はじめに 今回はajaxでマルチパートを使わずにファイルをアップロードする方法について説明したいと思います。 (ポイント) JQueryなどの外部ライブラリは利用せず、素のJavaScriptのみで実現する XMLHttpRequestとFile(Blob)を利用する multipart/form-dataではなく、ファイル種別に応じた任意のcontent-typeでデータを送信する HTTPリクエストのBODYはファイルデータそのもの(バイナリ)となり、multipart/form-data(たとえばbase64)のエンコード、デコード処理が不要となる サーバ側のアップロード処理がこの方法に対応している必要がある 2. ソースコード <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>upload</title>
3ヶ月ほど前に、kubesprayを使用してkubernetes clusterを構築する という、kubespray とkubespray-cliを使用してKubernetesクラスタを構築する記事を書きました。 しかし、kubespray-cliはすでにdeprecatedだということなので 、kubespray-cliを使用せずにkubesprayでクラスタを構築する手順をまとめておきます。 要件kubesprayを使用してkubernetesクラスタを構築するための要件は以下のようになっています。 ansible 2.4以降とpython-netaddr (python-netaddrを忘れがちなので注意)pip install ansible netaddrJinja 2.9以降(ansibleの依存でインストールされると思います)構築先サーバがインターネットに接続できること構築
MySQLのレプリケーションはデフォルトでは非同期で行われます。そのため、マスターの更新が必ずスレーブへ転送されたか保証はしません。 これを実現するしくみとして、MySQL5.5とそれ以降からは準同期レプリケーション機能を使用できます。今回は準同期レプリケーションについて紹介します。MySQLのバージョンは最新の5.7.21を使用しています。 準同期レプリケーションとは 準同期レプリケーションは、マスターの更新がスレーブに適用ではなく、伝搬されたことを保証する仕組みです。 コミットしたトランザクションはマスターから1台以上(オプションで変更可能)のスレーブに伝搬し、受け取ったスレーブ(I/Oスレッド)が通知をマスターに返したところでコミットが完了となる仕組みです。よって、スレーブ側で適用されたことまでは保証されないので、完全同期ではなく準同期と呼ばれます。 更新データの伝搬後にSQLスレッ
CSP nonce-sourceとは? Content Security Policy (CSP) は、クロスサイトスクリプティング (XSS) やデータインジェクション攻撃を含む、よく知られた種類の攻撃を検出して軽減する、セキュリティの追加レイヤーです。これらの攻撃手法は、データ窃盗からサイト改変、マルウェア感染まで、すべてに使用されます。 https://developer.mozilla.org/ja/docs/Security/CSP より。 XSSに関して簡単に言うと、実行できるJavaScriptを制限して、外部からスクリプトが注入されてもブラウザが実行しないことでXSSを防御する機能ということになります。 例えば、自分のサーバ上のjsファイルからのみのscriptを実行するように指定すれば、外部からスクリプトを挿入されても実行はされず安全になります。 しかし、インラインのJa
MNISTの予測をディープラーニング(ニューラルネットワーク)で行います。実は、ディープラーニング(ニューラルネットワーク)の実装は簡単です。数十ステップで98%程度の精度を達成できます。 (注意事項) ディープラーニング(ニューラルネットワーク)の学習方法を理解すること目的としたプログラムです。MNISTデータ程度のデータを想定しています。大量のデータやデータによっては、この実装だけは対応できません。。あくまでもディープラーニング(ニューラルネットワーク)の基本を理解するという視点でご覧ください。 ニューラルネットワーク 以下のような図を見たことがありますか?脳を模倣したニューラルネットワークです。 緑枠が脳細胞を表すニューロンです。ニューロンとニューロンの間はシナプス(青の◆)で結合しています。シナプスでのデータの受け渡し度合いを重み($ w $)で表します。ニューロン間の結合の度合い
Bearer authentication (also called token authentication) is an HTTP authentication scheme that involves security tokens called bearer tokens. The name “Bearer authentication” can be understood as “give access to the bearer of this token.” The bearer token is a cryptic string, usually generated by the server in response to a login request. The client must send this token in the Authorization header
背景 最近は変化し続ける要件に対応するために、システムも柔軟であることが求められています。 そのため、部分的に変更やスケールの可能なシステムを構築し、API経由で連携するマイクロサービス的アーキテクチャが増えてきています。 そういった設計の中で問題になっていくのが、従来のモノリシックなアプリケーションではIDEやコンパイラなどで行っていた、機能間のインターフェイスをどう管理するかという部分です。 Swaggerとは? SwaggerとはRESTful APIのドキュメントや、サーバ、クライアントコード、エディタ、またそれらを扱うための仕様などを提供するフレームワークです。 公式サイトでは、The World's Most Popular Framework for APIsと謳っています。 その理由は、マイクロソフト、Google、IBM、SmartBearなどを大手の企業を含む「Open
[頂いた回答・コメント、その後の考察によって得た結論を自己回答として投稿しました。] ターゲットとなるディストリビューション: CentOS 6.2 x86-64 版。ただし、他のディストリビューション -- 特に新しめのもの -- についての情報も歓迎です。 背景 Linux において、プログラム中から、何か別コマンドを実行したい場合、以下のいずれかの方法がよく使われると思います。 fork() + exec系() + waitpid() (その場で完了待ちしたい場合) fork() + exec系()。SIGCHILD を受けて wait系() (親と並列に実行させたい場合) system() ※ その場で完了待ちしたい場合と、親と並列に実行させたい場合の2通りを挙げましたが、今回必要としているのは前者。とはいえ、後者の場合でも問題は共通なので列挙しました。 ところが、大量にメモリを使
Railsのログ問題 便利なことにRailsは特に設定しなくてもproduction.logにログを吐いてくれる。エラーメッセージやSQL文も出力してくれるので助かる反面、以下のような問題点がある。 1リクエストで複数行流れるので、エラー調査や緊急対応時にgrepできない デフォルトだと若干冗長すぎる Fluentd等のログの活用を考えた際にパースが非常に面倒 Rails.loggerをオレオレカスタマイズするのも無くはないが、メンテナンスのことも考えて、ログ出力用ライブラリLogrageを使ってJSON形式のログをスマートに出力するようにした。 Logrageとは Railsのログのいい感じに出力してくれるライブラリ https://github.com/roidrage/lograge ちなみにLogrageの説明ではRailsのデフォルトログを「noisy and unusable,
『クラウドを支えるこれからの暗号技術』 本書は公開鍵暗号に続く、新しい暗号技術を紹介します。 対象読者 『暗号技術入門』(結城浩)を読んで最先端暗号理論はどうなってるのだろうと興味を持った方 「入門書に載っているRSA暗号は安全ではないので使ってはいけない」ということを知らない方 Hash(secret key||message)で認証してはいけない理由(SHA-2とSHA-3の違い)を知りたい方 楕円曲線暗号の楕円曲線を直感的に把握したい方 最近ちょいちょい聞く「準同型暗号」って何だろうと思っている方 楕円曲線といえばy2 = x3 + ax + bという式が唐突に出てくるけど何故なのと疑問に思った方 EdDSAって何? ECDSAの書き間違い?と思ったらEdwards曲線が出てきて、それ何だろうと思った方 暗号で使われる数学の話をきちんと理解したい方 などなど。 購入 秀和システム 正
Created this by pasting together a few screenshots from a NetBeans profiler session – of a Spring + Hibernate web-app running within JBoss. Quite interesting to see how the business logic is just a tiny part of it all. Java EE is a lot about abstractions which I have grown to appreciate over the years. However, I find this very difficult to explain to my colleague who sits just across the room – h
ITproに2月5日付けで掲載された記事「中古クラウド、あります - 記者の眼」で、高橋秀和記者がAmazon EC2の内部で使われているサーバのCPUが複数種類あることを、調査の上で明らかにしています。 高橋記者はこれまでITproでAmazon EC2での運用を担当してきた経験から、Amazon EC2のデータセンターによってサーバのCPUが異なることに気がつき、起動後の仮想マシンでCPUの種類を確認するコマンドを実行。どのような種類のCPUが使われているかを調べています。 その結果、6種類のCPUが確認できたそうです。記事の表から引用します。 AMD Opteron 270 AMD Opteron 2218 HE Intel Xeon E5345 Intel Xeon E5410 Intel Xeon E5430 Intel Xeon X5550 AMDとIntelの両方を用いており
Amazon Web Services ブログ Amazon CloudFront & Lambda@Edge で画像をリサイズする 多くの画像に対してリサイズを行ったり、新しいデザインレイアウトにウォーターマークを付与したり、ブラウザのサポートのためにフォーマットの最適化を行ったことはありませんか? 画像毎に事前処理を行う必要なく、必要に応じてその場ですぐに画像を自動生成できないかとおもったことはありませんか? Lambda@Edge はそれらを可能にし、ユーザーの利便性を向上させ、帯域使用量を削減します。 Lambda@Edge の準備: AWS Lambda はサーバーのプロビジョニングや管理の必要なしにコードを実行できます。 そして利用量に応じて支払いを行います 。 つまりコードが実行されていないときは無料です! Lambda は自動スケーリングするとともに耐障害性を兼ね備えていま
We have since migrated to a more robust solution that uses NGINX and HAProxy together to achieve our goals. See that solution here HAProxy: Cornerstone of Reliable Websites One primary goal of the infrastructure teams here at Yelp is to get as close to zero downtime as possible. This means that when users make requests for www.yelp.com we want to ensure that they get a response, and that they get
プライベートホストゾーンが作成されます。 また、プライベートホストゾーンを割り当てたVPCでは、DNSサポートを更新する必要があります。こちら(VPC での DNS の使用)を参考に、設定しておいてください。 手順4「リードレプリカに対するCNAMEレコードを作成し、ヘルスチェックを割り当てる」 作成したプライベートホストゾーンで、「Create Record Set」をクリックし、レコードを作成します。まずは、リードレプリカ1号機に対して設定します。 Name アプリケーションサーバからリードレプリカにアクセスする時に利用するCNAMEを指定します ここでは、readを指定します。これにより、read.db.localで、リードレプリカにアクセスできます Type Cnameを設定 Alias:Noを選択 切替を迅速にするためTTLを10に指定 Valueには、リードレプリカのエンドポイ
Update: The Cost Of JavaScript In 2019 is now available to read. As web developers, we know how easy it is to end up with web page bloat. But loading a webpage is much more than shipping bytes down the wire. Once the browser has downloaded our page’s scripts it then has to parse, interpret & run them. In this post, we’ll dive into this phase for JavaScript, why it might be slowing down your app’s
どうもー、S.Y N(シン)です。 金曜ですので、本日は英語学習について投稿していきます。 ■スポンサーリンク ハワイで短期留学しよう【Hawaii Palms English School】 はじめに 助動詞とは? 例文 助動詞の特徴とは? 1.助動詞の後ろには動詞の原型が来る。 2.疑問文の時は助動詞を文頭に出す。 おわりに はじめに 今回から新しいジャンルに入って、英文法の助動詞について解説していきます。 助動詞の役割は大きく、英文読み解いたり問題を解く上で非常に役立つので、しっかりと押さえていきましょう! 助動詞とは? では早速英文法の助動詞について解説していきます。 助動詞とはその名の通り動詞を助ける役割を担っており、助動詞を使用することで動詞に意味を付け加えることができます。 これだけではピンとこないと思いますので、例文を用いて具体的に見ていきましょう。 例文 I can wo
EC2 Auto-ScalingでECS組んでますか?エラーレート高いですか?救ってあげてもいいですか? サイバーエージェント技術本部インフラエンジニアの@prog893です。今回も「AWA」という音楽ストリーミングサービスのインフラの改善について紹介したいと思います。前回の記事では、データベースの復旧時間が12時間から55分まで短縮できた話を紹介しましたが、今回は楽曲ダウンロード及びストリーミングレイヤーでのエラー率を大幅に改善したことについて述べたいと思います。 楽曲ダウンロード及びストリーミングの構成 まず、楽曲ダウンロード及びストリーミングの構成概要について紹介します。 音楽ダウンロード及びストリーミングの構成概要 楽曲配信サーバ(以降Track Proxy)はコンテナとして実行しAWS Elastic Container Service(ECS)で運用しており、ECSのバックエン
プロジェクトの始め方 vue cliで始める 画像素材などが少なく、載せる情報はDB上に格納する。 とにかく早く始めたい vue.jsの使い方を覚えたい vue-cli https://www.npmjs.com/package/vue-cli gulp・webpackで始める サイトに少し取り入れたい。 画像やCSSをwebpackに含めたくない。 構成を自由に変えたい webpackとvueのサンプル https://github.com/psc-kamei/webpack_vue コンポーネント間で共通なグローバルな変数や関数を定義したい。 変数 // 座標を取得 var windowStatePlugin = { install: function (Vue) { var state = { scrollX: 0, scrollY: 0, width: 0, height: 0 }
サーバレスアーキテクチャを検討する際に、データベース層をどうするかはよく議論になります。リレーショナルデータベースに慣れている人は、なんとか RDS を採用できないか考えるのですが、現状は DB のコネクションプール問題などで RDS を用いるのはアンチパターンと言われています。 代替として用いられるのが NoSQL 型のデータベースである DynamoDB です。前述のような問題は発生せず、AWS でサーバレスなシステムを構築する際にデータベース層に採用されることが多いです。 しかし、これは私だけかもしれませんが、DynamoDBの(というよりも NoSQL 型データベースの?)設計に慣れていないこともあり、 「この要求・要件を実現するときに、どうテーブル設計すべき?」 「この設計で将来の機能拡張に耐えられるの?」 と不安になるシーンが多いです。特に後者が多く、これまでも「既に見えている
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く