ํํผ์คํธ ์ด์ผ๊ธฐ
www.gowid.com
https://www.gowid.com/customer-story/cupist
๊ณ ์๋x ํํผ์คํธ ๋ฒ์ธ์นด๋ ์ฐ์์ฌ๋ก ์๊ฐ
(์! ์ธ๋ค์ผ์ด ๋จ์ง ์๋ค์
)
์ธ๋ก ์ ํํผ์คํธ
Kotlin Coroutines๋ ํ์ฌ Android ๊ฐ๋ฐ ์ํ๊ณ์์ ๊ฐ์ฅ ์ฃผ๋ชฉ๋ฐ๋ ๊ธฐ์ ์ค ํ๋์ผ ๊ฒ์
๋๋ค. ๊ธ์ ์ฝ๋ ์ฌ๋ฌ๋ถ๋ค์ ์ด๋ฏธ ๊ฐ์์ ์๋น์ค์ ์ด ๊ธฐ์ ์ ์ ์ฉํ๊ฑฐ๋ ๊ฒํ ํ๋ ์ค์ด๋ผ ์๊ฐํ๊ณ ์์ต๋๋ค. ์ด ๊ธ์ Cupist์ Java-MVP to Kotlin-MVVM ์ ํ ์์
์ด ํ์ฐฝ์ด๋ 2019๋
์๋ฐ๊ธฐ์ ๊ธฐ๋ก์ ์ผ๋ถ์ด๋ฉฐ ์ฝ๋ ๋ถ๋ค์๊ฒ ์กฐ๊ธ์ด๋๋ง ๋์์ด ๋์์ผ๋ฉด ํ๋ ๋ง์์ผ๋ก ์ธ์์ ์ผ๋ก ๋๊ผ๋ ์ด์์ ๊ทธ ์์ธ์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๊ณต์ ํ๊ณ ์ ํฉ๋๋ค. ๋ฌผ๋ก ๊ฐ์์ ์๋น์ค๋ง๋ค ๋ง๋ ์ ์๋ ์ด์๋ ์กฐ๊ธ ๋ ๋ค์ํ ๊ฒ์ด๊ณ "๋ญ ์ด๋ฐ ์ค์๋ฅผ ํด?"๋ผ๋ ์๊ฐ์ ๊ฐ์ง์ค ์๋ ์์ต๋๋ค๋ง, ์ ๋ ๋ง๋๊ธฐ ์ ๊น์ง ์๊ฐ ๋ชป ํ์๊ฑฐ๋ ์. ์ฌ๋ฌ๋ถ๋ค์ ๊ฐ์ ์ค์๋ฅผ ํ์ง ๋ง์๊ธธ ๋ฐ๋๋๋ค. 
์ฝ๋ฃจํด์ด๋ผ๊ตฌ์?
๋ค, ์ฝ๋ฃจํด์ด์. ์ด์ฐจํผ ์ ์ ๋ฆด๋ฆฌ์ฆ ๋ ๊ฑฐ ๋ฐ๋ก ์งํ ํด๋ณด์ ๋ผ๋ ๋ง์์ผ๋ก ๋์
์ ์์ํ์์ต๋๋ค. ์ด๋ฏธ ๋ง์ ๊ธ์์ ์ด ๊ธฐ์ ์ด ์ ํต์ ์ธ ์๋๋ก์ด๋ ๊ฐ๋ฐ๊ณผ ๋ค๋ฅธ ๊ธฐ์ ์ด ๊ฐ์ง์ง ๋ชปํ๋ ์ด์ ์ ๋ํด ๋ค๋ฃจ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ค๋ช
ํ์ง ์์ผ๋ ค๊ณ ํฉ๋๋ค. Cupist์ ์๋๋ก์ด๋ ๊ฐ๋ฐ์๋ค ๋ํ ์ด๋ฌํ ๊ธ์ ์ฐธ๊ณ ํ๋ฉฐ ์ด ๊ธฐ์ ์ด ์ฐ๋ฆฌ์๊ฒ ์ฃผ๋ ์ด์ ์ ๋ํด ๊ธฐ๋๋ฅผ ํ์๊ณ ๊ฐ๋ฐ์ ์งํํจ๊ณผ ๋์์ ๊ฐํํ์๊ณ ์ฅ๋ฏธ๋น ๋ฏธ๋๋ฅผ ์๊ฐํ๋ฉฐ ์๋ก์ด ์๋๋ก์ด๋ ์ฑ ๋ฒ์ ์ ๋ฆด๋ฆฌ์ฆํ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Fabric์ ๋ฆฌํฌํธ์ ๋ถ๊ฝ๊ฐ์ด ์ฌ๋ผ์ค๋ Crash๋ฅผ ๋ณด๋ฉฐ ๋ฌด์ธ๊ฐ ์๋ชป๋์๋ค๋ ๊ฒ์ ๋๊ผ์ฃ ...
์น๊ตฌ์ผ ๋๋ ์ค๋๋ง์ด์ผ! ๊ทธ๋ฐ๋ฐ ๋ ์ซ ๋ง์ด ๋ฐ์๊ตฌ๋?
Legacy Code์ ๋ช
์์์ ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด ์ด ์์
์ Java + MVP๋ก ๊ตฌ์ฑ๋ ์ฑ ๋ฉ์ธ ์ฝ๋๋ฅผ Kotlin + MVVM์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
๋ฐ ๋ฆฌํฉํ ๋ง ์์
์ ์ผ๋ถ์์ต๋๋ค. ๊ธฐ์กด์ Callback ๋ฐฉ์ ๋ฑ์ผ๋ก ๊ตฌํ๋์๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ฝ๋ฃจํด์ ์ด์ฉํ์ฌ ๋ฆฌํฉํ ๋งํ๋ ๊ณผ์ ์์ ์ผ๋ถ SQLite ์ ๊ทผ ๋ก์ง๋ค์ด IO Dispatcher๋ฅผ ํตํด ์คํ๋๋๋ก ์์ ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ IO Thread์์ DB ์ฐ๊ธฐ ์์
์ ํ๋ ์ค ์๊ฐํ์ง๋ ์์ ๋ค๋ฅธ Activity์ Main Thread์์ DB ์ฝ๊ธฐ๋ฅผ ์๋ํ์๊ณ ์ฑ์ด ์ฃฝ์ด ๋๊ฐ๊ธฐ ์์ํ์ต๋๋ค.
์์ธ๋ ์ด๋ ์ ๋ ํ์
๋์์ผ๋ ๋น ๋ฅด๊ฒ ๊ณ ์ณ์ผ๊ฒ ๋ค๋ ๋ง์์ IO Dispatcher์์ ๋์ํ๋ SQLite์ Transaction Mode๋ฅผ IMMEDIATE๋ก ๋ณ๊ฒฝํ์ฌ ํซํฝ์ค ํ๊ณ "์ดํด.. ํฐ์ผ ๋ ๋ปํ๋ค.."๋ผ ์๊ฐํ์์ต๋๋ค. (์๋ ์ด๋ฏธ ๋๊ฑด๋ฐ..?) ์
๋ฐ์ดํธ ํ ์ง์ ๋ Crash Report๋ฅผ ๋ณด๋ฉฐ ์๋ํจ์ ๋๋ผ๋ฉฐ Fabric์ Non-Fatals Report๋ฅผ ํ์ธํ๋ ์๊ฐ ์ด ์ด์์ ์จ๊ฒจ์ง ์ด๋ฉด์ ์๊ฒ ๋์์ต๋๋ค.
Coroutines + Legacy = ๐ฃ
Engineering
Android
๋ถ์ : ์งํ์ฒ ์คํฌ๋ฆฐ๋์ด ์ฅ์ธ๊ด๊ณ ๋์ ๊ธฐ
์จ๋ผ์ธ ๋ง๊ณ ์๋ก์ด ์ฑ๋ ์์๊น?
์ฐ๋ฆฌ๋ ๋ฐ์ดํ
์ฑ ๊ธ๋จ์ ๋ง์ผํ
ํ๋ ํ์ด๋ค.
์ฐ๋ฆฌ๋ ๊ธ๋จ์ ๋ ๋ง์ ์ฌ๋๋ค์๊ฒ ์ ์๋ฆด ์๋ฌด๊ฐ ์๋ค. ํ์ ๋ ์์ฐ ์์์ ๊ธ๋จ์ ์๋ ค์ผ ํ๋๋ฐ ์จ๋ผ์ธ ๊ด๊ณ ์๋ง ๋์ ์ฐ์๋ ์ณ๋ฐํด๋ฅผ ๋๋ ๊ฒ ๊ฐ์ ๋ชจ์์๋ค. ์ด ๊ธ์ ํ์ ๋ ์์ฐ ์์์ ์ ์ฌ๊ณ ๊ฐ์๊ฒ ๋๋ฌํ ์๋ก์ด ํต๋ก๋ฅผ ์ฐพ๊ณ ์ ๊ณ ๊ตฐ๋ถํฌํ ์ด์ผ๊ธฐ์ด๋ค.
๋ค๋ง, ๊ธ๋จ ์๋น์ค๋ฅผ ์ด์ํ๋ 'ํํผ์คํธ' ๋ ํญ์ Why ์์ ์์ํ๋ค. ์ฐ๋ฆฌ๋ Why์์ ์์ํด ๋ณด์. Start with Why (์ฌ๋ฌด์ค ์์ดํ์ด ๋น๋ฐ๋ฒํธ๋ก๋ ์ฌ์ฉ๋๋ฉฐ ๋์ ์ฐ๋ฆฌ์ ๊ฐ๊น์ด ์๋ ๋ฌธ๊ตฌ)
*๊ธ๋จ์ด ๋ฑ์ฅํ๊ฒ ๋ Why : ๋๋ผ๋ง โ์ด๋ฒ ์์ ์ฒ์์ด๋ผโ ์ค์ ๋ชจ๋ธ, ์ ๋งค์ถ 5์ต ๋ฐ์ดํ
์ฑ ๋ํ ์ด์ผ๊ธฐ
Why ์์ ์์ํ๊ธฐ 1 - ์ฐ๋ฆฌ๋ ์ ์กด์ฌํ๋๊ฐ?
์ฐ๋ฆฌ ์๋น์ค๋ ์ ์กด์ฌํ๋๊ฐ?
์ด๋ป๊ฒ ํ๊ณ ์๋?
๋ฌด์์ ํ๊ณ ์๋?
์ฐ๋ฆฌ ์๋น์ค๋ฅผ Why > How > What ์์ผ๋ก ์๊ฐํด ๋ณด์๋ค.
๊ธ๋จ '๊ฐ์ง์ ์ฝ์งํ์ง๋ง, ์ง์ง๋ง ๋ง๋' ๊ด๊ณ ์บ ํ์ธ ๊ธฐ๋ก
Marketing