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
CloudSearch nanapi use case
Search
violetyk
October 17, 2014
Technology
3
1.9k
CloudSearch nanapi use case
violetyk
October 17, 2014
Tweet
Share
More Decks by violetyk
See All by violetyk
Graid
violetyk
2
6.7k
Other Decks in Technology
See All in Technology
普段有償でサポート業務をしているCSAが技術知見を無料で公開する理由
07jp27
1
610
コンテナセキュリティの基本と脅威への対策
kyohmizu
3
610
0→1開発における技術選定において一番大切なこと
bicstone
1
310
〜小さく始めて大きく育てる〜データ分析基盤の開発から活用まで
kniino
0
1.7k
Four keys改善の取り組み事例紹介
sansantech
PRO
2
220
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
1
630
インシデントレスポンスのライフサイクルを廻すポイントってなに / Pinpoints of Incidentresponse Lifecycle for Operation
sakaitakeshi
0
280
The CloudCompare project by Dr. Daniel Girardeau-Montaut
kentaitakura
0
480
SPI原点回帰論:事業課題とFour Keysの結節点を見出す実践的ソフトウェアプロセス改善 / DevOpsDays Tokyo 2024
visional_engineering_and_design
4
940
ユーザーストーリーのレビューを自動化したみたの
bun913
1
230
「共通基盤」を超えよ! 今、Platform Engineeringに取り組むべき理由
jacopen
24
5.6k
Kubernetesでアプリの安定稼働と高頻度のアップデートを両立するためのプラクティス / Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
10
2.9k
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
GraphQLの誤解/rethinking-graphql
sonatard
49
9.2k
How to train your dragon (web standard)
notwaldorf
71
5.1k
Why Our Code Smells
bkeepers
PRO
330
56k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.2k
Visualization
eitanlees
135
14k
Designing for Performance
lara
601
67k
YesSQL, Process and Tooling at Scale
rocio
161
13k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
Atom: Resistance is Futile
akmur
258
25k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
5
1.5k
Designing Experiences People Love
moore
135
23k
Transcript
CloudSearch nanapiͷࣄྫհ גࣜձࣾnanapiɹՃլ୩ ༞ฏ
ࣗݾհ • Ճլ୩ ༞ฏɹ • גࣜձࣾnanapi • nanapi.jpνʔϜɹαʔόαΠυΤϯδχΞ • Vim͕͖
violetyk @yuhei_kagaya
αʔϏεհɹnanapi • ੜ׆ͷܙ͕ू·ΔαΠτ • http://nanapi.jp • ༷ʑͳϋπʔΛఏڙ͢Δ αʔϏε • ݄ؒ2500ສUU
• 10ສهࣄ
αʔϏεհɹnanapiϫʔΫε • ʮnanapiʯϥΠλʔͷҝ ͷϥΠςΟϯάελδΦ • https://works.nanapi.jp
αʔϏεհɹanswer • ଈϨείϛϡχέʔγϣϯΞ ϓϦ • http://answer.jp • 5Ҏͷίϝϯτ͕84%Ҏ্ • 140ສίϝϯτ
• iOS൛ 201312݄ϦϦʔε • Android൛20145݄ϦϦʔε
αʔϏεհɹIGNITION • ίϯηϓτʮຊͱੈ քΛܨ͙ʯϝσΟΞ • http://ignition.co • ຊͷάϩʔόϧԽΛՃ ͢ΔͨΊʹɺຊͷ ใΛӳޠͰੈքʹൃ৴
• Χϧνϟʔ͔ΒϏδωε ·Ͱ෯͘հ
nanapiͰ CloudSearchΛ͍ͬͯ·͢
ࠓ͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ
ࠓ͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ
AWSͷҠߦ • 20147݄ɹΠϯϑϥΛAWSશͯҠߦ • ը૾ΦϦδϯαʔόɹˠɹS3 • MemcacheɺRedis ɹˠɹElastiCache • MySQLɹɹɹɹɹ
ɹˠɹRDS • શจݕࡧɹɹɹɹ ɹˠɹCloudSearch
nanapiͷݕࡧγεςϜ Senna ↓ mroonga ↓ CloudSearch
CloudSearchͷӡ༻ • 100,000 υΩϡϝϯτ • 1υϝΠϯ • search.m1.small
ࠓ͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ
nanapiͷهࣄݕࡧ
ʮӡಈձʯ×ʮྉཧϨγϐʯ
ʮӡಈձʯ×ʮΧϝϥɾࣸਅʯ
ʮӡಈձʯ×ʮεϙʔπɾΞτυΞʯ
ͱ͍͍ͯײ͡ʂ
ࠓ͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ
CloudSearchೖΕΔσʔλ • ݕࡧ༻ • ιʔτ༻ • දࣔ༻
ݕࡧ༻ • هࣄͷλΠτϧɺຊจ • ΧςΰϦ໊ͷ֊ߏ
ιʔτ༻ • PV • هࣄͷࣥච࣌
දࣔ༻ • هࣄͷΞτϥΠϯ • ஶऀใ • هࣄͷΩϟονը૾ͷURL
σʔλͷܕ
֤ςʔϒϧߋ৽࣌ʹίʔϧόοΫ هࣄ ஶऀ ΧςΰϦ ݕࡧσʔλ afterSave()
CloudSearchอଘ هࣄ ஶऀ ΧςΰϦ ݕࡧσʔλ afterSave() CloudSearch
ࠓ͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ
CakePHP + CloudSearch • CakePHP͔ΒCloudSearchΛૢ࡞͢ΔϓϥάΠϯ • https://github.com/nanapi/cakephp-cloud-search • AWS SDK
for PHPΛϥοϓͨ͠Datasource • CakePHPͷModelͱͯ͠ѻ͏͜ͱ͕Ͱ͖Δ • Modelͱಉ͡ϝιουɺfind() / save()
อଘ // save $save_data = $this->MyModel->create(); $save_data = [ 'id'
=> '123', 'fields' => [ 'subject' => 'ژͰͷ͓͢͢Ίͷ͓࢈' 'outline' => ['ژͷ͓࢈', '࣮ࡍʹങͬͨ͜ͱͷ͋Δ͓࢈', 'ژͷ͓࢈ʹ͍ͭͯ ͷΞυόΠε'] ] ]; $this->MyModel->save($save_data);
ܕUTC ! CakeTime::i18nFormat($created, "%FT%TZ", false, new DateTimeZone('UTC'));
ݕࡧ // find $result = $this->MyModel->find('all', [ 'conditions' => [
'query' => 'ژ' ], 'fields' => [ 'id', 'subject', '_score' ] ]);
আ // delete $this->MyModel->delete(123); ! $this->MyModel->deleteAll([ 'MyModel.id' => ['111', '222',
'333'], ]);
؆୯ɺγϯϓϧʂ
ࠓ͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ
CloudSearchͷϝϦοτ • σϑΥϧτͷ··Ͱ͍͍ײ͡ʹݕࡧͰ͖Δ • ؆୯ʹຊޠશจݕࡧγεςϜΛ࡞ΕΔ • ͱʹָ͔͘
CloudSearchͰΒ͘Β͘ݕࡧʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠