WWDC 2021์ ํตํด ๋ฏธ๋ฆฌ ์์๋ณด๋ ์ฌํ๋ฆฌ 15
์น ๊ฐ๋ฐ์๋ผ๋ฉด ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง์ ๋ํด ๊ด์ฌ์ด ๋ง์ผ์ค ๊ฒ๋๋ค. ์ด๋ฒ WWDC 2021์์ ์ฌํ๋ฆฌ 15์ ๋ณ๊ฒฝ์ ๊ณผ ์ด์ ๋ํ ๋์ ๋ฐฉ์์ ์๊ฐํ๋ ์์์ด ์์ด ์ด๋ฅผ ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌํด ๋ณด๊ณ ์ฌํ๋ฆฌ 15๊ฐ ์์ผ๋ก์ UI์ UX์ ๋ผ์น ์ํฅ์ ๋๋ฆ๋๋ก ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์ ๋ช ํ ์คํ์์ค์ ๊ธฐ์ฌํ๊ฒ ๋ ์ฐ
React ํ๋ ์์ํฌ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ Next.js์ ์ ์ฝ๋๊ฐ ๋จธ์ง ๋์์ต๋๋ค. ์์ฃผ ์ ์ ์์ ์ฝ๋์ง๋ง ์ ๊ฐ ์ฐธ์ฌํ ์ฝ๋๊ฐ ์ฌ์ฉ๋๋ค๋ ์ ์ด ์ฐธ ๋ฟ๋ฏํฉ๋๋ค. ๊ท๋ชจ๊ฐ ๊ฑฐ๋ํ ์คํ์์ค์ธ ๋งํผ ์ฝ๋ ๋ฆฌ๋ทฐ ์ ์ฐจ์ ํ ์คํธ ๊ณผ์ ์ด ๊ต์ฅํ์ต๋๋ค. ์ด๋ฌํ ๊ฒฝํ์ด ์ฒ์์ด๋ค ๋ณด๋ ์ฝ์ง๋ ๋ง์ด ํ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ฝ์ง์ด ์ข์ ๊ฒฝํ์ด ๋์๊ณ ์ด ๊ฒฝํ์ ๊ณต์ ํด๋ณด๋ ค ํฉ๋๋ค.
์ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฑธ๊น?
Catridge ํ๋ก์ ํธ๋ฅผ ํตํด ๋ฆฌ์กํธ๊ฐ ์ด๋ ํ ๋ถํธํจ์ ์ ๊ฑฐํ๊ธฐ ์ํด ๊ฐ๋ฐ๋์๋์ง ๋ชธ์ผ๋ก ์ฒดํํ๊ฒ ๋์์ต๋๋ค. ์ ๋ชจ๋ ๋จ์๋ก ์ค๊ณํ๋์ง, ์ปดํฌ๋ํธ ๋จ์ ๋ฌด์์ธ์ง, ์ํ์ ์๋ช ์ฃผ๊ธฐ๊ฐ ๋ฌด์์ธ์ง, ์ JSX๋ฅผ ์ฌ์ฉํ๋๋ก ๊ถ๊ณ ํ๋์ง ๋ฑ react์ ๋ํด ๋ง์ฐํ๊ฒ๋ง ์๊ณ ์๋ ๋ถ๋ถ์ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค.
2021-04-21 ์ค๋ฅ ๋ณด๊ณ (SyntaxError Unexpected end of JSON input)
์ต๊ด์ ์ผ๋ก ๋ค์ด๊ฐ ๋ณธ Techblogposts, ๊ดํ ์คํฌ๋กค์ ๋ด๋ ค ๋ณด๊ณ ์ถ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ดํ๋ ์๋ฌ ๋ฐ์ ํ๋ฉด. ์ค๋ฅ ๋ด์ฉ์ SyntaxError Unexpected end of JSON input์์ต๋๋ค. SyntaxError Unexpected end of JSON input ์๋ฌ๋ JSON์ ํ์ฑ ํ๋ ค ์๋ํ์ง๋ง, ํด๋น ๋ฌธ์์ด์ด JSON ํ์์ ๋ง์ง ์์ ๋ ๋ฐ์ํฉ๋๋ค. ์ง๊ธ๊น์ง ์ ์๋ํ๋ ์ฝ๋๊ฐ ๊ฐ์๊ธฐ ์ ์ค๋ฅ๋ฅผ ๋ฐ์์์ผฐ๋์ง ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์์ฑํด ๋ณด์์ต๋๋ค.
DynamoDB์ ElasticSearch ํจ๊ป ์ฌ์ฉํ๊ธฐ
DynamoDB๋ฅผ ์ฌ์ฉํ๋ฉด์, ๊ธฐ์กด์ ๋ฐฉ์์ผ๋ก๋ ๊ฒ์ ๊ธฐ๋ฅ๊ณผ ํน์ ํฌ์คํธ ํํฐ ๊ธฐ๋ฅ์ ์ ํํ๊ฒ ๊ตฌํํ ์ ์์์ต๋๋ค. ๊ฒฐ๊ตญ ElasticSearch๋ฅผ ๋์ ํ๊ฒ ๋์๋๋ฐ์, ํ๋ฆฌ ํฐ์ด๋ก ElasticSearch๋ฅผ ์ฌ์ฉํ๋ ๋ฒ๊ณผ ๊ทธ ๊ณผ์ ์์ ๊ฒช์ ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์์ฑํด ๋ณด์์ต๋๋ค.
ํฌ๋กฌ๊ณผ ์ฌํ๋ฆฌ์์ ๊ฒช์ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์
์ผ๋ง ์ ๊น์ง ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ์งํํ ๋, ๊ธฐ์กด์ ์ฌ์ฉํ๋ ํฌ๋กฌ์์๋ง ํ ์คํธํ๊ณ ๋งฅ ํ๊ฒฝ์ ์ ํ ์ ๊ฒฝ ์ฐ์ง ์์์์ต๋๋ค. ํ์ง๋ง ๋จ๋ค์๊ฒ ๊ณต๊ฐํ๋ฉฐ ์ฌํ๋ฆฌ์์ ์ด์๊ฐ ๋ฐ์ํ๊ณ ์์์์ ํผ๋๋ฐฑ ๋ฐ์ ์ ์์์ต๋๋ค. ํ๋ก์ ํธ ์งํ ์ค ๊ฒช์ ๋ช ๊ฐ์ง ์ด์๋ฅผ ๊ณต์ ํด ๋ด ๋๋ค.
TechBlogPosts์ ํฌ๋กค๋ง ์ฑ๋ฅ ๊ฐ์ ํ๊ธฐ
DynamoDB๋ 25๊ฐ์ ํ๋ก๋น์ ๋๋ ์ฝ๊ธฐ ์ฉ๋ ์ ๋์ ํ๋ฆฌ ํฐ์ด๋ก ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ๊ธฐ์กด์ ํฌ๋กค๋ง ํ๋ ๋ก์ง์ผ๋ก๋ ๋ฐ์ดํฐ๊ฐ ๋์ด๋ ์๋ก ์ฝ๊ธฐ ์ฉ๋ ์ ๋์ ์ฌ์ฉ๋์ด ํฌ๋กค๋ง ์ฌ์ดํธ๋ฅผ ์ถ๊ฐํ๊ธฐ ๋ถ๋ด์ค๋ฌ์ธ ์ ๋๋ก ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ๊ธฐ ์์ํ๋๋ฐ์, ๊ทธ ์ด์ ์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์์๋ณด์์ต๋๋ค.
DynamoDB๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์์์ผ๋ฉด ์ข์์ ๊ฒ๋ค
AWS์์ ์ธ์ ๋ ๋ฌด๋ฃ๋ก ํ๋ฆฌ ํฐ์ด๋ฅผ ์ ๊ณตํ๋ DynamoDB. TechBlogPosts๋ฅผ ๊ฐ๋ฐํ๋ฉฐ ๋ฌด๋ฃ DB๊ฐ ํ์ํด ์ ํํ์์ง๋ง NoSQL์ ์ฅ๋ฒฝ์ ๋์๋๋ฐ์, RDB๋ง ์ฌ์ฉํด๋ดค๋ ์ ์๊ฒ '์๋ ์ด๊ฒ ์๋๋ค๊ณ ?'๋ผ๊ณ ์ธ๋ถ์ง๊ฒ ๋ง๋ ๋ช ๊ฐ์ง๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝํ์ผ๋ก ๋๋ DynamoDB๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์์์ผ๋ฉด ์ข์์ ๊ฒ๋ค์ ๋ํ์ฌ ๋๋ ์ ์ ๊ณต์ ํด ๋ด ๋๋ค.
CSS in JS๋ ๋ฌด์กฐ๊ฑด ๋ ์ข์๊น?
๋ง์ ์น ๊ฐ๋ฐ์๋ถ๋ค์ด CSS ์์ฑ์ ํ๋ค์ดํฉ๋๋ค. ๊ธ๋ก๋ฒ ์ค์ฝํ๋ก ์ด๋ฃจ์ด์ง๋ ์ ํ์์ ๋์ผํ ํด๋์ค๋ช ์ ์๋ ์ค๋ฒ๋ผ์ด๋ฉ์ผ๋ก ์ธํ ํผ๋์ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ๋์ฑ ๊ฐ๋ฐ์๋ฅผ ๊ดด๋กญ๊ฒ ํฉ๋๋ค. ์ด๋ฌํ ํผ๋์ ํด๊ฒฐํ๊ธฐ ์ํด Javascript๋ก CSS๋ฅผ ์์ฑํ๊ณ ํด๋์ค๋ช ์ ์ค๋ณต๋์ง ์๊ฒ ์์ฑํด ์ฃผ๋ CSS in JS ๋ฐฉ์์ด ๋ ์ค๋ฅด๊ณ ์์ต๋๋ค. ์ด๋ฌํ CSS in JS ๋ฐฉ์์ด ๋ฌด์กฐ๊ฑด ๋ ์ข์์ง ์์๋ณด๊ฒ ์ต๋๋ค.
Gatsby VS Next.js
์ฒ์ ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ค ๋ Create React App์ผ๋ก ๋ง๋ ํ SEO์ ๋ํ ํ๊ณ์ ์ง์ ํ์ด์ง๋ฅผ ์์ฑํ๋ ๋ถ๋ถ์ด ์์ฐ์ฑ์ ์ ํ๋๋ค๊ณ ๋๊ปด JAMStack์ผ๋ก ๋ค์ ๋ง๋ค์์ต๋๋ค. JAMStack์ ๋ง๋ค ๋ Gatsby๋ก ์์ํ ์ง, Next.js๋ก ์์ํ ์ง ์์ฒญ ๊ณ ๋ฏผ์ด ๋ง์๋๋ฐ์, ์ฑ๋ฅ๋ ๋น์ทํ๊ณ ๋ชฉ์ ๋ ๋น์ทํ๊ณ ์ฌ์ฉ๋ฅ ๋ ๋น์ทํด ๋ณด์์ต๋๋ค. ๊ทธ๋์ ์ง์ ๋ ๋ค ์ฌ์ฉํด๋ณด๊ณ ๊ธ์ ๋จ๊ธฐ๊ธฐ๋ก ํ์ต๋๋ค.
React์ ์์ง์ Class ํ์์ด ํ์ํ ์ด์ (feat. Errorboundary)
React Hooks๊ฐ ๋์ธ๊ฐ ๋ ์์ฆ, Class ํ์์ผ๋ก ์์ฑ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ณด๋ฉด ํ์จ๋ถํฐ ๋์ค๊ธฐ ๋ง๋ จ์ ๋๋ค. ๊ทธ๋ฌ๋ ์์ง๊น์ง๋ Class ํ์์ด ํ์ํฉ๋๋ค. Errorboundary๋ฅผ ๊ตฌํํ๋ฉฐ ์ ํ์ํ์ง ์์๋ณด๊ฒ ์ต๋๋ค.
CSS๋ณ์๋ฅผ ํ์ฉํ์ฌ ๋คํฌ ๋ชจ๋ ๊ตฌํํ๊ธฐ
๋ชจ๋ฐ์ผ ํ์ฉ์ด ์ ์ฐจ ๋์ด๋จ์ ๋ฐ๋ผ ์น ์ํ๊ณ๋ PC ๋์ ๋ชจ๋ฐ์ผ์ ์ค์ ์ผ๋ก ๋ง์ถฐ์ง๊ณ ์์ต๋๋ค. ํนํ ๋ชจ๋ฐ์ผ์์ ์ด๋์ด ํ ๋ง๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๊ฐ ๋ง์์ง์ ๋ฐ๋ผ ์น ํ์ด์ง๋ ๋คํฌ ๋ชจ๋๋ฅผ ์ง์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ง๊ณ ์์ต๋๋ค. CSS ๋ณ์๋ฅผ ํ์ฉํ์ฌ ๋คํฌ ๋ชจ๋๋ฅผ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค.
์น ํ์ค๊ณผ ์น ์ ๊ทผ์ฑ์ ์งํค๊ธฐ ์ํ ๋ ธ๋ ฅ์ด ํ์ํ ์ด์
์ธํฐ๋ท ์ํ์ ํ๋ค๊ฐ ๋ง์ฐ์ค ์คํฌ๋กค ๋ฒํผ์ผ๋ก ์ ์ฐฝ์์ ๋ณด๊ธฐ๋ผ๋ ์ง ํญ์ผ๋ก ๋ค์ ๋ฉ๋ด ์ ํํ๊ธฐ ๋ฑ ๋น์ฐํ ๋์ํด์ผ ํ๋ ๊ฒ๋ค์ด ์๋๋ ์ฌ์ดํธ๋ฅผ ๋ง๋ ์ ์ด ์์ ๊ฒ์ ๋๋ค. ๋ณดํต์ ์น ํ์ค์ ์งํค์ง ์์ ์น ์ ๊ทผ์ฑ์ ๋ถํฉํ์ง ์๋ ํ๋ฉด์ผ๋ก ๊ฐ๋ฐ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฌํ ๊ฒฝํ์ด ์์ด๋ ํ ๋ฒ์ฏค ๋ค์ด๋ดค์ ์น ์ ๊ทผ์ฑ์ด ๋์ฒด ๋ฌด์์ธ์ง, ์ ์น ์ ๊ทผ์ฑ์ ์ง์ผ์ผ ํ๊ณ ์งํค์ง ์์ผ๋ฉด ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
Atomic Design์ผ๋ก ๋ธ๋ก๊ทธ ๊ฐ๋ฐ ์์ํ๊ธฐ
React๋ก ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ค๊ณ ๋ง์๋จน์ ๋ค, React create app ํน์ Gatsby ๋ฑ ํ๋ก์ ํธ๋ฅผ ์์ฑ ํ ์ด์ ๋ถํฐ ๋ฌด์์ ์ด๋ป๊ฒ ํด์ผ ํ ์ง ๊ณ ๋ฏผํ ์ ์ด ์์ ๊ฒ์ ๋๋ค. ๋ณดํต ๊ฐ์ฅ ๋จผ์ ํ๋ ๊ฑด ์์ผ๋ก ์ด๋ป๊ฒ ์ค๊ณ๋ ๋ด์ฉ๋ค์ ๊ตฌํํ ์ง ์ํคํ ์ฒ๋ฅผ ๊ตฌ์ฑํ๋ ์ผ ์ ๋๋ค. ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์์ฌ๋ฆฌ๋ React์ Figma๋ Atomic Design์ด ๊ฐ์ฅ ์ ๊ฒฉ์ด๋ผ๊ณ ์๊ฐํ์ฌ ์ด๋ฒ์ ์๋ํด ๋ณด์์ต๋๋ค.