@ijin

[Michael H. Oshita]

Serverless Days Hamburg 2019で発表してきた

去年、ServerlessConf Parisで発表してきて、今年はどうしようかなーって思ってたらServerless Days HamburgのCFPを見つけて気軽に応募したら通っちゃったので発表してきました。

Serverless Days

元々JeffConfという名でヨーロッパ各地で数回開催されていたサーバーレスのカンファレンスですが、Severless Daysに改名されました。Serverless Confみたいな大規模カンファレンスではなく、「One Day. One Track. One Community.」というスローガンの元で行われるローカルコミュニティ主導の地域密着イベントです。奇しくも去年のServerlessConf Parisの翌日にJeffConf Hamburgが開催されたのですが、スピーカーの懇親会があってスケジュール的に断念したので、今回改めて発表という形で参加できたのは感慨深かったです。

Hamburg

場所は去年の美術館から変更されてサッカースタジアムの施設を利用

ぎゅうぎゅうに詰められた会場がアットホームで良い感じ

Keynoteは安定のYan Cuiさん。サーバーレスに関わる都市伝説を各個撃破してたw

中でも名言は

スピーカーは世界中から招待。覚えてるだけで

  • アメリカ
  • カナダ
  • イギリス
  • ドイツ
  • セルビア
  • ボスニア
  • イスラエル
  • インド
  • 日本(私)

ご飯がドイツらしくビーガンだったけど美味!

以下ClaireさんによるSketch Note!

Talk

技術的な発表が多い中、私のタイトルはServerless Communitiesといって、サーバーレスのコミュニティにフォーカスした内容でした。日本でのサーバーレスコミュニティの運営に関わってきて得た経験、知見、活動などを共有し、コミュニティ参加の意義を(少し)エモく訴えて、他国のコミュニティやエンジニア達を少しでも刺激・喚起できればなという思いでした。

ここではコミュニティ参加の意義や思いは詳細に書きませんが、一つだけ。

Give to the community. It will give back to you.

どんな些細な形でも良いのでコミュニティ活動に関われば、きっと将来いろんな思わぬ形でそれ以上リターンとして還ってきます。今の自分を(技術的にも仕事的にも)支えてるのは、振り返ればそういった活動から生まれた結果・繋がりだったりするので、是非皆さんにも体験して頂ければなと。(別にそれ目的で関わる必要はなく、むしろプロセス自体が面白いので、そんな事忘れて楽しめば良いと思います)

そして、その繋がりが国を跨いで世界各国まで拡大すればきっと見える景色や可能性も違ってくるでしょう。

世界中に広がっていくDaysの予定地!

Serverless Days JAPAN

というわけで今年は日本でServerless Confではなく、方向性を変えてServerless Daysを開催します。スピーカー、スタッフ、スポンサー大募集なので、是非とも協力をお願いします!東京・福岡の2都市開催で秋頃開催予定です!

Slides

AWS re:Invent 2018に参加してきた

AWS re:Inventの参加記録。かれこれ6回目。

今年も広かった。本当に広かった。。

Game Day

Microservicesというテーマで昨今の潮流に沿ってる感じで非常に楽しめた。

今年は短く4時間になっていて、2回開催。またWernerのキーノートと重なって、意識を拡張しながらの作業だった。

Security JAM

難易度によって課題がレベル分けされていて、それをチーム内で分けてクリアしていくゲーム。Security Forensics的な要素が面白かった。

Hotel

今回はJAWS-UG関西の仲間と共に穴場的ロケーションから鑑賞。

Keynotes

以下、気になった発表だけ抜粋。

re:Play

DJは2014年以来、2回目のSkrillex

場所は参加者が増大したので少し離れた場所にあるLas Vegas Festival Groundsにバスで移動。

まとめ

  • lambdaのruby対応やっと来た
  • Outpostsでオンプレまで攻めてきたか
  • Ground Station!?衛生基地局???
  • 広すぎて会えなかった人達がチラホラ
  • シルク・ドゥ・ソレイユのMystreは感動した

ルワンダのTransform Africa Summit 2018に参加してきた

記憶が風化する前に記録を。

先月、たまたまアフリカに行く機会があったのでその時期に行われていたルワンダのTransform Africa Summit (TFA)に参加してきました。今回はコミュニティ仲間の@yoshidashingoさん、@horike37さん、@jkudoさんと共に(私だけ南アフリカより現地集合)行動を共にしました。

Rwanda?

そもそもなんでルワンダに行こうという事になったと言うと、IT立国を目指していてアフリカのシンガポール的な位置づけになろうとしていてテック系のスタートアップが多く立ち上がっていて気になったからです。中でも有名なのが道路が未整備な農村地区の病院にドローンで血液を空輸するZipelineやDMMが買収したDMM Heheがあって面白そうと感じたからです。

汚職が少なく治安もよく、テックスタートアップの為に法改正までするルワンダを見てみたいなって話してた所にちょうどTFAが開催されるで行ってみようという流れでした。

紙幣。教育とITに力を入れているのがよく分かる。

首都キガリの中心にあるカンファレンスセンター。モダンな感じ。

少し外れるとまだまだ発展途上感。

Transform Africa Summmit

250 Startups

日本のJAICAが支援しているスタートアップのインキュベーションプログラム。

うーーん。拍子抜け。皆さんプレゼンがお下手で、ビジネス戦略やそもそものマーケット分析が全然ダメダメで正直小学生の宿題みたいな内容でした。。水漏れ検知システム、節電システム、自動卵孵化装置等。。もっと世界の勉強が必要なんじゃないかと。

後で知ったのが、250チームからの選抜だと思っていたら最初の8チームでした。この先大丈夫だろうか。

Face the Gorillas

マネーの虎みたいなピッチイベント。こちらはより洗練されていて面白かった!

最後の女性が一番パッションを持ってビジョンや取り組みを語たり、全員から出資やメンタリングのオファーが出てきて感動。

Blockchain

インフラが未熟や信頼できない国ではブロックチェーンによって信頼を分散させる方がより堅牢なシステムになるのはなるほどなぁという印象。コンテキストにうまく当てはまれば価値が発揮されるケースがあるんだと改めて理解。

その他

参考までに同行者仲間のブログはこちら

ServerlessConf Paris 2018で発表してきた

既に世界数カ所の都市で行われているServerlessConfがフランスのパリで開催されるという事でCFPに応募したら通ってしまったので発表してきました。75個の応募の中から選んで頂いて光栄ですね。

タイトルはAccelerating DevOps with Serverlessで、DevOpsを手助けする為にServerlessを使って解決したストーリーや仕組み。


内容としてはシンプルでgithubのbranchに応じて、テスト環境用のECSクラスタ内にrandom portでALBにtarget group, listenerを割り当ててservice作ってコンテナを配置するだけです。branch delete時にはtaskを停止し、逆順に削除していきます。通知はSNSでslack等へ連携可能。

少し特色があるとすれば、serviceを作成したりtaskを停止するのにかなり時間を要する場合があるので、単一のlambdaではなくstep functionsで制御した事ですかね。今回、serverless frameworkstep functions pluginのおかげでstate machine dataをjsonで書かなくて済んだので作者のhorikeさんには感謝です。

発表した内容のモノは現在、複数プロジェクトで使えるようになるべく汎用的な作りにしてECS deityとして公開しています。参考にでもなれば。

https://github.com/ijin/ecs-deity

尚、GitHub eventによる自動デプロイだと毎回煩わしい場合もある(特定のbranch prefixが対象であるにせよ)ので、slackによるchatops手動デプロイも実装中です。

と、まあやってる事はそんなに難しくないので、海外カンファレンスのCFPがあれば誰でも気軽に応募してみると良いと思います!

Afterthoughts

やはり、serverlessだとログ周りが様々なCloudWatch logsのlog streamsに分散(api gw, lambda, step functions)しているので、トレーシングがしんどかったりしたけど今回のConfで何度も取り上げられたトピックがObervabilityだったので皆同様に苦労しているんだなぁと感じました。ブースにもその解決に取り込もうとしている企業がいくつかいたので、今後に期待ですね。

この辺は一緒に行ったyoshidashingoさんがブログでよく考察してくれています。

後、Keynote SpeakerのYan Cuiさんのトークが重厚で実に素晴らしかったのでYouTubeに上がったら是非観てください。内容もテンポもスライドも勉強になります。

最後に

  • 海外カンファレンスだと世界中からのエンジニアと話せるので非常に良い刺激になりますよ(可能なら発表を!!)
  • 2月のパリは寒い!行くなら観光客が少なく暖かい6月をオススメされた
  • ご飯はどこ行っても美味しい!

AWS re:Invent 2017に参加してきた

AWS re:Inventに5回目の参加記録。

例によって、帰国直後の体験談の発表

Game Day

まず、何よりもGame Day!もはやこれに出れれば8割型満足。。内容としてはいろんなサービスを使うようになってて結構凝ってた。

去年の運営チームとは別になったらしいので中身も毛色が少し違ってた。

Keynote by Andy Jassy

今年は部屋でゆったりと。

怒涛のリリースラッシュ!

DeepLens Workshop

Keynote by Werner Vogels

前日に引き続き、リリースラッシュを構えていたのにちょっとだけ発表してWernerの熱い想いを語る独壇場だった。。

Hackathon - ALL-in JAM

いろんな要素やサービスが詰まったハッカソン。初めて触るサービスもあって楽しかった。

会場

VenitienからAriaまでの道のり。。長い。

re:Play

メインDJはDJ Snake。プレイ自体は30分ぐらいは楽しめたかな。。好み違った。

まとめ

  • Fargateもっと早く欲しかった
  • DeepLensもらえた。何作ろう
  • 今年もlambdaにrubyが来なかった
  • Cloud9でEC2自前で立てるのはコレジャナイ感
  • 会場広すぎでしょ

ServerlessConf Austin 2017に参加してきた

ServerlessConf Austin 2017に参加したので、端的なメモ。

Day 1の終わりに着いて、ほぼDay 2のみ

Self Replicating Serverless Function - Michael Adda

Quineおじさんによるウロボロス的lambda実装のお話。思考実験としては面白かった。

Harmonizing Serverless & Traditional Applications - Ryan Brown

Serverless Security: What’s Left To Protect? - Guy Podjarny

Single Page Apps & Serverless without Compromise (or as little as possible) - Jared Short

Serverless Workflows in AWS: A Journey from SWF to Step Functions - Forrest Brazeal

最後にRAP!!!新しいwww

Keynote by Tim Wagner

おまけ

  • オースティンめっちゃ暑かった(日陰に入ると涼しい)
  • シュラスコ美味かった!
  • Uberが締め出されたのでローカルアプリが必要
  • 下記コメントが印象的だった

Ruboty-github_pr_releaseを作った

よくプロジェクトでstagingproductionブランチにリリース用のpull requestを送ってmergeする事でCircleCIが走って自動デプロイするような仕組みを入れているんだけど、いちいちGitHub上でポチポチ画面を押すのが面倒くさいのと、久しぶりにやるとbasecompareとで混乱しそうになるので、ChatOpsを導入して効率化してみました。

Slackと連携できるボットにはrubotyを選択。

プラグイン周りではruboty-githubがあるけど、微妙に要求に応えれなかったので少し拡張したruboty-github_pr_releaseを作りました。久々のgem公開。

Install

Gemfile
1
gem 'ruboty-github_pr_release'

Release pull request

create

pull requestを作成。それまでmergeしたfeature branch等のタイトルが集約される

1
ruboty release from <org/repo:from_branch> to <org/repo:to_branch>

update

pull request作成後に新たなコミットを取り込む時やタイトルを変更したい時

1
ruboty update release from <org/repo:from_branch> to <org/repo:to_branch> as "new title"

deploy

pull requestをmergeしてデプロイ

1
ruboty deploy release from <org/repo:from_branch> to <org/repo:to_branch>

alias

ruboty-aliasruboty-scoped_aliasを使うとさらにコマンドを短縮して便利です。scopedにすると部屋毎にプロジェクトを割り当てたりも可能。

1
2
ruboty scoped alias release production -> release from ijin/test:staging to ijin/test:production
ruboty scoped alias deploy production -> deploy release from ijin/test:staging to ijin/test:production

簡単!

注意

  • 開発branchにmergeされたサマリーを作成するのでGit/GitHub flow等が前提(直接branchにコミットしない)
  • mergeをrevertしてしまうと、branch間の差分が取れなくなるので開発branch(develop等)から修正fixを新たにpull requestとして送る必要がある
  • ruboty-githubは個々人で認証をしているので、チャネルではなく、rubotyに対してDMで認証するべき(remember my github token xxx)

参考

おまけ

ほとんど作り終えたところでほぼ同じ機能を持ったincrements/ruboty-qiita-githubに気づいたけど、気にせずリリースしちゃった。一応merge周りはこっちの方が若干楽なので。。

AWS re:Invent 2016に参加してきた

4度目となるAWS re:Inventに参加したので、記録を。

帰国直後にJAWS-UG横浜支部で体験談を発表したのですっかり忘れてた。。

 

今年は例年より開催が1ヶ月遅く、且つ期間が長め(11/28〜12/2)でした。 参加人数は過去最大規模で32,000人。PalazzoとVenetianのホテルに収まらなくて、新たにちょっと離れたMirageも借りることに。また、今年から登録制の運用が厳格になったので、飛び込みは行列に並ぶ必要がありました。

Day 0

Game Day

お題は去年のUnicorn企業のシナリオを拡張したけど、テーマは今年の流行りを反映した内容。 運用コストやパフォーマンスが加味され、チーム感でスコアを競うんだけど今年は新たにボーナスステージが用意されたりして全体的にいろいろ最適化されてた。

80チーム以上で過去最大規模。また、奇しくもGame Day初回参加時に同じチームメンバーで友人となった人とチームに!

8時間の長丁場だったけど、もうこれだけで大変満足して後はもういいやって気分に。

ちなみにオンライン登録が間に合わなくて、当日飛び込み参加だけどなんとかギリギリ最後の一人では入れた。

Day 1

Tuesday Night Live with James Hamilton

AWS Vice PresidentのJames Hamilton氏によるデータセンターの詳細が話された。初公開情報が多く、パッションが強くて聞いてて飽きなかった。

新サービスもちょこっと。

Day 2

Keynote

Andy Jessy (AWS CEO)により発表。テーマは「Superpower

  • new EC2 instances (t2.xlarge, t2.2xlarge, r4, i3, c5, f1 (FPGA))
  • Elastic GPU’s for EC2
  • Amazon Lightsail
  • Amazon Athena
  • Amazon AI (Rekognition, Polly, Lex)
  • PostgreSQL for Amazon Aurora
  • AWS Greengrass
  • AWS Snowball Edge
  • AWS Snowmobile

Day 3

Werner Vogels

Werner Vogels (AWS CTO)による発表。テーマは「Transformation

  • AWS OpsWorks for Chef Automate
  • Amazon EC2 Systems Manager
  • AWS CodeBuild
  • AWS X-ray
  • AWS Personal Health Dashboard
  • AWS Sheild
  • Amazon Pinpoint
  • AWS Glue
  • AWS Batch
  • Blox
  • AWS Lambda for C#
  • AWS Lambda@Edge
  • AWS Step Functions

Lambdaのrubyかgo対応を期待してたのに、ちょっとがっかり。。

SVR 309 Wild Rydes Takes Off - The Dawn of a New Unicorn

サーバーレスをお題にしたワークショップ。コピペだけでちょっと面白みがなかった。。

詳しくはこちら

AWS re:Play

2016年EDMのベストDJに選ばれた若手のMartin Garrix。また金積んだな〜。

Day 4

のんびり

Beta Certification Tests

暇だったのでベータ試験を全部受けた。

  • Advanced Networking
  • Security
  • Big Data

途中、開始トラブルがあって、担当マネージャからテスト問題誕生秘話を聞いたり、クーポンもらったりした。

最後に

  • 今年も結局Sessionは参加せずにGame Dayやワークショップをやった。
  • Available Nowなサービスが多くて、最近のVaporware体質から脱却した模様。
  • ベータ試験受けたのは暇だったで何かチャレンジしたかったから!

ServerlessConf London 2016に参加してきた。

先日、ServerlessConf London 2016に参加したので、そのメモ(例によってtogetter風)。

少し前に話題の「サーバーレス」アーキテクチャに関するイベントであるServerlessConf Tokyo 2016をお手伝いしたことから、ロンドン版開催のお誘いが来たので行ってみました。

開催場所はetc.venuesという施設。

Day 1

Keynote by Patrick Debois

サーバーレスについてのカンファレンスなのに、キーノートでジャブ撃ちまくりが面白かった。

Sessions

iRobotやCloud Custodianを公開したCapitalOneのセッションも面白かったけど、一番は元ParseのエンジニアであるCharity Majorsのセッション(Serverlessness, NoOps and the Tooth Fairy)。サーバーレスを採用しても結局サービスの責任は自分で負わないといけない啓蒙的な話を様々な例を交えつつ、パッションを持って話してくれた。

  • Serverless architecture at iRobot by Ben Kehoe
  • Serverless for the Enterprise by Rafal Gancarz
  • Real-time Data Processing Using AWS Lambda by Ken Payne
  • Cloud Custodian, a serverless rules engine for the cloud by Kapil Thangavelu
  • The Serverless Cloud Integration Pattern by Lars Trieloff
  • Serverlessness, NoOps and the Tooth Fairy by Charity Majors
  • Serverless Operations by Ben Bridts

LT

LTという割にはミニセッションな感じ。日本のLTみたいな笑い所はあまりなし。最後の火星探査機もどきのやつは少し興味深かったけど。

  • Migrating to Serverless: MindMup 2.0 case study by Gojko Adzic
  • Serverless with Ansible by Ryan Brown
  • Cloud Detour - Automation Tool for testing Cloud Applications Resiliency by Sathiya Shunmugasundaram & Gnani Dathathreya
  • Mission to Mars: Exploring new worlds with AWS IoT by Jeroen Resoort

After Party

Day 2

Sessions

興味深かったのはnewrelic apm風なlambda専用の解析ツールIOPipeを作ってる人によるOps for NoOpsRealmのFounderによるServerless in an Offline-First world。どちらも自社プロダクトを紹介しつつも結構サーバーレスアーキテクチャでの設計やオペレーションを深掘りした話だった。他はZappaの作者によるGlobally Available Serverless Architecturesがテンポよく進んで見てて飽きなかった。

  • Ops for NoOps: Operational Challenges for Serverless Apps by Eric Windisch & Pam Selle
  • Serverless in an Offline-First world by Alexander Stigsen
  • The future of serverless by Paul Johnston
  • Getting the most out of the Serverless Framework by Florian Motlik
  • Serverless API in the Enterprise by Scott Patterson & Simon Coward
  • Globally Available Serverless Architectures by Rich Jones
  • Serverless Microservices with Google Cloud Functions by Bret McGowen

LT

MSの人達によるAzureの高速棒読み寸劇が笑えた。

  • Why PubNub moved Serverless Computing into the Network by Girish Dusane
  • DevOps for Serverless Applications by Yochay Kiriaty
  • Writing Serverless Plugins by Anna Doubkova
  • Serverless real-time aggregates by Christian Blunden
  • Big data processing simplified with Serverless Map Reduce by Sunil Mallya

感想

セッションもまあまあ面白かったりしたけど、Serverless Framework等各種ツールの作者と直接話したり、各国のエンジニアとサービス運用について細かく議論できるのが有意義でした。ヨーロッパ圏の人がメインだけど、意外とアメリカからも沢山来てて終始盛り上がりました。日本からはServerlessConf Tokyoの主催者のセクションナイン吉田さんもっぱらさん等が来英した他、クラスメソッドのベルリンリージョンにいる吉田さんがわざわざメソりに来てて、ノルマ大変そうだなぁと思ったり。

後、LTに関しては日本の方が絶対レベルが上だと思う!自社プロダクトの紹介とかやめて。。

Videos

ちなみにセッションの動画はここから見れます。

おまけ

カンファレンスの雰囲気。インタビューされちゃいました。

AWS GameDay Japan 2016を開催してきた

過去に何回も参加・開催両方を経験した事があるAWS GameDayに、またしても運営側として関わりました。

お題は基本的に去年のre:Inventでやったのを若干チューニングしたやつ。 詳細は今後また別のところで開催される可能性があるので、その時の参加者の為に伏せておきます。

当日

競技中はそれぞれのチームのスコアがリアルタイムで見れるダッシュボードがあって白熱した様子が伝わってました。

これはこれで楽しいんですが、何かが足りない感じ。。。






そう、グラフです!!






参加チームの白熱したバトル(順位の入れ替え等)を時系列で表示し、戦いの軌跡をビジュアライズするアレです。ISUCONでもよく見慣れたあの遷移するグラフがなかったのです!

開始してから気づきました。。

なので作りました

Graphing premiere

ダッシュボードの作りを見てみると jQueryReact.js を使っている模様。ならば、どこかでendpointを叩いてjsonを取得しているはずなので、いろいろ探したところ、それらしいのがありました。

1
2
3
4
5
6
7
8
9
10
11
12
13
  getScores: function() {
    $.ajax({
      url: 'https://xxxxxxxxx.execute-api.us-west-2.amazonaws.com/prod/scores',
      dataType: 'json',
      cache: false,
      success: function(data) {
        this.setState({data: data});
      }.bind(this),
      error: function(xhr, status, err) {
        console.error("scores", status, err.toString());
      }.bind(this)
    });
  },

こうなれば話は簡単で後は返却されるjsonを解析して、定期的にcallしてplotしていけば良いだけです。

データ送信

グラフを描画するサーバを用意するのはしんどいので、カスタムメトリックスが作成できる監視サービスを使いました。 最初はMackerelをと思ったけど、独自グラフを一般公開する設定がなさそうだったのでDatadogを採用。

Datadogでカスタムメトリックスを送るにはAPIを直接叩くよりは、StatsD経由で送信した方が楽なのでrubyでサクっと適当に記述。

gameday.rb
1
2
3
4
5
6
statsd.batch do |s|
  s.gauge('gameday2016', scores[0]['Profit']*100, :tags => ["team:" + scores[0]['Team']])
  s.gauge('gameday2016', scores[1]['Profit']*100, :tags => ["team:" + scores[1]['Team']])
  s.gauge('gameday2016', scores[2]['Profit']*100, :tags => ["team:" + scores[2]['Team']])
  # etc
end

グラフ描画

公開ダッシュボードを作成するには TimeBoard ではなく ScreenBoard を選択し、後は必要そうなグラフを追加していくだけ。

グラフ自体はGUIで作っても良いし、jsonで記述可能なので結構柔軟で素敵です。

profits.json
1
2
3
4
5
6
7
8
9
10
11
{
  "viz": "timeseries",
  "requests": [
    {
      "q": "avg:gameday2016{*} by {team}",
      "aggregator": "avg",
      "conditional_formats": [],
      "type": "line"
    }
  ]
}
ranking.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
  "viz": "toplist",
  "requests": [
    {
      "q": "top(avg:gameday2016{*} by {team}, 20, 'last', 'desc')",
      "style": {
        "palette": "dog_classic"
      },
      "conditional_formats": [
        {
          "palette": "white_on_green",
          "comparator": ">=",
          "value": 0
        },
        {
          "palette": "white_on_red",
          "comparator": "<",
          "value": 0
        }
      ]
    }
  ]
}

できあがったグラフはこんな感じ。 高負荷発生等のイベント時の対応との比較もできて見やすいと思います。

これで各チームのポジション等を伝えやすくなりました。

というわけで優勝したチーム初老丸、おめでとうございます!

終わりに

今回は競技の途中から実装しちゃったので次回は最初から用意しておきたいと思います。

(※)実は去年のISUCONの時も似たような事をやってましたね。。