Deview 2018์ ๋ค๋ ์ ๋ค์๋ ์ธ์ ์ ๋ค์ ์ตํ ๊ฒธ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
ํ์ฌ๋ ๊ฐ Day๋ณ๋ก ๊ฐ์ฅ ์ธ์ ๊น์๋ 2๊ฐ์ ์ธ์ ์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค.
Deview 2018์ ๋ค๋ ์ ๋ค์๋ ์ธ์ ์ ๋ค์ ์ตํ ๊ฒธ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
ํ์ฌ๋ ๊ฐ Day๋ณ๋ก ๊ฐ์ฅ ์ธ์ ๊น์๋ 2๊ฐ์ ์ธ์ ์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค.
Vue, React, Angular ๋ฑ ๋ค์ํ ์น ํ๋ ์์ํฌ๋ฅผ ๊ณ์ ์ ํ๋ฉด์ ๋ชจ๋ JavaScript์ ์ค์์ฑ์ ๋๋ผ๊ณ ์์ ๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค. ๋ ๋น ๋ฅด๊ฒ ๋ณํ๋ ์ํฉ ์์์ JavaScript๋ ์ด๋ป๊ฒ ๋ ๊ณต๋ถํ ์ง, ์๋ก์ด ํ๋ ์์ํฌ๋ ์ธ์ ๋ฐฐ์๋ณผ์ง ๊ณ ๋ฏผํ๋ ๊ฐ๋ฐ์๊ฐ ๋ง๋ค๊ณ ์๊ฐํฉ๋๋ค. โJavaScript ๋ฐฐํ๊ทธ๋ผ์ด๋๋ก๋ถํฐ ์ด์๋จ๊ธฐโ์์๋ ์ด๋ฌํ ๊ณ ๋ฏผ์ ํ๋ ๊ฐ๋ฐ์๋ค์๊ฒ ํ์ํ ์ธ์ ์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด ์ธ์ ์ ์๋์ ๊ฐ์ ์์๋ก ์งํ๋์์ต๋๋ค.
- JavaScript์ ํ์๊ณผ ํ์ฌ
- ํ์ ๋ฒ์ , ServerSide Framework ๋ฑ ๋ค์ํ ๋ฐ์ ๋ฒ์
- Transpiling
- ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ธ์ผ ํ ์์ธ
๋ฐ๋ผ์ ์์ ๋ด์ฉ์ ์์๋๋ก ๊ฐ๋ตํ ์ถ๋ ค๋ณด์์ต๋๋ค.
JavaScript๋ 1995๋ 12์ 4์ผ ์ฒ์ ๋ฐํ๋์์ต๋๋ค. ๋น์์ ์น์ ๋์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด์ Java์ Java Applets ์ด ํฐ ์ธ๊ธฐ์์ผ๋ ๋น ๊ฐ๋ฐ์๋ค์๊ฒ ๋ค์ ์ด๋ ค์ ๋ ๊ฐ๋ณ๊ณ ๋จ์ํ ์ธ์ด๊ฐ ํ์ํ์ต๋๋ค. ์ด ๋ JavaScript์ ์ด๋ฆ์
Mocha -> LiveScript -> JavaScript
๋ก ๋ณ๊ฒฝ๋์๋๋ฐ ์ด๋ Netscape์ Sun์ ํ์ ์ผ๋ก Java์ฒ๋ผ ๋ณด์ฌ์ผ ํ๋ค๋ ๋ง์ผํ ์ ์๋ ฅ์ด ์์๋ค๊ณ ํฉ๋๋ค.
์ดํ๋ก ๊ณ์ ํ์คํ๊ฐ ์งํ๋์์ง๋ง ES4๊น์ง๋ ํฉ์ ๋์ถ์ ์คํจํ์์ต๋๋ค. ES5 ๋ฒ์ ๋ถํฐ๋ ESํ์ค์ด ์กํ๊ธฐ ์์ํ์ผ๋ฉฐ ํ์ฌ๋ ES9๊น์ง ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ JavaScript์ ํ์ ๋ฒ์ ์ผ๋ก
- JScript
- ActionScript
๋ฑ์ด ์์ต๋๋ค.
๋ ์๋ 2๊ฐ์ง๋ JavaScript๋ก๋ถํฐ ๋ฐ์ ํ์ต๋๋ค.
- AJAX - ๋น๋๊ธฐ์ ์น ์ดํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํ ์น ๊ฐ๋ฐ ๊ธฐ๋ฒ
- JSON - ๊ฐ๋ฒผ์ด Data ๊ตํ ํ์
JavaScript๋ NodeJS๊ฐ ๋ฑ์ฅํ๋ฉด์ ServerSide์ญ์ ๊ฐ๋ฐํ ์ ์๋ ์ธ์ด๊ฐ ๋์์ต๋๋ค. ๋ ๋ค์ํ๊ณ ๋ง์ ํจํค์ง๊ฐ ๊ฐ๋ฐ๋๋ฉด์ ์ด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ Package Manager์ธ
- npm
- bower
- yarn
๋ฑ์ด ๋ฑ์ฅํ์ต๋๋ค.
ํนํ yarn์ ๋ฑ์ฅํ์ ๋น์ npm์ ๋นํด ๋น ๋ฅธ ์๋๋ก ์ฃผ๋ชฉ๋ฐ์์ง๋ง ์๋์ ๊ฐ์ด npm ์ ๋ฐ์ดํธ ์ดํ ๊ทธ ์ฐจ์ด๊ฐ ๊ฑฐ์ ์์ด์ ธ ๊ฐ๊ณ ์๋ค๊ณ ํฉ๋๋ค.
์๋์ ๊ฐ์ด ๋ค์ํ Framework๋ค๋ ๋ฑ์ฅํ์์ต๋๋ค.
1st Generation : jQuery, Prototype, MooTools
2nd Generation : AngularJS, React, Vue,js
๋ ๋ค์ํ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฑ์ฅํ๋ฉด์ ๋ฒ์ ๋งค์นญ์ด ์ค์ํด์ก์ต๋๋ค.
์ค๋ ๋ ์ Javascript๋ ์์ํ๊ฒ ๊ทธ๋๋ก ์ฐ์ด๊ธฐ ๋ณด๋ค Framework์ ๊ฐ๋ฐ๋๊ตฌ๋ฅผ ํตํด ์งํ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ค์ ๊ธฐ๋ฅ๋ค์ npm๊ฐ์ ํจํค์ง ๋งค๋์ ธ๋ฅผ ํตํด ์ค์นํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
JavaScript ์์ค๋ฅผ ์ฝ์ด ์ ์ ํ ์์ค๋ก ๋ฐ๊ฟ์ฃผ๋ Transpiling ์ธ์ด๋ ์๋์ ๊ฐ์ ๊ฒ๋ค์ด ์์ต๋๋ค.
- TypeScript
- CoffeScript
- elm
- Dart
- GWT
Transpiling์ ํตํด ES๊ฐ์ ๋ฒ์ ์ ํธํํ ์ ์๋ BABEL์ด ์์ต๋๋ค.
๋ง์ง๋ง์ ์ด๋ ๊ฒ ๋ง์ ๋ฒ์ ๊ณผ ํ๋ ์์ํฌ๋ค ์ฌ์ด์์ ์ฐ๋ฆฌ๋ ์ด๋ ํ ์์ธ๋ก JavaScript๋ฅผ ๊ณต๋ถํด์ผ ํ๋๊ฐ์ ๋ํด์ ๋งํด์ฃผ์ จ์ต๋๋ค.
๋์ฒด๋ก ๊ฐ๋ฐ์๋ค์ ๊ธฐ์กด์ ๋ฌธ์ ์์ด ์ฌ์ฉํ๋ ๊ธฐ์ ๋ค์ด ์์์๋ ์๋ก์ด ๊ธฐ์ ์ ์ฝ๊ฒ ๊ด์ฌ์ ๋บ๊ธด๋ค๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ์ํฉ์์ ๋๊ตฌ๋ค์ ์๋ก์ด ๋ฒ์ ์ด ๋์์ ๋ ๋น์ฅ ๋ฒ์ ์ ์ฌ๋ ธ๋ค๊ฐ ์ด์๊ฐ ์๊ฒจ ๋ค์ ๋ด๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ฌ์์ต๋๋ค. ๋ฉ์ด์ ์ ๋ฐ์ดํธ ํ ๋ค์ํ ํ๋ฌ๊ทธ์ธ๋ค์ ์ด ์ ๋ฐ์ดํธ์ ๋๋น๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ ์ฌ๊ฐํด์ง๊ธฐ๋ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฒ์ ์ ๋ฐ์ดํธ๋ ์ ์คํ ใ ใ
๋ jQuery๊ฐ ๋์ธ์ผ ๋๊ฐ ์์๋๊ฐ ํ๋ฉด AngularJS, React, Vue๊ฐ ๋์ธ๊ฐ ๋์๋ฏ์ด ๋ค์ํ framework๊ฐ ๋์ค๋ฉด์ ํญ์ โ์ ๊ฑด ์ธ์ ๊ณต๋ถํ์ง?โ๋ผ๋ ์๊ฐ์ ๊ฐ์ง๊ณ ์์์ต๋๋ค. ์ด๋ฌํ ๊ณ ๋ฏผ์ ๋ํด
์ฐ๋ฆฌ๋ ๋ชจ๋ ๋ค ์ ์ ์๋ค๋ ๊ฒ์ ์ธ์ ํ๊ณ ์ ๋นํ ํธ๊ธฐ์ฌ๊ณผ ๊พธ์คํจ์ ์ ์งํ๋ ๊ฒ์ด ํ์ํ๋ค
๊ณ ํ์ จ์ต๋๋ค.
์ต๊ทผ NoSQL DB์ธ MongoDB, DynamoDB ๋ง์ด ๋ฑ์ฅํ๋ฉด์ NoSQL์ ๋ํ ๊ด์ฌ์ด ์ปค์ง๊ณ ์์ต๋๋ค. ์ ๋ํ ๋ค์ด๋ฒ์์๋ MongoDB๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๊ณ ์๋์ง, NoSQL์ ์ฅ๋จ์ ์ ๋ฌด์์ธ์ง ์๊ณ ์ถ์ด ์ธ์ ์ ๋ฃ๊ฒ ๋์์ต๋๋ค.
ํด๋น ์ธ์ ์ ์๋์ ๊ฐ์ ์ฃผ์ ๋ก ์งํ๋์์ต๋๋ค.
- ๋ค์ด๋ฒ์์์ Data Platform
- MongoDB๊ฐ ๋ค์ด๋ฒ์์ ์ด๋ค ๊ฒฝ์ฐ ๋์์ด ๋๊ณ ์๋๊ฐ?
- ๋ค์ด๋ฒ์์ MongoDB๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ฒช์ ์ํผ์๋๋ค
- ๊ฐ์ธ์ ์ผ๋ก ๋ฐ๋ผ๋ณด๋ MongoDB์ ์ฅ๋จ์ ๊ทธ๋ฆฌ๊ณ ์ ๋ง(vs RDBMS)
์ด์ฐฝ๊ธฐ์๋ ๊ฑฐ์ ๋ชจ๋ ์๋น์ค๊ฐ Web Server์ RDBMS Server๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์๋ค๊ณ ํฉ๋๋ค. ์ด ํ ์๋น์ค๊ฐ ์ ์ ํ์ฅ๋๋ฉด์ ๋น ๋ฅธ ์๋ต์ ์ํด Cache๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. ๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋น์ฉ๊ณผ ์ฉ๋ ์ธก๋ฉด์์ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํด HBase๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
๋ฐ๋ผ์ ์์ ๊ฐ์ ๊ตฌ์กฐ๋ก ์๋น์ค๊ฐ ์ ์ง๋๊ณ ์์์ผ๋ ์ ์ MongoDB๋ฅผ ์์ฒด์ ์ผ๋ก ์ค์นํ์ฌ ์ด์ํ๋ ๊ฐ๋ฐํ์ด ๋์ด๋ฌ์ต๋๋ค.
์ด๋ ์๋์ ๊ฐ์ ๋ฌธ์ ์ ๋๋ฌธ์ด์์ต๋๋ค.
- Schema less
- Sharding ์ง์
- Secondary Index ์ง์
- Transactoin ์ง์
- JSON ์ง์
- IDC DR ์ง์
์์ 6๊ฐ์ง๊ฐ ๊ฐ๊ฐ ๋ฌด์์ธ์ง ์ดํด๋ณด์์ต๋๋ค.
์ฌ์ ์ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ช ์ํ์ง ์์๋ ๋๋ ๊ตฌ์กฐ๋ฅผ ๋ปํฉ๋๋ค. RDBMS์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ Table๋ก ๊ตฌ๋ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ์ง๋ง Schema Less DB๋ ์ด๋ฌํ ์์ ์ด ํ์ํ์ง ์์ต๋๋ค. ๋ค์ด๋ฒ์ ๊ฐ๊ฐ ๋ค์ํ ์๋น์ค์์ DB๋ฅผ ๋ฐ๋ก ์ด๋ค๋ฉด ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ Schema Less๋ฅผ ํตํด ํตํฉ์ ์ผ๋ก ๊ด๋ฆฌํ ํ์๊ฐ ์๊ฒผ์ต๋๋ค.
์ด ๋ MongoDB๋ ์นผ๋ผ๋ช ๊น์ง ์ ์ฅํ๊ธฐ ์ํด์ 1 document๋น 46byte๋ฅผ ์ฐจ์งํ๊ธฐ ๋๋ฌธ์ RDBMS์ ๋นํด read/write ๋น์ฉ์ด ์ฆ๊ฐํ ์ ์๋ ๋จ์ ์ด ์์ต๋๋ค.
์๋น์ค ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด์ DB Scale Up์ ํ๊ณ๊ฐ ์๊ฒผ์ต๋๋ค. ๋ํ RDBMS๋ก Scale Out์ธ ์ค๋ฉ์ ๊ตฌํํ ๊ฒฝ์ฐ ํ์ฅ์ฑ์ด ๋จ์ด์ง๋ฉฐ ๊ฐ๋ฐ ๋ฐ ๊ด๋ฆฌ ๋น์ฉ์ด ๋ญ๋๋ค. ๋ฐ๋ผ์ Auto Sharding์ด ๊ฐ๋ฅํ Platform์ด ํ์ํ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ค๋ฉ์ด๋ ๊ฐ์ ํ ์ด๋ธ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถ์ฐํ์ฌ ์ ์ฅํ๋ ๊ฒ์ ๋ปํฉ๋๋ค.
์์์ ์ธ๊ธํ์๋ฏ์ด ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด HBase๋ฅผ ์ฌ์ฉํ๊ณ ์์ ๋ Secondary Index ๊ธฐ๋ฅ์ด ํ์ํ์ง๋ง HBase์์๋ ์ง์ํด์ฃผ์ง ์์์ต๋๋ค. HBase๋ File๋ณ๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋์ด ์ ์ฅ๋ฉ๋๋ค. ํ์ง๋ง MongoDB๋ Shard๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ Chunk๋จ์๋ก ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ Secondary Index๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๋ค๋ง Chunk๋ฅผ ๋๋์ด์ฃผ๊ฑฐ๋ ํฉ์น ๋ ๋ถํ๊ฐ ์๊ธด๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
NoSQL ์ค์์๋ Transaction์ ์ง์ํ๋ Platform์ด ํ์ํ์ต๋๋ค. ์ฌ๊ธฐ์ Transaction์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๋ ์์ ์ ๋จ์๋ก ์์์ฑ, ์ผ๊ด์ฑ, ๋ ๋ฆฝ์ฑ, ์ง์์ฑ๊ณผ ๊ฐ์ ์์ฑ์ ์ง์ํ์ฌ ์ฌ๋ฌ ์์ ์ ํ ๋ฒ์ ์ฒ๋ฆฌํ ๋ ๋ณด๋ค ์์ ์ ์ ๋๋ค.
์๋น์ค๊ฐ ์ปค์ง๋ฉด์ IDC์ ์ด์คํ๊ฐ ํ์ํด์ก์ต๋๋ค. ํนํ MongoDB๋ IDC๊ฐ์ Auto Failover๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ฒ์ฌ์ง๋ณ์ด ์ผ์ด๋ฌ์ ๊ฒฝ์ฐ ์ฅ์ ๊ฐ ์ผ์ด๋ IDC๋ฅผ ์ ์ธํ๊ณ ์ ์ ์๋ํ๋ IDC๋ก Failoverํ๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋ฉ๋๋ค.
์ฌ๊ธฐ์ IDC๋ Internet Data Center๋ก ์๋ฒ ์ปดํจํฐ์ ๋คํธ์ํฌ ํ์ ๋ฑ์ ์ ๊ณตํ๋ ์์ค์ ๋ปํฉ๋๋ค.
์ ์กฐ์ฌ๋ routing์ ์ฐ์ด๋ Mongos๋ฅผ client์ ๊ฐ์ด ๋ฐฐํฌํ ๊ฒ์ ๊ถ์ฅํ์ง๋ง ๊ทธ๋ ๊ฒ ์ฌ์ฉํ๊ณ ์์ง ์์ต๋๋ค. ์ด๋ ๋ฐฐํฌ ๊ด๋ฆฌ๊ฐ ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ธ๋ฐ ๋ค์ด๋ฒ์์ ํ์ํ ๊ธฐ๋ฅ์ mongos๊ฐ ์๋๋ฉฐ dba๊ฐ ์๊ฒฉํ ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ํตํฉ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ค์ด๋ฒ์์๋ Sharding์์ L4๋ฅผ ์ฌ์ฉํ ๊ฒ์ด ๊ถ์ฅ๋์์ผ๋ getmore์ด์๋ก ์ ๊ฑฐํ์์ต๋๋ค.
getmore ๋์ ์ค์ ๋ค๋ฅธ mongos๋ก ๊ฐ๋ฉด ์๋ฌ๊ฐ ๋ฌ๊ธฐ ๋๋ฌธ์ ๋๋ค. L4๋ Round Robin ๋ฐฉ์์ผ๋ก mongos๊ฐ ๊ณ์ ๋ฐ๋์ด L4๋ฅผ ์ ๊ฑฐํ ์ ๋ฐ์ ์์๋ค๊ณ ํฉ๋๋ค.
์ฌ๊ธฐ์ L4๋ ๋ก๋๋ฐธ๋ฐ์ฑ์ ํ ์ ์๋ ๋ผ์ฐํ ๊ธฐ๋ฅ์ ํฌํจํ ์ค์์น ์ฅ๋น์ ๋๋ค.
๊ฐ์ฅ ์ค์ํ ๋ฌธ์ ๋ผ๊ณ ๊ฐ์กฐ๋ฅผ ํ์ จ๋ ๋ถ๋ถ์ ๋๋ค. Mongos์ Shard Server ๊ฐ์ ์ปค๋ฅ์ ๊ด๋ฆฌ์ ๋ฌธ์ ๊ฐ ์๋๋ฐ ์ด๋ ์์ฒญ์ด ๋ง์์ง๋ฉด max๊ฐ unlimited์ด๊ธฐ ๋๋ฌธ์ ์ปค๋ฅ์ ์ ๊ณ์ ๋งบ์ด ๋ถํ๊ฐ ์์ฒญ๋๋ค๋ ๊ฒ์ด์์ต๋๋ค. ๋ฐ๋ผ์ ์๋์ ๊ฐ์ ์ต์ ์ ์ ์ฉํด์ผ ํ๋ค๊ณ ํฉ๋๋ค.
WiredTiger ์์ง ์ฌ์ฉ์ 3.2.11 ๋๋ 3.4 ๋ฒ์ ์ด์์ ์ฌ์ฉํ์ฌ์ผ Eviction Problem์ ๊ฒช์ง ์๋๋ค๊ณ ํ์ต๋๋ค.
๋ง์ฝ 3.0๋ฒ์ ์ ์ฐ๊ณ ์์ผ๋ฉฐ WiredTiger ์์ง ๋ฒ์ ์ ๋ฐ์ดํธ๊ฐ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ nmap์ฌ์ฉ์ ์ถ์ฒํ์ต๋๋ค.
์ฌ๊ธฐ์ Eviction Problem์ด๋ Memory Buffer์์ ์ค๋๋ Data๊ฐ ์ญ์ ๋๋ ๋ฌธ์ ๋ฅผ ๋ปํฉ๋๋ค.
์ฌ๊ธฐ์ Checkpoint๋ memory buffer์ disk ์ฌ์ด์ ๋ฐ์ดํฐ ๋ถ์ผ์น๋ฅผ ํด์ํ๊ธฐ ์ํด์ memory์์ disk๋ก data๋ฅผ syncํ๋ ์์ ์ ๋ปํฉ๋๋ค. Checkpoint ์คํ ์ ๋ชจ๋ Dirty Page๋ฅผ ๋ด๋ฆฌ๊ธฐ ๋๋ฌธ์ Disk IO๊ฐ ๋ง์์ ธ ์ฑ๋ฅ์ด ํ๋ฝ๋ ์ ์์ต๋๋ค.
RDBMS์์๋ Background index ์์ฑ์ ๊ด๋ จ ํ ์ด๋ธ๋ง lock๋์ง๋ง MongoDB์์๋ db ์์ฒด๊ฐ lock๋๊ธฐ ๋๋ฌธ์ ์ฟผ๋ฆฌ ์ง์ฐ์ด ์๊ธธ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ Background index ์์ฑ์ ์ฃผ๋ก ํธ๋ํฝ์ด ๋ฎ์ ์๋ฒฝ์ ์งํ๋ฉ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ์๋ฒ ์ํคํ ์ณ์ ๊ด์ฌ์ด ๋ง์์ ธ ๊ฐ์ฅ ์ฌ๋ฏธ์๋ ์ธ์ ์ด์์ต๋๋ค.ใ ใ
ํด๋น ์ธ์ ์ ์๋์ ๊ฐ์ ๋ด์ฉ์ผ๋ก ์งํ๋์์ต๋๋ค.
- ๋๊ท๋ชจ ์ปจํ
์ด๋ ํด๋ฌ์คํฐ์ Load Balancing
- Large Scale Load Balancing
- ๊ณ ๊ฐ์ฉ์ฑ์ ์ํ Consistent Hashing
- IPVS Maglev Hashing Scheduler
- ํ์ฅ์ฑ ์๊ณ ์ ๋ขฐํ ์ ์๋ Load Balancer
๋๊ท๋ชจ ์ปจํ ์ด๋ ํด๋ฌ์คํฐ๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฌ๋ฌ ํด๋ฌ์คํฐ์ ์ ์ฒ๊ฐ ์ด์์ ์ปจํ ์ด๋๊ฐ ์ด์๋๋ ํ๊ฒฝ์ ๋ปํฉ๋๋ค.
์ด๋ ๊ฒ ์ฌ๋ฌ ์ปจํ ์ด๋๊ฐ ์์ ๋ Container Load Balancing์ด๋ Layer4 Load Balancer๊ฐ ๋ถํ์ ๋ฐ๋ผ ์ ์ ํ ์ปจํ ์ด๋๋ค๋ก ์ฐ๊ฒฐํด ์ฃผ๋ ๊ฒ์ ๋ปํฉ๋๋ค. ์ด ๋ Dynamic Load Balancer์๋ ์ฐ๊ฒฐํด์ฃผ๋ Container์ ์ฃผ์๋ฅผ ์ ์ ์ผ๋ก ์ ์ฅํด ๊ฐ์ง๊ณ ์๋ ๋ค๋ ๋จ์ ์ด ์์์ต๋๋ค. ์ด๋ฌํ ์ํฉ์์ ์ปจํ ์ด๋๋ ์์ฃผ ์ถ๊ฐ, ์ญ์ , ์ฌ์์ ๋๋ฉด์ ์๋์ ๊ฐ์ด ์์๋๋ Container Host๊ฐ ๋ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋น๋ฒํ์์ต๋๋ค. ๊ฒฐ๊ตญ ์ ์ ์ผ๋ก ์ฃผ์๋ฅผ ๊ด๋ฆฌํ ๊ฒฝ์ฐ ์ค์๊ฐ์ผ๋ก ๋ณํ๋ Container๋ค์ ์ํ๋ฅผ ๋ฐ์ํ ์ ์๋ค๋ ๊ฒ์ด์์ต๋๋ค.
๊ฒ๋ค๊ฐ Container๋ฟ๋ง ์๋๋ผ ๋ก๋๋ฐธ๋ฐ์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด ํด๋น ๋ก๋๋ฐธ๋ฐ์์ ์ฐ๊ฒฐ๋์ด์๋ Container๋ค์ ๋ํ Connection์ ๋ชจ๋ ์๊ฒ ๋๋ ๋ฌธ์ ๋ ์์์ต๋๋ค.
๋๋ฌธ์ ๊ณ ๊ฐ์ฉ์ฑ์ ์ํด ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ํ์ํ์ต๋๋ค.
<์์ฝ>
- Load Balancer์ Container ์ฐ๊ฒฐ์ด ๊ณ ์ ์ ์ด๊ธฐ ๋๋ฌธ์ Dynamicํ๊ฒ ๋ณํ๋ Container์ํฉ์ ๋์ํ ์ ์์
- Load Balancer์์ฒด์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ์ Load Balancer์ ์ฐ๊ฒฐ๋ Connection๋ค์ ๋ชจ๋ ์ ์คํ๊ฒ ๋จ
๊ธฐ์กด์ Layer3 Routing์ ๊ฐ์ ๋น์ฉ์ผ๋ก ์ฌ๋ฌ ๊ฒฝ๋ก๋ฅผ ์ฐ๊ฒฐํ ์ ์์์๋ ํ๋์ ๊ฒฝ๋ก๋ง ์ ํํ ์ ์๋ค๋ ๋จ์ ์ด ์์์ต๋๋ค. ์์ ๊ฐ์ ๋ฌธ์ ์ ํด๊ฒฐ์ ์ํด BGP(Border Gateway Protocol)๊ณผ ECMP(Equal Cost Multi Path)๋ฅผ ๋์ ํ์์ผ๋ ๋ ์๋์ ๊ฐ์ ๋ฌธ์ ์ ์ด ์๊ฒผ์ต๋๋ค. ECMP์์ ๊ฒฝ๋ก์ค์ ์ด Hashing์ ํตํด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ Load Balancer์ ๊ฐ์ N์ผ๋ก ๋๋์ด์ค ๋ Load Balancer์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ Hashing์์ N-1๋ก ๋๋์ด์ฃผ๊ฒ ๋์ด ์ด์ ์ ์ฐ๊ฒฐ์ด ๋ชจ๋ ๋ฐ๋๊ฒ ๋๋ค๋ ๊ฒ์ด์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ๊ฒฝ์ฐ ์ฅ์ ๊ฐ ์ผ์ด๋ ๋ก๋๋ฐธ๋ฐ์ ๋ฟ๋ง ์๋๋ผ Hashing์ด ๋ฐ๋ ๋ก๋๋ฐธ๋ฐ์ ์ญ์ TCP Connection์ด ์ ์ค๋๋ ๋ฌธ์ ๊ฐ ์๊ฒผ์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ์ ๋ค์ ๊ณ ๊ฐ์ฉ์ฑ์ ์๋น์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์ ํด๊ฒฐ์ด ํ์ํ์ต๋๋ค.
<์์ฝ>
BGP/ECMP ์ฌ์ฉ์ ๋ก๋๋ฐธ๋ฐ์์ ์ฅ์ ๊ฐ ์ผ์ด๋ฌ์ ๊ฒฝ์ฐ Hash Disruption์ด ์ผ์ด๋จ
์์ Hashing ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Consistent Hashing์ ๋์ ํ์์ต๋๋ค. Consistent Hashing์ ์ต๋ K/n ๋งํผ์ disruption์ ๋ณด์ฅํ์ง๋ง ํจ์จ์ ์ธ ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฐฉ์์ ์๋์์ต๋๋ค. ๊ฐ๊ฐ ๋์ผํ ์์ Connection์ ์ฒ๋ฆฌํ์ง ์๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฌ๊ธฐ์ K๋ ํ๊ฒฝ์ ๋ฐ๋ผ ํด์์ด ๋ค์ํ๋ PPT์์๋ Connection์ ๊ฐ์๋ก ์ดํดํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ Consistent Hashing์ด๋ ์๋์ ๊ฐ์ด Hash ๊ฐ์ Ringํ์ผ๋ก ๊ตฌ์ฑํ์ฌ ๊ฐ ๋ ธ๋๋ ๋ง์์ ๋งก์ ๋ฒ์๋ฅผ ๋ถํ ํ์ฌ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.
์ฌ๊ธฐ์ ๊ตฌ๊ธ์ Maglev Load Balancer๋ผ๋ Consistent Hashing์ ์ง์ํ๋ ์ํํธ์จ์ด๋ฅผ ๋ฐ๊ฒฌํฉ๋๋ค. Maglev์์๋ permutation๊ณผ population ๋ฐฉ๋ฒ์ ํตํด index table์ ์์ฑํฉ๋๋ค.
๋จผ์ ์๋์ ๊ฐ์ด Backend ๊ฐ์์ Table Size์ ๋ฐ๋ผ Permutation Table์ ์์ฑํฉ๋๋ค.
๋ค์ Population ๊ณผ์ ์ ํตํด Backend๋ฅผ LookUp Table์ ํ ๋นํ ์ ์๋๋ฐ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ ๋นจ๊ฐ์, ์ด๋ก์, ๋ ธ๋์ ํ์ดํ ์์๋๋ก ๋ฉ๋ชจ๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์. ์ด ์์๋๋ก ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ BackEnd๋ฅผ ํ ๋นํ๋ฉฐ ์ด๋ฏธ ์ฌ์ฉ๋์ด์ง๊ณ ์๋ ์๋ฆฌ๋ ์ฐจ์์์ BackEnd๋ฅผ ํ ๋นํฉ๋๋ค.
์์ ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๋์ฝ๋๋ฅผ ์ฐธ์กฐํ๋ฉด ๋ ์ดํด๊ฐ ์ฝ์ต๋๋ค.
ํด๋น Maglev ์๋ฃ๋ ์ด ์๋ฃ ์์ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ฅผ ํตํด ํจ์จ์ ์ธ Load Balancing์ ํ๊ณ Backend๊ฐ ์ญ์ ๋๊ฑฐ๋ ์ถ๊ฐ๋๋ ์ํฉ์์๋ K/n ๋งํผ์ Disruption๋ง ๋ฐ์ํฉ๋๋ค.
์ด Disruption์ Lookup Tableํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ๊ฐ์ํฉ๋๋ค.
์์ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ๋ฟ๋ง ์๋๋ผ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผํ์ต๋๋ค. ๋ค์ด๋ฒ๋ ์ด๋ฅผ Linux Kernel์ Netfilter๋ฅผ ํตํด ๊ตฌํํ์์ต๋๋ค. Maglev Software์์ Consistent Hashing ์๊ณ ๋ฆฌ์ฆ๋ง ํ์ํ๋ฐ ๋ค๋ฅธ ๋ถ๊ฐ์ ์ธ ๊ธฐ์ ์ธ Packet Forwarding์ด๋ Packet Processing, Backend Selection๋ ๊ตฌํํด์ผํ๋ ๋ฌธ์ ์ ์ด ์๊ฒจ IPVS ์์์ Consistent Hashing ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ฒ ๋์์ต๋๋ค.
์ฌ๋ฌ Scheduling ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋๋ณ๋ก ์ ๊ณตํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค์ผ์ฅด๋ฌ ๋ณ๊ฒฝ์ด ์ฉ์ดํฉ๋๋ค. ๋ฐ๋ผ์ ๋ค์ด๋ฒ๋ ์ฌ๊ธฐ์ Maglev ๋ชจ๋์ ์ถ๊ฐํ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก IPVS kernel ํ๋ผ๋ฏธํฐ๋ก
- sloppy_tcp : ipvs๊ฐ sync์๋ tcp ๋ฉ์์ง๋ ๋ชจ๋ ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด ๋ชจ๋ ํฌ์๋ฉ๋ฐ์ ์ ์์
- conn_reuse_mode : ๋ก๋ ๋ฐธ๋ฐ์ฑ ํผํฌ๋จผ์ค๋ฅผ ์ฌ๋ ค์ค
๊ฐ ์๊ณ ์ฌ์ฉ์ ๊ถ์ฅํ์์ต๋๋ค.
ํด๋น ์ธ์ ์ ์๋์ ๊ฐ์ ์์๋ก ์งํ๋์์ต๋๋ค.
- ๊ฒ์์ ๋ชฉํ
- ๊ฐ์ธํ๊ฐ ํ์ํ ๊ฒฝ์ฐ
- ๊ฐ์ธ ๊ฒ์์๋ ํ์
- ๊ฐ์ธํ ๊ฒ์ ํ์ฅ
์ด์ ๊น์ง ๊ฒ์์ โ์ต๋ ๋ค์์ ์ต๋ ๋ง์กฑโ์ ์ด๋ฃจ๊ธฐ ์ํด ์ต๋ํ ๋ง์ ์ฌ๋์ ๋ง์กฑ ์ํฌ ์ ์๋ ๋์ผํ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ์์ต๋๋ค. ์ต๋ํ ๋ค์ํ ์๋๋ฅผ ๋ง์กฑ์ํค๊ธฐ ์ํด ์๋ ๊ทธ๋ฆผ์์์ฒ๋ผ ์๋์ฐจ ์ธ๊ด์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด 3D๋ก ์ฐจ๋ฅผ ํ์ ์ํค๋ ๊ธฐ๋ฅ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ์์ต๋๋ค.
์ ์ ์ ์ ์ ๊ฒ์ ์๋๊ฐ ๋ค์ํด์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋์ ๊ฐ์ด โํํ๊ณคโ ์ด๋ผ๋ ๋จ์ด์ ๋ํด ๊ฒ์ํ ๋ ์์ด๋ ํํ๊ณค๊ณผ ๋ฏธ๊ตญ์ ํํ๊ณค ์ค ์ด๋ ๊ฒ์ ์๋ํ์๋์ง ์๊ธฐ ์ฝ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ต๋ ๋ค์์ ์ต๋ ๋ง์กฑ๋ณด๋ค ๊ฐ์ธ์ ์ต๋ ๋ง์กฑ์ด ์ค์ํด์ง ๊ฒ์ ๋๋ค. ์ด์ ๊ฐ์ ๊ด์ ์์๋ ๋๊ฐ์ ์ง์์ด์ ๋ํด์ ๋๊ฐ์ ๋ด์ฉ์ ๋ณด์ฌ์ค๋ค๊ณ ํ๋๋ผ๋ ์ด๋ค ๋ ์ด์์์ ์ด๋ค ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ค์ํด์ก์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํ๊ณ ์ ํ๋ ๋ชฉ์ ์ด์๋ค๋ฉด ์ด๋ฏธ์ง๋ฅผ ๋์ด์ฃผ๊ณ ์ค์๊ฐ Talk์ ๋ณด๊ธฐ์ํ ๋ชฉ์ ์ด์๋ค๋ฉด TALK์ ๋์์ค ๊ฒ์ ๋๋ค.
์ด์ ๊ฐ์ ๊ฐ์ธํ ๊ฒ์์ ๋ค์ด๋ฒ ์ฌ์ฉ์ ์ค 1%๋ง์ด ๊ฒฝํํ๊ณ ์์ต๋๋ค.
์ด๋ฅผ ์ํด ์ฌ๋ฌ Click Entropy, User Entropy, Potential curve for personalization ๋ฑ ๋ค์ํ ์ฐ๊ตฌ๊ฐ ์งํ๋์์ผ๋ ๋ชจ๋ ์์ธก ๊ฒฐ๊ณผ๊ฐ 80%๋ฅผ ๋์ง ๋ชปํ์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ธํ๊ฐ ํ์ํ ๋ถ๋ถ์ ์ ์ํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด 3-Level Query Ambiguity ๊ฐ ์์ต๋๋ค.
๋จ์ ๋ฌธ์ ๋ ์ฌ์ฉ์์ ๊ฒ์ ์๋๋ฅผ ํ์ ํ์ฌ ์ ์ฉํ๋ ์ผ์ ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด ์ฌ๋์ ๊ธฐ์ต์ ์ฅ๊ธฐ ๊ธฐ์ต, ๋จ๊ธฐ ๊ธฐ์ต์ผ๋ก ๋๋๋ค๋ ์ ์ ์ฐฉ์ํ์ฌ ๋ชจ๋ธ์ ์ ์ํ์์ต๋๋ค. ์ฆ 3-Level Query Ambiguity๋ ์ธ์ ๊ฐ์ธํ ํด์ค๊ฒ์ธ๊ฐ์ ๋ํ ๊ฒ์ด๋ฉฐ Humm์ ๋๊ตฌ์๊ฒ ์ ๋ณด๋ฅผ ์ค ๊ฒ์ธ๊ฐ์ ๊ด๋ จ๋์ด์์ต๋๋ค.
์ฌ๊ธฐ์ ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ฏธ๋ ์๋์ ๊ฐ์ต๋๋ค.
- Immediate ๋ฉ๋ชจ๋ฆฌ - ๊ฐ๊ด์ , ๋จ๋ฐ์ ๊ฒ์, ์ค์๊ฐ ๊ฒ์ ์์์ ์ํฅ๋ฐ์
โ Working memory โ ์ฌ์ฉ์์ ๊ฒ์ ์ธ์
์์์ ์๋ฏธ์๊ฒ ์ฐ์๋๋ ๊ฒ์๋ค
- Long term memory - ๋ฉฐ์น ๋์ working memory์ ๊ฒ์ ๋ด์ฉ์ด ์ ์ง๋ ๋
Working Memory๋ ์ฌ์ฉ์์ ๊ฒ์ ์ธ์ ์ด ๊ธธ๊ฒ ์ ์ง๋์ง ์์ ๋ฐ์ดํฐ๊ฐ ์ถฉ๋ถํ ๋ชจ์ด์ง ๋ชปํด ์์ง ๊ฐ๋ฐ์ค์ ๋๋ค.
ํ์ฅ ๋ฐฉ์์๋ ์๋์ ๊ฐ์ด 2๊ฐ์ง๊ฐ ์์ต๋๋ค.
-User Group์ผ๋ก์ ํ์ฅ : ๊ทธ ์ฌ๋์๊ฒ ๋์ค์ ๋ํ ๋ฐ์ดํฐ๊ฐ ์์ด๋ ๋จ์ ๋ฐ์ดํฐ๋ก ์ด์ฉ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค. ๋ฐ๋ผ์ Long Term Memory๋ฅผ ๊ฒฐํฉํ์ฌ ๊ตฌํํฉ๋๋ค.
-Query Group์ผ๋ก์ ํ์ฅ : ์๋ฅผ ๋ค์ด โ์ง๋ฏผโ์ด๋ผ๋ ์ฟผ๋ฆฌ๊ฐ ๋ค์ด์์ ๋ ํ์์๋ ๋ฐฉํ์๋
๋จ์ โ์ง๋ฏผโ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค ์ ์์ง๋ง Long Term Memory์ โ์คํโ์ด ์๋ค๋ฉด AOA์ โ์ง๋ฏผโ์ ๋ณด์ฌ์ค ์ ์์ต๋๋ค.