初心から一週間で作ってみた kinesis client library for go

17
初心から一週間で作ってみた Kinesis Client Library for Go Sapporo #golang Meetup

Upload: masashi-terui

Post on 20-Jul-2015

1.186 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: 初心から一週間で作ってみた Kinesis Client Library for Go

初心から一週間で作ってみた Kinesis Client Library for Go

Sapporo #golang Meetup

Page 2: 初心から一週間で作ってみた Kinesis Client Library for Go

はじめまして!(じゃない方はこんばんは!)Masashi Terui 照井 将士

https://www.facebook.com/marcy.terui https://twitter.com/marcy_terui      

JAWS-UG札幌下っ端メンバー

Chef Meetup Sapporo主催 一回しかやってないですが… Chefだけだと僕がつまらないと気づいたので、 誰かInfra as Code全般で一緒にやりませんか?

言語歴 今のお仕事   :Python 前のお仕事   :PHP(ちょっとJava,C#) 学生時代    :Java(ちょっとC) 業務外でよく使う:Ruby

Page 3: 初心から一週間で作ってみた Kinesis Client Library for Go

Kinesis Client Library #とは

Page 4: 初心から一週間で作ってみた Kinesis Client Library for Go

Amazon Kinesis は、大規模なストリーミングデータをリアルタイムで処理する完全マネージド型サービスです。Amazon Kinesis は、数十万のソース

から 1 時間あたり数百テラバイトのデータを収集し、処理できます。 ※公式サイトより抜粋

要は大規模ストリーミングデータのバッファ的な何か

Kinesis #とは

Page 5: 初心から一週間で作ってみた Kinesis Client Library for Go

Client Library #とはこれを作るためのライブラリ

AWS Black Belt Techシリーズ Amazon Kinesisのスライドから拝借 http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-kinesis

Page 6: 初心から一週間で作ってみた Kinesis Client Library for Go

詳しくは公式サイトなどでご確認を

Page 7: 初心から一週間で作ってみた Kinesis Client Library for Go

Kinesis Client Libraryの言語ラインナップ公式

• Javahttps://github.com/awslabs/amazon-kinesis-client

• Pythonhttps://github.com/awslabs/amazon-kinesis-client-python

• Ruby(最近追加されてた) https://github.com/awslabs/amazon-kinesis-client-ruby

非公式 • PHP

https://github.com/fukuiretu/amazon-kinesis-client-library-php • Ruby(公式よりソース見た感じ良さそうだったw)

https://github.com/everydayhero/amazon-kinesis-client-ruby

(2015.01.0? 俺調べ)

Page 8: 初心から一週間で作ってみた Kinesis Client Library for Go

Goが無い! あと、Stream処理は並列(並行)化しやすいからGoと相性が良い(と思う)

Page 9: 初心から一週間で作ってみた Kinesis Client Library for Go

ちょうど良いので作ってみよう …と思って作ってたら途中で非公式を一つ発見したんですが、

素人目で見ても良く出来てるとは言い難い感じの実装だったので、 気にせず続けることにw

Page 10: 初心から一週間で作ってみた Kinesis Client Library for Go

ちなみに、Java以外はJavaのライブラリが提供しているAPIを実装しているだけ

(なのであんまり大変じゃない) それゆえ、Javaから開放される訳ではないので、運用面では幸せになれないという噂も?w

Page 11: 初心から一週間で作ってみた Kinesis Client Library for Go

1〜2日目:とりあえず、Tour of Go• コレ(知ってる人多いと思いますが一応)

http://go-tour-jp.appspot.com/

• 一通りの基本機能を手を動かしながら、実際に動かしながら学べるのでとても良かった

• アルゴリズムの問題が物によっては難しかった一つ一つテーマがあるので、分からないからといって飛ばすのはあまり良くないアルゴリズムを解くのは本来の目的とズレるので、答え見ても良いと思う(というか2個くらい見た)http://chopl.in/blog/2013/04/13/go_tour_exercise_solutions.html

• これをやってみてから何を作ってみるか決めた

• とりあえず一通りやったほうが良いと思う

Page 12: 初心から一週間で作ってみた Kinesis Client Library for Go

3〜5日目:Pythonを参考に実装

• オブジェクト指向な作りはとりあえず基本そのままGoでもオブジェクト指向っぽく書ける

• • •

• コンパイルエラー潰すだけであらかた動いたので、コンパイラの偉大さを感じた

• 以前にPythonを試してみた経験から、起動が面倒なので専用コマンドが欲しくなったhttp://marcy.hatenablog.com/entry/2014/12/09/030227

Page 13: 初心から一週間で作ってみた Kinesis Client Library for Go

6日目:CLIを実装

• CLI周りはQiitaに知見が一杯載ってたhttp://qiita.com/

• CLI Libraryが便利(特にサブコマンド作りたい時)https://github.com/mitchellh/cli

• せっかくだからクロスコンパイルしたいけど、手元で一々やるのは面倒と感じた

Page 14: 初心から一週間で作ってみた Kinesis Client Library for Go

7日目:CI組んでみる• クロスコンパイルはgox使ったら驚くほど簡単!

https://github.com/mitchellh/gox

• ググったらにDrone.ioの例が多かったのでやってみたhttps://drone.io/

• シンプルで使いやすい

• 逆に言うと機能は少ない

• 指定したディレクトリに成果物置くだけで公開できるので、シンプルに使いたい方にオススメ

Page 15: 初心から一週間で作ってみた Kinesis Client Library for Go

できたやつ

• Amazon Kinesis Client Library for Gohttps://github.com/marcy-go/kcl

• CLIhttps://github.com/marcy-go/kclhelper

• CLI Binaryhttps://drone.io/github.com/marcy-go/kclhelper/files

• Sample Applicationhttps://github.com/marcy-go/kclsample

• Sample Application Binaryhttps://drone.io/github.com/marcy-go/kclsample/files

Page 16: 初心から一週間で作ってみた Kinesis Client Library for Go

感想など• 一週間といっても昼間は働いているので基本夜

→「最近夜更かしが酷い」と奥さんに怒られる

• 極力抽象化はせず、でも面倒くさいことはやらなくて良い感じが バランスの良い言語だと思った

• 正直、例外は欲しい時がある

• Tour of Goが入門チュートリアルとしてとても良い 本気で他の言語でも欲しいレベル

• テストってどうしてます? 特に今、モックについて悩んでます良いライブラリがあれば教えて下さいまたは、モックが無くてもテストできる作りを保つべき?

Page 17: 初心から一週間で作ってみた Kinesis Client Library for Go

ありがとうございました