PWA์ ๋ํ์ฌ
PWA๋?
- ๋ค์ดํฐ๋ธ ์ฑ์ ๊ฐ๋ฐํ๊ณ ์ ์ง๋ณด์ํ๋ ๊ฒ์ ์๋นํ ๊ธธ๊ณ ๋ณต์กํ ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ, ์๋นํ ๋น์ฉ์ด ๋ฐ์ํ๋ค. ๊ทธ๋์ ์ ๊ทผ์ฑ์ด ๋์ ์น์์ ์ฌ์ฉํ๋ ๊ธฐ์ ๊ณผ ํ๋ซํผ API๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ค์ดํฐ๋ธ ์ฑ์ ์ฅ์ ์ ๊ฒฐํฉํ ๊ฒ์ด
ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ(Progressive Web App)
์ด๋ค. - PWA๋ HTML, CSS, Javascript์ ๊ฐ์ ์น ๊ธฐ์ ๋ก ๋ง๋ค์ด์ง๋ฉฐ, ๋ํ์ ์ธ ์์ ์ผ์ด์ค๋ก๋ ํธ์ํฐ, ์คํ๋ฒ ์ค, ์ฐ๋ฒ ๋ฑ์ด ์๋ค.
์น ์ฑ์ PWA๋ก ์๋ณ๋๊ธฐ ์ํ ์ฃผ์ ๊ตฌ์ฑ์์
-
Responsive Web Design(๋ฐ์ํ) : web page ์๋ ๋ฐ ๊ธฐ๋ฅ, ์ฌ์ฉ์ ํธ์์ฑ ์ฆ๋๋ฅผ ์ํด ๋ค์ํ Devices์์ ๋ฐ์ํ Layout์ ์ ๊ณตํ๋๋ก ๋ฐ์ํ ๋์์ธ์ ์ ๊ณตํ ์ ์์ด์ผ ํ๋ค.
-
Manifest File(์ค์นํ์ผ) : ๊ธฐ๊ธฐ์ ํํ๋ฉด์์ icon์ ์์ฑํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํจ์ผ๋ก์จ App store๋ฅผ ํตํ์ง ์๊ณ ๋ Web App์ install ๊ฐ๋ฅํ๊ฒ ํด์ผํ๋ค. ์ ์ด์จ(JSON,ย ์ฉ๋์ด ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ํ ํ์)ย ํ์ผ์ด๋ฉฐ,ย PWA๊ฐ ํ์๋๊ณ ๊ธฐ๋ฅํ๋ ๋ฐฉ์์ ๋ํ ์ ๋ณด๋ค์ด ํฌํจ๋์ด ์๋ค.
-
Background Sync : Background Sync๋ฅผ ํตํด ์ธํฐ๋ท์ด ๋๊ธด ์ํ์์ ๋ฐ์ํ๋ request๋ฅผ ์ ์ฅํ๋ค๊ฐ ์ธํฐ๋ท์ด ํ์ฑํ๋๋ฉด ํด๋น ์์ฒญ์ ์ ์กํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผํ๋ค.
-
Push Notifications : App์ด ๋ซํ ์ํ์์๋ Push Notification์ ์์ ํ ์ ์๊ณ ์ฌ ์ฐธ์ฌ ๊ฐ๋ฅ(Re-engageable), ์ ์ปจํ ์ธ ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๋ง๋ค ์๋ฆผ์ ๋ณด๋ผ ์ ์์ด์ผ ํ๋ค
-
Service Worker : Background Process์์ ์๋ํ๋ฏ๋ก App์ด ์ข ๋ฃ๋ ์ํ์์๋ ์๋ํด์ผ ํ๋ค. ๊ทธ๋ผ์ผ๋ก ์๋น์ค ์์ ์๋ ๋คํธ์ํฌ์ ๊ด๋ จ๋ ์์ฒญ์ ์ฒ๋ฆฌ๋ฅผ ๋์์ฃผ๊ธฐ ๋๋ฌธ์, ๋ณต์กํ ์์ ์ ์ํํ ์ ์์
-
Media API : Device Camera์ Device Microphone์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํด์ผํ๋ค.
-
Geolocation API : User Location ์ ๋ณด์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํด์ผํ๋ค.
-
๋ฐ๊ฒฌ ๊ฐ๋ฅ, ๋ฐ๋ผ์ ์ปจํ ์ธ ๋ฅผ ๊ฒ์ ์์ง์ ํตํด ์ฐพ์ ์ ์์ด์ผ ํ๋ค.
-
์ฐ๊ฒฐ ๊ฐ๋ฅ, ๋ฐ๋ผ์ ๊ฐ๋จํ๊ฒ URL์ ์ ์กํด ๊ณต์ ํ ์ ์์ด์ผ ํ๋ค.
-
์ ์ง์ , ๋ฐ๋ผ์ ์ต์ ๋ธ๋ผ์ฐ์ ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ง๋ง ์ด์ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ฌ์ ํ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค.
-
๋ณด์ ์ฐ๊ฒฐ(HTTPS): PWA๋ ์ ๋ขฐํ ์ ์๋ ์ฐ๊ฒฐ ์ํ์์๋ง ๋์ํ๊ธฐ ๋๋ฌธ์,ย ๋ณด์ ์ฐ๊ฒฐ์ ํตํด์ ์๋น์ค๋ฅผ ์ ๊ณตํด์ผ ํ๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์์ ์ฑ ์ฌ์ด์ ์ฐ๊ฒฐ์ด ์ฌ์ฉ์์์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ค๋ ๋ชจ๋ ์ 3์๋ก๋ถํฐ ์์ ํด์ผ ํ๋ค.
์ฅ/๋จ์
์ฅ์
- ๋ณ๋์ SDK๊ฐ ํ์ํ์ง ์๋ค.
- ์ฑ์คํ ์ด์ ์ถ์ํ๊ธฐ ์ํด ๋ณ๋์ ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์น์ง ์์๋ ๋๋ค.
- ์น์ผ๋ก ๋ง๋ค์ด์ง ๊ฒ์ ๋ํด ์ ์ ๋ฆฌ์์ค๋ฅผ ํฌ์ ํ์ฌ, ์ฑ์ผ๋ก ๋์ฐ๋ฉฐ ๋น์ฉ์ด ์ ๋ ดํ๊ณ ์ ์ง๊ด๋ฆฌํด์ผํ๋ ์ฝ๋๋ฒ ์ด์ค๊ฐ ์ ๋ค.
- ์คํ๋ผ์ธ์์๋ ๋์ํ๋ค.
- PWA๋ ์๋ฉํฑ ๋งํฌ์ ์ ์ฌ์ฉํ ์ ์์ด, ๊ฒ์์์ง ์ต์ ํ(SEO)๊ฐ ์ข์ ์ฌ์ฉ์๋ค์ ๋์ ์ฐธ์ฌ๋ฅผ ์ด๋์ด ๋ผ ์ ์์(RN์ ๊ฒฝ์ฐ ์ฑ์คํ ์ด ์ต์ ํ(ASO))
- ๋ฐฐํฌ์, ๋ฒ๊ฑฐ๋ก์ด ์ ์ฐจ๋ค์ ๋น์ผ๊ฐ ์ ์๋ค.
- ์ฑ์คํ ์ด๊ฐ ํ์ํ์ง ์๊ณ , ์ค์น ๋ํ ํ์ํ์ง ์๋ค.
๋จ์
- ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ๋น์ทํ๋ค๊ณ ํ์ง๋ง ๋ค์ดํฐ๋ธ์ ์ฑ๋ฅ์ ๋ฐ๋ผ๊ฐ ์ ์๋ค.
- ๋ค์ดํฐ๋ธ์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๊ณ , OS์์ ์ง์ํ์ง ์๋ ๊ธฐ๋ฅ์ด๋ผ๋ฉด PWA์์๋ ์ฌ์ฉํ ์ ์๋ค.
- ์๋น์ค ์์ ์์ API(์์ฉํ๋ก๊ทธ๋จ ์ธํฐํ์ด์ค)๋ฅผ ์ง์ํ๋ ํ๊ฒฝ์ด ํ๋ซํผ๋ง๋ค ์์ดํ์ฌ, ํธ์ ์๋ฆผ์ ์ฌ์ฉํ๋ ๋ถ๋ถ์์ ๋ถํธํ๋ค.
๊ฒฐ๋ก
๋ค์ดํฐ๋ธ ์ฑ์ด๋ PWA๋ ๋ชจ๋ ๋งค๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ(UX)๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ๋ฐฉ์์ผ๋ก ๊ฐ์ ๋๋ฆ์ ์ฅ๋จ์ ์ด ์์ง๋ง ์งํํด์ผ๋๋ ํ๋ก์ ํธ์ ๋ชฉํ์ ํ์ฌ ๊ฐ์ง ์์์ ๊ณ ๋ คํ์ฌ ์ ํํด์ผ๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ PWA๋ฅผ ์ ์ฉํ๊ธฐ ์ํด์๋ ํ์
๋ก ์๋์ ์ฌํญ์ด ์์ด์ผ ํ๋ค.
- ์น์ฝ๋๋ก ๋ง๋ ์น ์ฌ์ดํธ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ์์ด์ผ ํ๋ค.
- HTTPS๋ฅผ ์ด์ฉํ์ฌ ์๋น์ค๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
- ์ดํ๋ฆฌ์ผ์ด์ ๋ฉ๋ํ์ด์คํธ๊ฐ ์์ด์ผ ํ๋ค.(JSON์ผ๋ก ๋์ด์๊ณ , ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ ๋ณด๊ฐ ์๋ ํ์ผ)
- ์๋น์ค ์์ปค๊ฐ ์์ด์ผ ํ๋ค.
์ฉ์ด์ฌ์
SDK(์ํํธ์จ์ด ๊ฐ๋ฐ ํคํธ) : ๊ฐ๋ฐ์์๊ฒ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ถ๊ฐํ๊ฑฐ๋ ์ฐ๊ฒฐํ ์์๋ ์ปค์คํ ์ฑ์ ์ ์ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋๊ตฌ ๋ชจ์
Service Worker :Client์ Browser์ ์ค์น๋๋ฉฐ Background Process๋ก ๋์ํ๋ Script Code, ์๋ฒ๋ก ๊ฐ๋ Request๋ฅผ ๊ฐ๋ก์ฑ๋ Proxy๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ Web App์ ๋ค์ํ๊ณ ์ ์ฉํ ๊ธฐ๋ฅ์ ์ ๊ณต
์ฐธ๊ณ ๋งํฌ
MDN - ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ ์๊ฐ
Tecoble - PWA์ ๋ํด ์์๋ณด์
[PWA] 1. Progressive Web Apps ์ด๋?
ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ(PWA)์ด๋ ๋ฌด์์ด๋ฉฐ, ์ ํ์ํ๊ฐ? - wishket
PWA vs ๋ค์ดํฐ๋ธ ์ฑ, ์ด๋ค ๊ฒ์ ์ ํํด์ผ ํ ๊น?