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

Modular Architecture 시작하기

Avatar for Kanghoon Kanghoon
November 14, 2022

Modular Architecture 시작하기

SyncSwift 2022 세션

Avatar for Kanghoon

Kanghoon

November 14, 2022
Tweet

More Decks by Kanghoon

Other Decks in Technology

Transcript

  1. Contents 1. ݽٕ ঌইࠁӝ 2. ৵ ݽٕਸ ܻ࠙ೞաਃ? 3. ݽٕਸ

    যڌѱ ܻ࠙ೞաਃ? 4. ݽٕച द ݅աח ޙઁٜ 5. ݃ޖܻ
  2. ݽٕ ঌইࠁӝ Modular Architecture? Modular programming is a software design

    technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality. - wikipedia -
  3. ݽٕ ঌইࠁӝ Modular Architecture? ݽٕഋ ೐۽Ӓې߁਷ ೐۽Ӓ۔੄ ӝמਸ ة݀੸੉Ҋ Ү୓

    оמೠ ݽٕ۽ ܻ࠙ೞח Ѫਸ ъઑೞח ࣗ೐౟ਝয ࢸ҅ ӝߨ
  4. ݽٕ ঌইࠁӝ ݽٕ੉ۆ? জীࢲ ੤ࢎਊೞӝ ਤೠ ௏٘ ؕযܻ • ৈӝࢲח

    Library, Framework, Package ܳ ੄޷ ৘) ҅੿ ݽٕ (Account) • ҅੿ ੿ࠁ, ۽Ӓੋ, ۽Ӓইਓ ١ ҅੿ ҙ۲ ௏٘о ݽৈ੓ח Ҕ
  5. ৵ ݽٕਸ ܻ࠙ೞաਃ? 1. ࢤ࢑ࢿ ૐ؀ • ࠽٘ ࣘب ѐࢶ

    • ޖѢ਍ ݽٕਸ Mock (ݽઑಿ) ਵ۽ ߄Բয ѐߊ оמ • ઺ҊѢې, ழޭפ౭ ١ ӝמ߹ ࢠ೒জ ഝਊ оמ • ੹୓ ೐۽ં౟ ࠽٘ X
  6. ৵ ݽٕਸ ܻ࠙ೞաਃ? 1. ࢤ࢑ࢿ ૐ؀ WWDC : Building Faster

    in Xcode ݽٕਸ ܻ࠙ೞݶ ߽۳ ࠽٘੄ ੢੼ਸ ࢓ܾ ࣻ ੓׮
  7. ৵ ݽٕਸ ܻ࠙ೞաਃ? 2. ࠂ੟ب ծ୶ӝ • ೐۽ં౟ ࠂ੟بܳ ծ୺

    • زੌೠ ௏٘ܳ ઴੉Ҋ, ё୓੄ ਽૘بܳ ֫੐ • ݽٕਸ ܻ࠙೧ ௏٘р ੄ઓبܳ ծ୺ • Ѻܻػ ജ҃ (ܻ࠙ػ ݽٕ)ীࢲ ة݀੸ਵ۽ ѐߊ оמ
  8. ݽٕਸ যڌѱ ܻ࠙ೞաਃ ݽٕ ҅க ҳઑ Feature-level E.g. Transfer Bank

    Page, Deposit Page Domain-level E.g. Transfer, Bank, Account Core-level E.g. Network, Experiment, Analytics Shared-level E.g. Common UI, Logging, Utils ੤ࢎਊ ҙ੼ী ٮܲ ܻ࠙ بݫੋ ҙ੼ী ٮܲ ܻ࠙
  9. ݽٕਸ যڌѱ ܻ࠙ೞաਃ ݽٕ ҅க ҳઑ ੗઱ ߸ೞ૑ ঋח ৔৉

    ੗઱ ߸ೞח ৔৉ Feature-level E.g. Transfer Bank Page, Deposit Page Domain-level E.g. Transfer, Bank, Account Core-level E.g. Network, Experiment, Analytics Shared-level E.g. Common UI, Logging, Utils
  10. ݽٕਸ যڌѱ ܻ࠙ೞաਃ ݽٕ ҅க ҳઑ ইې ҅க੄ ݽٕ਷ ਤ

    ҅க੄ ݽٕਸ ঌ ࣻ হ਺ Feature-level E.g. Transfer Bank Page, Deposit Page Domain-level E.g. Transfer, Bank, Account Core-level E.g. Network, Experiment, Analytics Shared-level E.g. Common UI, Logging, Utils
  11. ݽٕച द ݅աח ޙઁٜ ࣽജ ଵઑ ޙઁ FleaMarket Module Pro

    fi le Module • ݽٕ਷ ࢲ۽ܳ ଵઑೡ ࣻ হ਺ • ݽٕ ܻ࠙ܳ द੘ೞݶ ݆਷ ন੄ ࣽജ ଵઑܳ ݃઱ೞѱ ؽ ৘द) п Feature ݽٕр੄ ۄ਋౴੉ ೙ਃೠ ࢚ട
  12. ݽٕച द ݅աח ޙઁٜ ࣽജ ଵઑ ޙઁ FleaMarket Module Pro

    fi le Module Routes Module জ ੹୓੄ ۄ਋౴ਸ ׸׼ೞח ݽٕਸ ٜ݅যࢲ ೧Ѿ੉ оמೞ૑݅ ੉ח ۄ਋౴ ݽٕী ؀ೠ ੄ઓਸ ъೞѱ ٜ݅ ࣻ ੓਺
  13. ݽٕച द ݅աח ޙઁٜ ࣽജ ଵઑ ޙઁ FleaMarket Module Pro

    fi le Module • ݽٕਸ ੋఠಕ੉झ ݽٕҗ ҳഅ ݽٕ۽ ܻ࠙ೠ׮ • п ӏഅ ݽٕ਷ ࢲ۽੄ ੋఠಕ੉झ ݽٕਸ ଵઑೠ׮ FleaMarket Interface Module Pro fi le Interface Module
  14. ݽٕച द ݅աח ޙઁٜ ੋఠಕ੉झ ݽٕ ഝਊೞӝ App Account FleaMarket

    Interface Account Interface 1. App ী ੓ח ҳഅ୓ח թӝҊ FleaMarket Interface ݽٕ݅ ݢ੷ ܻ࠙ 2. FleaMarket Interface ݽٕਸ ੉ਊ೧ Account ݽٕਸ ܻ࠙ Feature Modules App Module
  15. ݽٕച द ݅աח ޙઁٜ ੄ઓࢿ ߑೱ ޙઁ Networking Module OAuth

    Module • Networking ݽٕ੉ OAuth ݽٕী ੄ઓ • ୶࢚ചػ ݽٕ੉ ҳഅ ݽٕী ੄ઓ • ݽٕ੄ ҙ҅ܳ ૒ҙ੸ਵ۽ ੉೧ೞӝ য۵׮
  16. ݽٕച द ݅աח ޙઁٜ ੄ઓࢿ ߑೱ ޙઁ Networking Module OAuth

    Module • ੄ઓࢿਸ ৉੹दெ ޙઁܳ ೧Ѿ Networking OAuthInterceptor RequestInterceptor
  17. ݽٕਸ যڌѱ ܻ࠙ೞաਃ ׮द جই৬ࢲ য়ט਷ ف ҅கী ૘઺ Feature-level

    E.g. Transfer Bank Page, Deposit Page Domain-level E.g. Transfer, Bank, Account Core-level E.g. Network, Experiment, Analytics Shared-level E.g. Common UI, Logging, Utils
  18. ݽٕਸ যڌѱ ܻ࠙ೞաਃ Shared Level Sources Tests Array+Safe.swift Array+SafeTests.swift •

    ݽٚ ҅கীࢲ ࢎਊ оמೠ ݽٕ • ੄ઓࢿ হ੉ ױةਵ۽ ࢎਊ оמೠ ௏٘ Shared-level E.g. Common UI, Logging, Utils
  19. ݽٕਸ যڌѱ ܻ࠙ೞաਃ Core Level Sources Testing Interface Tests Networking.swift

    NetworkingImpl.swift NetworkingMock.swift NetworkingTests.swift Core-level E.g. Network, Experiment, Analytics • ੋఠಕ੉झ ݽٕҗ ҳഅ୓ ݽٕਸ ҳ࠙ • Test Double ਸ ҳࢿೠ Testing ݽٕ੉ ઓ੤
  20. ݃ޖܻ ݽٕ ܻ࠙ ࣽࢲ 1. ؀࢚ ௏٘ ࢶ੿ 2. ؀࢚

    ௏٘੄ ੄ઓࢿ ޙઁܳ ೧Ѿ 3. ݽٕਸ ੋఠಕ੉झ / ҳഅ ݽٕ ಕয۽ ٜ݅যঠ ೞח૑ Ѿ੿ 4. ੄ઓࢿ ઱ੑ ҳઑ ٜ݅ӝ 5. न܉ оמೡ ੿ب੄ ਬ׫ పझ౟ ୶о 6. ݽٕਸ ٜ݅Ҋ ௏٘ܳ ੉੹
  21. ݃ޖܻ ૑Ә ݽٕചܳ द੘ೞݶ જ਷ ੉ਬ • ҕా ۽૒ࠗఠ ݽٕ

    ܻ࠙ܳ द੘ೞ੗ (Shared, Core ҅க) • ݽٕਸ ܻ࠙ೞחؘ ܻࣗझо ݆੉ ٜ૑ ঋח׮ • ݽٕചח द੘੉ ןਸࣻ۾ Ҋాझۣ׮ • ݽٕ ҅க ҳઑܳ ా೧ ইఃఫ୊ ޙઁܳ ࢎ੹ী ߊѼ оמೞ׮ • ௏٘р ੄ઓبܳ ծ୾ ࠂ੟بܳ ծ୹ ࣻ ੓׮ • పझ౟ೞӝ જ਷ ҳઑܳ ٜ݅ ࣻ ੓׮
  22. ݃ޖܻ ୶о۽ ೟ण೧ঠೡ Ѫٜ • Xcode ীࢲ ࠽٘о प೯ؼ ٸ

    যڃ ੌ੉ ੌযաח૑ ঌইࠁӝ • Swift Package, Dynamic Framework, Static Library ର੉ܳ ঌӝ • ੄ઓࢿ ৉੹, ੄ઓࢿ ઱ੑ ੉೧ೞӝ • ਬ׫ పझ౟ ੘ࢿೞӝ
  23. ݃ޖܻ ୶о۽ ೟ण೧ঠೡ Ѫٜ • Tuist / XcodeGen • Swinject

    • Needle • Mockolo • Etc.. Xcode ܳ ੉ਊೠ ӝࠄ ҳഅਸ ݽف ҃೷ೠ ٍ ೙ਃী ٮۄ ৈ۞ بҳܳ ࢎਊ೧ࠁח Ѫਸ ୶ୌ೤פ׮