Tagbangers Blog

Blog

Jira のプロジェクトを横断する小さなプロジェクトの進捗管理の仕方案(マイクロサービス編)

とあるお客様のサービスは、昔モノリシックに作成されていたのですが、近年マイクロサービス化されてきており、その数も増えてきました。 マイクロサービスに分けることで、一つのサービスの中で開発を行い、影響範囲を小さく・デプロイを細かくしサービスリリースすることが利点ではありますが、 一方、これらマイクロサービスを連携するデータパイプライン部分に修正が発生すると、複数のマイクロサービスの改修をしないといけないこともあります。プロジェクトをまたがる進捗の管理をどうしたらよいか試行錯誤していましたが、最近の Jira Cloud のアップグレードでざっくり状況の可視化がしやすくなりましたのでご紹介します。...

Keycloak の master レルムの管理ユーザを削除してしまったときの対応方法

みなさん Keycloak 利用してますか? ちょっとした API の打ち間違いなどで、master レルムの管理者ユーザ(環境変数で指定できる初期ユーザ)を誤って削除してしまうときってありますよね。あったんです。 ということで復旧を試みました。 まず、アプリを再起動してみましたが、復旧しませんでした。 こちらの記事にあるように、すでに master レルムに他のユーザが一人でも存在する時は管理者ユーザは再作成されないようです。 なので、惜しいですが既存のユーザを全て削除することにしました、、後から API で追加しなおすことにします。 以下の SQL を実行して master レルムのユーザ...

Spring Data Jpaが提供するQuery Method機能を調べてみよう

Spring Data Jpaが提供する機能を調べてみよう Query Methodの三つの機能 メソッド名前でクエリ作成 メソッド名前でJPA NamedQuery呼び出し @Queryアノテーションを使いレポジトリインタフェースに直接クエリを定義 メソッド名前でクエリ作成 Spring Data JPAがメソッドの名前を分析してJPQLクエリを実行してくれる。 注意点: エンティティの名前が変更されると必ずインタフェースに定義したメソッドの名前も一緒に変更する必要がある、そうでないとアプリケーションを立ち上げる時点でエラーが生じる。こうやってアプリケーションのロード時にエラーを検知できるの...

Terraform の RDS のブルー/グリーンデプロイを試してみました

TLDR Terraform でやるとブルー/グリーンデプロイのためのインスタンスの作成や古いインスタンスの削除までやってくれます! 背景 RDS の更新でダウンタイムを最初限にしたかったので、ブルー/グリーンデプロイを検討しました。 ただし、AWS のコンソールでポチポチする作業は怖いので Terraform でできないのかなって調べたらまさか対応してくれます! https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance#blue_green_update blue_green...

Springの学習日記Part2: デザインパターン

もう春の兆し 最近暖かくなってきたのものあって朝は清々しくて気持ちいいですね(夜は寒いけど)。こういう日はランニングとかしたら気持ちいいだろうなーなんて思いながらいつもゴロゴロしてます笑。 とはいえ運動不足も嫌なのでスクワッドは毎日欠かさずやるようにしてます。なんかふくらはぎが第二の心臓らしい?(のでちょっと調べてみた) ふくらはぎの筋肉を動かすことで、足に滞っている血液を心臓の方へ押し戻すことができます。 このことから、ふくらはぎは別名「第二の心臓」 と呼ばれており、とても大切な働きをしているのです。 なるほど、血液を心臓に押し戻さないといけないとどうなる?・・・って想像したらなんとなく茶番...

Springの学習日記Part1: DIについて

この記事を書き始めようと思ったきっかけ 普段の業務でバックエンドをSpring Bootで開発しているのですが、どうも自分が書いているとSpringについて基礎を知らないことがわかり、また何がわからないのかをうまく言語化した上で相手に伝えられない事態になっていました。 また上司に言語化する練習をすることを勧められた経緯もあって、自身の過去をよくよく振り返ってみた結果、コードを書いていく中で湧いてきた疑問や、自身の考えについてよく整理できていないまま(最適なワードが見つからないまま)相手に伝えていたことがしばしばありました。 当然その状態では、自分が求めている情報について検索したり相手から情報を...

Netadashi Meetup #12 で話しました

NRIさん主催の勉強会 Netadashi Meetup で LT をしてきました。 今回は「フロントエンド関連技術」がテーマだったので、「OCaml/Reasonで始めるフロントエンド開発」をお題にしました。 スライドはこちら BuckleScript が ReScript にリブランドされて以来、勢いのなくなってしまった感のある Reason でしたが、Melange という新しい OCaml to JS コンパイラが登場したことで Reason が再始動している感があります。 静的な型システムと型推論、Variant、Option / Result 型、Pipe 演算子、パターンマッチン...

asdf + Poetry + IntelliJ で Python 開発環境を作る

asdf のインストール タグバンガーズではツールのバージョン管理として asdf を使っています。 brew などさまざまな方法でインストールできます。 https://asdf-vm.com/guide/getting-started.html Python のインストール asdf plugin-add python asdf install python 3.11.7 asdf local python 3.11.7 Poetry のインストール asdf plugin-add poetry asdf install poetry latest asdf global poet...

[型パズル] Q. TypeScript の型定義でジェネリクスのパラメータが配列かどうかで型の形式を変えたい!

結論: T extends Array を用いる あけましておめでとうございます(半年遅れ) 最近業務で Headless CMS を触ったのですが、技術調査の際に候補に上がった Strapi がずっと気になって最近ので最近遊んでいるのですが、その際に API レスポンスの型を TypeScript で表現するときに利用した手法が面白かったので共有します REST API Strapi の公式ドキュメントを例にとると、扱う entry(ドメイン・データ)は下記の interface で表現できます interface Restaurant { title: string descr...

Paketo Buildpacks で作成する Spring Boot App on Docker で FFmpeg を扱えるようにする

Cloud Native Buildpacks は Docker 上でアプリケーションを稼働させるにあたり非常に強力なソリューションです Tagbangers では Spring Boot と Next.js で作成したアプリを AWS EKS / AWS ECR にデプロイして Docker Container 上で稼働させているプロダクトがいくつかあります それらは Buildpacks を利用してほぼゼロコンフィグでイメージを作成しているものが多いです 過去にも Buildpacks に関連した記事をいくつか随筆しているのでよろしければご覧ください Next.js による Docker ...