便利なツールが簡単に使えるとは限らない、、、(私だけかも) Laravel9 + Nextjs12 + Mysql Aurora & IaCによるインフラのコード化とCI/CDまで一通り環境構築したので、”モダン”な環境にトライしたい人に向けて、便利なツールを簡単に使っていただけるように本書を作成しました。
![ECS(Fargate)でnextjs+laravel+rds環境構築](https://cdn-ak-scissors.b.st-hatena.com/image/square/9585dc33bf416981938fb419bac6e5a4400883aa/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--RSdcO6Mn--%2Fg_center%252Ch_280%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYm9va19jb3Zlci80NWVmZjhiMzg0LmpwZWc%3D%252Cw_200%2Fv1627283836%2Fdefault%2Fog-base-book_yz4z02.jpg)
完成しました(2022/05/07) データパイプラインをサーバレスにしたい ELTとdbtについて データ活用基盤の役割の一つはデータを集めてきてデータマートまで加工していくことです。従来はストレージが高価であったりしたこともあり、連携段階で加工しておくことでストレージのコストを抑えたることが可能なETLが主流でしたが、近年アーキテクチャの進化を受けて連携時はほぼ無加工で連携後に加工をするELTが注目されています。 そんなデータエンジニアリングの世界観が広まる中で私が注目しているのはdbt (data build tool) というELTのTを担うOSSです。 ELTだからこそのサーバレス化する意味がある ELTの良いところはSQLベースでデータ変換のパイプラインを実装するので、SnowflakeのようなクラウドDWHのパワーを使い倒せるという点です(他にもExtract/Loadがシン
[アップデート]Step Functions Workflow Studioがリリースされて、ワークフロー作成が簡単になりました AWS Step Functions Workflow Studioがリリースされました!東京リージョンで利用可能です。大阪リージョンではまだ利用できません。 機能概要 Workflow Studioは、簡単に言うとワークフローの中身がGUIで見れて、かつGUIで編集ができる機能です。 StepFunctionsを使えば、複雑なフロー制御をこのサービスに任せて、組み合わせるLambda関数等の他サービスはシンプルな状態を保つことができます。とても便利なサービスなので私も好きです。なのですが、その構築にはAmazon States Language(ASL)というJSON形式の独自言語を駆使する必要があり、なかなか覚えるのが大変です。 これまでも、AWS Tool
さがらです。 DevelopersIO 2022において、dbt Labs社よりビデオセッションとして発表をして頂きました。 本ブログでは、こちらのビデオセッションのアウトラインをまとめます。(詳細はぜひ動画をご覧ください!) セッション概要 概要 原文 Have you heard about dbt, but perhaps not sure what it is or what it can do for your team? Join us for this demonstration where you’ll get to see dbt’s workflow and implementation best practices first hand. The session will cover how to develop, test, document, and deploy
はじめに dbtを用いたデータ基盤運用がお盛んになったなと個人的に感じます。 よく記事で見かけるのが、DWH製品としてSnowFlake, そしてデータ変換にdbt Cloudでしょうか。 そして DWH製品としてSnowFlake, そしてデータ変換にdbt core を ECS Fargateに乗せてサーバレスにやる方法も最近記事で見ました。 あとは dbt core を AirFlow(Cloud ComposerやMWAA含む)で実行する方法もしばしばみかけます。 しかしどれも自分には、あまりFitしませんでした。なぜならば求めている要件としては以下だからです BigQueryの案件が多いのでBigQueryにクエリ投げれればOK 1日1回のバッチ回せれば良い スケジュール設定できればOK dbtドキュメントもみたい 無課金or微課金(ストレージ料やクエリスキャン料除く)ですませた
Best practices dbtの経験豊富なユーザーによる、分析業務における最適な使用方法についての知恵を集めています。 これらのベストプラクティスを守ることで、あなたの分析チームが可能な限り効果的に作業できるようになり、また、これらのプロヒントを実行することで、あなたのdbtプロジェクトに磨きがかかるでしょう Best practice workflows Version control your dbt project (dbtプロジェクトはバージョン管理する) dbtプロジェクトは、すべてバージョン管理する。新機能の開発やBugfixをするために、Gitのブランチを切って行う。すべてのコードの変更は、プルリクエストを出し、コードレビューをしてもらって、 mainにマージする。 Use separate development and production environments
大阪オフィスの玉井です。 dbtはSQLだけで柔軟なデータ変換を作ることが出来ますが、作成したデータに対してテストを実行することができます。 「データをテストする」ということ ソフトウェアエンジニアリングではテストするのが普通 何らかのアプリケーションを開発されたことのある方ならわかると思いますが、開発したものに対しては、必ずテストを行うと思います。特に、昨今のアプリケーション開発では、テストコードなるものを記述することも珍しくありませんよね(私は「人力+Excelにスクショ貼り付け」の時代しか知らない人間です)。 コードにできるということは、バージョン管理ができるということです。そして、CI/CDの手法がとれるということです。CIというのは、継続的インテグレーションの略で、ざっくり言うと、共有リポジトリにコードをマージした際、自動でビルドとテストをやってくれるというものです。 この、アプ
大阪オフィスの玉井です。 dbtは(基本はSQLとはいえ)コードを開発して実行するツールです。そういう意味では、アプリケーション開発とやることが似ています。故に、dbtには「アプリケーション開発では当たり前にやること」な機能がデフォルトで盛り込まれています。例えば、Gitと連携してコードをバージョン管理することができます。何らかのシステムを開発する際、コードをバージョン管理するのは当たり前のことです。それがdbtにも取り入れられています。 今回紹介するのは、dbt Cloudの「Environment」と「Job」という機能です。これらを使うと、(これまたアプリ開発では当たり前な)「本番環境と開発環境の分割」や「CI(継続的インテグレーション)」を行うことができます。 dbtにおけるCI そもそもCIとは何でしょうか。例えば下記の記事ではこのように解説しています。 CI/CD の「CI」は
概要 データエンジニア界隈で話題となってきたdbtに関する調査内容を共有します。 OSS版のdbtでも機能が充実しており、データエンジニアの方には一部の機能の利用だけでも価値があるツールです。 必要に応じて、この記事を更新します。 dbt(Data Build Tool)とは dbtとはData Build Toolの略であり、dbt Labs社が開発しているデータ連携のELTにおけるT(データストア内でのデータ変換)の実施をサポートするツールです。 機能をざっくり整理すると下記のものがあり、SQL文のコンポーネント化やドキュメントの自動生成に特異性があります。 有償版であるdbt cloudとOSS版であるdbt Coreがあります。dbt cloudにて、developer版という個人検証用の無償ライセンスもあるので、とりあえず触りたい方はこちらがおすすめです。 引用元:dbt Pri
AuthorsTwitter@__Attsun__Published onWednesday, February 10, 2021 最近、業務で DWH / Datamart の整備やデータ品質の担保を効率的に行いたくなる事情があり、調査したところ dbt と Dataform がツールとして有力そうだったので、比較してみました。 TL;DRdbt は機能が充実しており、カスタマイズするポイントも多く様々な要件に対応できそうです。反面、理解し使いこなすための学習コストがかかります。Dataform は Web ビューによる開発体験が非常に良いです。機能もほとんどはわかりやすく、迷うことも少ないです。一方、dbt に比較して融通はききづらいです。どちらも十分な機能は備えている素晴らしいツールだと感じるので、どちらが良いかは要求や組織の置かれた状況次第でしょう。私の所属する会社 (Ubie,
大阪オフィスの玉井です。 dbtは、データ変換を行い、接続先のDWHにデータモデルを生成します。ただ、その「データモデル」ってそもそも何?と思う方がほとんどだと思います。 dbtは、変換した「データモデル」を色々な形でDWHに生成することができます。これをMaterializationsと呼びます。今回はdbtで設定できるMaterializationsのうち、基本となる3つをご紹介します。 基本のMaterializations3つの概要 今回紹介するMaterializationsの超概要について、先に紹介します。 table DWHに、データモデルを「テーブル」として作成します。 view DWHに、データモデルを「ビュー」として作成します。 ephemeral DWHに、何らかの作成を行いません。 データモデルのクエリにおける、共通テーブル式(CTE)として扱います。 おそらく、実
dbtのディレクトリをそのままDWH上にも表現したい 最近dbtを使い始めたものです。dbtが色々便利すぎて感動していますが、1つ不便に感じたことがありました。dbt runを実行した際にスキーマ名が最初に設定したしたものに決まてしまっていることに。。。 ということで今回はスキーマ名をいかに自分好みにカスタマイズするかについて考えてみたいと思います。ご指摘などあれば教えていただければと思います! 普通にリリースをしてみる編 とりあえず、dbt内で簡単なSQLを書いてみます。 上記を実行してみます。すると以下のようにビューが作成されました。 DBT_DHARATOとは何かというと、Snowflakeへの接続設定時に指定したスキーマ名になります(一番下のschema欄)。ただこのままだとスキーマ名が初期に指定したものしか使えなくなってしまいます.... 公式ドキュメント編 そこで参考にしたのが
さがらです。 dbtにはtagという機能があり、model、snapshot、seed、testなどにtagを付与することで、各種dbtコマンド実行時に指定したtagが付いているものだけを実行対象とすることができます。 tag自体はシンプルな機能なのですが、色々と条件が重なったときにどういった挙動をするのか気になったため確かめてみました。その内容を本記事でまとめてみます。 複数tagを指定する方法 検証時のコード aaa.sql {{ config( tags=["aaa","odd"] ) }} select * from {{ source('jaffle_shop','orders') }} bbb.sql {{ config( tags=["bbb","even"] ) }} select * from {{ ref('aaa') }} ccc.sql {{ config( tag
dbt とは dbt とは、data build tool の略で、ELT の T を担当するソフトウェアです。つまり、データウェアハウスにあるデータを加工してデータウェアハウスに書き戻すツールになります。ELT の EL の部分は Meltano など他のツールに任せます。 特徴 dbt には主に以下の機能や特徴があります。 SQL の SELECT 文だけで開発可能 スキーマや依存関係に関するドキュメントの自動生成機能 NULL、参照整合性などの自動テスト機能 Jinjaによる処理のモジュール化 Git、CI / CD などソフトウェア開発の手法が活用可能 dbt の利用方法 dbt は、SaaS としての「dbt Cloud」と OSS の「dbt CLI」を利用することができます。それぞれの機能の違いは以下の記事をご参照ください。 dbt Cloud と dbt-core (
こんにちは、nkhrです。 dbtというツールをご存じでしょうか。データウェアハウス(レイクハウス)のTransformationをサポートするツールで、Redshift, Snowflake, BigQuery, Databricsなどで利用できます。 (参照リンク:What, exactly, is dbt?) dbtの利用を開始する場合は、SaaS製品のdbt Cloudを利用する方法と、Open Sourceのdbt-coreのみを利用する方法があります。 本ブログでは、dbt Cloudとdbt-coreについて、その違いと選択ポイントについて考えてみたいと思います。 dbt Cloudとdbt-coreの違い dbt Cloudとdbt-coreは、両方「dbt Labs, Inc.」が管理しています。 dbt-core Apache License 2.0(詳細はリンク先を参
さがらです。 dbtではHookという機能を使うことで、modelの実行前後に指定したクエリを実行することが可能です。 Hookについての詳細は、すでに弊社で検証を一度行っておりますのでこちらを御覧ください。 このHookについて、「複数クエリを実行したい」というケースは多いと思うのですが、公式Docに記載されている例は1つのクエリだけでHookを使用するコードしか書かれていませんでした。 そのため、小ネタではありますが、本記事では「dbtのHookで複数クエリを記述する方法」をまとめてみたいと思います。 modelファイルに記述する方法 configの中にpre_hook等の設定を行うのですが、[]の中で、ダブルクォーテーションで実行したいクエリを囲み、各クエリの区切りはカンマを記述すればOKです。 {{ config( pre_hook=[ "use role sagara_admin
ベストプラクティスから読んで始めるdbt という記事が、とても素晴らしいなと。 しっかり公式のdocsを読む 自分なりの感想(得られた事項)を持つ わからないこともメモしておく 同じようにやってみよう。 馬鹿みたいだけど、同じ記事で。 (ついでに英語のリーディングも頑張ろう) docs.getdbt.com Best practices ベストプラクティスを見ておくことで、可能な限り効率的になる プロのTipsを実装すればdbtプロジェクトが洗練される Best practice workflows Version control your dbt project dbtプロジェクトはヴァージョン管理せよ 新機能・バグ修正のためにGitブランチを切れ マスターブランチにマージする前にコード変更はプルリクでレビューせよ Gitガイド Gitの説明が丁寧だな... 過去の状態がわかっていると、
概要 dbtと仲良くなりたい私 dbtを社内でも広めたい私 ディレクトリ構成とかどうしていけばいいか分からない私 よし、まずはdocsのbest practiceを読んでみよう 後に同僚にも読んでもらいやすようにまとめておこう ということでこれを読んでいきます しっかり公式のdocs読むこと大切よね 余計なお世話かもしれませんが、途中私が気になったことに対しては以下のようにコメント残していきます Best practice workflows Version control your dbt project 全てのdbtプロジェクトはバージョン管理しようね 新しい機能やバグの修正のためにはブランチを生やして作業しようね 全てのコードの変更はプルリク出して、同僚に(もしくは自分で)レビューしてもらおうね Use separate development and production envi
はじめに 今までpythonを使う時はdocker+pipを使ってきた。 pythonのパッケージマネージャーとして、poetryの存在を知り、興味があったので使ってみた。 この記事ではpoetryで使用するpyproject.tomlファイルを作成するために、docker-compose.yamlやpoetry newコマンドを使用してますが、正直効率が悪いと思います。 poetry newコマンドで作成されるディレクトリを再利用しようと思い、このような流れになっていますが、適宜やりやすい方法でやった方が早く作業ができると思います。 前提環境 pc: MacBookPro(2017) os: Big Sur Homebrew 3.4.10 Docker version 20.10.13 docker-compose version 1.29.2 Dockerで作成したコンテナ上でpoet
サーバーの管理が不要なコンテナの実行環境。 ECSというコンテナオーケストレーションサービスを使うときに、FargateかEC2のどちらで環境を用意するかを選択する必要があります。Fargateの利点は、クラスター管理が不要で、CPUとメモリを指定するだけで済むところ。そのかわりに、GPUインスタンスが使えなかったり、割高だったりします。 大幅な値下げによって、EC2との価格差は縮まりつつありますが、リザーブドインスタンスやスポットインスタンスと比べてしまうと分が悪いので、運用が楽になるメリットと天秤にかけて、どちらにするかを選ぶと良いのでは。 function calc(row, priceList) { const unit = toNumber(row.unit) const hours = toNumber(row.hours) const cpu = toNumber(row.c
※ 東京リージョン - 110円/ドル - 30.5日 × 24時間 手軽に料金を知りたいときに Fargate | ざっくりAWS 細かい計算方法はいいから料金を知りたいという方は、Webサイトで手軽に算出できるようにしたので使ってみてください。東京リージョン限定ですが、サクッと料金を算出できます。 計算するときに考慮すべき変数 タスクに割り当てたリソースと、タスク数、稼働時間と外部へのデータ転送量で料金が決まります。 他のサービスと連携した場合はそちらでも課金されますが、本筋から外れるので無視します。 vCPU/メモリ Pricing is based on requested vCPU and memory resources for the Task 割り当てるvCPU/メモリのリソースによって料金が変わります。ひとつ注意が必要なのが、vCPUに対するメモリの選択肢が決まっているの
さがらです。 小ネタなのですが、dbtで実行順序が巡回するように(つまりDAGとならないように)開発すると何が起こるか確かめてみました。 DAGとは DAGとは「Directed Acyclic Graph」の略で、日本語に直すと「有向非巡回グラフ」となります。 以下、Wikipediaからの引用となります。Airflowなどで構築したワークフローは基本的にDAGになりますし、実際にDAGという用語が使われていますよね。 有向非巡回グラフ、有向非循環グラフ、有向無閉路グラフ(ゆうこうひじゅんかいグラフ、英: Directed acyclic graph, DAG)とは、グラフ理論における閉路のない有向グラフのことである。有向グラフは頂点と有向辺(方向を示す矢印付きの辺)からなり、辺は頂点同士をつなぐが、ある頂点vから出発し、辺をたどり、頂点vに戻ってこないのが有向非巡回グラフである DAG
DockerFileに引数を渡すEvent Bridgeを作成しよう! こんにちは、クラウドCoEの熊谷です。 javaコマンドにバッチアプリの名称を引数として設定してjavaのバッチアプリを起動するとします。 その場合のDockerfileの記載例、EventBridgeの記載例をご説明します! Dockerfile Dockerfile内では変数JOB_NAMEを指定します。 FROM public.ecr.aws/amazoncorretto/amazoncorretto:11 MAINTAINER aaa@hogehoge.com VOLUME /tmp RUN /usr/bin/yum install -y jq python37 curl procps wget tar unzip\ && rm -rf /var/cache/yum/* \ && yum clean all R
この記事はdbt Advent Calendar 2022の12月21日の記事です。 概要 私の所属しているチームではAirflowでジョブを動かしています。新たにdbtのジョブをAirflow実行する際にチームの前提事項をもとにどのように動かしたらいいのか検討した結果を記載します。 前提 サマリ Airflowはオンプレミスで実行しており、柔軟なリソース増減はできない チームは複数のプロジェクトで構成されており、Airflowを共用 チームでAirflowの基本機能は提供するが、実際のコンピューティングリソースはプロジェクトが用意する dbt Cloudは使えない(もし、使えればdbt Cloud Operatorが存在するため、以下の議論すべて不要になったかも) Airflow 私の所属するチームではAirflowのSaaSサービスを使用できないため、オンプレミスにAirflowを構築
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く