Trend of Web
VanillaJS
ํ๋ ์์ํฌ๋ฅผ ๋๊ฒ ๋น๊ด์ ์ผ๋ก ์๊ฐํ๋ ์ฌ๋๋ค๋ ์๋ค. DOMํ๋ ๋ฐ์๋ ํธํ์ง๋ง, ๊ต์ฅํ ๋๋ฆผ. ์นํฉ์ด ๊ฐ์ฅ ์ ๋ช ํ ๋ฒ๋ค๋ง ํด์ธ๋ฐ, ๊ทธ๊ฑฐ๋ง ํด์ ์ถฉ๋ถํ ํ๋ก๊ทธ๋๋ฐํ ์ ์๋ค๋ผ๊ณ ๋ณด๋๊ฒ vanilla js์ ๋๋ค.
๋์ค์ ์ผ๋ก ์ฐ์ธ๋ค๊น์ง๋ ์๋์ง๋ง ๋์ฌ๊ฒจ๋ณผ๋งํ ๋ณํ์ด๋ค. ์ ๋ํฐ์์ ๋ฐํํ ์๋ฃ์ ๋ฐ๋ฅด๋ฉด ์ค์ 3D ๋ ๋๋ง ์์ง์ ๊ต์ฅํ ๋ฒ๋ฒ ๊ฑฐ๋ฆฌ์ง๋ง ์ฌ๋ฆด ์ ์๋ ์์ค์ด๋ผ๊ณ ์๋ ์ ์ด์ผ๊ธฐ๋ฅผ ๋ค์๋ค.
์ค์ c++ ์ดํ์ ๋นํด์ ์๋๊ฐ 1/2๋ฐ์ ์ฐจ์ด๊ฐ ์๋๋ค. ์ด๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์ปดํ์ผํด์ ์ฌ๋ฆด ์ ์๋ ๊ธฐ์ ์ด ์น ์ด์ ๋ธ๋ฆฌ์ด๋ค.
๊ตณ์ด ์ ์ ํ ๊ฑด ์๋ ๊ฒ ๊ฐ์ง๋ง, ์ด๋ฐ ํ๋ ์์ํฌ์ ๋ณํ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ณํ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํ๋ค. ํ๋ ์์ํฌ๊ฐ ๊ฐ๋ฐ์ ํธํ๊ฒ ํด์ฃผ๋ ๊ฒ๋ ์๊ธด ํ๋ฐ, ์ฐ๋ฆฌ๋๋ผ์์ ์ ์ผ ์ ์ ์จ์ด ๋์ ํ๋ ์์ํฌ๋ฅผ ์ด์ผ๊ธฐํ์๋ฉด ๋ฆฌ์กํธ๋ฅผ ์ด์ผ๊ธฐํ ์ ์๋ค. (๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ)
๋ฆฌ์กํธ์ ๊ฒฝ์ฐ์๋ Virtual DOM์ ์ฌ์ฉํ๋ค. 6์ฃผ๋ถํฐ ์์ํด์ Tree ๊ธฐ๋ฐ์ผ๋ก ์๋๋ก ์ญ ๊ฐ๋ ํํ๋ก ์์ ์ ํ๊ฒ ๋๋ค. ๋ฆฌ์กํธ 16 ์ด์ ๊ณผ ์ดํ๋ก ๋๋๋๋ฐ, ์ด๋ฌํ ๋ณํ๊ฐ ํฌ์ง ์์ง๋ง ์ฝ๊ฐ ์๋ค. ์ฒ์ ํ ๋์๋ state๋ ํ๋กญ์ค๋ก ๋ง์ด ๊ด๋ฆฌํ์๋ค.
๊ทธ ๋ค์์๋ Angular JS๊ฐ ์๋ค. ๊ตฌ๊ธ์์ ๋ง๋ ๊ธฐ์ ์ด๊ณ , ๋ฆฌ์กํธ์ ๋นํด์๋ ์์ฃผ ์ฌ์ฉ๋์ง ์์ง๋ง ๋ณํ๊ฐ ๋ง๋ค. ์ฐ๊ธฐ ๋ณต์กํ์ง๋ง ์ฐ๋ ๊ณณ์ ๊ฝค ์๋ค. ๋ฐฐํ๊ทธ๋ผ์ด๋ ๋ก๋น๋ Angular๋ก ๋ง๋ค์๋ค. ๋ ๋๋ง ํด์ ๊ฐ์ฅ ํฐ ๋ณํ๋ Ivy๊ฐ ๋ฐ์นญ์ด ๋๋ค๋ ์ ์ด๋ค.
Angular Rendering : ํ๊ตญ์์๋ jQuery๋ง ์ฐ๋ ์ถ์ธ์๋ค. ๋๋ฆฌ์ง๋ง ๊ฐ๋ฐ ์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
Tree-Shaking : ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํธ๋ฆฌ ๊ตฌ์กฐ์ DOM์ ๋ฐ๊พธ๋ ํํ์์ ์ฐฉ์ํด์ ์ต๊ทผ์ ๋ง๋ค์ด์ง ๊ธฐ์
Vue.js
Svelte : Virtual DOM ํํ๋ก ํ๊ฒ ๋๋ค. ์ง์ ์ปจํธ๋กคํ๋ ๋ฐฉ์์ผ๋ก ํ๊ฒ ๋๊ณ , ๋ ๋๋ง ์๋๊ฐ ๋ค๋ฅธ ์ธ๊ฐ์ ๋นํด์ ๋น ๋ฅด์ง๋ง ๋ณํํ๋ ๋ฐ์๋ ๋๋ฆฌ๋ค.
Server Side Rendering
๋ฐฑ์๋ ๊ฐ๋ฐ์๋ค์ด ํ๋ ์์ํฌ์ ๋ณํ์ ์ ์์๊ฒ ๋ฐ์ํ๋ ๊ฒ์, ์์ ์๋ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ด html๋ก ๋ฐํ์ ํ์๋๋ฐ, ์ต๊ทผ์๋โฆ
ํ์คํ๊ฐ๋ฐ์๋ฅผ ์ฐพ๋ ์ด์ ๊ฐ ์๋ฒ ๊ฐ๋ฐ์๊ฐ html์ ๋ค ์งฐ์ด์ ์์์ด์ผํ๋๋ฐ.. ์ง๊ธ์ ํด๋ผ์ด์ธํธ์์ api ํํ๋ก ๋ฐ์์ ์ก์ ์ ์ทจํ๊ฑฐ๋ ํ๋ฉด์ ๊ทธ๋ฆฌ๋๊ฑด ํด๋ผ์ด์ธํธ๊ฐ ํ๋ค. (ํ๋ ์ดํ๋ฆฌ์ผ์ด์ )
์ฌ์ง์ด ๋ฐ์คํฌํ ์ดํ๋ฆฌ์ผ์ด์ ์ด๋, CLI ์ฐฝ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ทธ๋ ๋ค. ๋ ๋๋ง์ ์ ๋ฌธ์ ์ผ๋ก ํ๋ ์๋ฒ๋ง ๋ฐ๋ก ๋์์ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ฐฉ์์ ์ฃผ๋ก ์ฐจ์ฉํ๊ณ ์๋ค.
๋ฆฌ์กํธ, ์ต๊ทค๋ฌ๋ก ๊ฐ๋ฐํ์๋ฉด ์๋ฒ๋ฅผ ๊ฐ์ด ๋ผ์์ฃผ๊ธฐ ๋๋ฌธ์.
GraphQL
- ์ ์ฉํ๋ค๋ ์ฌ๋๋ ์๊ณ . Rest API์ ๋จ์ํ ํํ๋ฅผ ๋ ์ฟผ๋ฆฌ ์งํฅ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ค๋ค. ์ด๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ํด๋ผ์ด์ธํธ์์ ๋ณต์กํ ํํ์ URL์ ์ ๋ฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณต์กํ ํํ์ ํ ์๊ฐ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
ํ์ฌ์ ๋ณํ
- ๊ธฐ์กด์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ๋ก๋ถํฐ HTML์ ๋ฐ์ ๋ ๋๋ง, ๋์คํ๋ ์ดํ๋ ํํ์๋ค๋ฉด ์ง๊ธ์ ์๋ฒ ์ฌ์ด๋์์ API๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ์ํ ๊ด๋ฆฌ ๋ฑ์ด ์ค๋ ๋ ์ ํํ์ด๋ค. (์ด๋ฐ ์์ผ๋ก ํ๋ก ํธ๊ฐ ๋ง์ด ๋ณํํ๊ณ ์๋ค.)
- ์ผ๋ฐ์ ์ผ๋ก ์ Json์ ์ฐ๋๊ฐ? ์ด ๋ณํ์ ๋ง์ถฐ์ ๋ฐ๋๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐฑ์๋์ ๋ณํ
์๋ฒ์์๋ ๊ฐ์ฅ ํฐ ๋ณํ๋,
์๋ ์๋ PHP๋ก ๋ค ๋๋ ค๋ฐ์์ ํ์๋๋ฐ ์ง๊ธ์ ์ฌ๋ฌ ๊ฐ์ ์๋ฒ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์๋ฒ๋ค์ ์ง๋จ? ์๋ฒ๋ค์ด ์์ฒญ๋๊ฒ ๋ง์ด ๋ชจ์ฌ์๊ณ ๋๊ท๋ชจ ์์ฒญ์ด ๋ค์ด์๋ ์ค์ผ์ผ ์์์ด ๋๊ฒ๋๋ง ์ค์ ํ๋ฉด ์ ๋์๊ฐ๋ ํธ์ด๋ค.
์ง๊ธ์ ๋ฐฑ์๋ ๊ตฌ์กฐ์์๋ ๋ถ์ฐ๋ ๊ตฌ์กฐ์ ์๋ฒ๋ก๋ง ์ด์ผ๊ธฐ๋ฅผ ํ๊ฒ ๋๋ค. ๋ถ์ฐ ์๋ฒ๋ฅผ ์ฐ๊ฒ ๋๋ฉด ์ฝ๋ฉ์ด ๋ ์ด๋ ค์์ง๊ฒ ์ง๋ง, ๋ฐ์์๋๊ฐ ๋นจ๋ผ์ ธ์ ๋ถ์ฐ์๋ฒ๋ฅผ ๋์ ํจ.
๋์ปค
๋๋ถ๋ถ ๋์ปค๋ฅผ ์ด๋ค. ๋๊ท๋ชจ ์๋ฒ ๋ฐฐํฌ์ ์์ด์ ์ค์ํ ์ญํ ์ ์ฐจ์งํ๋ ๋์ปค.
๋๊ท๋ชจ์ ์๋ฒ ๊ตฐ์ง์ด๋ผ๋ ํํ์ ์ผ์๋๋ฐ, ๊ทธ๋ฌ๋ค๋ณด๋ ๊ตฐ์ง์ ๊ด๋ฆฌํ ์น๊ตฌ๋ค์ด ํ์ํด์ง. ์๋ฒ๋ฅผ ํ ๊ฐ ๋์ ๋๋ฐ ์ฌ๋์ด ๊ณ์ ๋ชฐ๋ ค์์ ์๋ฒ ์ ์ฒด๊ฐ ๋ถํ -> ์๋ฒ๋ฅผ ๋นจ๋ฆฌ ๋๋ ค์ ์ง์ง(?) ๋ณด๋ด์ผํ๋ ์น๊ตฌ๊ฐ ์์ ์ ์๊ณ . ์ด ์๊ฐ์๋ ์ฌ๋์ด ์ ๋ชฐ๋ ค์ ์๋ฒ๋ฅผ ๋๊ณ . ์ด๋ฐ ๊ธฐ์ ์ด ํ์ํ๋ค.
-> Orchestration (์ฐ์โฆ. ๋๋ฌด ์ ๊ธฐํ๋ค)
๊ฐ์์ ํด๋ผ์ฐ๋ ์ปจํ ์ด๋๋ค์ ์งํํ๋.
๋์ปค์ ๊ฐ์ด Go๋ก ๊ฐ๋ฐํ ์ฟ ๋ฒ๋คํฐ์ค, ์ค์นผ๋ผ๋ก ๊ฐ๋ฐํ ๋ง๋ผํฐ? ๋ง๋ผํค?
์!!!
HTTP Server
Tomcat ๋ฑ๋ฑ. ์๋จ์ด๋ ๋ท๋จ์ ๋์ฌ์ HTTP ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
Nginx (์์ง์ค?)
๋ถ์ฐ๋ ์๋ฒ ์ฒ๋ฆฌ์ ๊ฐ์ฅ ์ ๋ง๋๋ค. ์ฑ๋ฅ๋ ๋๊ท๋ชจ ์ฒ๋ฆฌ์์ async๊ฐ ํ์์ธ๋ฐ ๊ทธ๋ฐ ๊ฑธ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์ ๋ง๋๋ค๊ณ ๋ณผ ์ ์๋ค.
Database
์ ๊ทผ์ด ์ฝ๋ค๋๊ฒ ์ฅ์ ์ด๋ผ์ ์์ฒญ๋๊ฒ ๋ง์ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ๋ค์ด๋ฒ ๋ด์ค๋ ๋๊ธ, ์ข์์๋ง ํด๋ ์์ฒญ๋๊ฒ ๋ง์ ๋ฐ์ดํฐ๋ค์ด ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ๊ฒ ๋๋๋ฐ, ์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํต์ฌ ํ๋์ด๋ค.
- RDBMS : ํต์ RDB์ RDB๊ฐ ์๋ ๊ฒ์ผ๋ก ๋๋๋ค. B-Tree ๊ณ์ด์ ์๋ฃ๊ตฌ์กฐ๋ก ๊ตฌํ๋์ด ์์น๊ฐ ๋น ๋ฅด๊ณ ๋๊ท๋ชจ ์ธ์ํธ๊ฐ ๋๋ฆฌ๋ค. ๊ตฌ์กฐ์ ํค๋ฅผ ์ก๊ณ ํธ๋์ญ์
๊ฑธ๊ธฐ๊ฐ ์ฝ๋ค. ์ด๊ฒ B-Tree์ ํต์ฌ. ๊ฐ๋ ฅํ ํธ๋์ญ์
์ ๋ณด์ฅํ ์ ์๊ณ . ๋ฆด๋ ์ด์
์ญ์ ๋ณด์ฅํ ์ ์๋ค. ๋ ํ๋ฆฌ์นด(๋ณต์ ํด์ ๋น ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ์ ๋ํ๋ ๊ฒ)๊ฐ ์ด๋ ค์.
- SQL Server, Oracle, MySQL, PostgreSQL(ํด๋์ค ๊ธฐ๋ฐ DB), DB2(์ซ ์๋ ๊บผ), SYBASE, Maria DB
- NoSQL : ๋ ํ๋ฆฌ์นด๊ฐ ์ฝ๋ค. SQL์ด ์๊ณ ํจ์ ๊ธฐ๋ฐ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ํน์ ์ฟผ๋ฆฌ ํจํด์ ๊ฐ๊ฒ ๋๋ค. RS..๋ด..ํธ๋ฆฌ? ์ปฌ๋ผ ๋จ์๋ผ์ ์ธ์ํธ๊ฐ ๋น ๋ฅด๋ค.. ๋ ํ๋ฆฌ์นด๊ฐ์ ์์
์ด ๋น ๋ฅด๋ค
- Key-value store : RAM์ ์ ์ฅ ์บ์ฑ ๋๋น.. redis..
- DocumentDB : MongoDB ํ์ผ์ฒ ์ ์ฅํ๋ ๊ฒ์ฒ๋ผ. ์ ๊ทํ๊ฐ ์๋๋ผ ์ญ์ ๊ทํ ํจํด์ ํตํด์ ์ต๋ํ ๊น๋ํ๊ฒ ์ฐ๋ ๊ฒ ๋ชฉ์ ์ด๋ค. json ํํ์ key-value๋ก ๋์ด์์ด ์ดํดํ๊ธฐ๊ฐ ๋งค์ฐ ํธํ๋ค. join์ด ๊ทผ๋ฐ ๋ถ๊ฐ๋ฅํจ. join์ ์ํด์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ญ์ ๊ทํํ ์ง๊ฐ ํต์ฌ ํฌ์ธํธ์. (Trello๋ MongoDB๊ฐ ๋ฉ์ธ DB์โฆ)
- Column DB : Key-value ํํ ๋ค์์ผ๋ก ๋ง์ด ์ฐ์. H-BASE(hadoop)๋ ์นด์ฐ๋๋ผ(๋ก๊ทธ ์กฐํ). join์ด ์๊ณ columnํํ๋ก ์ ์ฅ, ๊ทผ๋ฐ insert๊ฐ ๋น ๋ฆ. -> ๋ค์ด๋ฒ ๋๊ธ ๊ฐ์ ์ Column DB๋ก ์ ์ฅ
- Graph DB : RDB์์๋ ๊ทธ๋ํ ํํ๋ก ์ ์ฅํ๊ธฐ๊ฐ ํ๋ ๋ฐ, ๊ฐ๋ น ์น๊ตฌ ๊ด๊ณ์์ ๋ด๊ฐ ์ ์๋ ์๋ ์น๊ตฌ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ ์ด๋ค. Vertex, Edge๋ก ์ด๋ฃจ์ด์ง๋ค.
- AMPQ : ์๋ฒ-์๋ฒ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ๊ฐ? ๋ฐฑ์๋๋ง ์ฐ๋ ๊ธฐ์ ์ ์๋๋ฐ, ์ฑ๋ฅ์ด ๊ต์ฅํ ๋น ๋ฅธ ์ด์์ฒด์ ์์๋ ๋ง์ด ์ฐ๋ ๋ฐฉ๋ฒ์ธ๋ฐ, ๋ฉ์ธ์ง ํ๋ผ๋ ํน์ ํ์คํฌ ์ ์ฅ ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ํ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ค๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์์ผ์ ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋ค๋ฅธ ์์ ์์๊ฒ ์๋ ค์ฃผ๋ ๋ฐฉ์. ๋ณดํต ์ปค๋งจ๋ํ, ์ด๋ฒคํธํ๋ ๋ง๋ค์ด์ ์ฌ์ฉํ๊ณ ๋ฐฑ์๋์์๋ AMPQ๋ผ๋ ๋ฉ์ธ์ง ํ๋ฅผ ์ฌ์ฉํ๋ค. (๋ ๋น๋ํธ, ์นดํ์นด) ๋๊ท๋ชจ ์๋ฒ๊ฐ์ ๋ช ํํ ํต์ ์ ํ์ง ์๊ณ ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌํ๋ ํ๋ฅผ ํตํด ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ค
- Message ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ : ๋ถ์ฐ๋ ์๋ฒ์์๋ ๋ฉ์ธ์ง ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ์ด ์ค์ํจ. ์ด๋ค ์๋ฒ๊ฐ ์ด๋ค ์ฒ๋ฆฌ๋ฅผ ํ ์ง๋ฅผ ๋ช ํํ๊ฒ ๋ช ์๋ฅผ ํ ์๊ฐ ์์โฆ ์ผ์ด ๋ค์ด์ฌ ๋๋ง๋ค ๋ฐ๋ก ๋๊ฒจ์ค์ผํด์ ๊ทธ๋ฐ ๋น๋๊ธฐ ๋ฉ์ธ์ง?๋ฅผ ์ฒ๋ฆฌํ๋ ์ฌ๋์ด ํ์. ์ด๊ฒ ํ์ํ๋ค๋ฉด ์นดํ์นด๋ฅผ ์ถ์ฒํ๋ค.
- gRPC : RPC๋ผ๋ ๊ธฐ์ ์ ipc ํต์ ๊ท์ฝ์ ์ผ์ข
. HTTP๋ฅผ ์์. HTTP์ ํ๊ณ์ ์ ๋๋ฌด ์ฌ์. ๊ตฌ์กฐ๋ ๋๋ฌด ์ฝ๊ณ ์ ๋ฌํ ์ ์๋ ๋ฐ์ดํฐ๋ ์ผ๋ง ์๋๋ค. HTTP ๋ฉ์๋ 4๊ฐ๋ก๋ ๋๋ฌด ์ฒ๋ฆฌ๊ฐ ์๋๋ค. ์ด๋ฅผ ์ํด ์กฐ๊ธ ๋ ๋ณต์กํ ํต์์ธ RPC๋ฅผ ์ฒ๋ฆฌํจ. (Remote Procedure Call) ํด๋ผ์ด์ธํธ๊ฐ ๋ฃจ๋น๋ผ๋ฉด ๋ฃจ๋น๊ฐ C++ ํจ์๋ฅผ ํธ์ถํ ์ ์๊ฒ ํด์ค. ๋ง๋ค์ด์ ๋ณดํต ์ฌ์ฉ์ ํด์ผํ๋๋ฐ ์ด์์ฒด์ ๋ ์์์ผํ๊ณ ๋ด๋ถ ๊ธฐ์ ๋ ์ ์์์ผํด์ ๋ณต์กํจ. ๋๊ฐ ํ ๋ช
๋ง๋ค์ด๋๊ณ ์ฐ์ ํด์ ๋ง๋ค์ด๋ ๋์ด ๊ตฌ๊ธ์ด๊ณ ๊ทธ๊ฒ gRPC์.
- HTTP๋ blocking์ด ๋๊ธฐ ๋๋ฌธ์ non-blocking ๊ธฐ์ ์ด ํ์ํ๋ค. ๊ทธ๊ฒ gRPC. ๊ทธ๋์ ์์ฃผ ์ ์ฉํจ.
- HTTP๋ json๊ณผ ํต์ ํจ. gRPC๋ Protobuf๋ฅผ ์ฌ์ฉํด์ ํต์ ์ ํ๊ณ , ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋์ด ํธํ๊ฒ ์ฝ์ ์ ์๋ ๋ฐ์ดํฐ๋ ์๋๊ฐ ๋๋ฆฌ๋ค. ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ ์ฝ์ ์ ์์ง๋ง ์ปดํจํฐ๊ฐ ์ฒ๋ฆฌํ๊ธฐ์ ๋น ๋ฅด๋ค. gPRC๋ ๊ทธ๋์ Protobuf๋ ๋ง์ด ์ฒ๋ฆฌํ๋ค. IDL? gRPC ์น 1.0 ๋ฒ์ ์ด ๋์ด.
- Event-Driven System : ์๋ก ๊ฐ์ ์ญํ ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํด์ผํ๋๊ฐ์ ๋ํโฆ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ์์คํ
์ผ๋ก ๋ฉ์ธ์ง ํ๊ฐ์๊ฑธ ์จ์ ์๋ฒ๊ฐ ์๋ฒ๋ฅผ ์ปจํธ๋กค.. ์ผ์ ์ํฌ ์ ์๋ ๋ฐฉ์์ผ๋ก ๋ณํํ๊ณ ์๋ค.
- Service discovery : ์ด ์๋ฒ๊ฐ ์ฃฝ์๋์ง ์ด์๋์ง๋ฅผ ๊ธฐ๋กํด๋๋ ์์น. UTC๋ ๋ฆฌ๋ณธ? ์ ๋ ์นด? ๊ฐ์๊ฑธ ์ด๋ค. ํด๋ผ์ด์ธํธ๋ Hadoop, ์นดํ์นด๊ฐ ์ฐ๋ ๊ธฐ์ ์ธ ZooKeeper๋ฅผ ์ด๋ค.
- API Gateway : ์๋ฒ ๊ตฐ์ง์ ๋ค์ด๊ฐ๊ธฐ ์ ์ฒซ๋ฒ์งธ ๊ด๋ฌธ. ํ๋ก ํธ ์๋ฒ๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. ์ด๋ค ์์ฒญ์ด ์์ ๋ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ ์๋ฒ๋ฅผ ์ฐพ์์ค ์๋ ์๊ณ , ๋ก๊ทธ๋ฅผ ๋จ๊ธด๋ค๊ฑฐ๋ ๋ก๋๋ฐธ๋ฐ์ฑ์ ํ๋ค๋๊ฐ, ์ธ์ฆ(SSH ์ธ์ฆ, JWT Token ๊ถํ์ฒ๋ฆฌ), ์บ์ฑ ๋ฑ์ ์ญํ ์ ํ ์ ์๋ค.
- ์ด๋ฅผ HTTP๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ด ๋ฆฌ๋ฒ์ค ํ๋ก์
- Circuit Breaker
- Distribute Database
- ๋์ค์ฝ๋, ์๋ฆฌ๋ฐ๋ฐ ๋ฑ ๋๊ท๋ชจ ์ฒ๋ฆฌ ํ๋. ๋ง์ดํฌ๋ก์ํํธ ์ํคํ ์ฒ๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ต์ฅํ ๋ง์ด ํ๋ฆฌ๊ณ ์๋ค. ์๋ฒ๋ฅผ ๋ถ์ฐํ๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊ฒ์ธ๊ฐ? ๋จ์ํ๊ฒ๋ HTTP ์ฒ๋ฆฌ๋ก๋ ์ฝ์ง๋ง, ๋๋ฌด ์์ฌ์ด ์ ์ด ๋ง๋ค ๋ผ๋๊ฒ ํต์ฌ.
- Two Phase Commint : ์๋ฒ๊ฐ ๋ถ์ฐ๋์ด์๋ค๋ณด๋๊น DB์ ํธ๋์ญ์
์ ๋ณด์ฅํ๊ธฐ ์ด๋ ค์์ง. DB๊ฐ ์ฌ๋ฌ๊ฐ๊ณ ์ด ๋ฐ์ดํฐ๋ค์ ๋ค ์ ์งํด์ผํ๋๋ฐ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ? ์ด๊ฑธ ๋ฌด์ํ๊ฒ ํด๊ฒฐํ๋๊ฑธ Two Phase Commit์ด๋ผ๊ณ ํ๋ค. ์ด๊ฑด DB์ lock์ ํ๋ค.
- ์ฒ๋ฆฌ๊ฐ ๊ต์ฅํ ๋ช ํํ๊ณ ์ฝ์ง๋ง ์๋๊ฐ ๋๋ฆฌ๋ค.
- Saga Patterns : ์ด๋ฒคํธ๋ฅผ ๋ฐํ์์ผ์, ์ด๋ฒคํธ๊ฐ ํธ๋์ญ์ ์ ํค๊ฐ ๋์ด์ ์ฒ๋ฆฌ๊ฐ ๋๋ ๋๊น์ง๋ ๋ณด์ง ์๋๋ค. ๊ณผ๊ฑฐ์ ๋ฒ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋ ๊ฑฐ์. ๋ํฐ๋ผ์ดํธ? ํ ์ฒ๋ฆฌ๊ฐ ๋ค๋ฅธ ์๋ฒ์ ์ฒ๋ฆฌ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ฐฉ๋ฒ์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
- ๋น ๋ฐ์ดํฐ์ชฝ ์ ์ฉํ ๋ณํ : Data Warehouse. ๋๊ท๋ชจ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๊ฒ๋ ์ค๊ณ. ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํด์ผ ํ๋ค, ๋จธ์ ๋ฌ๋, ๋ฅ๋ฌ๋์ ํ๊ฒ ๋๋ฉด ๋ญ ํ์ํ ๊ทธ๋ฐ๊ฑฐ.
- ์ํ์น, ์คํํฌ๋ฅผ ๋ง์ด ์ฐ๋๋ฐ Data Streaming ๊ธฐ์ ์ด ์ค์ํด์ง. ๋ํ์ ์ธ๊ฒ ์ํ์น ํ๋งํฌ. ํ๊ตญ์์๋ ๋๊ท๋ชจ ํ๋ก์ ํธ๋ ๊ณ ์ฑ๋ฅ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ์ด ํ์ํ ๊ณณ์์๋ ์ํ์น ํ๋ญํฌ? ๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ค.
JVM
JVM Garbage Collector
- JVM์ด ์ ๊ณ์ ๋ณํ๊ณ ์๋๋ฉด, ๋ฉํฐ ํ๋ซํผ์์์ ์ฒ๋ฆฌ๋ฅผ ๊ณ ๋ คํ์ง ์์ผ๋ฉด ๋ ํผ๋ฐ์ค ์นด์ดํธ๊ฐ ๊ฐ์ฅ ๋น ๋ฅด๋ค๋ c Python์ ์ฐ๊ตฌ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค. ์ ๊ณ์ ๋ฐ๋๋? ๊ฐ๋น์ง ์ปฌ๋ ํฐ ์๊ณ ๋ฆฌ์ฆ์ด ์ ๊ณ์ ๋ฐ๋๋๊ฑฐ๋? ํ๋ฉด ๋ฉํฐ ์ฝ์ด์์์ ์ฒ๋ฆฌ๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ํ๋ ค๊ณ .
- ๊ธฐ๋ณธ์ ์ผ๋ก Keep Allocator์ ์ฒ๋ฆฌ..๋ฅผ.. Young Generation๊ณผ Old Generation์โฆ
- Young : ๊ธ๋ฐฉ ํด์ฒด๋ ๊ฐ์ฒด๋ค -> ๊ฐ๋ ์ฐจ๋ฉด ์ฒ๋ฆฌํ ๊ฒ ๋ง์ผ๋๊น ๋น์ด๋ค. ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ง ์์๋ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค. ๊ทธ๋์ ์๋ฐ๋ Heap์ ์ฌ์ฉ๋ฒ์ ๋๋ ์ ์ด๋ฐ ์์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ค. unuse๋๊ฑฐ ๋ฉ๋ชจ๋ฆฌ ์๋ฆฌ๊ณ , paging์ด ์ผ์ด๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณณ๊ณณ์ ๊ตฌ๋ฉ์ด ๋์ ์บ์๋ผ์ธ์ ๋ค ๋ฌด๋๋จ๋ฆฌ๋๊น compacktaion์ ํ ๋ฒ ํ๋ค.
- Old : ์ค๋๋์ ์ด์๋จ์ ๊ฒ ๊ฐ์ ๊ฐ์ฒด๋ค
- ์ด ๊ณผ์ ์ด ์ผ์ด๋๋ ค๋ฉด Stop the world๋ฅผ ํ๋ค. ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ์ ๊น ๋ฉ์ถ๊ณ , ์ปฌ๋ ํฐ์ ๊ธฐ๋ฅ์ ์ ์ํ์ํค๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ๋ชฉ์ ์ด๋ค. Garbage COllector์ ์ ์์์ผ ํ๋ ์ด์ : ์๋ฒ๊ฐ ๋ฉ์ถ๋ฉด ์๋๋๊น.
- ํด๋ผ์ด์ธํธ๋ ๋ฉ์ถ ์ ์๋๋ฐ ์๋ฒ๋ ๋ฉ์ถ๋ฉด ์๋ฉ๋๋ค. Garbage Collector๋ฅผ ์ ์์์ผํ๋ค.
-
๊ฐ์ฒด ์์ฑํ๋ ๊ฒ์๋ ์ฃผ์ํด์ผ ํ๋ ์ด์ ๊ฐ ์ด๊ฑฐ์.
-
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง?
- Serial GC : ๊ต์ฅํ ๋ ธ๋ฉํ ์ฒ๋ฆฌ ๋ฐฉ์. Mark - Sweep - Compaction : ๋ฉํฐ ์ฝ์ด์์ ๋๋ฆผ
- Throughput Collector
-
CMS : ๋ช ์์ ์ธ ๋์์ ํ๋ ค๊ณ ํ๋ ์๋
- Race Condition ๋๋ฌธ์ ์คํจํ ์ ์์? ์๋ฐ ํ์ผ ์ดํ๋ก๋ ๋๊ฒ ์ ์์ฐ๋ ๊ฒ์ผ๋ก ์๊ณ ์๋ค. CMS๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฉํฐ ์ฝ์ด๋ฅผ ๋๋ฆฌ๊ธฐ ์์ํ๋ค.
-
G1 Collector : ๋ฉํฐ ์ค๋ ๋ ์์.. Heap.. Full DC..? application๊ณผ generation๊ฐ์ ๊ด๊ณ..? old generation์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ฉด..?
-
์ธ๋ ๋์ด๋ฅผ ์ธ ์ ์๋ ์ํฉ์ด๋ผ๋ฉด G1 GC๋ฅผ ์ธ ๊ฒ์ด๋ค.
- GC Tuning์ด ์ดํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ํฅ์์์ ์ค์ํ๋ค.