Kubernetes・GCPを使った チャットボットサービスの 機械学習部分の話

8b22a5740ffd1128cf5037977da337d6?s=47 t10471
March 08, 2018

Kubernetes・GCPを使った チャットボットサービスの 機械学習部分の話

8b22a5740ffd1128cf5037977da337d6?s=128

t10471

March 08, 2018
Tweet

Transcript

  1. KubernetesɾGCPΛ࢖ͬͨ νϟοτϘοταʔϏεͷ ػցֶश෦෼ͷ࿩ kubernetesษڧձ @t10471

  2. ౰νϟοτϘοταʔϏεͱ͸ʁ ࡾਓ฻Β͠ʹ͓͢͢Ίͷిؾϓϥϯ͸ʁ XXXిؾͷYYYϓϥϯ͕͓͢͢ΊͰ͢ɻ ճ౴ʹຬ଍ͨ͠৔߹͸͜ΕͰऴྃ ຬ଍͠ͳ͍৔߹ɺΦϖϨʔλʔʹ੾Γସ͑Δ ΦϖϨʔλʔ͸Ϙοτͱͷ΍ΓऔΓΛҾ͖ܧ͛Δ ΦϖϨʔλʔͷZZZʹ੾ΓସΘΓ·ͨ͠… ΦϖϨʔλʔʹ੾Γସ͑Δ(Ϙλϯ) ೲಘ͠·ͨ͠ʂ ϘοτͱਓͷϋΠϒϦου

  3. ࢓૊Έ(ͬ͘͟Γ) • σʔλαΠΤϯςΟετ͕ػցֶशϞσϧΛ࡞੒ͦ͠ΕΛೖΕͨpod ΛσϓϩΠ • FAQઃܭऀ͸૝ఆ࣭໰ͱճ౴ͳͲΛCSVͰΞοϓϩʔυ • CSVΛύʔεͯ͠૝ఆ࣭໰Λ෼ࢄදݱʹม׵ͨ͠σʔλΛ࡞੒ • ࡞੒ͨ͠σʔλΛpodʹ഑෍

    • ࣭໰ऀͷ࣭໰Λ෼ࢄදݱʹม׵ͨ͠΋ͷͱɺ૝ఆ࣭໰ͷશσʔλΛ ػցֶशΛ࢖ͬͯۙ͞ܭࢉ͠ɺείΞ͕ߴ͍΋ͷΛฦ͢
  4. ໰୊఺ɾରࡦ • CSVͷม׵ॲཧʹ͕͔͔࣌ؒΔ • k8sͷJobΛ࢖༻ • ϘοτAPI͸PythonͰग़དྷ͍ͯͯɺຖճɺશσʔλ͕ඞཁ • ΦϯϝϞϦͰσʔλΛอଘ͢Δ͜ͱͰߴ଎Խ •

    ม׵σʔλΛ഑෍͢Δઌͷαʔό͕Կ୆͋Δ͔ෆ໌ • Cloud PubSubΛ࢖༻ͯ͠ߋ৽Λ௨஌
  5. ࢓૊Έ(k8sͷNode) • ϑϩϯτϊʔυNode • νϟοτը໘ Pod (JavaScript) • ؅ཧը໘ Pod

    (TypeScript) • αʔόNode • όοΫΤϯυAPI Pod (Scala) • Job؂ࢹ API Pod (Go) • ػցֶशNode • ػցֶशAPI Pod (Python) • Job༻Node • CSVม׵ Job (Python) • CSVม׵ Job ؂ࢹ Job (Go)
  6. ࢓૊Έ(NodeҎ֎) • GCS • ม׵σʔλΛอଘ • Cloud SQL • JobͷεςʔλεΛอଘ

    • Cloud Datastore • ม׵σʔλͷϝλ৘ใΛอଘ • Cloud PubSub • ม׵σʔλͷߋ৽Λ఻͑Δ
  7. ࢓૊Έ(APIɾJob) • CSVΞοϓAPI (Scala) • CSVม׵ॲཧAPI (Python) • CSVߋ৽API (Python)

    • CSVม׵ॲཧJobىಈAPI(Go) • Ϙοτ API (Python) • σʔλϦϩʔυAPI (Python) • CSVม׵ॲཧJob (Python) • CSVม׵ॲཧJobΛ؂ࢹ͢ΔJob(Go)
  8. ࢓૊Έ(ৄࡉ1) • ؅ཧը໘͕CSVΞοϓAPI(Scala)Λͨͨ͘ • CSVΞοϓAPI͕CSVม׵ॲཧAPI(Python)Λͨͨ͘ • CSVม׵ॲཧAPI͸CSVͷόϦσʔγϣϯΛߦ͍ɺOKͳΒCSVม׵ॲཧ Job(k8sͷJob)Λىಈ͢Δ • CSVΞοϓAPI͸CSVม׵ॲཧAPI͕OKͩͬͨΒɺม׵ॲཧ؂ࢹAPI(Go)Λ

    ͨͨ͘(Ҿ਺ʹJobͷid౳Λઃఆ) • ม׵ॲཧ؂ࢹAPI͸CSVม׵ॲཧJobΛ؂ࢹ͢ΔJobΛىಈ͢Δ • CSVม׵ॲཧJobΛ؂ࢹ͢ΔJob͸Jobͷεςʔλε(Job࡞੒தɾॲཧத)Λ ؅ཧը໘ʹ෼͔ΔΑ͏ʹߋ৽͢Δ
  9. ࢓૊Έ(ৄࡉ2) • CSVม׵ॲཧJob͸ม׵ॲཧ͕ऴΘͬͨΒɺGCSʹσʔλΛΞοϓ ͠ɺPubSubͰσʔλ͕ߋ৽͞Εͨ͜ͱΛPublish͠ɺऴྃ͢Δ • Ϙοτ API Pod(Python)͸ىಈ࣌ʹSubscribeͷϧʔϓΛߦ͏ϓϩη εΛϑΥʔΫ͍ͯͯ͠͠ΔͷͰɺϝοηʔδΛड͚औͬͨΒɺGCS ͔ΒσʔλΛऔಘ͢Δ

    • CSVม׵ॲཧJobΛ؂ࢹ͢ΔJob͸CSVม׵ॲཧJob͕ऴΘͬͨͷΛ ֬ೝͨ͠Βɺclient-goΛ࢖֤ͬͯPodͷσʔλϦϩʔυAPIΛͨͨ ͖ɺશPod͕ϦϩʔυΛऴ͑ͨΒɺεςʔλεΛ׬ྃʹมߋ͠ऴྃ ͢Δ
  10. ਏ͔ͬͨ఺ • Pythonਏ͍… • Bot API͸ϦΫΤετຖʹશσʔλ(1ςφϯτ100MҐ)͕ඞཁͳͷ ͰɺͦΕΛຖճऔಘ͢Δͷ͸ແཧ͖͍ͭͷͰΦϯϝϞϦʹอଘ͠ ͨ • ΦϯϝϞϦʹอଘͨ͠Βɺ૖େͳ࢓૊Έʹͳͬͨ…

    • PythonͩͱϚϧνεϨου͸GIL͕ൃੜ͢ΔͷͰɺϚϧνϓϩηε ʹͨ͠ • αϒϓϩηεͷSignalͷϋϯυϦϯά͕໘౗…
  11. ྑ͔ͬͨ఺ • Kubernetes͸ศར! • εέʔϦϯά͕؆୯ɺGood! • GCP΋ͦͦ͜͜ศར! • AWSΑΓػೳ͸ྼΔ͚ͲɺେମΑ͍LBͱGKE͕Good! •

    client-go͕௒ศར! • ྺ࢙తʹGo෦෼͸࠷ޙʹ։ൃ • PythonͰk8sͷAPIΛ͍ͨͨͯJobΛ࡞੒͢Δͷ͸ϋοΫతͳײͩͬͨ͡ͷ ͕ɺclient-goΛ࢖͏ͱશ෦ϥοϓ͞Εָ͍ͯͯ • Job༻yaml૬౰ΛgoͰهड़ग़དྷΔͷͰίϯύΠϧνΣοΫ͕ग़དྷΔ
  12. ͋Γ͕ͱ͏͍͟͝ ·ͨ͠