KAKEHASHI Tech Blog

カケハシのEngineer Teamによるブログです。

バックエンド

SQLAlchemy でスロークエリの呼び出し元を追跡する

こんにちは、AI在庫管理のバックエンドを担当している沖(@takuoki)です。 今回は、スロークエリの呼び出し元の追跡が難しいという問題について、実際に取り組んだ解決策をご紹介します。比較的シンプルなアプローチでしたが、開発体験の大幅な改善につながっ…

ALB mTLS導入事例:独自CRLチェックからマネージドサービスへの移行

こんにちは。Musubiアカウント管理基盤チームの松岡です。今回は、私たちが担当するプロダクトでApplication Load Balancer (ALB)のmTLSを導入した事例をご紹介します。独自実装していたクライアント証明書のCRL(証明書失効リスト)チェックをALBに移行した…

社内管理画面を Slack App から Lambda Web Adapter を利用した Web アプリケーションに移行している話

はじめに 処方箋データ連携チームでエンジニアをしている岩佐(孝浩)です。 カケハシには「岩佐」さんが複数名在籍しており、社内では「わささん」と呼ばれています。 私が所属する処方箋データ連携チームでは、これまで Slack App を用いて社内管理画面を…

DynamoDB シングルテーブル設計入門

はじめに 処方箋データ基盤チームでエンジニアをしている岩佐 (孝浩) です。 カケハシには「岩佐」さんが複数名在籍しており、社内では「わささん」と呼ばれています。 私が所属する処方箋データ基盤チームでは、DynamoDB をメインのデータベースとして利用…

AWS KMS RSA 非対称鍵を利用したハイブリッド暗号化の方法 (OpenSSL/TypeScript)

はじめに 処方箋データ基盤チームでエンジニアをしている岩佐 (孝浩) です。 カケハシには「岩佐」さんが複数名在籍しており、社内では「わささん」と呼ばれています。 私が所属する処方箋データ基盤チームは、日本全国の薬局から送信される処方箋データを S…

2025年版 DynamoDBを本格的に使いたい開発者のためのDynamoDB利用ガイド

DynamoDBも当初はマネージドとしてシンプルでしたが要求が増えるにつえ複雑になってきました。 *ソフトウェアでは良くあることで、そして新しくシンプルなものが生まれ新しいサイクルが始まる モデリングなどはドキュメントを見ていただきつつ、この記事で…

PDF生成をバックエンドに移行する

こちらの記事は カケハシ Advent Calendar 2024 の 20日目の記事になります。 adventar.org こんにちは、カケハシのAI在庫管理チームでフロントエンドエンジニアをしている Nokogiri です。 AI在庫では薬局で利用する伝票のPDFをフロントエンドで出力してい…

CloudWatchコスト削減のリアル:効果的なログ分析と対策方法

こんにちは、AI在庫管理の開発チームでバックエンドエンジニアをしているもっち(@mottyzzz)です。 AI在庫管理では、プロダクトのインフラとしてAWSを使用しています。その中でも特に重要なサービスのひとつがCloudWatchです。システムの監視やログ管理に不…

Gopher のための Python 入門

AI在庫管理の開発チームでバックエンドエンジニアをしている沖(@takuoki)です。AI在庫管理では、サーバーサイドの大部分で Python を使用しているため、私も毎日 Python をごりごり書いています。ただ、私が Python をちゃんと触り始めたのは、カケハシに…

【Node.js】S3からS3へのアップロードをnode:stream/promisesのpipelineやaws-sdk/lib-storageでやる

はじめに こちらの記事は Advent Calendar 2024 の 6日目の記事になります。 カケハシでソフトウェアエンジニアをしている加藤です。 この記事では、S3からS3へのファイルのアップロードをNode.js, TypeScript, Stream APIを利用して行う方法について説明し…

S3 イベント通知とオブジェクトのストレージクラス変更で発生する CopyObject イベントについて

処方箋データ基盤チームでエンジニアをしている岩佐 (孝浩) です。 カケハシには「岩佐」さんが複数名在籍しており、社内では「わささん」と呼ばれています。 私が所属する処方箋データ基盤チームは、日本全国の薬局から送信される処方箋データを S3 に保存…

AWS CDKのStepFunctionsでEcsRunTaskにcpuパラメータを渡す

Musubi AI 在庫管理で DevOps エンジニアをしている kacky です。 この記事では AWS CDK 上でのジョブ開発でのとある困り事を解決した話をしたいと思います。 AWS CDK の StepFunctions には、EcsRunTask という API が存在します。この API を使用すると、S…

イベント駆動処理をメンテナンスモードにするためにやったこと

はじめに こんにちは。AI在庫管理チームソフトウェアエンジニアの坂本です。 今回はこちらの記事で松本さんが紹介していたメンテナンスモードの中で、イベント駆動処理のメンテナンスモードを開発するためにやったことを少し詳しく紹介できればと思います。 …

テーブル駆動方式が与える開発インパクト

コードを書くとき、テーブル駆動方式は過小評価されています。非常に強力なテクニックなので、事例とそのインパクトを説明します。 概略サンプル if age < 10: return price / 2 elif age < 20: return price / 3 elif age < 50: return price / 5 else: ret…

Airflow Zombie Task への対処法

こんにちは。AI 在庫管理チーム ソフトウェアエンジニアの坂本です。 今回は AI 在庫管理のバッチ処理で利用しているワークフローツール Airflow (MWAA) の Zombie Task に苦労したケースとその対処法について紹介しようと思います。 概要 Airflow で動かし…

PythonのLinter & Formatter(Flake8 + isort + Black)をRuffに置き換えたら爆速でした

こんにちは、カケハシで Musubi 開発チームのバックエンドエンジニアをしている関です。 Musubi 開発では、 Python の Linter と Formatter に Flake8、isort、Black を使用しておりました。しかし Rust で書かれた Ruff という高性能なツールが出たというこ…

PyCon APAC 2023を聴講してきました

PyConをエンジニア目線でレポート 弊社はPyConでプラチナスポンサーとしても参加させて頂いていますが、今回の記事はエンジニア目線で参加してきたPyConをレポートしようと思います! PyConに関係する記事として以下のような記事を公開しています。合わせて…

PyConAPACで登壇したスナップショットテストの話の続き

PyConAPAC 2023 で登壇してきました 株式会社カケハシのバックエンドエンジニアの横田です。 二日目(10/28(土))の LT 会で「Python でスナップショットテスト」というタイトルで登壇してきました。 PyCon には二日目の途中から参加し、登壇までは主にスポン…

dbxを使用してDatabricks Workflowをデプロイする

こんにちは、カケハシのデータ基盤チームでデータエンジニアをしている伊藤と申します。 カケハシでは全社的なデータ活用基盤のプラットフォームとしてDatabricksを採用し、運用して1年以上経過しました。 我々のチームではバッチ/ストリーム処理のDatabric…

PyCon APAC 2023 に参加します!

プラチナスポンサーとして参加します! 我々株式会社カケハシは、2023年10月26日(木)から10月29日(日)にTOC有明コンベンションホールで開催される PyCon APAC 2023 に、プラチナスポンサーとして参加することとなりました! 2023-apac.pycon.jp 当日はカケハ…

クロスアカウントアクセスでAppSync Private APIを使う話

はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です . 社内でプライベートAPIを開発する要件があり、タイミング良くAppSyncでプライベートAPIが使えるようになったため試してみました 全体像 以下システ…

CDK の node と少しだけ仲良くなる

こんにちは、おくすり連絡帳 Pocket Musubiというサービスを開発している石井です。 私たちのチームはフロントエンド担当とかバックエンド担当とか敷居を区切らずに、エンジニアのモチベーションでフロントもバックエンドも実装するフルスタックよりなエンジ…

Redash(Presto)とDarabricksのDMLの構文違いについてまとめてみた

こんにちは、カケハシのデータ基盤チームで開発ディレクターをしている松田です。最近、歳のせいか疲れが溜まりやすくなっており、毎週サウナに通っています。 カケハシでは今までRedashを利用して全社にデータ提供をしていましたが、去年の7月からDatabrick…

DatabricksのAutoLoaderを利用してプロダクトの監査ログを取得した

初めまして、カケハシのデータ基盤チームでデータエンジニアをしている伊藤と申します。 最近の悩みは、二郎ラーメンを食べていないのに「二郎ラーメンの匂い(臭い?)がする」と同居人に言われることです。私のニュースは置いといて、カケハシでは全社的なデ…

データアナリストと協業してデータ分析基盤を構築した際に感じたDatabricksの良さ

こちらの記事はDatabricks Advent Calendar 2022の25日目の記事になります。 こんにちは、カケハシでMusubi Insightという薬局向けBIツールのバックエンドエンジニアをしている高田と申します。 BIツールを開発しているということもあり日常的にETL処理の実…

pandasユーザーがPandas API on Sparkでつまづいたあれこれ

こちらの記事はDatabricks Advent Calendar 2022の24日目の記事です。 はじめに 初めまして。カケハシでデータサイエンティストをしている赤池です。 弊社はフルリモートで業務できるため今年9月から地元の仙台市で業務していますが、本格的な冬の到来を前に…

マイクロサービスを考慮した認可の設計

この記事は、カケハシ Advent Calendar 2022 の 24 日目 の記事になります。 こんにちは、木村です。(@kimutyam) 医薬品発注管理最適化領域の新規事業のテックリード兼エリアPO、プラットフォームドメイン全体のアーキテクト、データ基盤チームのアーキテク…

Databricks導入でデータ分析における苦しみや悩みが消え、夢も叶った話

こちらの記事はDatabricks Advent Calendar 2022の23日目の記事です。 はじめに 初めまして。カケハシにてデータサイエンティストをしている赤池です。 業種的に、自己紹介の際に統計学のビッグネームとの関係性を聞かれることがたまにありますが全く関係あ…

Databricksでのデータ権限管理方針について

こちらの記事はDatabricks Advent Calendar 2022の23日目の記事です。 カケハシのデータ基盤チームの松田です。カケハシでは今年の7月からDatabricksを利用しており、そろそろ半年ぐらい経とうとしています。Databricksを採用した背景については、以下の記事…

Lambdaを助けるのに理由がいるかい?(スロットリングの話)

こちらの記事は カケハシ Advent Calendar 2022 の19日目の記事になります。 あっという間に2022年も終わりますね⛄️ プラットフォームチームの石黒です。 今年は遅ればせながらFF9をプレイしまして、トロフィーをゲットするためにフィールド上でモーグリのモ…