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

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

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for nnao45 nnao45
November 28, 2019

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

Avatar for nnao45

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ݸ໨ʯ