Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Design & Implement Batch Stream Processing Appl...
Search
bash0C7
March 01, 2014
Technology
4
3.6k
Design & Implement Batch Stream Processing Application for Ruby
沖縄Ruby会議01発表「Rubyによるバッチ業務のストリーム処理化の設計と実装」
http://regional.rubykaigi.org/okrk01/
bash0C7
March 01, 2014
Tweet
Share
More Decks by bash0C7
See All by bash0C7
introduction
bash0c7
0
17
みんな大好き 🫶🏼 取引先との「セキュリティチェックリスト」への付き合い方
bash0c7
0
1.6k
【公開版資料】発表資料 新メンバー活躍までのオンボーディングとそのTips
bash0c7
1
810
Shinjuku.rb #91 好きなもの紹介LT大会 "便利"や"役に立つ"とは別方面のRubyをつかったプログラミングがたのしい話
bash0c7
0
170
#oedo10 継続的 #RubyMuscleMixin 実践入門/RubyMuscleMixin
bash0c7
0
1.5k
inside_announce
bash0c7
0
710
【公開版】マネジメントにおける 「技術選択」の勘所 / The key to technology selection in engineering management
bash0c7
0
320
数百人規模の会社でアイデアを組織的にインストールする実例と再現性の要/Pragmatic Fearless Change #devkan
bash0c7
0
210
【公開版】明日から動ける 切り拓け「おいしい」キャリア/build one's career #careerkaigi
bash0c7
2
460
Other Decks in Technology
See All in Technology
CysharpのOSS群から見るModern C#の現在地
neuecc
1
3.1k
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
7
2.6k
The Rise of LLMOps
asei
5
1.2k
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
200
Lambdaと地方とコミュニティ
miu_crescent
2
370
Why does continuous profiling matter to developers? #appdevelopercon
salaboy
0
180
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
510
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
350
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Optimizing for Happiness
mojombo
376
70k
How to Ace a Technical Interview
jacobian
276
23k
Git: the NoSQL Database
bkeepers
PRO
427
64k
KATA
mclloyd
29
14k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
RailsConf 2023
tenderlove
29
900
Ruby is Unlike a Banana
tanoku
97
11k
The Invisible Side of Design
smashingmag
298
50k
Rails Girls Zürich Keynote
gr2m
94
13k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Transcript
RRuubbyyによる バッチ業務の ストリーム処理化の 設計と実装
みなさん
業 務
l ぎょう‐む 〔ゲフ‐〕 【業務】 1 職業や事業などに関して、継続して行う仕事。 2 法律で、社会生活において反復・継続して行う活動の こと。職業上の活動に限らず、娯楽のための個人的な行 為も含まれるが、家事や育児など家庭生活上の活動は含
まれない。→業務上過失 デジタル大辞泉(小学館) hhttttpp::////kkoottoobbaannkk..jjpp//wwoorrdd//業務
オンライン処理 バッチ処理
hhttttppでリクエスト ccrroonnで定時実行
**//55 ** ** ** ** rruubbyy bbaattcchh..rrbb
IUUQTHJUIVCDPNCBTI$UXFFGGZCMPCNBTUFSBQQNPEFMTQPTU@TFSWJDFSC
最高の進捗 最高の成果
業務ルール変更 出力先の追加 時宜を得た通知
いい感じにかい ていこうよ!
でもどうやった らいいだろう?
IUUQXXXqJDLSDPNQIPUPTFOOVJSJOTFUCZODTB IUUQNBHB[JOFSVCZJTUOFU 5PLZP3VCZ,BJHJ3FQPSU@TU “古きよき時代から来ました 真面目なSSEE 真面目にSSEE” こしば としあき @@bbaasshh00CC77 ピクシブ株式会社
エンジニア 広告配信技術係,,ppiixxiivv開発統括係 いくつかのRRuubbyy関連催事運営 レイヤーさん
結論
IUUQqVFOUEPSH
アクセスログ収集 行動ログ収集
l FFlluueennttdd iiss aann ooppeenn ssoouurrccee ddaattaa ccoolllleeccttoorr ddeessiiggnneedd ffoorr
pprroocceessssiinngg hhiigghh--vvoolluummee ddaattaa ssttrreeaammss.. IUUQqVFOUEPSH
具体例
開発状況のリアルタ イム通知システム
-- IIssssuueeの更新 -- mmaasstteerrへのppuusshh -- プルリの立ち上がり を複数の手段で通知
IUUQ JTTVFߋ৽ JEPCBUB௨ .3ߋ৽ JEPCBUB௨ HJUQVTI JEPCBUB௨ HJUQVTI ճूܭ (SPXUI'PSFD
BTUඳը Πϕϯτछ ผఆ "NB[PO424 ΤϯΩϡʔ HJUQVTI J1IPOF௨ Ϛείοτ ௨ "NB[PO424 σΩϡʔ ผͷ 'MVFOUE
JEPCBUBJP グループチャットに流す
デスクトップマスコット通知
TPVSDF UZQFIUUQ QPSU CJOE CPEZ@TJ[F@MJNJUN LFFQBMJWF@UJNFPVUT TPVSDF NBUDIHJUMBC UZQFDPQZ
TUPSF UZQFSFXSJUF BEE@QSFGJYGJMUFSFE SVMF LFZPCKFDU@LJOE QBUUFSO? BQQFOE@UP@UBHUSVF MBTUUSVF SVMF SVMF LFZSFG QBUUFSO?SFGTaIFBETa BQQFOE@UP@UBHUSVF SVMF TUPSF NBUDI NBUDIGJMUFSFEHJUMBC NFSHF@SFRVFTU UZQFDPQZ TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQTJEPCBUBJPXFC@IPPL@VSM NFTTBHF@UFNQMBUF<':*>5JNFOFX SFDPSE<PCKFDU@BUUSJCVUFT> <DSFBUFE@BU> TUSGUJNF NEQ ͔ΒͷʠSFDPSE<PCKFDU@BUUSJCVUFT><UJUMF>ʠͷ݅ʹ ಈ͖͕͋ΔͶ TUPSF NBUDI NBUDIGJMUFSFEHJUMBC JTTVF UZQFDPQZ TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQTJEPCBUBJPXFC@IPPL@VSM NFTTBHF@UFNQMBUF<':*>5JNFOFX SFDPSE<PCKFDU@BUUSJCVUFT> <DSFBUFE@BU> TUSGUJNF NEQ ͔ΒͷʠSFDPSE<PCKFDU@BUUSJCVUFT><UJUMF>ʡͷ݅ʹ ಈ͖͕͋ΔͶ TUPSF NBUDI NBUDIGJMUFSFEHJUMBC NBTUFS UZQFDPQZ TUPSF UZQFSFXSJUF BEE@QSFGJYSFXSJUFE TUPSF TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQTJEPCBUBJPXFC@IPPL@VSM NFTTBHF@UFNQMBUFʲϦϦʔεࠂʳSFDPSE<VTFS@OBNF>͞Μ͕ʠ SFDPSE<DPNNJUT>NBQ\]D]D<NFTTBHF>TMJDF ? ^KPJO ʡΛϦϦʔε͢ΔΑ TUPSF TUPSF UZQFDVSM DVSM@DPNNBOEDVSM VSM@UFNQMBUFIUUQJNLBZBDDPNBQJ@VSM PQUJPOT@UFNQMBUFEBUBVSMFODPEFNFTTBHFʲϦϦʔεࠂʳSFDPSE<VTFS@OBNF>͞Μ TUPSF TUPSF UZQFTRT RVFVF@OBNFNBLBJ[PI TRT@FOEQPJOUTRTBQOPSUIFBTUBNB[POBXTDPN TUPSF NBUDI NBUDIGJMUFSFEHJUMBC UZQFOVMM NBUDI TPVSDF UZQFFYFD DPNNBOEFDIP LFZTVTFS@JE UBHSFXSJUFEGJMUFSFEHJUMBCNBLBJ[PINBTUFS SVO@JOUFSWBMT TPVSDF TPVSDF UZQFFYFD DPNNBOEFDIP LFZTVTFS@JE UBHSFXSJUFEGJMUFSFEHJUMBCMJHIUBETNBTUFS SVO@JOUFSWBMT TPVSDF TPVSDF UZQFFYFD DPNNBOEFDIP LFZTVTFS@JE UBHSFXSJUFEGJMUFSFEHJUMBCMJHIUBETBOBMZTZTNBTUFS SVO@JOUFSWBMT TPVSDF TPVSDF UZQFFYFD DPNNBOEFDIP LFZTVTFS@JE UBHSFXSJUFEGJMUFSFEHJUMBCQJYJWNBTUFS SVO@JOUFSWBMT TPVSDF TPVSDF UZQFFYFD DPNNBOEFDIP LFZTVTFS@JE UBHSFXSJUFEGJMUFSFEHJUMBCEJDQJYJWOFUNBTUFS SVO@JOUFSWBMT TPVSDF NBUDISFXSJUFEGJMUFSFEHJUMBC NBTUFS UZQFDPQZ TUPSF UZQFOVNFSJD@NPOJUPS VOJUNJOVUF PVUQVU@QFS@UBHZFT UBH@QSFGJYDPVOUFE BHHSFHBUFUBH NPOJUPS@LFZVTFS@JE TUPSF NBUDI NBUDIDPVOUFESFXSJUFEGJMUFSFEHJUMBC NBTUFS UZQFDPQZ TUPSF UZQFHSPXUIGPSFDBTU HGBQJ@VSMIUUQBQJ TFSWJDFHJUMBC UBH@GPSTFDUJPO OBNF@LFZTNBY SFNPWF@QSFGJYDPVOUFESFXSJUFEGJMUFSFEHJUMBC TUPSF NBUDI TPVSDF UZQFTRT TRT@FOEQPJOUTRTBQOPSUIFBTUBNB[POBXTDPN SFDFJWF@JOUFSWBM UBHNBLBJ[PITRT TPVSDF NBUDICBTI$@NBLBJ[PI UZQFDPQZ TUPSF UZQFTTUQ TTUQ@TFSWFS TTUQ@QPSU SFRVFTU@NFUIPE/05*': SFRVFTU@WFSTJPO4451 TFOEFSΫϥυి TDSJQU@UFNQMBUFa͋͋οɺ৽͍͠ϦϦʔεͬͯి͕ඈΜͰ͖ͨχϟϯaF TUPSF TUPSF UZQFTUEPVU TUPSF NBUDI hhttttppss::////ggiisstt..ggiitthhuubb..ccoomm//bbaasshh00CC77//6655ff88118899ff77eeee7700aaff99996611ff
ストリーム情報の 自動監視システム
-- 歌手自身が発信した画像 -- イラストレーション投稿 -- セルフポートレート投稿 の収集と自動通知
IUUQTUXJUUFSDPNZVGV@
5XJUUFS 4FBSDI 8FC͔Βը૾ औಘ ը૾ແ͠π Πʔτআڈ JEPCBUB௨ ϩʔΧϧϑ ΝΠϧอଘ UVNCMSߘ
None
TPVSDF UZQFUXJUUFSTFBSDI DPOTVNFS@LFZ999999999999999 DPOTVNFS@TFDSFU9999999999999999999 PBVUI@UPLFO99999999999999999999 PBVUI@UPLFO@TFDSFU9999999999999 VTFS@JEZVGV@ DPVOU SVO@JOUFSWBM SFTVMU@UZQFSFDFOU
NFEJBZFT MBUFTU@JE@GJMF UXFFGGZ@ZVGV@@TJODF@JE@GJMFQPT UBHUXFFGGZZVGV TPVSDF NBUDIUXFFGGZ UZQFDPQZ TUPSF UZQFOVMM TUPSF TUPSF UZQFSFXSJUF BEE@QSFGJYGJMUFSFE SVMF LFZNFEJB@VSM QBUUFSO? JHOPSFUSVF SVMF TUPSF NBUDI NBUDIGJMUFSFEUXFFGGZ UZQFSFXSJUFJNBHF SFNPWF@UBH@QSFGJYGJMUFSFE BEE@UBH@QSFGJYSFXSJUFE JNBHF@TPVSDF@LFZNFEJB@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFGBMTF NBUDI NBUDISFXSJUFEUXFFGGZZVGV UZQFDPQZ TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQTJEPCBUBJPVSM NFTTBHF@UFNQMBUF SFDPSE<NFEJB@VSM>SFDPSE<OBNF> ʮSFDPSE<UFYU>ʯ SFDPSE<UXFFU@VSM> TUPSF TUPSF UZQFUVNCMS DPOTVNFS@LFZ99999999999999999 DPOTVNFS@TFDSFU9999999999999999999 PBVUI@UPLFO9999999999999999 PBVUI@UPLFO@TFDSFU9999999999999999 UVNCMS@VSMUVNCMSDPN UBHT@UFNQMBUF SFDPSE<TDSFFO@OBNF> DBQUJPO@UFNQMBUFSFDPSE<UFYU> SFDPSE<UXFFU@VSM> MJOL@LFZUXFFU@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFEGBMTF QPTU@UZQFQJDUVSF TUPSF TUPSF UZQFJNBHFGJMF TBWF@EJSJNBHF GJMFOBNF@LFZJE FYUFOTJPOKQH JNBHF@LFZSBX@NFEJB CBTFFODPEFEGBMTF TUPSF NBUDI hhttttppss::////ggiisstt..ggiitthhuubb..ccoomm//bbaasshh00CC77//ff3344ddccaa00660044dddd773366990033dd99
FFlluueennttddでの バッチ業務の 設計と実装
まず基本を 思い出そう
入�力 演算 出力と、 記述言語
これがそのまま
入�力プラグイン フィルタ系のプラグイン 出力プラグイン 設定ファイル
入�力 演算 出力と、 記述言語
ポーリング 待ち受け
hhttttpp ttaaiill ttwwiitttteerrsseeaarrcchh などなど
TPVSDF UZQFUXJUUFSTFBSDI DPOTVNFS@LFZ99999999 DPOTVNFS@TFDSFU99999999 PBVUI@UPLFO99999999 PBVUI@UPLFO@TFDSFU99999999 VTFS@JEZVGV@ DPVOU SVO@JOUFSWBM SFTVMU@UZQFSFDFOU
NFEJBZFT MBUFTU@JE@pMFQBUIUPQPT@pMF UBHUXFFGGZZVGV@ TPVSDF
入�力 演算 出力と、 記述言語
データの整形 不要データの排除 などなど
NBUDIUXFFGGZ UZQFSFXSJUF BEE@QSFpYpMUFSFE SVMF LFZNFEJB@VSM QBUUFSO? JHOPSFUSVF SVMF NBUDI
NBUDIpMUFSFEUXFFGGZ UZQFSFXSJUFJNBHF SFNPWF@QSFpYpMUFSFE BEE@QSFpYSFXSJUFE JNBHF@TPVSDF@LFZNFEJB@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFGBMTF NBUDI
入�力 演算 出力と、 記述言語
ttuummbbllrr iiddoobbaattaa ffiillee ss33 その他たくさん!!
NBUDISFXSJUFEUXFFGGZ UZQFDPQZ TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQJEPCBUBXFCIPPL NFTTBHF@UFNQMBUFʮSFDPSE<GPP>ʯ TUPSF TUPSF UZQFUVNCMS
DPOTVNFS@LFZ999999 DPOTVNFS@TFDSFU999999 PBVUI@UPLFO999999 PBVUI@UPLFO@TFDSFU99999999 UBHT@UFNQMBUFSFDPSE<TDSFFO@OBNF> DBQUJPO@UFNQMBUFSFDPSE<CBS> MJOL@LFZUXFFU@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFEGBMTF QPTU@UZQFQJDUVSF TUPSF NBUDI
プラグインの 組み合わせ
単機能なしくみの 組み合わせ
TPVSDF UZQFUXJUUFSTFBSDI DPOTVNFS@LFZ999999999999999 DPOTVNFS@TFDSFU9999999999999999999 PBVUI@UPLFO99999999999999999999 PBVUI@UPLFO@TFDSFU9999999999999 VTFS@JEZVGV@ DPVOU SVO@JOUFSWBM SFTVMU@UZQFSFDFOU
NFEJBZFT MBUFTU@JE@GJMF UXFFGGZ@ZVGV@@TJODF@JE@GJMFQPT UBHUXFFGGZZVGV TPVSDF NBUDIUXFFGGZ UZQFDPQZ TUPSF UZQFOVMM TUPSF TUPSF UZQFSFXSJUF BEE@QSFGJYGJMUFSFE SVMF LFZNFEJB@VSM QBUUFSO? JHOPSFUSVF SVMF TUPSF NBUDI NBUDIGJMUFSFEUXFFGGZ UZQFSFXSJUFJNBHF SFNPWF@UBH@QSFGJYGJMUFSFE BEE@UBH@QSFGJYSFXSJUFE JNBHF@TPVSDF@LFZNFEJB@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFGBMTF NBUDI NBUDISFXSJUFEUXFFGGZZVGV UZQFDPQZ TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQTJEPCBUBJPVSM NFTTBHF@UFNQMBUF SFDPSE<NFEJB@VSM>SFDPSE<OBNF> ʮSFDPSE<UFYU>ʯ SFDPSE<UXFFU@VSM> TUPSF TUPSF UZQFUVNCMS DPOTVNFS@LFZ99999999999999999 DPOTVNFS@TFDSFU9999999999999999999 PBVUI@UPLFO9999999999999999 PBVUI@UPLFO@TFDSFU9999999999999999 UVNCMS@VSMUVNCMSDPN UBHT@UFNQMBUF SFDPSE<TDSFFO@OBNF> DBQUJPO@UFNQMBUFSFDPSE<UFYU> SFDPSE<UXFFU@VSM> MJOL@LFZUXFFU@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFEGBMTF QPTU@UZQFQJDUVSF TUPSF TUPSF UZQFJNBHFGJMF TBWF@EJSJNBHF GJMFOBNF@LFZJE FYUFOTJPOKQH JNBHF@LFZSBX@NFEJB CBTFFODPEFEGBMTF TUPSF NBUDI 変更に強い 業務処理を実装
IUUQqVFOUEPSHQMVHJO
欲しいのがない?
IUUQEIBUFOBOFKQUBHPNPSJT
ggeemmをつくろう
スレッド内でフェッチ処理を 適当な間隔で動かすだけ IUUQTHJUIVCDPNCBTI$qVFOUQMVHJOSVCZ@FWBMCMPCNBTUFSMJCqVFOUQMVHJOJO@SVCZ@FWBMSC
お約束的実装と rreeccoorrddハッシュを いじるだけ IUUQTHJUIVCDPNCBTI$qVFOUQMVHJOSFXSJUFJNBHFCMPCNBTUFSMJCqVFOUQMVHJOPVU@SFXSJUFJNBHFSC
IUUQTHJUIVCDPNCBTI$qVFOUQMVHJOJNBHFpMFCMPCNBTUFSMJCqVFOUQMVHJOPVU@JNBHFpMFSC
IUUQEPDTqVFOUEPSHKBBSUJDMFTJO@FYFD
スケーリング対応 フェイルオーバー対応
ファイル経由 ネットワーク経由 複数FFlluueennttddを連動
まとめ
l ぎょう‐む 〔ゲフ‐〕 【業務】 1 職業や事業などに関して、継続して行う仕事。 2 法律で、社会生活において反復・継続して行う活動の こと。職業上の活動に限らず、娯楽のための個人的な行 為も含まれるが、家事や育児など家庭生活上の活動は含
まれない。→業務上過失 デジタル大辞泉(小学館) hhttttpp::////kkoottoobbaannkk..jjpp//wwoorrdd//業務
基本に忠実なしかも スケール可能バッチ 業務フレームワーク
IUUQqVFOUEPSH
FFlluueennttddとRRuubbyyで たのしく正しく 業務を遂行