New Score :0
High Score :0
Run Best
NICE BUSINESS TYPE INDICATOR
3. ๊ธ์ ์ ์น๊ตฌ์๊ฒ ๋น๋ ธ๋๋ฐ ์ค๋์ด ๋์ ์ฃผ๊ธฐ๋ก ํ๋ .. ๊ทธ๋ฐ๋ฐ ์นด๋๊ฐ์ ๋ด์ผํ๋ ๋ ๋ ์ค๋์ธ๋ฐ... ์ด๊ฑธ ์ด์ฉ๋...
4. ์ฐ๋ฆฌ ํ์ฌ๋ ์ค์ํ ์์ฌ ๊ฒฐ์ ์ ํ ๋?
5. ์ด์ฌํ ์ผํ ๋๋ฅผ ์ํ ์ ๋ฌผ์ ์ฃผ๊ณ ์ถ๋ค. ์ด๋ค๊ฒ ์ข์๊น?
6. ์ํ์์ ํฌ์์ํ์ ์ถ์ฒ๋ฐ์๋ค. ์ด๋ค๊ฑธ ๊ฐ์ ํ์ง?
7. ํ์ฌ์์์ ๋๋?
8. ๊ฟ์์ ๊นจ์ด๋๋ 20๋ ์ ์ผ๋ก ๋์๊ฐ๋ค. ๋น์ ์ด ์ ์ผ ๋จผ์ ํ๋์ผ์?
9. ๋ด๊ฐ ์ธ์ฌ ๋ด๋น์๋ผ๋ฉด ์ ๊ท ์ ์ฌ์ ์ฑ์ฉ ์ ์ ์ผ ์ค์ํ๊ฒ ๋ณด๋๊ฒ์?
10. ํ์ฌ์ ์ ๋ง ์ซ์ดํ๋ ๋๋ฃ๊ฐ ์๋ค๋ฉด?
11. ๊ฐ๋ํ ์ง์ ๊ฐ์ฅ์ด ๋์๋ค.. ์๋ ์ ์์ผ ๋ ์ ๋ฌผ์?
12. ํ์ ํ์ฌ ์ถ๊ทผ ์คํ์ผ์?
13.ํ์ฌ ์ฒด์ก๋ํ ํ๋ ๋ ์ด๋ค. ์ค๋ ๋ญํ์ง?
14. ๋์ ์ ๋ฌด ์คํ์ผ์?
Motivation
Google์ Stubby๋ผ๋ ๋จ์ผ ๋ฒ์ฉ RPC ์ธํ๋ผ๋ฅผ ์ฌ์ฉํ์ฌ 10๋ ๋๊ฒ ๋ฐ์ดํฐ ์ผํฐ ๋ด๋ถ ๋ฐ ์ ์ฒด์์ ์คํ๋๋ ์๋ง์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ฐ๊ฒฐํด ์์ต๋๋ค. ์ฐ๋ฆฌ์ ๋ด๋ถ ์์คํ ์ ์ค๋๋ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ฅผ ์ค๋ซ๋์ ์์ฉํด ์์ต๋๋ค. ๊ท ์ผํ ํฌ๋ก์ค ํ๋ซํผ RPC ์ธํ๋ผ๋ฅผ ํตํด ํจ์จ์ฑ, ๋ณด์, ์ ๋ขฐ์ฑ ๋ฐ ํ๋ ๋ถ์์์ ํ๋ฆฟ ์ ๋ฐ์ ๊ฐ์ ์ ๋กค์์ํ ์ ์์์ต๋๋ค.
Stubby์๋ ๋ง์ ํ๋ฅญํ ๊ธฐ๋ฅ์ด ์์ง๋ง ํ์ค์ ๊ธฐ๋ฐ์ผ๋กํ์ง ์์ผ๋ฉฐ ๋ด๋ถ ์ธํ๋ผ์ ๋๋ฌด ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋์ด ๊ณต๊ฐ ๋ฆด๋ฆฌ์ค์ ์ ํฉํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ง ์์ต๋๋ค. SPDY, HTTP/2 ๋ฐ QUIC์ ์ถํ์ผ๋ก Stubby๊ฐ ์ ๊ณตํ์ง ์๋ ๋ค๋ฅธ ๊ธฐ๋ฅ๊ณผ ํจ๊ป ์ด๋ฌํ ๋์ผํ ๊ธฐ๋ฅ ์ค ๋ง์ ๋ถ๋ถ์ด ๊ณต๊ฐ ํ์ค์ ๋ฑ์ฅํ์ต๋๋ค. ์ด ํ์คํ๋ฅผ ํ์ฉํ๊ณ ๋ชจ๋ฐ์ผ, IoT ๋ฐ ํด๋ผ์ฐ๋ ์ฌ์ฉ ์ฌ๋ก๋ก ์ ์ฉ ๊ฐ๋ฅ์ฑ์ ํ์ฅํ๊ธฐ ์ํด Stubby๋ฅผ ์ฌ์์ ํด์ผ ํ ๋๋ผ๋ ๊ฒ์ด ๋ถ๋ช ํด์ก์ต๋๋ค.
Principles & Requirements
๊ฐ์ฒด๊ฐ ์๋ ์๋น์ค, ์ฐธ์กฐ๊ฐ ์๋ ๋ฉ์์ง
์์คํ ๊ฐ์ ์ธ๋ถํ๋ ๋ฉ์์ง ๊ตํ์ด๋ผ๋ ๋ง์ดํฌ๋ก ์๋น์ค ๋์์ธ ์ฒ ํ์ ํ๋ณดํ๋ ๋์์ ๋ถ์ฐ ๊ฐ์ฒด์ ์ํ๊ณผ ๋คํธ์ํฌ ๋ฌด์์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
Coverage & Simplicity
์คํ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ชจ๋ ๊ฐ๋ฐ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ฉฐ ๋๊ตฐ๊ฐ๊ฐ ์ ํํ ํ๋ซํผ์ ๋ง๊ฒ ์ฝ๊ฒ ๋น๋ํ ์ ์์ด์ผ ํฉ๋๋ค. CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ ํ ์ฅ์น์์ ์คํ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
Free & Open
๋ชจ๋ ์ฌ๋์ด ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. ๋ชจ๋ ์ํฐํฉํธ๋ฅผ ์ฑํ์ ์ด์งํ๊ณ ๋ฐฉํดํ์ง ์์์ผ ํ๋ ๋ผ์ด์ ์ค๊ฐ ์๋ ์คํ ์์ค ๋ ธ๋ ฅ์ผ๋ก ๋ฆด๋ฆฌ์คํฉ๋๋ค.
Interoperability & Reach
์ ์ ํ๋กํ ์ฝ์ ๊ณตํต ์ธํฐ๋ท ์ธํ๋ผ๋ฅผ ํตํ ํต๊ณผ์์ ์ด์๋จ์ ์ ์์ด์ผ ํฉ๋๋ค.
General Purpose & Performant
์คํ์ ๊ด๋ฒ์ํ ์ฌ์ฉ ์ฌ๋ก ํด๋์ค์ ์ ์ฉํ ์ ์์ด์ผ ํ๋ฉฐ ์ฌ์ฉ ์ฌ๋ก๋ณ ์คํ๊ณผ ๋น๊ตํ ๋ ์ฑ๋ฅ ์ ํ๊ฐ ๊ฑฐ์ ์์ด์ผ ํฉ๋๋ค.
Layered
์คํ์ ์ฃผ์ ์ธก๋ฉด์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ ํ ์ ์์ด์ผ ํฉ๋๋ค. ์ ์ ํ์์ ๊ฐ์ ์ ์์ฉ ํ๋ก๊ทธ๋จ ๊ณ์ธต ๋ฐ์ธ๋ฉ์ ์ค๋จํ์ง ์์์ผ ํฉ๋๋ค.
Payload Agnostic
๋ค๋ฅธ ์๋น์ค๋ ํ๋กํ ์ฝ ๋ฒํผ, JSON, XML ๋ฐ Thrift์ ๊ฐ์ ๋ค๋ฅธ ๋ฉ์์ง ์ ํ ๋ฐ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํด์ผํฉ๋๋ค. ํ๋กํ ์ฝ๊ณผ ๊ตฌํ์ ์ด๋ฅผ ํ์ฉํด์ผ ํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ด๋ก๋ ์์ถ์ ํ์์ฑ์ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ํ์ด๋ก๋ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค: ํ๋กํ ์ฝ์ ํ๋ฌ๊ทธํ ์์ถ ๋ฉ์ปค๋์ฆ์ ํ์ฉํด์ผ ํฉ๋๋ค.
Streaming
์คํ ๋ฆฌ์ง ์์คํ ์ ์คํธ๋ฆฌ๋ฐ ๋ฐ ํ๋ฆ ์ ์ด์ ์์กดํ์ฌ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํํฉ๋๋ค. ์์ฑ ํ ์คํธ ๋ณํ ๋๋ ์ฃผ์ ์์ธ ํ์๊ธฐ์ ๊ฐ์ ๋ค๋ฅธ ์๋น์ค๋ ์คํธ๋ฆฌ๋ฐ์ ์ฌ์ฉํ์ฌ ์ผ์์ ์ผ๋ก ๊ด๋ จ๋ ๋ฉ์์ง ์ํ์ค๋ฅผ ๋ํ๋ ๋๋ค.
Blocking & Non-Blocking
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๊ตํํ๋ ๋ฉ์์ง ์ํ์ค์ ๋น๋๊ธฐ ๋ฐ ๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๋ชจ๋ ์ง์ํฉ๋๋ค. ์ด๋ ํน์ ํ๋ซํผ์์ ์คํธ๋ฆผ์ ํ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
Cancellation & Timeout
์์ ์ ๋น์ฉ์ด ๋ง์ด ๋ค๊ณ ์๋ช ์ด ๊ธธ์ด์ง ์ ์์ต๋๋ค - ์ทจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ ๋๋ก ์๋ํ ๋ ์๋ฒ๊ฐ ๋ฆฌ์์ค๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ์ธ๊ณผ ๊ด๊ณ ์ฒด์ธ์ ์ถ์ ํ๋ฉด ์ทจ์๊ฐ ์ฐ์์ ์ผ๋ก ๋ฐ์ํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ ํธ์ถ์ ๋ํ ์๊ฐ ์ ํ์ ๋ํ๋ผ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์๋น์ค๋ ํด๋ผ์ด์ธํธ์ ์๊ตฌ์ ๋ง๊ฒ ๋์์ ์กฐ์ ํ ์ ์์ต๋๋ค.
Lameducking
์๋ฒ๋ ์งํ ์ค์ธ ์์ฒญ์ ๊ณ์ ์ฒ๋ฆฌํ๋ ๋์ ์ ์์ฒญ์ ๊ฑฐ๋ถํ์ฌ ์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋๋ก ํ์ฉ๋์ด์ผ ํฉ๋๋ค.
Flow Control
์ปดํจํ ์ฑ๋ฅ๊ณผ ๋คํธ์ํฌ ์ฉ๋์ ์ข ์ข ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ถ๊ท ํํฉ๋๋ค. ํ๋ฆ ์ ์ด๋ฅผ ํตํด ๋ฒํผ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ ํ ๋ฟ๋ง ์๋๋ผ ์ง๋์น๊ฒ ํ๋์ ์ธ ํผ์ด์ ์ํ DOS๋ก๋ถํฐ ๋ณดํธํ ์ ์์ต๋๋ค.
Pluggable
์ ์ ํ๋กํ ์ฝ์ ์๋ํ๋ API ์ธํ๋ผ์ ์ผ๋ถ์ผ ๋ฟ์ ๋๋ค. ๋๊ท๋ชจ ๋ถ์ฐ ์์คํ ์๋ ๋ณด์, ์ํ ํ์ธ, ๋ถํ ๋ถ์ฐ ๋ฐ ์ฅ์ ์กฐ์น, ๋ชจ๋ํฐ๋ง, ์ถ์ , ๋ก๊น ๋ฑ์ด ํ์ํฉ๋๋ค. ๊ตฌํ์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ ์ธํ ์ ์๋๋ก ํ์ฅ ์ง์ ์ ์ ๊ณตํด์ผ ํ๋ฉฐ ์ ์ฉํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๊ตฌํ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
Extensions as APIs
์๋น์ค ๊ฐ์ ๊ณต๋ ์์ ์ด ํ์ํ ํ์ฅ์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ํ๋กํ ์ฝ ํ์ฅ๋ณด๋ค API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด ์ ํ์ ํ์ฅ์๋ ์ํ ํ์ธ, ์๋น์ค ์์ฒด ๊ฒ์ฌ, ๋ถํ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ถํ ๋ถ์ฐ ํ ๋น์ด ํฌํจ๋ ์ ์์ต๋๋ค.
Metadata Exchange
์ธ์ฆ ๋๋ ์ถ์ ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ต์ฐจ ๋ฌธ์ ๋ ์๋น์ค์ ์ ์ธ๋ ์ธํฐํ์ด์ค์ ์ํ์ง ์๋ ๋ฐ์ดํฐ ๊ตํ์ ์์กดํฉ๋๋ค. ๋ฐฐํฌ๋ ์๋น์ค์์ ๋ ธ์ถํ๋ ๊ฐ๋ณ API์ ๋ค๋ฅธ ์๋๋ก ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ฐ์ ์ํค๋ ๊ธฐ๋ฅ์ ์์กดํฉ๋๋ค.
Standardized Status Codes
ํด๋ผ์ด์ธํธ๋ ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ ์์ ๋ฐฉ๋ฒ์ผ๋ก API ํธ์ถ์์ ๋ฐํ๋ ์ค๋ฅ์ ์๋ตํฉ๋๋ค. ์ํ ์ฝ๋ ๋ค์์คํ์ด์ค๋ ์ด๋ฌํ ์ค๋ฅ ์ฒ๋ฆฌ ๊ฒฐ์ ์ ๋ณด๋ค ๋ช ํํ๊ฒ ํ๊ธฐ ์ํด ์ ํ๋์ด์ผ ํฉ๋๋ค. ๋ ํ๋ถํ ๋๋ฉ์ธ๋ณ ์ํ๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ฉํ๋ฐ์ดํฐ ๊ตํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.