Deep_Dev
article thumbnail
Published 2023. 6. 13. 15:28
[Swift][iOS] QOS ๐ŸŽ iOS/Swift

 QoS ( Quality of Service )

QoS๋Š” ์„œ๋น„์Šค์˜ ํ’ˆ์งˆ์ด๋‹ค. DispatchQueue์˜ ์ž‘์—…์„ ์šฐ์„ ์ ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค€๋‹ค.

 

๊ฐœ๋ฐœ์ž๋Š” ์ค‘์š”๋„์— ๋”ฐ๋ผ ์•ฑ ์ž‘์—…์„ ๋ถ„๋ฅ˜ํ•ด ์‹œ์Šคํ…œ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ตœ์ ์˜ ์‹œ๊ฐ„๊นŒ์ง€ ์ž‘์—…์„ ์—ฐ๊ธฐํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋‹ค๋ฅธ ํšจ์œจ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒฝ์šฐ์—๋„ ์‹œ์Šคํ…œ์€ ์—ฌ์ „ํžˆ ์ผ์ • ์ˆ˜์ค€์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค.

 

 QoS์˜ class ์ •๋ณด

์„œ๋น„์Šค ํ’ˆ์งˆ(QoS) ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ NSOperation, NSOperationQueue, NSThread๊ฐœ์ฒด, ๋””์ŠคํŒจ์น˜ ๋Œ€๊ธฐ์—ด ๋ฐ pthread(POSIX ์Šค๋ ˆ๋“œ)๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž‘์—…์— QoS๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์ค‘์š”๋„๋ฅผ ํ‘œ์‹œํ•˜๋ฉด ์‹œ์Šคํ…œ์—์„œ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์ผ์ •์„ ์žก๊ฒŒ ๋œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์‹œ์Šคํ…œ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์ž‘ํ•œ ์ž‘์—…์„ ์ตœ์ ์˜ ์‹œ๊ฐ„๊นŒ์ง€ ์—ฐ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋Š” ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ž‘์—…์—์„œ ๋‹ค์‹œ ํ• ๋‹น๋˜์–ด ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ž‘์—…์œผ๋กœ ํ• ๋‹น ๋  ์ˆ˜ ์žˆ๋‹ค.

 

์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ž‘์—…์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ž‘์—…๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ž‘์—…๋ณด๋‹ค ๋” ๋งŽ์€ ์—๋„ˆ์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์•ฑ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ์ ์ ˆํ•œ QoS ํด๋ž˜์Šค๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ง€์ •ํ•˜๋ฉด ์•ฑ์˜ ์‘๋‹ต์„ฑ๊ณผ ์—๋„ˆ์ง€ ํšจ์œจ์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค.

 

 

 QoS์˜ ์‚ฌ์šฉ

.async() ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์šฐ์„ ์ˆœ์œ„๋Š” 4๊ฐœ๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

  • userInteractive : ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋˜๋Š” UI ์—…๋ฐ์ดํŠธ์— ์‚ฌ์šฉ
  • userInitiated : API์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ž‘์—…์— ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ˜ธ ์ž‘์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•จ
  • ์œ ํ‹ธ๋ฆฌํ‹ฐ : ์‚ฌ์šฉ์ž๊ฐ€ ์ถ”์  ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์ž‘์—…์— ์‚ฌ์šฉ
  • background : ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์ง€ ์•Š์€ ์œ ์ง€ ๊ด€๋ฆฌ ์ฝ”๋“œ์™€ ๊ฐ™์€ ์ž‘์—…์— ์‚ฌ์šฉ

 

์ฆ‰, DispatchQueue๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฅ˜ํ•ด ๊ฐœ๋ฐœ์ค‘์ธ ์•ฑ์ด ์—๋„ˆ์ง€ ํšจ์œจ์„ฑ์ด ๋ณด์žฅ๋˜๋„๋ก ํ•œ๋‹ค.

 

์ž‘์—…์„ ๋ถ„๋ฅ˜ํ•˜๋ฉด ์‹œ์Šคํ…œ์€ ๋ฆฌ์†Œ์Šค ๊ฐ€์šฉ์„ฑ์— ๋”ฐ๋ผ ๊ฐ€๋Šฅํ•œ ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋˜ ์ฃผ์˜ํ•  ์ ์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ๋ฐฐ๊ฒฝ์ด ๋‹ค๋ฅธ ๊ฒƒ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ์ถ”๋ก ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

๋ถ€์ฃผ์˜ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์•ฑ์ด ์Šค๋ ˆ๋“œ ํญ๋ฐœ ๋ฐ ๊ต์ฐฉ ์ƒํƒœ์— ์ง๋ฉดํ•˜๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๊ฒฝ๊ณ ๋ฅผ ํ•œ๋‹ค.

 

 ๊ฒฐ๋ก 

์—๋„ˆ์ง€๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋น ๋ฅธ ์ˆ˜ํ–‰์ด ํ•„์š”ํ•œ ์ž‘์—…๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ์ž‘์—…์„ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ์—๋Š” QoS๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”๋“œ์—์„œ ์ง์ ‘์ ์ธ ์‚ฌ์šฉ์€ ์•„์ง ์™€๋‹ฟ์ง€ ์•Š์•„์„œ ๋‹ค์Œ์—” ์ฝ”๋“œ์™€ ๊ฐ™์ด ๋ณด๋ฉฐ ๊ฐœ๋…์„ ์ดํ•ดํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.

 

 

 

 

'๐ŸŽ iOS > Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Swift][iOS] GCD API ๋™์ž‘ ๋ฐฉ์‹๊ณผ ํ•„์š”์„ฑ (1)  (0) 2023.06.13
[Swift] Struct์™€ Class์˜ ์ฐจ์ด์   (1) 2023.05.15
[Swift] Dispatch Queue  (0) 2023.01.27