Upgrade to Pro — share decks privately, control downloads, hide ads and more …

まだ大きくない僕たちに必要なCLoud Nativeを求めて

nnao45
November 28, 2019

まだ大きくない僕たちに必要なCLoud Nativeを求めて

nnao45

November 28, 2019
Tweet

More Decks by nnao45

Other Decks in Technology

Transcript

  1. @nnao45 株式会社サイバーエージェント サーバサイドとインフラ屋さん 最近は広告を作ってると思ったら ガチャガチャを作っていた人 * * * ネットワーク→クラウド→ *

    Scalaで関数型プログラミングに触れて無事発狂\(^o^)/ * 生粋のVtuberオタク。ここを掘っても誰も得しない。 * そういえばQicooを全部作り直しました。 https://github.com/nnao45 AI事業部リテールテックDiv所属 * Kotlinは最強の言語。 *
  2. CLOUD NATIVEͱ͸ʂʂ • ج൫͸Ϋϥ΢υΛલఏͱ͢Δ • CI/CDɺDXϑΝʔετͷ࣮ݱ • ϚΠΫϩαʔϏε • αʔϏεͷঢ়ଶΛॊೈʹɺݡ͘؅ཧ͢Δ

    ؆ܿʹݴ͏ͱʮৗଶతʹมԽʹڧ͍ΞʔΩςΫνϟʯ ↑Googleさんが言ってました https://cloud.google.com/blog/products/application-development/5-principles-for-cloud-native-architecture-what-it-is-and-how-to-master-it
  3. Gitのシェル芸で実現してます $ BEFORE_MERGED_COMMIT_HASH=$(git log -1 --pretty=format:"%P" | awk '{print $1}')

    $ git log --pretty="%H %s" ${BEFORE_MERGED_COMMIT_HASH}...${CIRCLE_SHA1} --no-color | sed "s@^@https://github.com/xxxx/yyyy/commit/@g" > tee /tmp/commit_list.md CI/CDɺDXϑΝʔετͷ࣮ݱ
  4. ϚΠΫϩαʔϏε ଟ૬ੑʢϙϦϞʔϑΟζϜʣ class Animal class Dog extends Animal class Any

    class Cat extends Animal class Poodle exnteds Dog class Munchkan exnteds Cat
  5. ϚΠΫϩαʔϏε ଟ૬ੑʢϙϦϞʔϑΟζϜʣ Deployment A Deployment B Deployment C Deployment D

    App A App A App B App B WithLog WithLog DB Ver1.0 Ver1.0 Ver1.0 Ver0.9
  6. αʔόαΠυ͕ΫϦʔϯΞʔΩςΫνϟ ͩͱϚΠΫϩαʔϏεԽ͠΍͍ͧ͢ QuestionController QuestionService QuestionAggrRepo ReplyRepo LikeCountRepo Questi on Event

    Progr am Reply Like 縦にサービスを区切るのが簡単だよー Adapter Adapter Adapter Adapter Adapter
  7. αʔόαΠυ͕ΫϦʔϯΞʔΩςΫνϟ ͩͱϚΠΫϩαʔϏεԽ͠΍͍ͧ͢ QuestionController QuestionService QuestionAggrRepo ReplyRepo LikeCountRepo Questi on Event

    Progr am Reply Like QuestionAttributeController QuestionAttributeService Service(Usecase層)より下は実装が変わっていない! Adapter Adapter Adapter Adapter Adapter
  8. αʔόαΠυ͕ΫϦʔϯΞʔΩςΫνϟ ͩͱϚΠΫϩαʔϏεԽ͠΍͍ͧ͢ QuestionController QuestionService QuestionAggrRepo OtherReplyRepo LikeCountRepo Questi on Event

    Progr am Reply Like QuestionAttributeController QuestionAttributeService 一部のDBや接続方式が変わっても他の層に支障はない Adapter Adapter Adapter OtherAdapter Adapter
  9. αʔϏεͷঢ়ଶΛॊೈʹɺ ݡ͘؅ཧ͢Δ Ͱ΋΋͏ྑ͘ͳ͍Ͱ͔͢͜͏ݴ͏΍ΓऔΓʁ •͋Ε͜ͷplaybookͬͯ൓ө͚ͨͬ͠ʁͱΓ·ίϝϯτΞ΢τɾɾɾ •ߏ੒؅ཧϑΝΠϧ̍ຕॻؒ͘ʹDB100୆͘Β͍ϙνϙνཱͯͯͯΔ ྡͷਓݟͯ৭ʑߟ͑Δ •ഁ յ ͠ ͳ

    ͕ Β ਐ·ͳ͍ݶΓߋ৽Ͱ͖ͳ͍pip install… •͑ʁ͋͋ͦͷϩά͸/var/log഑Լ͡Όͳͯ͘/optͷԼͶ •͜ͷຖ೔ඈΜͰ͘ΔϝʔϧͬͯͲ͜ͷαʔόͷcronʁ •୭΋஌Βͳ͍ΞϓϦͷϦϦʔε •300୆ͷαʔόͷূ໌ॻߋ৽Ͱ̍୆ͣͭײँͷ࠶ىಈ
  10. αʔϏεͷঢ়ଶΛॊೈʹɺ ݡ͘؅ཧ͢Δ App App App App ॲཧB ॲཧA ॲཧC ZK

    ։࢝ใࠂˠऴྃใࠂ ୅໾ΛΞαΠϯ͢Δ ྫʣ౷ܭॲཧ
  11. ࠷ۙCLOUD NATIVEΛ໨ࢦ ͯ͠ಋೖͨ͠ྫ • プロダクト:Qicoo • 主な構成:コンピュートとしてGKE。DBはMySQL、 Redis。SPAで、めっちゃ簡単。サーバサイドはKotlinで フロントはReact/TS •

    感想:サーバサイドはフルスクラッチで1週間かかったけ ど、全構築は1人で1日で終わるってクラウドぱないね ʮ3ݸ໨ʯ