Tagbangers Blog

Blog

Spring + Testcontainers によるテストと ContextCustomizerFactory による効率化

参考記事 Faster tests by reusing Testcontainers in Spring Boot Testcontainers の活用 Testcontainers は Java (JUnit) でテストを書く際に Docker コンテナを用いて実際の環境に近い Integration Tests を実現することのできる強力なソリューションです タグバンガーズでも以下の事例で実際に Testcontainers を利用してテストを作成しているプロジェクトがあります AWS S3 に対して操作を行うプロジェクトで LocalStack Module を用いて AWS SDK ...

ローカルマシンから環境を汚さず RDS に接続する

Conclusion SSM を用いて RDS へのポートフォワーディングを行い、Docker 経由でコマンドを叩く Motivation AWS RDS はマネージドなリレーショナルデータベースサービスです Amazon RDS(マネージドリレーショナルデータベース)| AWS 一般的にリソースはプライベートサブネット上に作成するためローカルマシンから直接クライアントコマンドを用いて接続することはできません そこで多くの場合は RDS へアクセスできる IAM ロールを持つ踏み台 EC2 サーバを立ててセッションマネージャ等で RDS に接続します ただし「データのダンプもしくはリストアを行...

jackson の @JsonCreator を使ったデシリアライズについて調べたこと

@JsonCreator 使っているプロジェクトはいくつかあるのですが、時々デシリアライズ部分でエラーが発生し、Lombok とも合わせると問題がどこなのかわからなくなったりするので調べてみました。 かなり消化不良なまとめですが、@JsonCreator 使う時は jackson がよしなにやろうとしているロジックやパターンが複雑なので、明示的にこちらからどういう方法でデシリアライズしてねという指定をしておいた方が、デシリアライズ時にエラーに悩むことが少なくなりそうという感じでした。 最新の jackson は現時点で 2.13.x で、今後 3.x が出てきますが、2.12.6 バージョンで...

環境別のリソースを Bitbucket Pipeline を用いてデプロイする方法

弊社の一部プロジェクトでは Bitbucket Cloud を利用しています Bitbucket Cloud には CI/CD ツールとして Bitbucket Pipeline が組み込まれています Bitbucket Pipeline は通常、下記のようなフローを行うプロジェクトを想定して案内されています プロジェクトのビルド & テスト テスト環境へのデプロイ 本番環境へのデプロイ 一方で今回ご紹介するのは下記のような環境別にリソースを同一のリポジトリで管理しているプロジェクト向けのパイプラインです Static Resource files (S3 にデプロイなど) Kubernete...

Upgrade Keycloak (WildFly) to Keycloak.X (Quarkus)

Tagbangers ではマイクロサービスとして認証サービスとアプリサービスを分離および認証を統合して再利用しているプロジェクトがあります 認証サービスは Keycloak を用いており EKS 上に Helm を利用して展開しています A curated set of Helm charts brought to you by codecentric アプリサービスは Spring Boot を用いて Keycloak と認証の連携を行なっています 連携に関する下記の記事もご参照ください Keycloak と Spring Boot アプリケーションで OpenID Connect の Au...

純粋関数ライブラリ Ramda.js を使う(関数紹介編)

最近のプロジェクトではフロントエンドは TypeScript を用いたプロジェクトがデファクトスタンダードとなっています いくつか定番のライブラリも入れていますが、その中で今回はユーティリティライブラリとして Ramda.js をご紹介します Ramda.js https://ramdajs.com ユーティリティライブラリの一つで類似するものとして、弊社では以前 Lodash.js を使用していました https://lodash.com Ramda.js の特徴としては、全ての関数が純粋関数型でカリー化が行われているという点です 純粋関数型 全ての関数は副作用を持たず、引数として渡した値自...

Next.js による Docker Image の作成周りの雑記

最近のプロジェクトではフロントエンド開発のフレームワークとして Next.js を採用しています フロントエンドの成果物は静的ビルドを行いサーバに配置 or バックエンドの成果物に含めることが基本ですが、Kubernetes 上に展開する場合はフロントエンド用に個別に Pod を用意してアプリケーションを立ち上げています Next.js プロジェクトの Docker Image の作成 Next.js は開発環境以外にも本番稼働向けの Node.js サーバをスクリプトを用意しています # プロジェクトの依存パッケージのインストール  yarn install # プロジェクトのビルド ...

OAuth2 Authentication in Microservice Web Application

## OAuth2 巨大なシステムをMicroservice化する場合、 開発者は機能の種類と関連性に基づいてサービスを分割する。 もし各サービスに独立な認証機能を持たせると、 利用者に大量のアカウントとパスワードを覚えさせなければならない、 一方で、もし全てのサービスに 共通なアカウントとパスワードでの認証機能を持たせると、 ユーザーの機密認証データが頻繁にネットワーク上に流され、 万が一何らかのシステム脆弱性に関わる原因で漏れた場合、 そのユーザーの認証情報がいつでもどこでも悪用される可能性がある。 それらを避けるため、専用の認証サーバーを設け、 認証結果を共有する中心化認証機能(Sing...

styled-components で作ったコンポーネントのスタイルの上書きができない場合の解決策

styled-components でスタイリングしたコンポーネントがあります const StyledButton = styled.button`   border-radius: 6px;   padding: 16px;   background-color: coral;   color: white;   font-size: 1.5rem;   font-weight: bold; ` export default StyledButton あらかわいい このコンポーネントを styled の引数に入れることでスタイルの上書きができます import Styl...