Bering Note – formerly 流沙河鎮

情報技術系のこと書きます。

新刊『実践Apache Iceberg』の紹介と執筆の思い出

実践Apache Iceberg

Icebergの本を書きました

『実践Apache Iceberg —⁠— 高効率・高生産性を実現するオープンなデータ基盤の構築と運用』という書籍が8月27日に発売されます。

gihyo.jp

本書は、データ基盤の構築や運用、活用に関わるエンジニアの方々に向けて、次世代のデータ基盤を支えるオープンテーブルフォーマットであるApache Icebergを576ページの大ボリュームで体系的に解説する1冊です。
著者はわたし、べりんぐこと疋田宗太郎と、AWSの同僚である田中智大さんの2人です。

  • ETLジョブのパフォーマンスやコストをもっと最適化できないだろうか……
  • データ連携元のスキーマが変更されて、パイプラインを修正するのが大変だ……
  • データのバージョン管理が煩雑で、過去のデータにアクセスするのが難しい……
  • 適材適所でツールを使い分けたいけど、データの移動や整合性の確保が煩雑で、運用が大変だ……
  • 拡張性のあるデータ基盤を構築したいけど、最初は軽量な環境で簡単に始めたい……

このような悩みを抱える方々にとって、Icebergは有効なソリューションになり得ます。
Icebergはさまざまなツールが共有できるオープンテーブルフォーマットであり、データの変換や参照を高速化するとともに、ACIDトランザクションスキーマの進化、データのバージョン管理などの様々な機能によって、データ基盤の柔軟性や効率性を向上させます。

AWSの2人が書いた書籍ですが、本書の内容の多くはIcebergの普遍的な技術ナレッジの解説に集中しており、AWSはもちろん、どのような環境でIcebergを利用する場合でも活かせるものになるように意識しました。
加えて、せっかくAWSの人が書くのだからということで、AWSにおけるIcebergの活用についても専用の章を設けて深掘りしています。

なんとなく興味はあるけど、買うか迷うな、、という方は、まずはこちらの記事をオススメします。これを読んでもっと詳しく知りたいと思っていただけたら、ぜひ購入をご検討ください。

bering.hatenadiary.com

bering.hatenadiary.com

どんな本なの?

以下の目次の通り、網羅的な内容となっております。

[第1部]Apache Icebergの基本
第1章:データレイクの課題とApache Iceberg
第2章:Apache Icebergの仕組みと機能
第3章:Icebergカタログとストレージ
[第2部]分散クエリエンジンでの利用
第4章:Apache Spark
第5章:Apache Flink
第6章:Trino
第7章:Apache Hive
第8章:PyIceberg
[第3部]ユースケースと応用
第9章:ユースケースとソリューションパターン
- 基本的なデータ分析パイプラインの構築
- Change Data Captureによるリアルタイムデータ同期
- SCD Type 2による履歴管理
- Write-Audit-Publishパターンによるデータ品質管理
- ストリーミング処理とスキーマ進化
第10章:AWSでIcebergを活用する
第11章:運用管理
第12章:パフォーマンス最適化
第13章:Icebergへの移行戦略とパターン

本書は、3つのパートに分かれています。
第1部の「Apache Icebergの基本」は、Icebergのコンセプトと、データ基盤において果たす役割を今日のデータ基盤の課題を振り返りながら解説するところから始まります。続けて、テーブルフォーマットとしてのIcebergの仕組みや機能の基礎を紹介します。個別のツールやプラットフォームに依存しない、Icebergの基礎を学ぶことで、発展的な知識を得るための土台を築きます。
第2部の「分散クエリエンジンでの利用」は、Icebergを利用できる主要なツールについて紹介します。ETLやインタラクティブクエリに用いるApache SparkやTrinoなどの分散クエリエンジンに加えて、中小規模のデータの操作や、データサイエンスで重要な役割を果たすPyIcebergについても詳しく説明しています。
第3部の「ユースケースとソリューションパターン」は、実運用を意識したユースケースや設計、運用のノウハウを掘り下げます。まず、第2部までに学んだ知識を組み合わせて多角的かつ実践的なユースケースを見ていきます。続けて、AWSでIcebergを利用する際の仕組みを紹介します。さらに実運用を意識した運用管理とパフォーマンスの最適化、そして移行戦略までをカバーしています。

手を動かして学ぶことを重視

本書は手を動かしながら学ぶことを重視しています。そのため、書籍全体を通じて、多くの章はハンズオンのパートを備えています。文章を読むだけでなく、実際のコードやデータの動きを観察することで、実践的な学びを得られるように設計してあります。
そして本書の目玉として、Icebergの機能や特性を実際に操作しながら理解できるように、Icebergを簡単に試すことができるコンテナ環境を用意しました。(書籍の本文にGithubリポジトリのリンクを掲載してあります)
この環境はコンテナが動作するマシンと、インターネットに繋がる環境さえあれば、簡単なコマンドで立ち上げられます。特定の有償サービスのアカウント作成といった手間を経ることなく、皆さんだけのスタンドアローンな環境で、好きなように、好きなだけIcebergを実験できます。
このコンテナでは、NotebookやCLIからSpark, Flink, Trino, Hive, PyIcebergでIcebergを操作できます。ストレージとしては、MinIOというS3互換のストレージを使用しています。せっかくならBIもつけておこうということで、Supersetも使えるようにしてあります。
手前味噌ですが、Icebergの実験環境としてこれほど手軽で、これほど幅広いツールを押さえたものは世の中にあまりないのではないかと思っています。書籍に記載のハンズオンに限らず、色々な実験を試していただけたら幸いです。また、本環境を拡張して任意のツールの実験に使っていただくのも良いと思います。

紙幅に収まらなかったコンテンツをGithubの付録で提供

執筆を始めた当初、本書は350〜400ページの本になる予定でした。しかし、書き進めていくうちに原稿が肥大化していき、気がつけば600ページでも収まらないボリュームになってしまいました。。。
そこで576ページの紙幅に収めるためにコンテンツを取捨選択しましたが、諦めきれなかったものを本書の付録のGithubリポジトリに掲載することにしました。ハンズオン環境ともども、ぜひご活用ください。

謝辞

本書の執筆にあたり、多くの方々からご協力を賜りました。まず、不慣れな執筆に、忍耐強く温かい励ましとサポートをいただいた技術評論社の村下昇平さんに深く感謝いたします。

次に、内容についてレビューと貴重なフィードバックをいただいた下記の皆様に心より感謝申し上げます。

  • 鯵坂 明さん
  • 関山 宜孝さん
  • 濱岡 洋太さん
  • 深見 修平さん

最後に、本書にはIcebergを取り巻くさまざまなコミュニティの皆様との交流を通じた知見や学び、経験が詰まっています。特に、日本におけるオープンテーブルフォーマットとIcebergの普及に尽力されている、Open Table Format Study GroupIceberg Japan Meetupのみなさま、これまでに議論を交わしたすべての方々に感謝いたします。  

わたしがIcebergの本を書くまで

ここからは書籍の紹介ではなく、個人的なポエムになりますので、そういったことに関心のある方だけお読みください。
多くの人にとって、技術書の執筆は日常生活からかけ離れた体験で、「一体何を食べて生きてたら本を書くことになるんだ????」というのが率直な感覚ではないでしょうか。実際、わたしも2年前まで自分が書籍を書くことなど全く想像できませんでした。そんなわたしが何故にIcebergの本を書くに至ったのか、自分自身の振り返りも兼ねて綴ります。

Icebergとの出会い

Icebergと出会ったのは2023年の春のことでした。当時のわたしはビッグデータやデータ分析を専業で扱う仕事をしていたわけではなく、お客様のクラウドの活用全般を技術的に幅広く支える仕事をしていました。新卒入社した前職のSIerで5年、現職で3年、ゼネラリストな技術者として生きてきたわけです。ただ、分散処理に関わる技術は好きで、社内の技術コミュニティでの活動を続けていました。
そんなある日、とある同僚から「今度の社内イベントに枠があるので、オープンテーブルフォーマットについて喋ってみない?」とお誘いを貰いました。正直にいうと、当時のわたしはOTFやIcebergについてキーワードレベルでしか知らなかったのですが、何となく面白そうだったので挑戦してみることにしました。そこでの発表の準備を通じてIcebergの魅力に惹かれ、より深く知りたいと思うようになっていきました。

技術コミュニティとの出会い

それから少し日が経ち、縁あって幾つかの技術コミュニティのイベントで登壇の機会をいただきました。技術コミュニティで登壇したり交流するといったことは初めての経験で、緊張しつつも、とてもワクワクしたことを覚えています。
そこで出会った誰もがIcebergの可能性に惹かれ、議論に熱中し、未来を夢想し、この技術をもっと上手く使いたい、広めていきたいという情熱を持っていました。そうした熱気に触れる中で、もっともっと深くIcebergを理解したい、コミュニティに貢献したいと考えるようになりました。

思い出のイベントたち

trino.io

OTFSG Tokyo Meetup #2 - connpass

Iceberg Japan Meetup #1 - connpass

findy.connpass.com

www.db-tech-showcase.com

技術書の企画

2024年の春先、第2回OTFSGの飲み会の帰り、本書の共著者の田中さんと話す中で、「Icebergをより多くの人が、より便利に使えるように、技術書を出せないものだろうか?」という話が持ち上がりました。何をどうすれば本を出せるのか全然分かりませんでしたが、とにかくそれはとても良いアイデアに思えて、やれるだけのことをやってみようと思い立ちました。
そこで、拙いながらも書籍の企画書を作り、技術評論社様に持ち込んだところ、とても前向きに私たちの話を聞いてくださり、本書の執筆が決まったというわけです。今でこそ有名になったIcebergですが、当時は知る人ぞ知る技術という感じだったので、そんな企画を聞いてくださり、可能性を信じていただいた慧眼には驚かされるばかりです。

社内異動

これは直接的には書籍には関係ありませんが、2024年にビッグデータやデータ分析に関わる技術を専任で扱うチームに社内異動しました。元々、巨大なデータを効率よく柔軟に扱う技術/分散処理に関わる技術が好きでしたが、Icebergとの出会いを経て、更に掘り下げて「専門家」を目指してみたいと思うようになったのです。従ってIcebergは私にとって人生の1つの転機になりました。異動を経て、Icebergやデータ基盤に関わる技術について更に深い知見が得られるようになり、そこでの学びは確実に書籍にも活かされています。

苦難の執筆と感謝

執筆はけっして平坦な道のりではありませんでした。そもそも書籍というものを書くこと自体がはじめてでしたし、他の仕事をしながら執筆の時間を捻出するのにも大変苦労しました。しかも、Icebergや、それを取り巻く環境は日々進化を続けており、企画当初から現在までにも相当な変化がありました。そのため、最新の要素をできるだけ取り込みつつ、同時に時流の変化に影響されづらい、本質的で普遍的な内容に仕上げることにも大変な努力を費やしました。
そのような中でも編集者やレビュアーの方々をはじめとする、社内外の方々の温かい励ましとアドバイスに支えられ、遂に1冊の本を完成させることができました。

このように、本書はコミュニティとの出会いをきっかけに企画され、多くの人に支えられながら熟成し、出版に至りました。本書が日本におけるIcebergの普及と、多くの人の活用の助けに繋がればと心から願っています。