2020-01-01から1年間の記事一覧
背景 Spring Batchのパフォーマンスの改善の為に、Partitioningを用いた処理の多重化を検討することになりました。今回の記事では、実際に動くものを元に解説を行います。 目次 背景 目次 解説 概説 詳説 設定 コード slaveステップで呼び出すTasklet Partit…
目次 目次 背景 ハンズオン Kafka起動 動作確認 トピック作成 コンシューマ起動 プロデューサ起動 オフセットの状態確認 背景 必要に迫られて、Kafkaの勉強をはじめました。今回はDockerを用いて環境を速攻で構築します。 ハンズオン Kafka起動 docker-compo…
目次 目次 背景 ハンズオン 事前準備 DBの用意 プロジェクトの作成 コーディング 設定ファイル Spring Batchの設定 ジョブ個別の設定 Javaソース ファイル 実行 背景 前回こちらの記事でSpring Boot Batchを用いたバッチ実行を行いました。今回は、コマンド…
目次 目次 背景 ハンズオン 事前準備 プロジェクトの作成 DBの用意 コーディング Tasklet JavaConfig エントリポイント 設定ファイル 実行 1回目 実行前のDB アプリケーションの実行 実行後のDB 2回目 アプリケーションの実行 実行後のDB 背景 必要に迫られS…
背景 [改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 Software Design plus作者:勝俣 智成,佐伯 昌樹,原田 登志発売日: 2018/09/14メディア: Kindle版 上記書籍を読んでPostgreSQLについてお勉強をしています。そんな中、ストリーミングレプ…
背景 ひょんなことから、仕事でPostgreSQLを使うことになった為、Dockerを用いてぱっと触れる実験環境の構築手順をメモしておきます。 ハンズオン 起動(ホスト上) $ docker run --name postgres --rm -e POSTGRES_PASSWORD=password -p 5432:5432 postgres …
目次 目次 トランザクション分離レベルとは トランザクションが相互に影響を与える事象 値の更新時 レコードの追加時 トランザクション分離レベルの一覧 トランザクション分離レベルとは DBにおいて、複数のトランザクションが同時に実行された際に、相互に…
I/O処理の分類 "I/O処理準備中の振る舞い"と" I/O処理完了の連携方法"の組み合わせにより、以下の通り分類されます。 "I/O処理準備中の振る舞い" カーネルがI/O処理の準備中*1だった際の、アプリケーションの振る舞いで、以下の通り分かれます。 ブロッキン…
目次 目次 背景 ノンブロッキングI/Oの実装方法 NIOとストリームI/Oの比較 Bufferクラス 概要 主な属性 主な操作 I/Oの多重化の実装方法 利用するクラス一覧 SelectableChannelをSelectorに登録する方法 背景 先日、こちら記事でスケーラブルI/Oの実現方法を…
今回の記事の構成は、以下の通りです。構築方法は、「ハンズオン」に記載しています。 背景 調査結果 CONNECTとはなにか CONNECTメソッドを用いたHTTPS通信の流れ そもそも、なぜCONNECTメソッドが必要か エラー原因 ハンズオン 概要 手順 Nginxのソースコー…
やりたいこと 先日、以下の記事でCircleCIの導入を行いました。今回は、バージョン番号のタグ発行を契機とした、サーバへのデプロイを自動化します。 CircleCIの調査 - Anarchy In the 1K 事前準備 SSH SSHキーの作成 CircleCIがサーバに接続する為のSSHキー…
CircleCIとは GitHub上のリポジトリの更新を契機として、処理実行が可能なCI/CDサービスです。リポジトリ上のに配置した.circleci/config.ymlに則り、CircleCIが処理を行います。CircleCIの概要に関しては、合わせて以下もご覧下さい。 継続的インテグレーシ…
マルチプロジェクトについて マルチプロジェクトとは 複数の子プロジェクトを内部に保持するプロジェクトのことを指します。マルチプロジェクトを用いることで、1つのプロジェクトを更に細かい粒度で分割することが可能になります。 マルチプロジェクトの使…
背景 Javaでスレッドプールを扱う際に、いつもお世話になっているThreadPoolExecutorに関して、ExecutorsクラスのnewXyzThreadPoolメソッドを用いて生成するだけで、その中身を意識したことはありませんでした。今回はそのThreadPoolExecutor関して、調べた…
背景 マルチスレッドの処理において、排他制御の為にロックを取得し、期待する状態を待って後続処理を続行する。この様なよくある処理に関して、詳細を以下にまとめます。 実装例 早速ですが、スレッドの状態待ちにの実装例です。概要は以下の通りです。 rea…
背景 スケーラブルなI/Oに関して、以下書籍で勉強しています。 Javaネットワークプログラミングの真髄作者:エズモンド・ピット発売日: 2007/04/28メディア: 大型本 スケーラブルなI/Oの実現方法に関して、こちらでは以下の通り記載があります*1。 I/Oのノン…
背景 プログラミングを行う中でいくつか原則を学ぶ機会があったのですが、正直多すぎて覚えられない。 一度体系的にまとめて整理しないとダメだなと思っていたら、以下の内容が求めていたものだった為、備忘も兼ねてメモしておきます。 Clean Architecture …
背景 Java + MyBatisを使って開発を行っているのですが、コード上でSQLの組み立てを行う方法が無いか調べたところ、MyBatis Dynamic SQLを使うと実現できる様です。 以下のQuick Startを元に試してみたので、ここではその際のメモを残そうと思います。 MyBat…