ドメインレイヤの実装をサブドメインごとに管理する

自分は以下の書籍で各レイヤ構造に対する実装を Go で解説しているが、 書籍を書いてからも異なるパターンを色々と試行錯誤していた。 pospome.booth.pm 書籍内ではユーティリティ系の実装を配置するパッケージとして "コアレイヤ" というレイヤの話があるが…

プロダクトオーナーを経験してドメインを理解する感覚が身についたかもしれないという話

DDD

現在自分は会社の仕事で認証基盤とマイクロサービス向けのアプリケーションプラットフォームを構築していて、 役割としてはテックリードとプロダクトオーナーを兼任している。 自分が開発、運用するシステムは主に社内のエンジニア向けの仕組みなので、 問題…

GCP Artifact Registry に push したら denied: Permission "artifactregistry.repositories.downloadArtifacts" のエラー

GCP Artifact Registry に push したら以下のエラーが発生した。 権限の設定ミスっぽいエラーだけど、それっぽい権限を付けてもエラーは解消されなかった。 denied: Permission "artifactregistry.repositories.downloadArtifacts" denied on resource "xxx"…

BOOK TECH さんにて "試し読みあり" で書籍を取り扱ってもらいました。

BOOK TECH さんにて "試し読みあり" で書籍を取り扱ってもらいました。 価格と内容は既存のものと変わりません。 興味はあるけど内容に不安があって手が出なかった方は試し読みだけでもしていってもらえるといいかなと思っています。 pospome さんの著書4冊…

MOVED Error from Redis Cluster(AWS Elasticache) by redis-go

以下の UniversalClient で Redis Cluster(AWS Elasticache) にアクセスしたところ、 "MOVED 1738 127.0.0.1:6379" みたいなエラーが発生した。 www.pospome.work MOVED というエラー自体は Redis Cluster のもので、アクセス対象のデータを持っているノード…

go-redis でクラウド上の Redis Cluster とローカルに立てた Redis を同じコードで動かす

最近 go-redis を使っているのだが、"クラウド上は Redis Cluster で、ローカルは開発用の Single Redis をサクッと Docker で立てる" みたいなことをしたいと思った。 しかし、go-redis では Redis Cluter と Single Redis が異なるクライアントとして定義…

"pospomeのサーバサイドアーキテクチャ4" をBOOTHで販売しました。

"pospomeのサーバサイドアーキテクチャ4" をBOOTHで販売しました。 pospome.booth.pm 書籍についての詳細は以下です。 www.pospome.work

技術書典9で"パッケージ設計"に関する書籍を販売します

技術書典9で"パッケージ設計"に関する書籍を販売します。 *追記 現在はBOOTHにて販売中です。 www.pospome.work techbookfest.org どんな書籍なのか? 書籍のナンバリングについて ページ数と価格 技術書典後にBOOTHで販売しますが価格は上げます 目次 その…

Goでゼロ値の構造体を生成することを防ぐべきかという話

社内slackで以下の記事と同じようなことを悩んでいるというメッセージがあった。 2018年の記事ではあるが、自分もGoを利用し始めた頃に考えたことがあるので、この記事に書かれている内容をベースに改めて自分の意見をまとめておく。 ここに書く内容が正しい…

Goのアーキテクチャとフレームワークについて

社内slackでGoについて質問されて、それなりに長文で回答したのでその内容を加筆修正したものをブログに残しておく。 質問内容としては以下のイメージ。 RubyだとRailsがあり、MVCを利用することになるが、Goだとそこらへんはどうなるのか? Go初心者なのでGo…

マイクロサービスアーキテクトという役割

最近マイクロサービスアーキテクチャが抱える課題を解決するために色々やろうとしているのでまとめてみました。 マイクロサービスアーキテクチャの採用 開発効率と疎結合な組織 開発効率と多様性 何をどこまでルール化するか 大規模なマイクロサービスアーキ…

メルペイを退職しました

2019年11月末でメルペイを退職しました。退職理由は "エンジニアとしてのキャリアパス" です。 最近自分の理想とするエンジニア像、強化したいスキルセット、適切な環境などを整理した結果、違う環境でチャレンジすることにしました。自分の次の会社ですが、…

体重を増やしてみた

このブログには技術的なことしか書いてなかったんだけど、せっかく太った記念なので書いておこうと思った。つい最近 "太るのも才能" という言葉が頭をよぎったので、「どこまで太れるのか?」というのにチャレンジしてみた。 筋肉をつけるとかではなく、単純…

技術書典7にて販売した "pospomeのサーバサイドアーキテクチャ3" をBOOTHから購入できるようにしました。

こちらから購入することができます。 こちらで言及したとおり、価格は1500円に設定しています。pospome.booth.pm

技術書典7で"実装パターン"に関する書籍を販売します。

技術書典7で"実装パターン"に関する書籍を販売します。 techbookfest.org 何の書籍なのか? ページ数と価格 技術書典後にBOOTHで販売しますが価格は上げます かんたん後払い対応します 目次 何の書籍なのか? 一言でいうと実装パターンに関する書籍です。 サン…

"マイクロサービスにおける認証認可基盤" について話しました

こちらのイベントで"マイクロサービスにおける認証認可基盤" について話しました。 mercari.connpass.com 内部通信の認証ということで、なかなか外に出せない技術的なテーマかと思いますが、今回アウトプットする機会があったのでアウトプットしました。 発…

posopmeが過去に書いた実装系の記事まとめ

技術書典で何書こうかなーと思ってなんとなくブログの記事を見直していたときに、 またなんとなーく実装系の記事をまとめてみようかなと思いました。 過去の記事とかは検索で引っかからない限り読んでもらえる機会ないと思いますし。 ちなみに過去に書いたも…

メルペイの認証基盤チームのバックエンドエンジニアを募集します

以前ツイートした通り、 メルペイの認証基盤チームに興味を持ってもらうためにこの記事を書きました。 メルペイには"メルカリ、メルペイにおける認証認可の仕組みを構築すること"を目的にした認証基盤というチームがあります。高負荷でありながら高い可用性…

技術書典6にて販売した "pospomeのサーバサイドアーキテクチャ2" をBOOTHから購入できるようにしました。

技術書典6にて販売した "pospomeのサーバサイドアーキテクチャ2" をBOOTHから購入できるようにしました。 この書籍は"Go+Docker+CircleCI+GKE+Spinnakerでアプリケーションデプロイフローを構築する"という内容です。 以下から購入できます。 pospome.booth.…

技術書典6で"Go+Docker+CircleCI+GKE+Spinnaker"に関する書籍を販売します。

技術書典6で"Go+Docker+CircleCI+GKE+Spinnaker"に関する書籍を販売します。 技術書典の当日は見本誌を用意するので興味のある方は実際に手にとって内容を確認していただければと思います。 techbookfest.org 前回は以下のサーバサイドアーキテクチャの書籍…

SpannerでSHOW CREATE TABLEのようにテーブル定義とインデックスの定義を取得する

GCP

取得方法は2つある。1つ目1つ目の方法はGCPのConsoleから確認する方法。 ConsoleでSpannerを表示して、instance -> database を選択するとテーブル一覧画面が表示される。 その一覧の一番下に"Show equivalent DDL"というリンクがあり、 そこからDB内の全テ…

depで"does not contain usable Go code (*build.NoGoError).. (Package is required by (root).)"のエラー

プライベートのプロジェクトで"dep ensure -add github.com/xxx"すると以下のエラーが出た。 Solving failure: No versions of github.com/xxx met constraints: 0.1.1: Could not introduce github.com/xxx@master, as its subpackage github.com/xxx does …

CircleCI Local CLI の build で "Cannot find a job named `build` to run in the `jobs:` section of your configuration file." のエラー

CircleCI Local CLI で以下のようにビルドしたら $circleci build .circleci/config.yml 以下のエラーが出た。 Cannot find a job named `build` to run in the `jobs:` section of your configuration file. CircleCIのLocal CLIは"workflows"に対応してい…

DDDとコードとしての正しさ

DDD

ドメイン駆動設計 #1 Advent Calendar 2018の14日目を担当する@pospomeです。今回はDDDとコードとしての正しさについて書いてみようと思います。 DDDは設計手法である コードとしての正しさ コードとしての正しさを見失う ユースケースの日本語を"そのまま"…

Goの並列テストと現在時刻に依存した実装について

Mercari Advent Calendar 2018 の13日目は株式会社メルペイ認証基盤チームの @pospome がお送りします。メルカリのアドベントカレンダーで特定の実装パターンの網羅集みたいなやつを書こうと思ったんだけど、組み合わせ爆発でまとめきれそうにないな・・・。…

技術書典5にて販売した "pospomeのサーバサイドアーキテクチャ" をBOOTHから購入できるようにしました。

技術書典5にて販売した "pospomeのサーバサイドアーキテクチャ" をBOOTHから購入できるようにしました。以下から購入できます。 価格は技術書典と同じ1000円です。 booth.pm技術書典に来てくださった方への特典として価格を少し上げたり、 内容を落としたり…

【10/5 更新】技術書典5にサークルとして参加します。

技術書典5にサークルとして参加することになったので、 書籍の詳細についてまとめました。techbookfest.org[追記] BOOTHから購入できるようにしました。 pospome.hatenablog.com 書籍のざっくり情報は以下です。 書籍の目次はこちら サーバサイドのアプリケ…

Cloud Next 2018 MicroServices & APIs

こちらのイベントでの登壇資料です。 Cloud Next 2018 のセッションの中でアプリケーションエンジニアに役立ちそうな内容をまとめています。 mercari.connpass.com MicroServices & APIs from pospome

decorator, presenter, exhibit という3つの実装パターンについて

@a_suenami さんのこのツイートの Decorator, Presenter, Exhibit が気になったので調べてみた。表示に関するデザインパターンは大きくDecoratorパターン、Presenterパターン、Exhibitパターンの3つがあります。で、Exhibitパターンが一番柔軟ですが小さいア…

Go における FunctionalOptionPattern と MethodChaining について考える

きっかけ FunctionalOptionPattern MethodChaining MethodChaining の問題点 Error フィールドによる解決方法 Error フィールドによる解決方法の問題 1. 各メソッドでエラーが発生しないような印象を受ける 2. エラーチェックを忘れそう その1 3. エラーチェ…