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
  2. ݾର Modular Architecture? 7-Phases of Modular Architecture Starting Tuist Issues

    & Workarounds Advantages of Tuist Further Milestones
  3. Modular Architecture?

  4. None
  5. ݽٕधইఃఫ୊חӝࠄ੸ਵ۽Ѥޛਸҳࢿೞחпѐ߹ਃٜࣗਸܻ࠙೧ઑ݀धਵ۽݅ٚ׮਺ ׮ܲݽٕٜҗѾ೤೧ೠױਤܳ݅٘חѪੑפ׮ 
 ݽٕചחӝઓߑधҳઑ੄ױ੼ਸ೧ѾೞҊࢎਊ੗ীѱਬোࢿ ੸਽ഋੋఠಕ੉झ ಴ળചػܻࣻ ղҳࢿ߂ѐੋചܳઁҕೞחزदী 
 ૑ࣘоמೞҊदр੄৔ೱী఍۱੸ੑפ׮

  6. Monolith App Domain Core ThirdParty Foundation Amplitude Firebase Braze AppsFlyer

    Facebook Naver Kakao Entity Feature Flag Logging Networking Service ReactiveX …
  7. 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 …
  8. None
  9. 7-Phases of Modular Architecture

  10. None
  11. App Foundation

  12. App Domain Core ThirdParty Foundation Firebase Entity Networking ReactiveX

  13. App Domain Core ThirdParty Foundation Amplitude Firebase Facebook Naver Kakao

    Entity Feature Flag Logging Networking ReactiveX … …
  14. 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 …
  15. Starting Tuist

  16. 1. From the scratch

  17. None
  18. None
  19. None
  20. 2. Migrate w/ xccon f ig

  21. 2. Migrate w/ xccon f ig

  22. 2. Migrate w/ xccon f ig

  23. 2. Migrate w/ xccon f ig

  24. 3. XcodeGen to Tuist - ੷൞ ౱੉ ೮؍ ߑध੉੗ അসীࢲ

    ઱۽ ࢎਊغח ߑध 
 - ӝઓ Workspace ח Ӓ؀۽ ك ଻ Tuist Workspace ܳ ٮ۽ ઁ੘ 
 - XcodeGen ੄ project.yml ਸ Tuist ੄ Project.swift ۽ 1:1 ߸ജ 
 - ೞਤ ۨ੉যࠗఠ ೞաঀ ߸ജ 
 - CocoaPods -> SPM / Carthage ۽ ੹ജ ೙ਃ 
 - ݽٚ ݃੉Ӓۨ੉࣌੉ ՘դ റ Tuist Workspace ࢎਊ
  25. Issues & Workarounds

  26. None
  27. None
  28. None
  29. None
  30. None
  31. … ੌױ ܻ࠙ೠ׮. Ӓ۞ݶ ঱ઃо, ־ҵоח.. 🙏

  32. Advantages of Tuist

  33. Tuist ੄ઓࢿ Ӓې೐

  34. None
  35. None
  36. None
  37. None
  38. Dynamic Interface Module 
 & 
 Static Implement Module

  39. Interfaces

  40. Implementations (= Impl)

  41. None
  42. Project-based Build Caching ੷൞ ౱ Workspace ӝળ ૐ࠙ ࠽٘ ࣘب

    ೱ࢚੉ ࢚׼೮णפ׮. ೐۽ં౟ ܻ࠙о ؊ ؼࣻ۾ ੉റ۽ب ؊ ೱ࢚غܻۄ ৘࢚೤פ׮.
  43. Works on Swift-based Project File

  44. None
  45. None
  46. None
  47. Tuist Dependencies Swift Package Manager & Carthage

  48. None
  49. + Caching

  50. None
  51. None
  52. None
  53. Further Milestones

  54. 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 …
  55. 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 …
  56. 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
  57. Q & A

  58. None