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

Modular Architecture w/ Tuist

Wooseong Kim
December 02, 2022

Modular Architecture w/ Tuist

Introduce an Effective way to collaborate on iOS workspace.

Let'Swift 2022 에서 발표한 자료입니다.

Wooseong Kim

December 02, 2022
Tweet

More Decks by Wooseong Kim

Other Decks in Programming

Transcript

  1. ӣ਋ࢿ
    Modular Architecture w/ Tuist
    An Effective way to collaborate on iOS workspace
    29CM

    View full-size slide

  2. ݾର
    Modular Architecture?
    7-Phases of Modular Architecture
    Starting Tuist
    Issues & Workarounds
    Advantages of Tuist
    Further Milestones

    View full-size slide

  3. Modular Architecture?

    View full-size slide

  4. ݽٕधইఃఫ୊חӝࠄ੸ਵ۽Ѥޛਸҳࢿೞחпѐ߹ਃٜࣗਸܻ࠙೧ઑ݀धਵ۽݅ٚ׮਺ ׮ܲݽٕٜҗѾ೤೧ೠױਤܳ݅٘חѪੑפ׮

    ݽٕചחӝઓߑधҳઑ੄ױ੼ਸ೧ѾೞҊࢎਊ੗ীѱਬোࢿ ੸਽ഋੋఠಕ੉झ ಴ળചػܻࣻ ղҳࢿ߂ѐੋചܳઁҕೞחزदী

    ૑ࣘоמೞҊदр੄৔ೱী఍۱੸ੑפ׮

    View full-size slide

  5. Monolith
    App
    Domain
    Core ThirdParty
    Foundation
    Amplitude
    Firebase
    Braze
    AppsFlyer
    Facebook
    Naver
    Kakao
    Entity
    Feature Flag
    Logging
    Networking
    Service
    ReactiveX

    View full-size slide

  6. App
    App Feature
    App Core ThirdParty
    Shared
    Amplitude
    Firebase
    Facebook
    Entity
    Networking
    Foundation
    Resource

    Service
    UI

    Naver
    Kakao
    Domain Notification Service
    FeatureFlag
    Logging
    RemoteConfig
    ReactiveX

    View full-size slide

  7. 7-Phases of Modular Architecture

    View full-size slide

  8. App
    Foundation

    View full-size slide

  9. App
    Domain
    Core ThirdParty
    Foundation
    Firebase
    Entity
    Networking
    ReactiveX

    View full-size slide

  10. App
    Domain
    Core ThirdParty
    Foundation
    Amplitude
    Firebase
    Facebook
    Naver
    Kakao
    Entity
    Feature Flag
    Logging
    Networking
    ReactiveX
    … …

    View full-size slide

  11. App
    App Feature
    App Core ThirdParty
    Shared
    Amplitude
    Firebase
    Facebook
    Entity
    Networking
    Foundation
    Resource

    Service
    UI

    Naver
    Kakao
    Domain Notification Service
    FeatureFlag
    Logging
    RemoteConfig
    ReactiveX

    View full-size slide

  12. Starting Tuist

    View full-size slide

  13. 1. From the scratch

    View full-size slide

  14. 2. Migrate w/ xccon
    f
    ig

    View full-size slide

  15. 2. Migrate w/ xccon
    f
    ig

    View full-size slide

  16. 2. Migrate w/ xccon
    f
    ig

    View full-size slide

  17. 2. Migrate w/ xccon
    f
    ig

    View full-size slide

  18. 3. XcodeGen to Tuist
    - ੷൞ ౱੉ ೮؍ ߑध੉੗ അসীࢲ ઱۽ ࢎਊغח ߑध

    - ӝઓ Workspace ח Ӓ؀۽ ك ଻ Tuist Workspace ܳ ٮ۽ ઁ੘

    - XcodeGen ੄ project.yml ਸ Tuist ੄ Project.swift ۽ 1:1 ߸ജ

    - ೞਤ ۨ੉যࠗఠ ೞաঀ ߸ജ

    - CocoaPods -> SPM / Carthage ۽ ੹ജ ೙ਃ

    - ݽٚ ݃੉Ӓۨ੉࣌੉ ՘դ റ Tuist Workspace ࢎਊ

    View full-size slide

  19. Issues & Workarounds

    View full-size slide

  20. … ੌױ ܻ࠙ೠ׮. Ӓ۞ݶ ঱ઃо, ־ҵоח.. 🙏

    View full-size slide

  21. Advantages of Tuist

    View full-size slide

  22. Tuist ੄ઓࢿ Ӓې೐

    View full-size slide

  23. Dynamic Interface Module

    &

    Static Implement Module

    View full-size slide

  24. Implementations (= Impl)

    View full-size slide

  25. Project-based Build Caching
    ੷൞ ౱ Workspace ӝળ ૐ࠙ ࠽٘ ࣘب ೱ࢚੉ ࢚׼೮णפ׮.
    ೐۽ં౟ ܻ࠙о ؊ ؼࣻ۾ ੉റ۽ب ؊ ೱ࢚غܻۄ ৘࢚೤פ׮.

    View full-size slide

  26. Works on Swift-based Project File

    View full-size slide

  27. Tuist Dependencies
    Swift Package Manager & Carthage

    View full-size slide

  28. Further Milestones

    View full-size slide

  29. App
    App Feature
    App Core
    ThirdParty
    Firebase
    Entity
    Networking
    Resource

    Service
    UI
    Design System
    Naver
    Kakao
    Domain Notification Service …
    Product
    Post
    Shared


    Authentication
    Amplitude
    Main
    Shop
    Splash
    Settings
    Facebook
    ReactiveX
    Logging
    Foundation
    FeatureFlag
    RemoteConfig …

    View full-size slide

  30. App
    App Feature
    App Core
    ThirdParty
    Firebase
    Entity
    Networking
    Resource

    Service
    UI
    Design System
    Naver
    Kakao
    Domain Notification Service …
    Product
    Post
    Shared


    Authentication
    Amplitude
    Main
    Shop
    Splash
    Settings
    Facebook
    ReactiveX
    Logging
    Foundation
    FeatureFlag
    RemoteConfig …

    View full-size slide

  31. MainApp
    App Feature
    App Core
    ThirdParty
    Firebase
    Entity
    Networking
    Resource

    Service
    UI
    Design System
    Naver
    Kakao
    Domain Notification Service …
    Product
    Post
    Shared


    Authentication
    Amplitude
    Main
    Shop
    Splash
    Settings
    Facebook
    ReactiveX
    Logging
    Foundation
    FeatureFlag
    RemoteConfig …
    PostFeatureApp
    App Feature
    App Core
    ThirdParty
    Firebase
    Entity
    Networking
    Resource
    Service
    UI
    Design System

    Shared


    Authentication
    Amplitude
    ReactiveX
    Logging
    Foundation
    FeatureFlag
    RemoteConfig
    Post
    ProductFeatureApp
    App Feature
    App Core
    ThirdParty
    Firebase
    Entity
    Networking
    Resource
    Service
    UI
    Design System
    Shared


    ReactiveX
    Logging
    Foundation
    FeatureFlag
    RemoteConfig
    Product

    View full-size slide