Skip to content
dongwoo edited this page Aug 13, 2025 · 19 revisions

แ„Œแ…ฎแ„‹แ…ตแ†ซแ„Œแ…กแ†ผแ„‹แ…ขแ†ธแ„‹แ…กแ„‹แ…ตแ„แ…ฉแ†ซ ์ฃผ์ธ์žฅ - ๋ถ€๋™์‚ฐ ๋งค๋ฌผ ๊ธฐ๋ก

์ฃผ์ธ์žฅ์€ ๋ถ€๋™์‚ฐ ์ž„์žฅ ์ •๋ณด๋ฅผ ์‚ฌ์ง„, ์Œ์„ฑ, ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋“ฑ์œผ๋กœ ์†์‰ฝ๊ฒŒ ๊ธฐ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ์ž…๋‹ˆ๋‹ค. ์ž„์žฅ ์ ์ˆ˜ ๋น„๊ต์™€ ๊ธฐ๋ก ๊ณต์œ  ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฐœ์ธ ๋ฉ”๋ชจ๋ฅผ ๋„˜์–ด ์ž„์žฅ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ๋‚˜๋ˆ„๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์ฃผ์ธ์žฅ์—์„œ ์ž„์žฅ์ด๋ž€?

์ง‘์„ ์ง์ ‘ ๋ณด๋Ÿฌ ๊ฐ€์„œ ์‚ฌ์ง„ ์ฐ๊ณ , ์ƒํƒœ ์ฒดํฌํ•˜๊ณ , ๋น„๊ตยท๊ธฐ๋กํ•˜๋Š” ํ™œ๋™


์ฃผ์š” ๊ธฐ๋Šฅ

์ž„์žฅ ํŽ˜์ด์ง€ ์ƒ์„ฑ ์‚ฌ์ง„, ๋…น์Œ, ๋ฉ”๋ชจ ์ถ”๊ฐ€ ๋งž์ถคํ˜• ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ž‘์„ฑ
์ž„์žฅ ์ •๋ณด ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ณต์œ ๋œ ์ž„์žฅ ์ •๋ณด ์ƒ์„ธ๋ณด๊ธฐ ๋‚˜์˜ ์ž„์žฅ ์ •๋ณด ๊ณต์œ 

๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • Swift 5.0
  • iOS 16.0 +
  • Xcode 16.0.0

์‚ฌ์šฉ ๊ธฐ์ˆ  ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • UIKit SnapKit Then
  • ReactorKit RxSwift
  • Alamofire Firebase
  • Realm
  • Tuist

ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ


ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์„ค๊ณ„

  • Application : AppDelegate, SceneDelegate ๋“ฑ ์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ
  • Common : ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Enum, Extensions, Protocol
  • Components : ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ View ์ปดํฌ๋„ŒํŠธ ๋ชจ์Œ
  • Manager : ์ธ์•ฑ๊ฒฐ์ œ, ๋…น์Œยท์žฌ์ƒ, Firebase ์—ฐ๋™ ๋“ฑ ์ฃผ์š” ์„œ๋น„์Šค ๋กœ์ง ๊ด€๋ฆฌ
  • Model : Request/Response ๊ตฌ์กฐ์ฒด (Decodable, Encodable)
  • Network : ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ๋ชจ์Œ
  • Repository : ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํŒจํ„ด ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต
  • Storage : ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ (UserDefaultsManager)
  • UserInterface : UI Scene๋ชจ์Œ
    • View : ViewController, ๋ฉ”์ธ ๋ทฐ, ์„œ๋ธŒ๋ทฐ ๊ด€๋ฆฌ
    • Reactor : ReactorKit์—์„œ ์‚ฌ์šฉํ•˜๋Š” Reactor ํด๋ž˜์Šค
๐Ÿ“‚ Project
โ”œโ”€โ”€ ๐Ÿ“‚ juinjang
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ Project
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Application : AppDelegate, SceneDelegate ๋“ฑ ์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Common : ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Enum, Extensions, Protocol
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Components : ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ View ์ปดํฌ๋„ŒํŠธ ๋ชจ์Œ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Manager : ์ธ์•ฑ๊ฒฐ์ œ, ๋…น์Œยท์žฌ์ƒ, Firebase ์—ฐ๋™ ๋“ฑ ์ฃผ์š” ์„œ๋น„์Šค ๋กœ์ง ๊ด€๋ฆฌ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Model : Request/Response ๊ตฌ์กฐ์ฒด (Decodable, Encodable)
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Network : ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ํด๋ž˜์Šค (BaseURL, APIManager, NetworkMonitor, TargetType ๋“ฑ)
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Repository : ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํŒจํ„ด ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Storage : ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ (UserDefaultsManager ๋“ฑ)
โ”‚       โ””โ”€โ”€ ๐Ÿ“‚ UserInterface
โ”‚           โ”œโ”€โ”€ ๐Ÿ“‚ View : ViewController, ๋ฉ”์ธ ๋ทฐ, ์„œ๋ธŒ๋ทฐ ๊ด€๋ฆฌ
โ”‚           โ””โ”€โ”€ ๐Ÿ“‚ Reactor : ReactorKit์—์„œ ์‚ฌ์šฉํ•˜๋Š” Reactor ํด๋ž˜์Šค
โ””โ”€โ”€ ๐Ÿ“‚ Core
    โ””โ”€โ”€ ๐Ÿ“‚ Project
        โ””โ”€โ”€ ๐Ÿ“‚ Common
            โ””โ”€โ”€ ๐Ÿ“‚ AnalyticsManager
                โ”œโ”€โ”€ AnalyticsEvent
                โ””โ”€โ”€ AnalyticsManager