๐ŸŒ

1.1 PWA๋ž€?

1. PWA๋ž€?

2015๋…„์— ๊ตฌ๊ธ€ ํฌ๋กฌ์˜ Alex Russell(์•Œ๋ ‰์Šค ๋Ÿฌ์…€)์ด ๋ธ”๋กœ๊ทธ์— ํฌ์ŠคํŒ…์„ ํ•˜๋ฉด์„œ PWA๋ผ๋Š” ์šฉ์–ด๊ฐ€ ๋“ฑ์žฅํ•˜์˜€์œผ๋ฉฐ, 2016๋…„์— ์—ด๋ฆฐ 'Google I/O 2016'์—์„œ ๋ฏธ๋ž˜์˜ ์›น ๊ธฐ์ˆ ์ธ PWA๊ฐ€ ๊ณต์‹์ ์œผ๋กœ ์†Œ๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
ย 
ย 
๋ฏธ๋ž˜์˜ ์›น ๊ธฐ์ˆ ๋กœ ๋– ์˜ค๋ฅธ PWA๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? PWA(Progressive Web Application, ํ”„๋กœ๊ทธ๋ ˆ์‹œ๋ธŒ ์›น ์•ฑ)๋Š” ์›น๊ณผ ๋ชจ๋ฐ”์ผ ์•ฑ ๊ธฐ์ˆ ์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•œ ์›น ๊ธฐ์ˆ ๋กœ, ๋ชจ๋ฐ”์ผ ์›น์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ๊ณผ ์œ ์‚ฌํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ผ๋ฐ˜ ์›น ์‚ฌ์ดํŠธ์™€ ๊ฐ™์ด ์›น์—์„œ ์‹คํ–‰๋˜์ง€๋งŒ ์•ฑ์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
ย 
PWA ๋กœ๊ณ (์ถœ์ฒ˜ : ์œ„ํ‚ค๋ฐฑ๊ณผ)PWA ๋กœ๊ณ (์ถœ์ฒ˜ : ์œ„ํ‚ค๋ฐฑ๊ณผ)
PWA ๋กœ๊ณ (์ถœ์ฒ˜ : ์œ„ํ‚ค๋ฐฑ๊ณผ)
ย 

2. ์›น ์•ฑ๊ณผ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ, ๊ทธ๋ฆฌ๊ณ  PWA

PWA๋Š” ์›น๊ณผ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•œ ์›น ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๊ณผ์—ฐ ์›น๊ณผ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์˜ ์–ด๋–ค ์žฅ์ ๋“ค์ด ๊ฒฐํ•ฉ๋˜์–ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.
ย 

2.1 ์›น ์•ฑ

์›น์€ URL์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ˆ„๊ตฌ๋“ , ์–ด๋””์„œ๋‚˜, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณ„๋„์˜ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์›น ์•ฑ(Web Apps)์€ HTML, CSS, Javascript ๋“ฑ์„ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค์–ด์ง„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ์›น๊ณผ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์„ ๊ฒฐํ•ฉํ•˜์—ฌ, ๋ชจ๋ฐ”์ผ ์›น์˜ ํŠน์ง•๊ณผ ํ•จ๊ป˜ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์˜ ์žฅ์ ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ์—†์ด URL์„ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ํ™ˆ ํ™”๋ฉด์— ๋ฐ”๋กœ ๊ฐ€๊ธฐ ์•„์ด์ฝ˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋„คํŠธ์›Œํฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์€ ์˜คํ”„๋ผ์ธ ์ƒํƒœ์—์„œ๋Š” ์‚ฌ์šฉ์ด ์–ด๋ ค์šฐ๋ฉฐ, ์นด๋ฉ”๋ผ์™€ ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”Œ๋žซํผ ๋‚ด์˜ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
ย 

2.2 ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ

๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ(Native Apps)์€ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์— ์ตœ์ ํ™”๋œ ์–ธ์–ด๋กœ ๊ฐœ๋ฐœ๋œ ์•ฑ์ž…๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์€ ์•ˆ๋“œ๋กœ์ด๋“œ์™€ ios์™€ ๊ฐ™์€ ํŠน์ • ํ”Œ๋žซํผ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์•ฑ์„ ๋งํ•˜๋Š”๋ฐ, ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” Java ๋˜๋Š” Kotlin์„ ์‚ฌ์šฉํ•˜๊ณ , ios๋Š” Swift ๋˜๋Š” Object C๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ์ œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์€ ํŠน์ • ํ”Œ๋žซํผ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ •์ ์ด๋ฉฐ ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”Œ๋žซํผ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ API๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์€ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ๊ณผ ๊ด€๊ณ„์—†์ด ์˜คํ”„๋ผ์ธ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์˜ ์นด๋ฉ”๋ผ์™€ ๊ฐ™์€ ์žฅ์น˜์™€๋„ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ์ˆ˜์‹ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ, ํ”Œ๋žซํผ์— ํ•œ์ •์ ์ด๋ผ๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ”Œ๋žซํผ์— ๋งž๋Š” ์•ฑ์„ ์ œ์ž‘ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์„ ํˆฌ์žํ•ด์•ผ ํ•˜๋Š” ์–ด๋ ค์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค.
ย 

2.3 PWA

์ถœ์ฒ˜ : https://web.dev/์ถœ์ฒ˜ : https://web.dev/
์ถœ์ฒ˜ : https://web.dev/
ย 
์œ„ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์›น ์•ฑ์€ ์ ‘๊ทผ์„ฑ์ด ๋†’๊ณ , ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์€ ๊ธฐ๋Šฅ์ ์ธ ์ธก๋ฉด์ด ๋†’๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  PWA๋Š” ๊ทธ ๋‘˜์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ์ž๋ฆฌ์— ์œ„์น˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ฆ‰, PWA๋Š” ์›น ์•ฑ์˜ ๋†’์€ ์ ‘๊ทผ์„ฑ๊ณผ ๋„ค์ดํ‹ฐ๋ธŒ ์›น์˜ ๊ธฐ๋Šฅ์ ์ธ ์ธก๋ฉด์˜ ์žฅ์ ์„ ๋ชจ๋‘ ๊ฐ–๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
Google I/O 2016์—์„œ Web Developer Relation ํŒ€์˜ Paul์ด PWA์— ๋Œ€ํ•ด์„œ ์ด๋ ‡๊ฒŒ ๋งํ•ฉ๋‹ˆ๋‹ค.
ย 
"That app looks like native, I hope it behaves like it." (๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ๊ณผ ๊ฐ™์ด ๋ณด์ด๋‹ˆ๊น, ์‹ค์ œ๋กœ๋„ ๊ทธ๋ ‡๊ฒŒ ํ–‰๋™ํ•˜๊ธธ ๋ฐ”๋ผ.)
ย 
์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” behaves(ํ–‰๋™)์€ Performance์™€ Interaction์„ ํ•ฉํ•œ ๊ฒƒ์œผ๋กœ, ์•ฑ์ด ์–ด๋–ค ๋Š๋‚Œ์ด๊ณ  ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ง๊ด€์ ์ธ ๊ฒƒ๋“ค์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ PWA๊ฐ€ ์ทจํ•ด์•ผ ํ•  ์•ฑ์˜ ๊ธฐ๋Šฅ์€ ์–ด๋–ค ๊ฒƒ์ด ์žˆ์„๊นŒ์š”?
ย 
๋‹ค์Œ์€ PWA์˜ ๋Œ€ํ‘œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • PUSH ์•Œ๋ฆผ
  • ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ
  • ํ™ˆ ํ™”๋ฉด์— ์ถ”๊ฐ€
ย 
์šฐ์„  PWA๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ์•ฑ์œผ๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํฐ ์—ญํ• ์„ ํ•˜๋Š” Push ์•Œ๋ฆผ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ๋„ ์˜จ๋ผ์ธ์—์„œ์™€ ๋™์ผํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋ฉฐ ์‹ค์ œ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์ฒ˜๋Ÿผ ํ™ˆ ํ™”๋ฉด์— ์ถ”๊ฐ€ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์€ HTTPS๋ฅผ ์š”๊ตฌํ•˜๋Š”๋ฐ ์ด๋Š” PWA๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์š”๊ฑด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฑ•ํ„ฐ๋กœ ๋„˜์–ด๊ฐ€ ๊ณ„์†ํ•ด์„œ PWA์˜ ์š”๊ฑด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.
ย 
๐Ÿ’ก
Google I/O ? 2008๋…„์— ์‹œ์ž‘๋˜์–ด ๊ตฌ๊ธ€์ด ์ผ ๋…„์— ํ•œ ๋ฒˆ ๊ฐœ์ตœํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์ง€ํ–ฅ ์ฝ˜ํผ๋Ÿฐ์Šค๋กœ, ๊ตฌ๊ธ€์˜ ์›น, ๋ชจ๋ฐ”์ผ, ๊ตฌ๊ธ€ API, ์•ฑ ์—”์ง„ ๋“ฑ ๊ฐœ๋ฐฉํ˜• ์›น ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์‹ฌ๋„ ์žˆ๋Š” ์„ธ์…˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Google I/O์˜ I์™€ O๋Š” "Input/Output"๊ณผ "Innovation in the Open"๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (์ถœ์ฒ˜ : ์œ„ํ‚ค๋ฐฑ๊ณผ)