์ง๋ 1๋ ๊ฐ์ ์จ์ผ ๋ธ๋ผ์ฐ์ ์ ๊ทธ ๋ฏธ๋ - ๊นํจ๋
Whale ํ์ฌ ์ํฉ
- Desktop : 1100๋ง
- Mobile : 42๋ง
- XWhale(Naver ์ฑ ๋ด๋ถ์์ง) : 3000๋ง
- ์ ์ฒด ๋ธ๋ผ์ฐ์ ์ Whale ์์ฅ ์ ์ ์จ : 1.4%
์์ ์ ๋ชฉํ ํ๋ ๊ฒ
- Move the Web Forward
- Active-x, exe ์ ๊ฑฐ
- ํ๋ฌ๊ทธ์ธ ํธํ ๋ชจ๋ ์ง์ ์ค๋จ.
- ์ ํ์ํ์ ์ ์ฉ.
- ์์ง๋ ๋จ์ ๋ฌธ์ ๋ค์ด ์์ง๋ง ํ์ฌ ์ ๋ถ์ ๋ ธ๋ ฅ์ผ๋ก ๋ณํ๊ฐ ์๊ธธ ๊ฒ ๊ฐ์ ๊ธฐ๋.
- ๋ชจ๋๊ฐ ์ฝ๊ฒ ์ฐ๋ ๋ธ๋ผ์ฐ์ ์จ์ผ
- ๋ค์ํ ํ๋ซํผ
- ์ฐธ์ฌ ํ๋ซํผ : ํ์ฅ์ฑ, ํ ๋ง ์คํ ์ด, ๊ฐ๋ฐ์ ์ผํฐ
- ๊ธฐ์ / ๋ณด์
- ์ฑ๋ฅ / ๋ฉ๋ชจ๋ฆฌ / ํ์ ์ ์ฝ
- Safe Browsing
๋ชจ๋๊ฐ ์ฝ๊ฒ ์ฐ๋ ๋ธ๋ผ์ฐ์ ์จ์ผ
- ์ Mobile Whale์ ์์ํ๋๊ฐ?
- Desktop Whale ์ฌ์ฉ์ ๋ง์กฑ๋๊ฐ ๋์์ ๋์ ํด๋ณด์.
- ์ธ์์ ๋ง์ ๋ชจ๋ฐ์ผ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ง๋ค.
- ๋ง์ ๋ธ๋ผ์ฐ์ ์ Whale์ ๋ฌด์์ด
์ฐจ๋ณํ
๋์๋๊ฐ?- ์คํ์ด์ค
- ์ฌ์ด๋๋ฐ : ๋ฒ์ญ
- ๋์์ธ : ์ํญ, ๋ฐฐ๊ฒฝ ํ ๋ง
- ํธ์๊ธฐ๋ฅ : ๋ค์ค ๊ฒ์ ์์ง
- ๊ธฐ์ : ์น๋ฒ์ญ, ๊ฐ์ข ์ธ์ด๋น ๊ธฐ๋ฅ
- ๋ง์ ๋ธ๋ผ์ฐ์ ์ Whale์ ๋ฌด์์ด
- Mobile ํนํ ๊ธฐ๋ฅ
- ํต๋ฐ : ์ฌ์ดํธ๋ก ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ด๋ํ๋ ๋ฐฉ๋ฒ
- ํต์์น : ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒ์
- ๋ฒจ๋ฆฌ : ์ฌ์ด๋๋ทฐ
- ๊ฐ๋ ฅํ ํ๋ฒํผ
- ์ฌํ ๋ชจ๋ : ๋ณด๋ค ๊ฐ๊ฒฐํ ๋ฉ์ธ UI
- ๋ดํญ : ์ฌ์ง ๋ฐฐ๊ฒฝ์ผ๋ก ๊ฐ์ฑ์ ์ ๋ฌ
- ํต ๋ค๋น๊ฒ์ด์ , ์ค๋งํธ ๋ค๋น๊ฒ์ด์ , ๊ณ ๊ธ ๋ฏธ๋์ด
๋ชจ๋ ๊ธฐ๋ฅ์ ๋ค ๋ฃ์
VS ์ต๋ํ ์ฌํํ๊ฒ
- ๊ธฐ๋ฅ == ๋ฒํผ
- ์๋ก์ด ๊ธฐ๋ฅ == ์ถ๊ฐ ๋ฒํผ
- ๋ฒํผ์ด ๋ง์์ง๋ฉด?
- ๋ณต์ก == ๋ชจ๋ฐ์ผ์ ์ ํฉํ์ง ์์.
- ๋ชจ๋ฐ์ผ์ ์ฌํํด์ผํ๋๋ฐ..
- ๊ฒฐ๊ตญ์?
- ๋ง์ ๊ณ ๋ฏผ ๋์ ์๋์ 5๊ฐ์ ๋ฒํผ ์๋จ์ ๋ฒํผ 2๊ฐ ๊ตฌ์กฐ
๋ฒํผ(๊ธฐ๋ฅ)์ ๋ทฐ์์ ์ ๊ฑฐํ๋ฉด ์ฌ์ฉ์๊ฐ ๊ธฐ๋ฅ์ ์ฐพ์์ ์ฌ์ฉํ ๊น?
- ์๋๋ค. ์ฌ์ฉ์๋ค์ ๊ธฐ๋ฅ์ ์ฐพ์์ ์ฌ์ฉํ์ง ์๋๋ค.
- ํ๋ฒํผ์ ์ฐพ์์ ์ฌ์ฉํ๊ฒ ์ง๋ง ๋ฒจ๋ฆฌ๋ฒํผ์ ์ฌ์ฉ์๊ฐ ์ฐพ์์ ์ฌ์ฉํ์ง ์์ ๊ฒ ๊ฐ๋ค.
- ๊ทธ๋์ ๋ฒจ๋ฆฌ๋ฒํผ์ ์ด๋ฆฌ๊ณ ํ๋ฒํผ์ ์ ๊ฑฐํ๋ค.
์ํญ์ ๊ฐ์ฑ์ ์๊ฐ Resource ๋ถ์กฑ์ผ๋ก ํฌ๊ธฐ
- ์๋๋ก์ด๋ : ๋ฐ์คํฌํ๊ณผ ๊ฐ์ ํฌ๋ก๋ฏธ์ ๋ฒ ์ด์ค
- ios : ํฌ๋ก๋ฏธ์์ผ๋ก ๊ฐ๋ฐ ์์ํด๋ณผ๊น?
- iOS ๊ฐ๋ฐ์๊ฐ
Object C, C++
๋ฅผ ์ ๋ชจ๋ฅด๋ ์ํฉ์ด ๋ฐ์- ๊ฐ๋ฐ ์๋๊ฐ ์ํ๋ ๋งํผ ๋์ค์ง ์์.
- ๊ธฐ์กด ๋ฒ์ ผ ํ๊ธฐ ๋ฐ ์ ๊ท ๊ฐ๋ฐ :
Swift
- iOS, ์๋๋ก์ด๋ ์์ ํ ๋จ์ผ ๋ฒ์ ์ ๋ถ๊ฐ๋ฅ
- ๋ค๋ฅธ ๊ธฐ์ , ๋ค๋ฅธ ๊ฐ์ฑ
- ์์ง ๊ฐ๋ฐ vs OS ์ ๊ณต ๋จ์ผ ์์ง
- iOS ๊ฐ๋ฐ์๊ฐ
์ฐ๋ฆฌ๊ฐ ์คํฌ๋ฉํ๋ ๋ฐฉ๋ฒ?
- ์นดํก, ๋ผ์ธ์ ๊ฐ์ธ ๋ํ๋ฐฉ
- ๋ถ๋งํฌ
- ๋ฉ๋ชจ์ฅ์ link์ ์ค๋ช
- ํ์ด์ค๋ถ ๋๋ง ๋ณด๊ธฐ / ๋น๊ณต๊ฐ
- ์ ์ฉ์ฑ(ํฌ์ผ, Keep)
์๋ฃจ์ ์ด ๋ง๋ค๋ ์๊ธฐ๋ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ด ์๋ค๋ผ๋ ๊ฒ์ ์๋ฏธ.
- ๋ธ๋ผ์ฐ์ ์ ๋ถ์ฌ์ ๊ฐ๋ ฅํ๊ฒ ๋ง๋ค์. ๊ทธ๋์ ํ์ํ๊ฒ
๋ฒจ๋ฆฌ(Belly)
ํ์ง๋ง ์ฌ์ฉ์๋ ๋ฒจ๋ฆฌ๊ฐ ๋ญ์ง ๋ชจ๋ฅธ๋ค?
- ๋ง์ ์ค๋ช ์ด ํ์ํ๋ฉด ๊ทธ๋งํผ ์ง๊ด์ ์ด์ง ์๋ค๋ ๊ฒ.
- ์ข ๋ ์๋น์ค๋ฅผ ์ง๊ด์ ์ผ๋ก ์ดํดํ๋๋ก ํด์ผํจ.
์๋ก์ด Whale
- ๋ฉ์ธ UI๋ ์ต๋ํ ์ฌํํ๊ฒ
- ์ฌ์ฉ์์๊ฒ ๋์ ํ๋ฉด
- ํ์ํ ๊ธฐ๋ฅ์ ๋ฉ๋ด ์์ผ๋ก
- ๋ฉ๋ด๋ ๋ณด๋ค ๊ณ์ธต์ ์ผ๋ก
- ์ํญ : ๊ฐ์ฑ๊ณผ ํธ๋ฆฌ/์ ๋ณด๋ฅผ ๊ฐ์ด ์ก์์ฃผ๋ ๊ณณ
Belly -> Scrapbook
- Rebranding
- ๋ค์ ๋ณด๊ณ ์ถ์ ๊ฑด ๋ญ๋ ๋ด๋ ์คํฌ๋ฉ
- ์ฌ์ฉ์๋ค์๊ฒ ์ ๋๋ก ์ ๋ฌ ์๋ ์ด์ ๊ฐ ์ด๋ฆ์ด ์๋๊ธธ ๋ฐ๋ผ๋ฉด์.
๋ฐ์คํฌํ๊ณผ ๋ชจ๋ฐ์ผ
- ๋ฐ์คํฌํ ์จ์ผ์ ์ฐ๋ ์ด์
- ์บก์ณ๊ฐ ํธํด์, ์ํญ/๋์์ธ์ด ์ด๋ป์
- ๋ชจ๋ ๋ค๋ฅด๋ค.
- ๋ชจ๋ฐ์ผ ์จ์ผ์ ์ฐ๋ ์ด์
- ๋ฐ์คํฌํ์ฒ๋ผ ๋ค์ํ์ง ์๊ณ ๋จ์ํ๋ค.
- ํํํ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ๊ธฐ๊ฐ ํ์ํ๋ค.
์์ผ๋ก์ Whale
- Naver Tech Platform = Global Platform
- Future Info Platform
- ์ฌ๋ฌผ ๋ธ๋ผ์ฐ์
Question
- Naver - Whale ๊ด๊ณ?
- ํฌ๋กฌ๊ณผ ๊ตฌ๊ธ ์ฑ์ ๊ด๊ณ
- Naver์ฑ์ Naver๋ฅผ ์ฌ์ฉํ๊ธฐ ์ต์ ํ๋ ์ฑ
- Whale์ฑ์ ๋ธ๋ผ์ฐ์งํ๊ธฐ ์ต์ ํ๋ ์ฑ
- ์์ผ๋ก Naver์ Whale์ ์์ง์ด ๋์ผํ๊ฒ ์งํ๋ ์์
- ํฌ๋กฌ๊ณผ ๊ตฌ๊ธ ์ฑ์ ๊ด๊ณ
- Progressive Web ์ง์ ์ฌ๋ถ?
- ์ง์ํ ์์
- ํฌ๋ก๋ฏธ์์ ๋ณด์ ์ด์๊ณผ ๊ฐ์ ๋ด์ฉ์ ์ด๋ป๊ฒ ๋๊ธฐํ ํ๊ณ ์๋?
- ๋ณด์์ ๋ํ issue๋ cherrypickํ์ฌ rebaseํ์ฌ ๋๊ธฐํ ์ค.
- Global ์ ๋ต์ ์ํด Opensourceํ ์๊ฐ์ด ์๋๊ฐ?
- Yes.
- ์คํ์์ค์๋ ์ค๋นํ ๊ฒ ๋ง์์ ์๊ฐ์ด ํ์.
ํ๊ธฐ
- ์จ์ผ ํ์ฅ์ฑ ํ๋ซํผ ์๊ฐ.
- ์ด๋ฐ๊ฑด ๋๊ฐ ๋ง๋ค๊น? ๊ฒฐ๊ตญ์ ๊ฐ๋ฐ์๋ค.
- ๊ฐ๋ฐ์๋ค์ด ์จ์ผ๊ฐ์ ๋ง๋ค๊น? ํฌ๋กฌ์ ๊ฐ์ ๋ง๋ค๊น?
- ์ํ๊ณ ์กฐ์ฑ์ด ํ์ํด ๋ณด์ธ๋ค.
- Whale - Conference ์งํํ ์์ .
- ์ IT ๋๊ธฐ์
๋ค์ Browser๋ฅผ ๋ง๋๋ ค๊ณ ํ ๊น?
- ๊ตฌ๊ธ์ ํฌ๋กฌ, ์ ํ์ ์ฌํ๋ฆฌ, ๋ค์ด๋ฒ์ ์จ์ผ, ์๋ง์กด, ๋ฐ์ด๋ ๋ฑ๋ฑ.
- ์๋น์๋ฅผ Lock-inํ๋ ํจ๊ณผ๋ฅผ ์ป์ง ์์๊น?
- ํ์ง๋ง ์๊ฐ๋ณด๋ค ๋ง์ ๋ฆฌ์์ค์ ์ง์์ ๊ฐ์ง ๊ฐ๋ฐ์๋ค์ด ํ์ํด ๋ณด์ธ๋ค.
Slide
์๋น์ค ์ค๋ฆฌ์ํฐ๋ ๋ธ๋ก์ฒด์ธ์ ์ํ ์ค์ผ์ผ๋ง ๋ฌธ์ ํด๊ฒฐ - ์ดํ๊ท๋
ํ๊ธฐ
- ๋ธ๋ก์ฒด์ธ์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ด ์์ด์.. ๋๋ฌด ์ด๋ ค์.
- ๋์ค์ ๋ธ๋ก์ฒด์ธ ๊ตฌ์กฐ์ ์ด๋ก ์ฑ ์ ์ฝ์ด๋ณด๊ณ ๋ค์์ ๋ค์ ์ฝ์ด๋ณด์.
Slide
Javascript ๋ฐฐํ๊ทธ๋ผ์ด๋๋ก๋ถํฐ ์ด์๋จ๊ธฐ - ๋ฐ์ฌ์ฑ๋
- Marc Andreessen
- ๋น์ ์น์ ์ ์ ์ด์๋ค. DOM ์ธํฐ๋ ์ ์ ํตํด ๋ค์ด๋ด๋ฏนํ ์น์ ๋ง๋ค๊ณ ์ ํ๋ ๋น์
- Mocha โ Livescript โ JavaScript
- MS์ JS : JScript
- Action Script : Flash์์ ์ฌ์ฉ
- Ajax, Json์ ๋ฑ์ฅ.
- Server-Side Javascript
- Node.js
- Modules
- AMD(RequireJS), CommonJs
- Package Manager
- NPM
- bouler
Framework ๋ฑ์ฅ.
- 1์ธ๋.
- jQuery
- Prototype
- MooTools
- 2์ธ๋
- AngularJs
- React
- Vue
๋ค์ํ Browser์ ๋ฑ์ฅ.
- Evergreen Browser
- ๊ณผ๊ฑฐ์ ๋ฌ๋ผ์ง ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ ์ค์์ฑ
- Vanilla ๊ฐ๋ฐ์ ์ผ๋ฐ์ ์ด์ง ์์
์ค๋๋ ์ JS ๊ฐ๋ฐ์?
- ํ๋ ์์ํฌ + ๊ฐ๋ฐ ๋๊ตฌ
- Library โ Framework
- ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ๋ฌธ์ ๊ฐ Native Level๋ก ๋ด๋ ค๊ฐ
- ๋ฐ๋ผ์ ๊ทธ๋ฐ Library๋ฅผ ์ ๊ฑฐํ๋ ๋ชจ์ต
- Github์์ jQuery๋ฅผ ์ ๊ฑฐํ๋ ์์ง์
Babel
- 2014๋ ๋ฐํ.
- ES6 โ ES5๋ก ์ ํํด์ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๋ฌธ๋ฒ์ ์ง์ํ์ง ์๋๋ผ๋ ์ฌ์ฉ๊ฐ๋ฅ.
->
function ์์์ ๋ณํํด์ค.
2018๋ ๋ํฅ
- ๋ฒ์ ๊ตฌ๋ถ ์ค์์ฑ ๊ฐ์
- Evergreen ๋ธ๋ผ์ฐ์ ๋ ์คํ์ ๋น ๋ฅด๊ฒ ๊ตฌํ
- ์ ์ ํ์
์์คํ
(loose typing)
- ๋ฒ๊ทธ ๊ฐ์ (15% ๊ฐ์ ์ฐ๊ตฌ๊ฒฐ๊ณผ)
- ํจ์จ์ ์ฝ๋์์ฑ
- Language :
Typescript
,PureScript
- Tools:
Flow
Web Assembly
- ์ด๋ ๋ธ๋ผ์ฐ์ ์์๋ ๋น ๋ฅด๊ฒ ์คํ๋๋ ๋ฐ์ด๋๋ฆฌ๋ก ๋ฐ๊พธ๋ ๊ธฐ์
React
- ๋ผ์ด์ผ์ค ์ด์ โ MIT
- ์ฑ๋ฅ ๊ฐ์ .
Vue.js
- 40K Github Stars
- Nuxt.js
- NativeScript - Vue
- Ver 3.0
Angular
- Ivy Renderer
- Angular Elements
Web Components
- All Major browsers Support
Polymer
- Factory ๋ฉ์๋ ํตํ ์์์ ์
๋ธ๋ผ์ฐ์ ๋ฐ์ ๋ํฅ
- NPM
- ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๊ณ ๋ชจ๋๋ ๋ง์.
- YARN
- NPM์ ์ ์ฒด ๋ค์ด๋ก๋์ 0.03%
- ์๋๋ NPM๋งํผ ๋น ๋ฅด์ง ์์.
- Webpack
- ํฅ์๋ ๋น๋ ์๊ฐ : 60 ~ 98% ๊ฐ์
- mode property
- development, production, none
- Configuration Headache
- Parcel๊ณผ ๊ฐ์ ๋๊ตฌ๋ ๋ฌด์ค์ ๋ฒ๋ค๋ง
์ ๋ฆฌํ์๋ฉด?
- ๋งค๋ชฐ๋น์ฉ ์ค๋ฅ์ ํจ์
- ํน์ ๋๊ตฌ์ ํฌ์ํ ๋ ธ๋ ฅ์ด ๋ง์์ง๋ฉด, ๋์ ์ ํ(๋๊ตฌ)์ด ํฉ๋ฆฌ์ ์ด์๋ค๋ ๊ฒ์ ์์ ์ด๋ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ค๋ํ๊ธฐ ์ํด ๋ ธ๋ ฅ.
- Magpie Developer
- ๋์ฒด๋ก ๊ฐ๋ฐ์๋ค์ ๊ธฐ์กด์ ๋ฌธ์ ์์ด ์ฌ์ฉํ๋ ๊ธฐ์ ๋ค์ ๋ค๋กํ๊ณ , ์๋กญ๊ณ ๋ฐ์ง ์ด๋ ๊ฒ๋ค์ ๋๋ฌด ์ฝ๊ฒ ๊ด์ฌ์ ๋นผ์๊ธด๋ค.
- ๋ชจ๋ ๊ธฐ์ ์๋ ์ฅ์ ๊ณผ ๋จ์ ์ด ์์ผ๋ ํ์ ๋ถํฐํ์.
- ์ต์ ์
๋ฐ์ดํธ ํญ์ ์ ๋ต์ธ๊ฐ?
- ๋ฌด์์ด ์ ๋ต์ด๋ผ ํ ์ ์๋ค.
- ๊ฐ์์ ์ฌ์ ์ ๋ชจ๋ ๋ค๋ฅด๋ค.
- ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ์ ๋ต์ ์ฐพ์๊ฐ๋๊ฒ ํต์ฌ.
- ์ฐ๋ฆฌ์ ์์ธ๋?
- Everything is amazing and nobody is happy
- Expert๋ก์จ ๋ชจ๋ ํ๋ซํผ์ ๋ชจ๋ ๊ฒ์ ์์์ผ ํ๋ค๋ ์๊ฐ
- ๋ชจ๋ ๊ฒ์ ๋ฐฐ์ฐ๋ ๊ฒ์ด ํด๊ฒฐ์ฑ ์ธ๊ฐ?
- ๋จ์ํ๊ฒ ํ์ฌ ์์ ์ ํ์ํ ๊ฒ. ๋๋ ๋๋ฆฌ๋ ๊ฒ์ ์ง์ค
- ์ ๋นํ ๋ฐธ๋ฐ์ค
- ์ ๋นํ ํธ๊ธฐ์ฌ
์ง์์ ์ธ ๊พธ์คํจ์ ํ์.
ํ๊ธฐ
- Front ์ธ๊ณ๋ ์์ง ๋ด๊ฒ ๋๋ฌด ๋ค์ํ๊ณ ๋ง์ ๊ฒ ๊ฐ๋ค.
- ํ ์ด ํ๋ก์ ํธ๋ก ํ๋๋ง ์๋ํด๋ณด๋ ๊ฒ๋ ๋์์ง ์์ ๊ฒ ๊ฐ๋ค.
- ๋ค์ด๋ณธ ์ด๋ฆ๋ค์ด ์์์ง๋ง ์ ํํ ๋ฌด์จ ์ญํ ์ธ์ง ๋ชฐ๋๋๋ฐ ์ด๋ฒ ๊ธฐํ์ ์๊ฒ ๋์๋ค.
Slide
๋ค์ด๋ฒ์์ ์ฌ์ฉ๋๋ ์ฌ๋ฌ๊ฐ์ง Data Platform, ๊ทธ๋ฆฌ๊ณ Mongo DB - ์ด๋ํ๋
๋ค์ด๋ฒ์์์ Data Platform
- ์ด๊ธฐ ๋ชจ์ต : 2 tier ๊ตฌ์กฐ
- Web Server
- RDBMS
- MySQL, ORACLE
- ์๋น์ค๊ฐ ์ ์ ์ปค์ง๋ฉด์ DB Query๋ ์ ์ ๋ณต์กํ๊ณ ๋ฌด๊ฑฐ์ ์ง
- ๋น ๋ฅธ ์๋ต์ ๋ณด์ฅํ๊ธฐ ์ํด, DB์์ Cache ์ฌ์ฉ
- Redis, ARCUS
- ์งํ๋ฅผ ์ ์ฅํ๊ธฐ์๋ RDBMS๋ ๊ณต๊ฐ๊ณผ ๋น์ฉ์์ ๋ฌธ์ ๊ฐ ๋ฐ์
- ์ํํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํด Hadoop๊ธฐ๋ฐ์ HBase ์ฌ์ฉ
Schema-less
ํ๊ณSharding๊ณผ secondary Index
,Transaction
์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ Data PlatformMongoDB
๋ ์ง์ํ๊ฒ ๋จ.
Schema-less
table A{
userNumber int
, userCellPhoneNumber char(13)
}
- RDBMS : 1 row ๋น 17byte
- MongoDB : 1 doc ๋น 46byte (_id ํฌํจ์ 58Byte) Type ์ ์ฅ
- RDBMS์ ๋นํด disk READ/WRITE (IO) ์ธก๋ฉด์์ ๋ณด๋ฉด ๋ ์ ์ข์ ์ ์๋ค.
Sharding
- Scale up
- ๋จ์ผ ์๋ฒ spec ์ฆ๊ฐ
- Scale out
- ์ฌ๋ฌ๋์ ์๋ฒ๋ก ๋ฐ์ดํฐ ๋ถ์ฐ
- RDBMS๋ ์์ฉ์์ ์ค๋ฉ์ผ๋ก Scale out ๊ตฌํ ํ ์ ์์ง๋ง?
- ํ์ฅ์ฑ์ด ๋จ์ด์ง๋ฉฐ
- ๊ฐ๋ฐ ๋ฐ ๊ด๋ฆฌ์ Overhead ๋ฐ์
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Db Level์์ Sharding์ ์ ๊ณตํ๋ NoSQL
- ๊ฐ๋ฐ Cost ์ ๊ฐ
Secondary Index
- ๋จ์ bigdata์ฑ ๋ฐ์ดํฐ๋ Hbase๋ฅผ ์ฌ์ฉํ๊ณ ์์
- HBase๋ ์ ํ ์์ฒด์์ Secondary Index๋ฅผ ์ ๊ณตํด์ฃผ์ง ์์
- Coprocessor, hIndex, Phoenix์ ํตํด secondary Index์ ๋น์ทํ๊ฒ ๊ตฌํ์ ๊ฐ๋ฅ
- ๊ฒ์์ ์๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฌ ์ ์ฅํ๋ ๋ฐฉ์
Transaction
- MongoDB ~ 3.6๊น์ง
- 1 Document (row Level Lock)
- MongoDB 4.0๋ถํฐ
- Multi Document Transaction
IDB DR
- ์๋น์ค๊ฐ ์ ์ ์ค์ํด์ง์ ๋ฐ๋ผ IDC ์ด์คํ๊ฐ ํ์ํด์ง
- DR(Disaster Recovery) ์๊ตฌ๋จ.
- Auto failover๊ฐ ๊ฐ๋ฅํ Data Platform
- MongoDB ์ ์ฑ
์ ํ์๋ก ์ด์ํ์ฌ
- 50% ๋๋ ์์กด์จ์ด ํ์
Mongos ๊ด๋ฆฌ
- Mongos(Router) ์๋ฒ
- Client ์๋ฒ์ ๋์ผํ๊ฒ ์๋๋ก ๊ฐ์ด๋
L4์ getmore
- Sharding์์์ L4(network switch)์ฌ์ฉ์ ์ด๊ธฐ์๋ ๊ถ์ฅํ์ผ๋ getmore ์ด์๋ก ์ ๊ฑฐ
- getmore ํจ์ ํน์ฑ์ ์ง์ํ๋ Node์ ๋ค์ ์ง์ํด์ผ ํ๋ ํน์ฑ์ด ์์
- L4๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ Round Robin์ ํตํด ๋ค์ Node์ ์ง์ํ๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์ L4๋ฅผ ์ ๊ฑฐ.
Mongos โ> shard ์ปค๋ฅ์
- Connection ๊ด๋ฆฌ์ ๋ฌธ์ ๊ฐ ์์
- Connection ๊ด๋ จ Parameter๊ฐ ๋๋ฌด ๋ฎ๋ค๋ฉด?
- ์ฑ๋ฅ์ ์ข์ง์๋ค.
- ๋๋ฌด ๋๊ฒ ์ก์ผ๋ฉด?
- connection์ด ๋ง์์ ธ ์ฅ์ ๋ฅผ ์ ๋ฐํ ์ ์๋ค.
- Connection ๊ด๋ จ Parameter๊ฐ ๋๋ฌด ๋ฎ๋ค๋ฉด?
ํ ์คํธ ํด๋ณด๊ณ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ๊ฒ ๋ฐ์ํ ๊ฒ.
Storage Engine
- NoSQL Storage Engine ํ์ธํ๊ธฐ
- eviction
- Memory Buffer์์ ์ค๋๋ data(dirty page) ์ญ์ ํ๋ ์์
- checkpoint
- memory buffer์ disk ์ฌ์ด์ ๋ฐ์ดํฐ ๋ถ์ผ์น๋ฅผ ํด์ํ๊ธฐ ์ํด์ memoery โ disk๋ก data sync ํ๋ ์์
- compact
- ์ฃผ๋ก ์๋ฒฝ์๊ฐ์ ์ค์ผธ์ค๋ก ์ด์ํ๊ณ ์์.
ํ๊ธฐ
- DBA ๊ด์ ์์ Storage Engine๊น์ง ์๊ฒ๋ ์ข์ ๊ณ๊ธฐ๊ฐ ๋์๋ค.
Slide
์ฟ ํก ์๋น์ค Cloud Migration์ ํตํด ๋ฐฐ์ด ๊ฒ๋ค - ์์์๋
- 100๊ฐ์ Microservice
- ๋ชฉ๋ IDC, ๋ถ๋น IDC
- ์๋ฒ ์ถ๊ฐํ๊ธฐ ์ํด์๋ ์ค๋ ์๊ฐ์ด ์์๋๋ ๋จ์ .
๋ฌธ์ ์
- ์ถ๊ฐ ๋ฐ ํ์ฅ ์งํ ์๊ฐ
- ํ์ฅํ์ง ๋ชปํด์ ์ฅ์ ๋ฐ์
ํด๋ผ์ฐ๋ ์ด์ ์์น
- ํ์ฅ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด ํด๋ผ์ฐ๋๋ก ์ด์
- ์๋น์ค ๋ฌด์ค๋จ
- ๊ณ ๊ฐ์๊ฒ ๋ง์กฑ๋์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
Roman Ride
- ๋ฐ์ดํฐ์ผํฐ์ ํด๋ผ์ฐ๋ ๋์์ด์
- ๋ฆฌ์คํฌ ์ต์ํ
- ์์ ๋ณํ
- ๋น ๋ฅธ Rollback
Dynamic Routing
- DB Connection Manager
- ๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ
- Dynamic Config
- ์ํ ๋ชจ๋ํฐ๋ง๊ณผ ์กฐ์์ ์ํ admin
- ๋น ๋ฅธ Rollback ์ง์
- ZooKeepper๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๊ด๋ฆฌ
- DB ์ด๊ด ์์
- Read DB ์ฐ๊ฒฐ ์ด๋
- Write DB ์ฐ๊ฒฐ ์ด๋
- API Gateway๋ฅผ ํตํ ํธ๋ํฝ ์กฐ์
- ๊ธฐ์กด API Gateway๋ฅผ ํ์ฉ
- ํธ๋ํฝ์ด ์๊ณ ์ํฅ๋๊ฐ ๋ฎ์ ๊ฒ๋ถํฐ ์งํ
- 0 ~ 100% ๊น์ง ํธ๋ํฝ Rame-up
- ๋น ๋ฅธ Rollback
- instance size ์ด์
Canary testing
- Blue Green Deployment
- docker๋ก ๋ฐฐํฌ
- 10๋ถ๊ฐ ํ ์คํธ ์งํ
- ๊ธฐ์กด ํ๊ฒฝ๊ณผ ๋น๊ต ํ ์คํธ
- Metric ์ ๋ณด ๋น๊ต
- CPU
- Memory
- Load
- tomcat,requestCount, tomcat.currentThreadBusy
- jvm.gc.fullgc.times, etc
- Log ์์ง, ์ ์ฅ
- ELK Stack
- Object Storage
- ์์ถ, ๋ผ์ดํ ์ฌ์ดํด ์ ์ฉ.
- ๋ก๊ทธ ์ข ๋ฅ ๋ณ๋ก Life cycle์ ๋ค๋ฅด๊ฒ ์ ์ฉ.
- ๋ถ์ฐ๋ Service์ ํํฉ์?
- Pinpoint๋ฅผ ํตํด ๋ณผ ์ ์๋ค.
์๋ก์ด ๋ฌธ์ ๋ค
- ์ ํ๋๋ ์ฅ์
- ๋ฎ์์ง๋ SLA
- ์์์น ๋ชปํ ๊ณณ์์ ๋ฐ์ํ๋ ์ฅ์
- Noisy Neighbor Problem
- ๊ณต์ ์์, ํด๋ผ์ฐ๋ ์๋น์ค ์ ๊ณต ์์
- ํด๋ผ์ฐ๋์
CPU ์๋ ํจ์น
๋ก ์ธํ ์ฅ์
๋ง์ดํฌ๋ก์๋น์ค์ ํด๋ผ์ฐ๋๋ฅผ ํตํด ๋ฐฐ์ด ๊ฒ.
๋ชจ๋ ๊ฒ์์ ์คํจ ๊ฐ๋ฅํ๋ค.
- Load Balancer
- DB, Cache
- Queue
- ๊ณต์ฉ ์์์ ๋๋๋ก์ด๋ฉด ์ฌ์ฉํ์ง ์๋ ๋ฐฉ์์ผ๋ก
- Object Storage
- Block Storage
- ๋น๋๊ธฐ ๋ฐฉ์
- MemDisk
- ์ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ๊น?
- Retry
- Fallback
- Circuit Breaker
- Hystrix
- Valves
์์ธก ๋ชปํ๋ ๊ฒ์ ์์ธกํ๋ผ
- Chaos Engineering
- Chaos Monkey
- ๋ณต๊ตฌ ๊ธฐ๋ฅ ํ ์คํธ
- ์ฝ์ ์ฐพ์๋ด๊ธฐ
ํผ๋ ์์ ์ด๊ธฐ
- ์ฅ์ ๋ณต๊ตฌ ๋์๋์?
- 1์๊ฐ ๋ด์ ๋ฐฐํฌ๋ ๋ณ๊ฒฝ๋ ๋ด์ญ ํ์ธ ๋ถํ๋๋ ค์.
- ๋ณต์กํ ์์คํ ์ํฉ์์ ์ํ ํ์ธ ์ด๋ ค์
- ๋ชจ๋ ์๋น์ค ๊ด๊ณ๋ฅผ ์๊ธฐ ์ด๋ ค์
- ์์ ์ํ ์ฐพ๊ธฐ
- ์๋น์ค์ ๊ฑด๊ฐ๋ ์ธก์
- ์ฃผ๊ธฐ ์ ๊ทน ํ์ฉ
- ํธ๋ ํฝ์ด ๋์ ๊ฒฝ์ฐ
- ๋งค๋ฌ 1์ผ 00์
- ์ผ์์ผ ์ ๋
- ๋ณ๊ฒฝ ๋ด์ญ ํ์ธ ํ๊ธฐ
- ๊ฐ ์๋น์ค์ ์ํ
- ๋ฐฐํฌ ์ด๋ ฅ
- ์ธํ๋ผ ๋ณ๊ฒฝ ์ด๋ ฅ
- dns, security, auth
Auto Scaling
- ์์ฒญ์ ๋ฐ๋ผ ์๋ ์กฐ์
- ์ด๋ฒคํธ ์ค๋น ์๊ฐ ๋จ์ถ
- Target Tracking Policy
- ๋ฉํธ๋ฆญ ์ ๋ณด(CPU, Request ๋ฑ)
- ํ๊ธฐ ๊ฐ๋ฅ(Disposability)
- ๋น ๋ฅธ ์์๊ณผ ๋น ๋ฅธ ์ ์ ์ข ๋ฃ ๋ณด์ฅ
- ์์์ด ์ค๋๊ฑธ๋ฆฌ๋ฉด Auto Scaling์ด ํธ๋ํฝ์ ๋ฐ๋ผ๊ฐ์ง ๋ชปํจ
- ์ ์ ์ข ๋ฃ๊ฐ ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ์๋ก์ด ๋ฐฐํฌ์ ๋ฆฌ์์ค ๋ฌธ์ ๋ฐ์
- ๋น ๋ฅด๊ฒ ๋๋ฆฌ๊ณ ์ฒ์ฒํ ์ค์ธ๋ค.
- ๋ฏผ๊ฐํ์ง ์๊ฒ ์ ๋ง๋ค๊ธฐ
๋ค๋ฅธ ์ฅ์ ๋ก ๋ถํฐ ๋ฐฐ์ฐ๊ธฐ
- ์ฌ๊ฑด ์ฌ๊ณ ๋ ํ์ฐ์ ์ธ ๊ฒ.
- ๋์ฉ๋์ ๋ณต์กํ ๋ถ์ฐ ์์คํ
- ๋์์๋ ๋ณํ
- ์ง์์ ์ธ ์์ ํ
์ฅ์ ๋ฆฌํฌํธ
- ํ์๋ผ์ธ
- Detection์ ๊ฑธ๋ฆฐ ์๊ฐ
- ์์ธ ์ฐพ๋๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ
- ๋ณต๊ตฌ์ ๊ฑธ๋ฆฐ ์๊ฐ
- ์์ธ ์ฐพ๊ธฐ
- ๊ณ ๊ฐ ๊ด์ ์์ 5 why ์์ฑ
- ์ฌ๋ฐ ๋ฐฉ์ง
- Poka-Yoke
Site Reliability Engineering (SRE)
-
Service Reliability๋ฅผ ์ฑ ์
-
๋ณต์กํ ์ฅ์ ์ํฉ์์ ์ปจํธ๋กค ํ์
-
์ฅ์ ์ ๋ํ ์ง์ ๊ณต์
-
์ฅ์ ์ฌ๋ฐ ๋ฐฉ์ง
-
์ํ ๊ฒ
- ์์ ๋ณํ์ ๋น ๋ฅธ Rollback
- ๊ณตํต ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ์ ์ง
- ๋ง๋ ์ฌ๋์ด ์ด์ํ๋ ๋ฌธํ
- ์ฅ์ ๊ด๋ฆฌ ๋ฌธํ
-
๋ค๋ฅด๊ฒ ํด๋ณด๊ณ ์ถ์ ๊ฒ
- ๋ณต์ก๋ ๊ด๋ฆฌ
- ๋์ปค ์ค์ผ์คํธ๋ ์ด์ ์ ์ฉ
- ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ
ํ๊ธฐ
- ํด๋ผ์ฐ๋ ๊ด๋ จ๋ ๋ด์ฉ์ ๋ง์ด ๋ค์ด๋ดค์ง๋ง ์ค๋ช ์ ๋๋ฌด ์ํด์ฃผ์ ์ ๋ง์ด ๋ฐฐ์ฐ๋ ์ธ์ ์ด์๋ค.
- ๋ชจ๋ํฐ๋ง๋ ์ค์ํ์ง๋ง ์ด๋ค ์งํ๋ฅผ ๊ฐ์ง๊ณ ์ด๋ป๊ฒ ๋ชจ๋ํฐ๋งํ ๊ฒ์ธ๊ฐ ํ๋ ๋ถ๋ถ์์ ๋ง์ด ๋ฐฐ์ด๊ฑฐ ๊ฐ๋ค.
- ๋ชจ๋ ๊ฒฝํํ์ ๊ฒ
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์๋ฐ
์ฑ ์ ๋ น์ ์๋ค๋ ์๊ฐ์ด ๋๋ค๋ฉด ์ฝ์ด๋ด์ผ๊ฒ ๋ค.