PyCon JP 2017カンファレンスレポート

2日目 Masaaki Horikoshi氏基調講演「pandas開発でのOSS活動」,Pythonによるサーバレス開発,PythonでIoT,そしてLT~クロージングへ

この記事を読むのに必要な時間:およそ 6 分

2日目注目セッション「理論から学ぶPythonによるサーバレス開発」 ―Masashi Terui

(小林正彦)

昨今,注目を集めるServerlessについて,AWS Lambdaと関連サービスを例として,その考え方やFaaSの動作原理に触れながら特性を踏まえた設計・実装方法についてMasashi Terui氏にご紹介していただきました。

実装のポイントなど,多くの内容の中から一部抜粋してご紹介します。すべてをご紹介することができず残念ですが,詳細はレポートの末尾に資料と動画へのリンクを載せているのでそちらをご確認ください。

Masashi Terui氏

Masashi Terui氏

Serverlessとは何か

一般的には「管理するサーバが「ない」⁠OSが「ない」⁠常駐プロセスが「ない」ことによって煩雑な管理業務から解放される」というような説明を聞くことが多いですが,これではServerlessの使い途が見えづらくなってしまうので,⁠ない」ものを語るのではなくServerlessだからこそ「ある」ものに目を向けることが重要とのことです。

具体的に「ある」ものは以下の2つです。

  • Functions as a Service(FaaS)
  • Functional SaaS

FaaSは,関数単体で独立した環境とそのリソースのことです。プロトコルレイヤーまで隠蔽する高い抽象度と,Input/Outputに注力した実装ができる点が特徴です。

Functional SaaSは,単独ではサービスとして完結しない点が従来のSaaSとは異なります。Fully managedな環境であることを前提として,特定の機能を提供するSaaSのことを言います。この2つを組み合わせる,つまり「Functional SaaSをFaaSで繋いで実装したもの」がServerlessと言えます。

仕組みについて

FaaSの実体はコンテナです。OSSのFasS実装の多くはバックエンドにDockerを使用しています。特定のイベントを受けてコンテナを起動して関数を実行していきますが,コンテナの起動やPythonプロセスを稼働させることにもオーバーヘッドが生じることは意識した方が良いでしょう(VMよりはるかに小さいとはいえ)⁠また,1つのイベントに対して複数の関数を実行できるので並列・非同期処理に向いているのが特徴です。

FaaSとは「あらゆる操作をイベントとして扱い,Pull型のPub/Subモデルで,オンデマンドにコンテナ内で実行される関数」と言えます。

Serverlessに向いているシステム

一例として,IoTとは非常に相性が良いそうです。計測データをhttpsで受け取って集約・計算し,外部サービスに連携させていくようなシステムなどで,処理のステップ毎に関数の起動数を調整することができる特徴が活かせます。

逆に,一般的なWebAPIアプリケーションシステムはServerlessに向いていないともおっしゃっていました。なぜかと言うと,リクエストとレスポンスが一対一で同期的であるため,Serverlessのアーキテクチャにマッチしないということです(ただし,Serverlessにすることで運用面で得られるメリットもあるので実装してはいけないということではありません)⁠

実装のポイント

The Twelve-Factor Appという基本的な開発手法は,Serverlessの実装においても参考になります。他には,コンテナがオンデマンドに起動・破棄されるという仕組み上,

  • RDBとの相性はイマイチ
  • Cold start時の遅延を抑えるように実装する
  • インスタンスをキャッシュしておく

などが挙げられます。

また,イベントの配信は「at least once」という性質を持っているために関数は冪等性を持つ必要がありますが,⁠冪等」「正常系を何回実行しても同じ状態になるようにしないといけない」というわけではありません。どのイベントを適応したかを記録しておいて,2回目に該当するイベントは無視するという仕組みも,冪等性を担保していると言えます。

最後に,SaaSを選ぶ際は,APIの充実度は選ぶポイントになります。設定情報をAPIで抜き出してテキスト管理する,必要であれば同じ設定で実装できるというのは重要なポイントです。

ここでは紹介しきれなかった内容がたくさんありますので,以下のリンクからぜひご確認ください。

2日目注目セッション「Pythonの本気!RaspberryPiやEdisonを使ったIoTシステムの構築」― Yuta Kitagami

(山口祐子)

みなさん興味津々のIoTネタということで,Yuta Kitagami氏による講演をご紹介します。Kitagami氏は高校時代からハードウェアに手を出し,現在はハードウェアとソフトウェアの両方の知識を生かしご活躍されています。最近ではIntel Edisonマスターブックという本を出版されました。

Kitagami氏がIoTに精通しているということで,おそらく会場の皆さんは「IoTでこんなことができました」系のトークを期待されていたと思います。しかしKitagami氏は「できました系の話はつまらない。私はなぜそれができたかの話をします」というかっこいい発言で会場を沸かせていました。

Yuta Kitagami氏

Yuta Kitagami氏

「IoT時代においてPythonは最強」という主張をしたKitagami氏。Pythonはハードウェアが扱えるということがその理由だそうです。

ではなぜPythonはハードウェアが扱えるのか? Pythonにはハードウェアのライブラリがあるというのがその理由ですが,そのライブラリはC言語のラッパーとして作成されています。C言語ではたとえばレジスタへアクセスできるため,GPIOなどのハードウェアを動かすという芸当ができるということなのです。

そうなると,IoT領域においては低レイヤーのC言語がベストなのではという疑問が当然出てきます。それに対してKitagami氏は,⁠そんなC言語をラップできるPythonこそ最強」と答えます。つまり,低レイヤーにアクセスできるC言語に,多様なライブラリを要するPythonが合わさることで,実にさまざまなことが実現できるのです。たとえば温湿度センサーの機能を使ってデータを取得しそれをDBに格納,サーバでデータを表示,そしてネットワークにも繋げるということも可能です。

温湿度モニタリングシステムの例

温湿度モニタリングシステムの例

トークでは,Kitagami氏自作の自宅の温湿度モニタリングシステムを披露していました。

軽快なトークで会場を沸かせたKitagami氏。講演の時間だけでは足りず,終了後も場所を変えて参加者とIoT話に花を咲かせていたようです

軽快なトークで会場を沸かせたKitagami氏。講演の時間だけでは足りず,終了後も場所を変えて参加者とIoT話に花を咲かせていたようです

著者プロフィール

小林正彦(こばやしまさひこ)

メディアスポンサー対応、PyCon JP 2017メディア会議企画担当。

PyCon JPにはPyCon JP 2017にスタッフとして初参加。株式会社アークシステム所属。SEサービスに従事。企業システムの開発から運用までITのライフサイクル全般にわたるソリューションを提供している。開発、運用業務効率化のためにPythonを使用している。

Twitter: @donadeno


山口祐子(やまぐちゆうこ)

PyCon JP 2017広報・メディアスポンサー担当。PyCon JPは2016年から参加。

株式会社リヴァンプにて,コンサルタント兼エンジニアとして従事。現在は主にデータ分析を担当している。前職でエンジニアとして従事していた際にfabric(デプロイツール)を試してみたのをきっかけにPython好きに。趣味はヴァイオリン演奏とマラソン。

Twitter: @yukofeb


陶山嶺(すやまれい)

メディアスポンサー対応、PyCon JP 公式ガイドアプリのAndroid版の開発を担当。PyCon JPにはPyCon JP 2015で初めて一般参加。Python自体に貢献しようとPyCon JP 2016からはスタッフとして参加している。

渋谷のカラフル・ボード(株)に勤務し、8月から広島の尾道でリモートワークを実践中。前職ではiOS/Androidアプリ開発、現職ではPythonとGCPでのサーバーサイド開発をメインとしている。学生時代から一番好きな言語はずっとPython。

Twitter: @rhoboro

バックナンバー

PyCon JP 2017カンファレンスレポート

コメント

コメントの記入