2021.10.07 WEBシステム開発 Golangでデッドロックを作って遊んでみる~並行処理でデッドロックを起こさないために~ Goではgoroutineと呼ばれるGoで管理された軽量なスレッドを使って、並行処理を書くことができます。 手軽に並行処理を書けるところがGoの魅力の一つだと思いますが、並行処理ならではの問題が発生することがあります。 今回は起こりやすい問題の一つである「デッドロック」で遊んでみたいと思います。 [...]
2021.03.18 WEBシステム開発 <Goのパッケージ放浪記> ioパッケージに定義されている「Closerインターフェイス」について 今日は前回のWriterインターフェイスに続き、ioパッケージのCloserインターフェイスまわりを覗いていきます。 参照https://github.com/golang/go/blob/master/src/io/io.go 今回覗いていくソースのバージョンは「go1.14.4」です。 I [...]
2020.11.24 WEBシステム開発 <Goのパッケージ放浪記> ioパッケージに定義されている「Writerインターフェイス」について 今日は前回のReaderインターフェイスに続き、ioパッケージのWriterインターフェイスまわりを覗いていきます。 参照https://github.com/golang/go/blob/master/src/io/io.go 今回覗いていくソースのバージョンは「go1.14.4」です。 I [...]
2020.10.23 WEBシステム開発 <Goのパッケージ放浪記> ioパッケージに定義されている「Readerインターフェイス」について 今日は、Goのパッケージのソースを覗いてみたいと思います。 普段からさまざまなパッケージを利用しますが、その実装はどうなっているのかを把握し、よりGoらしいコードを書けるようになることが目的です。 今回はioパッケージのReaderインターフェイスまわりを読んでいきます。 参照https://g [...]
2020.08.06 WEBシステム開発 google/wireを使ってGoでDI(dependency injection)してみる 今回は、GoでDI(dependency injection)してみたいと思います。 GoでDI用のパッケージはいくつかありますが、今回は「google/wire」を利用します。 GitHub google / wirehttps://github.com/google/wire IN [...]
2020.07.09 WEBシステム開発 GKEにArgo CDを導入してアプリケーションをデプロイする アーティスではいくつかのウェブアプリケーションをGoogle Kubernetes Engine上のk8sにデプロイしています。イメージをCloud Buildでビルドした後、マニフェスト用のリポジトリにPushがあるとCloud Buildで自動的にApplyを行っています。 現状でもとくに [...]
2020.06.16 WEBシステム開発 WSL2のDebianにAnsibleの最新版をインストールする ついにWindowsの「May 2020 Update」が配信され、待ちに待ったWSL2が使えるようになりました。Preview版ではなく正式なリリースとなったので、さっそく会社のPCもHyper-VからWSL2に移行しました。 WSL2にはいくつかのディストリビューションを選択できますが、今回は [...]
2020.02.19 WEBシステム開発 GKEのistioでサンプルアプリを動かす(フォールトインジェクション、タイムアウト編) 前回、前々回に引き続き、GKE上のistioでサンプルアプリケーションを動かして設定を確認していきます。 今回の目標は、タイムアウトの設定と動作を確認することです。 参考にするページは以下のとおりです。 参考ページ Fault Injection Request Timeouts INDE [...]
2020.01.31 WEBシステム開発 GKE(Google Kubernetes Engine)のistioでサンプルアプリを動かす【ルーティング編】 前回はGKE上でistioのサービスメッシュを構築し、サンプルアプリケーションをデプロイしました。 今回は、その環境を使ってistioの設定と動作を確認していきたいと思います。 参考にするページは以下のとおりです。 参考ページ Request Routing Traffic Shifting [...]
2020.01.23 WEBシステム開発 GKE(Google Kubernetes Engine)のistioでサンプルアプリを動かす【構築編】 マイクロサービスアーキテクチャを採用することで得られるメリットは多いですが、対応しなければならない問題も増えます。 その中でも、サービスが利用不能になった(障害が発生した)場合の対応については、慎重に検討しておく必要があります。 下流のサービスへの呼び出しが停滞すると、連鎖的にすべてのサービスが呼 [...]
2019.11.29 WEBシステム開発 resticを使ってGoogle Cloud Storageにバックアップする方法を検証してみる アーティスでは、ファイルシステムのストレージサーバーにGCPのCloud Filestore(以下、Filestore)を利用しています。FilestoreはマネージドのNFSサーバーで、手軽に大容量のストレージを利用できとても便利ですが、自動的にバックアップしてくれるサービスはありません。 [...]
2019.10.29 WEBシステム開発 GCPのKMSを利用してファイルを暗号化する Kubernetes(以下、K8s)を利用してサービスを運営していく上で、アーティスではGitOpsを取り入れています。 ここでは、GitOpsについて詳しく触れませんが、概要は、k8sのmanifestをCLIから適用せずに、Gitを通してパイプライン上から自動的にクラスタに適用させます。 参 [...]
2019.10.03 BUSINESS仕事効率化ツール システムエンジニアが4Kディスプレイを導入して快適な開発環境を作ってみた アーティスでは、フルHDのデュアルディスプレイ環境がスタンダードです。 十年以上前に、シングルディスプレイからデュアルディスプレイへ移行したときに作業効率が上がるのを体感しました。 システム開発者は、IDE(統合開発環境)とシェルを行き来したり、リファレンスを参照したりするなど、多くの情報を同時に [...]
2019.06.18 WEBシステム開発 Githubのリポジトリ「TIL」を作って今日学んだ知識をアウトプットしよう エンジニアは日々、新しい事を学んだり、発見したりする機会が多い職種です。 頻繁に使う知識なら記憶として定着しますが、あまり使わないけど重要な知識は忘れがちです。 忘れがちな知識を記録しておくために、技術用のブログを書いているエンジニアは珍しくありません。 もちろんブログでも問題ないのですが、こ [...]
2019.04.23 WEBWeb全般 Chromeのデベロッパーツールでリクエストの状態を把握し、webサイトの表示スピード改善に役立てる Google Chromeには、「デベロッパーツール」(以下、DevTools)という機能があります。 主にwebサイトの開発時に利用すると便利な機能ですが、自社サイトや自分の気になるサイトを調査するときに役立ちます。 さまざまな機能を持つDevToolsですが、今回は「Network」パネル [...]
2018.10.23 WEBシステム開発 「ユーザーストーリーマッピング」を読んでみた 【0章の2】 前回の「ユーザーストーリーマッピング」を読んでみた 【0章の1】では、ストーリーは共通理解を築くものだとわかりました。 今回【0章の2】では、製品開発の目的とアウトプットや成果についてまとめていきます。 INDEX要件よりずっと大事な事について話す一番重要なのはアウトプットではなく成果ユーザ [...]
2018.02.27 WEBシステム開発 「ユーザーストーリーマッピング」を読んでみた 【0章の1】 アーティスでは、一部のソフトウェアにてドメイン駆動開発(DDD)を取り入れています。 DDDでは適切なドメインモデルを探す事が重要になりますので、そのために使われるユビキタス言語も同じく重要になってきます。 今回、私がこの「ユーザーストーリーマッピング」(Jeff Patton 著、長尾 高弘 訳 [...]