gRPC ์คํธ๋ฆฌ๋ฐ vs REST ํด๋ง: ์ธ์ ์ง์ง๋ก ์ค์ํ๊ฐ
์ค์๊ฐ ๋์๋ณด๋์ ์งํ๋ฅ ์ ๋ฐ์ดํธ์ ๋ํ ๋ช ํํ ์์์ ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐฉํ๋ฒฝ ๊ด๋ จ ์ฃผ์์ฌํญ์ ํฌํจํด, ์ธ์ gRPC ์คํธ๋ฆฌ๋ฐ์ด REST ํด๋ง๋ณด๋ค ๋์์ง ์์๋ณด์ธ์.

๋ฌธ์ : ์ ๋ฐ์ดํธ ์์ฒญ vs ์ ๋ฐ์ดํธ ์์
ํด๋ง์ ํด๋ผ์ด์ธํธ๊ฐ ํ์ด๋จธ์ ๋ง์ถฐ(์: 1์ด, 5์ด, 30์ด๋ง๋ค) ์๋ฒ์๊ฒ ๊ณ์ํด์ "์ ๋ฐ์ดํธ ์๋์?"๋ผ๊ณ ๋ฌป๋ ๋ฐฉ์์ ๋๋ค.
์คํธ๋ฆฌ๋ฐ์ ํด๋ผ์ด์ธํธ๊ฐ ํ ๋ฒ ์ฐ๊ฒฐ์ ์ด๋ฉด ์๋ฒ๊ฐ ๋ฐ์ํ๋ ์ ๋ฐ์ดํธ๋ฅผ ๊ทธ๋๊ทธ๋ ๋ณด๋ด๊ณ , ๋ค์ ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ์ง ์๋ ๋ฐฉ์์ ๋๋ค.
์ด ํ ๊ฐ์ง ์ฐจ์ด ๋๋ฌธ์ ์์ ๋ฐ๋ชจ์์๋ ์คํธ๋ฆฌ๋ฐ๊ณผ ํด๋ง์ด ๋น์ทํด ๋ณด์ด์ง๋ง ์ค์ ์ ํ์์๋ ์ ํ ๋ค๋ฅด๊ฒ ๋์ํฉ๋๋ค. ํด๋ง์์๋ ๋ฏธ๋ฆฌ ํธ๋ ์ด๋์คํ๋ฅผ ์ ํํด์ผ ํฉ๋๋ค: ๋ ๋น ๋ฅธ ์ ๋ฐ์ดํธ๋ ๋ ๋ง์ ์์ฒญ์ ์๋ฏธํฉ๋๋ค. ์คํธ๋ฆฌ๋ฐ์์๋ ์ฐ๊ฒฐ์ ์ด์ด๋๊ณ ์ค์ ๋ก ๋ณ๊ฒฝ์ด ์์ ๋๋ง ๋ณด๋ ๋๋ค.
์ค๋ฌด์์๋ ๋ช ๊ฐ์ง ์์ธ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊ฟ๋๋ค:
ํด๋ง์ ์ ํํ ๊ฐ๊ฒฉ๋งํผ๋ง ์ต์ ์ํ๋ฅผ ์ ์งํ๋ ๋ฐ๋ฉด, ์คํธ๋ฆฌ๋ฐ์ ๊ฑฐ์ ์ฆ์ ๋๊ปด์ง ์ ์์ต๋๋ค. ํด๋ง์ ๋ํ ๋ง์ "๋ณ๊ฒฝ ์์" ์๋ต์ ๋ง๋ค์ด ์์ชฝ ๋ชจ๋์ ๋น์ฉ์ ๋ฐ์์ํต๋๋ค(์์ฒญ, ํค๋, ์ธ์ฆ ํ์ธ, ํ์ฑ). ๋ชจ๋ฐ์ผ์์๋ ๋น๋ฒํ ํด๋ง์ด ๋คํธ์ํฌ ๋ผ๋์ค๋ฅผ ์์ฃผ ๊นจ์ ๋ฐฐํฐ๋ฆฌ์ ๋ฐ์ดํฐ ์๋ชจ๋ฅผ ๋์ ๋๋ค. ๋ํ ํด๋ง์ ์ํ๋ฅผ ์ํ๋งํ๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฒฉ ์ฌ์ด์ ์ผ์ด๋ ๋น ๋ฅธ ๋ณํ๋ฅผ ๋์น ์ ์์ง๋ง, ์ ์ค๊ณ๋ ์คํธ๋ฆผ์ ์ด๋ฒคํธ๋ฅผ ์์๋๋ก ์ ๋ฌํ ์ ์์ต๋๋ค.
๊ฐ๋จํ ์๋ก ์ ์ฃผ๋ฌธ๊ณผ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ค์๊ฐ ์ด์ ๋์๋ณด๋๋ฅผ ๋ค ์ ์์ต๋๋ค. ํ์จํ ๋ ์๋ 10์ด๋ง๋ค ํด๋งํด๋ ๊ด์ฐฎ์ ์ ์์ต๋๋ค. ํ์ง๋ง ํ์ด 1์ด ๋ด ์ ๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ํ๋ค๋ฉด ํด๋ง์ ๋๋ฆฌ๊ฒ ๋๊ปด์ง๊ฑฐ๋ ์๋ฒ๋ฅผ ๊ณผ๋ํ๊ฒ ์์ฒญํ๊ฒ ๋ฉ๋๋ค.
๋ชจ๋ ์ฑ์ด ์ค์๊ฐ์ ํ์๋ก ํ๋ ๊ฑด ์๋๋๋ค. ์ฌ์ฉ์๊ฐ ๊ฐ๋ ํ ๋ฒ ํ์ด์ง๋ฅผ ํ์ธํ๋ ๊ฒฝ์ฐ(์: ์๋ณ ๋ณด๊ณ ์)์๋ 1๋ถ ๊ฐ๊ฒฉ ํด๋ง์ด๋ ์๋ ์๋ก๊ณ ์นจ์ด ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ์ข์ ์ ํ์ผ ๋๊ฐ ๋ง์ต๋๋ค.
ํด๋ง์ด ๋ฌธ์ ๋ฅผ ์ผ์ผํค๊ธฐ ์์ํ๋ ์ํฉ๋ค
ํด๋ง์ ๊ฐ๋จํด ๋ณด์ ๋๋ค: ํด๋ผ์ด์ธํธ๊ฐ N์ด๋ง๋ค "์๋ก์ด ๊ฒ ์๋?"๋ผ๊ณ ๋ฌป์ต๋๋ค. ์ ๋ฐ์ดํธ๊ฐ ๋๋ฌผ๊ฑฐ๋ ์ฌ์ฉ์ ์๊ฐ ์ ๊ฑฐ๋ ๋ช ์ด์ ์ง์ฐ์ด ๋ฌธ์ ๋์ง ์์ ๋๋ ์ ์๋ํฉ๋๋ค.
๋ฌธ์ ๋ ์์ฃผ ์ต์ ์ฑ์ด ํ์ํ๊ฑฐ๋ ์ฌ์ฉ์ ์๊ฐ ๋ง์์ง๊ฑฐ๋ ๋ ๋ค์ผ ๋ ์์๋ฉ๋๋ค.
์ค์๊ฐ ๋์๋ณด๋๊ฐ ์ ํ์ ์ธ ์ฌ๋ก์ ๋๋ค. ์ด๋ฆฐ ํฐ์ผ, ๊ฒฐ์ ์คํจ, ๋ ๋ ์๋ฆผ์ ๋ณด์ฌ์ฃผ๋ ์ด์ ํ๋ฉด์ ์๊ฐํด ๋ณด์ธ์. ์ซ์๊ฐ ๋ช ์ด๋ง๋ค ๋ณํ๋ค๋ฉด ํด๋ง์ ์ฌ์ฉ์๊ฐ ์คํ์ดํฌ๋ฅผ ๋์น๊ฒ ํ๊ฑฐ๋ API๋ฅผ ๋๋๋ ค๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์ต๋๋ค(์๋ฒ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก "๋ณ๊ฒฝ ์์"์ ์๋ตํ๋ ๋ฐ ์์์ ์๋นํจ).
์งํ ์ํฉ ์ ๋ฐ์ดํธ๋ ํํ ํจ์ ์ ๋๋ค. ํ์ผ ์ ๋ก๋, ๋ณด๊ณ ์ ์์ฑ, ๋น๋์ค ์ฒ๋ฆฌ ๊ฐ์ ์์ ์ ์ข ์ข ๋ช ๋ถ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ด๋น ํด๋งํ๋ฉด UI๋ "์ค์๊ฐ"์ฒ๋ผ ๋ณด์ด์ง๋ง ๋ง์ ์ถ๊ฐ ์์ฒญ์ ๋ง๋ค๊ณ ์ฌ์ ํ ์ ํํ๋ ๋ฏํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ค๋๋ค(ํด๋ผ์ด์ธํธ๋ ์ค๋ ์ท๋ง ๋ณด๊ธฐ ๋๋ฌธ).
์์ธก ๋ถ๊ฐ๋ฅํ ๋์ฐฉ๋ ํด๋ง์ ๋นํจ์จ์ ์ผ๋ก ๋ง๋ญ๋๋ค. ์ฑํ , ์ง์ ๋๊ธฐ์ด, ์ ๊ท ์ฃผ๋ฌธ์ 10๋ถ ๋์ ์กฐ์ฉํ๋ค๊ฐ 30์ด ๋์ ํญ์ฃผํ ์ ์์ต๋๋ค. ํด๋ง์ ์กฐ์ฉํ ์๊ฐ ๋์ ๋น์ฉ์ ์ง๋ถ์ํค๊ณ ํญ์ฃผ ์์๋ ์ง์ฐ ์ํ์ ๋จ๊น๋๋ค.
IoT ์คํ์ผ ์ ํธ๋ ๋ฌธ์ ๋ฅผ ๋ ์ ํ์ํต๋๋ค. ์ฅ์น์ ์จ๋ผ์ธ/์คํ๋ผ์ธ ์ํ, last seen, ์์ ๋ฉํธ๋ฆญ์ ์ถ์ ํ ๋ ์์ฒ ๊ฑด์ ์์ ๋ณ๊ฒฝ์ด ๋์ ๋ ์ ์์ต๋๋ค. ํด๋ง์ ์ด๋ฅผ ์ง์์ ์ธ ์์ฒญ์ ํ๋ฆ์ผ๋ก ์ฆํญ์ํต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํจํด์ด ๋ณด์ผ ๋ ํด๋ง์ ์ด๋ฏธ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๊ณ ์์ต๋๋ค: ํ์ด ์๋ต์ฑ์ ์ํด ๊ฐ๊ฒฉ์ 1~2์ด๋ก ๋ฎ์ถ๊ณ ; ๋๋ถ๋ถ์ ์๋ต์ด ์ ๋ฐ์ดํธ๋ฅผ ํฌํจํ์ง ์์ง๋ง ํค๋์ ์ธ์ฆ์ ์๋ชจํ๊ณ ; ์๋ฒ ๋ถํ๊ฐ ์ค์ ๋ณ๊ฒฝ์ด ์๋๋ผ ์ด๋ฆฐ ํญ ์์ ๋น๋กํด ์ฆ๊ฐํ๊ณ ; ๋ชจ๋ฐ์ผ ์ฌ์ฉ์๊ฐ ๋ฐฐํฐ๋ฆฌ์ ๋ฐ์ดํฐ ๋ฌธ์ ๋ฅผ ํธ์ํ๊ณ ; ์ฌ๋๋ค์ด ๋์๋ณด๋๋ฅผ ์ด ๋ ํธ๋ํฝ ๊ธ์ฆ์ด ๋ฐ์ํ๋ค.
์คํธ๋ฆฌ๋ฐ์ด ์ค๋ฌด์์ ํด๋ง์ ์ด๊ธธ ์ ์๋ ์ด์
์คํธ๋ฆฌ๋ฐ์ ํต์ฌ ์ด์ ์ ๋จ์ํฉ๋๋ค: ์ผ๋ฐ์ ์ผ๋ก ๋ต์ด "๋ณ๊ฒฝ ์์"์ผ ๋ ์๋ฒ์๊ฒ ๊ฐ์ ์ง๋ฌธ์ ๋ฐ๋ณตํ์ง ์์๋ ๋ฉ๋๋ค. ํด๋ง์์๋ ์ฑ์ด ํ์ด๋จธ์ ๋ง์ถฐ ๊ณ์ ์์ฒญ์ ๋ณด๋ด์ ๋ณ๊ฒฝ์ด ์๋ ๊ฒ์ ํ์ธํฉ๋๋ค. ์ด๋ก ์ธํด ๋ถํ์ํ ํธ๋ํฝ, ์ถ๊ฐ ํ์ฑ, ํ์์์ ๊ฐ๋ฅ์ฑ์ด ๋์ด๋ฉ๋๋ค.
์คํธ๋ฆฌ๋ฐ์์๋ ์๋ฒ๊ฐ ํ๋์ ์ฐ๊ฒฐ์ ์ด์ด๋๊ณ ๋ณ๊ฒฝ์ด ์์ ๋๋ง ์ ๋ฐ์ดํฐ๋ฅผ ํธ์ํฉ๋๋ค. ์ฃผ๋ฌธ ์ํ๊ฐ ๋ฐ๋๊ฑฐ๋ ๋ฉํธ๋ฆญ์ด ์๊ณ๊ฐ์ ๋๊ธฐ๊ฑฐ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด 40%์์ 41%๋ก ์ด๋ํ๋ฉด, ๋ค์ ํด๋ง ์ฐฝ์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ ๋ฐ์ดํธ๋ฅผ ์ฆ์ ๋ฐ์ ์ ์์ต๋๋ค.
์ง์ฐ ๊ฐ์๋ ๋จ์ํ ์๋๋ง์ ๋ฌธ์ ๊ฐ ์๋๋๋ค. UI์ ๋๋์ ๋ฐ๊ฟ๋๋ค. ํด๋ง์ ์ข ์ข ๋์ ๋๋ "๋์ฝ"์ ๋ง๋ญ๋๋ค: ์คํผ๋๊ฐ ๋ํ๋๊ณ ๋ฐ์ดํฐ๊ฐ ํ๊บผ๋ฒ์ ์๋ก๊ณ ์นจ๋๋ฉฐ ์ซ์๊ฐ ํ ํ์ด ์ค๋ฆ ๋๋ค. ์คํธ๋ฆฌ๋ฐ์ ๋ ์๊ณ ์ฆ์ ์ ๋ฐ์ดํธ๋ฅผ ๋ง๋ค์ด ๋ ๋ถ๋๋ฝ๊ณ ์ ๋ขฐ๊ฐ ์๋ ๋๋์ ์ค๋๋ค.
์คํธ๋ฆฌ๋ฐ์ ์๋ฒ ์์ ์ ๋ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค๊ธฐ๋ ํฉ๋๋ค. ํด๋ง์ ๋๊ฐ ๋งค๋ฒ ์ ์ฒด ์๋ต์ ๋ฐํํ๋๋ฐ, 99%๊ฐ ์ด์ ์๋ต๊ณผ ๋์ผํ ์ ์์ต๋๋ค. ์คํธ๋ฆผ์์๋ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ๋ณด๋ผ ์ ์์ด ๋ฐ์ดํธ ์, ๋ฐ๋ณต์ ์ธ DB ์ฝ๊ธฐ, ์ง๋ ฌํ ๋น์ฉ์ ์ค์ผ ์ ์์ต๋๋ค.
์ค๋ฌด์์ ์ฐจ์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: ํด๋ง์ ์ข ์ข "์๋ฌด ๊ฒ๋ ์๋ก ์์"์ ๋ฐํํ๋ ์งง์ ์์ฒญ์ ๋ง์ด ๋ง๋ ๋ค. ์คํธ๋ฆฌ๋ฐ์ ํ๋์ ์ฅ๊ธฐ ์ฐ๊ฒฐ์ ์ฌ์ฉํ๊ณ ํ์ํ ๋๋ง ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค. ํด๋ง ์ง์ฐ์ ์ ํํ ๊ฐ๊ฒฉ(2์ด, 10์ด ๋ฑ)์ ๋ฌถ์ฌ ์์ง๋ง ์คํธ๋ฆฌ๋ฐ ์ง์ฐ์ ์ด๋ฒคํธ ์์ฒด์ ๋ฌถ์ ๋๋ค(์ ๋ฐ์ดํธ๊ฐ ๋ฐ์ํ๋ฉด ์ฌ์ฉ์๊ฐ ์ฆ์ ๋ณธ๋ค). ํด๋ง ์๋ต์ ์ ์ฒด ์ค๋ ์ท์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ ์คํธ๋ฆผ์ ์์ ๋ธํ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค.
๋์๋ณด๋ ์๋ก ๋์๊ฐ ๋ณด๋ฉด: 5์ด๋ง๋ค ํด๋งํ๋ฉด ์กฐ์ฉํ ๊ธฐ๊ฐ์๋ ํธ์ถ์ ๋ญ๋นํ๊ฑฐ๋ ๋์๋ณด๋๊ฐ ํญ์ ๋ช ์ด ๋ค์ฒ์ง๋ ๊ฒ์ ๊ฐ์ํด์ผ ํฉ๋๋ค. ์คํธ๋ฆฌ๋ฐ์ด๋ฉด ์กฐ์ฉํ ๊ธฐ๊ฐ์ ์กฐ์ฉํ๊ณ ํฐ์ผ์ด ๋์ฐฉํ๋ฉด UI๊ฐ ์ฆ์ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
์ฌ๋๋ค์ด ์ค์ ๋ก ์ฌ์ฉํ๋ ์คํธ๋ฆฌ๋ฐ ํจํด๋ค
์ฌ๋๋ค์ ์คํธ๋ฆฌ๋ฐ์ด๋ผ ํ๋ฉด ์ข ์ข ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ "ํ๋์ ํฐ ๋ผ์ด๋ธ ์ฐ๊ฒฐ"์ ์์ํฉ๋๋ค. ์ค์ ๋ก ํ๋ค์ ๋ช ๊ฐ์ง ๊ฐ๋จํ ํจํด์ ์ฌ์ฉํฉ๋๋ค. ๊ฐ ํจํด์ ๋ค๋ฅธ ์ ํ์ ์ ๋ฐ์ดํธ์ ์ ํฉํฉ๋๋ค.
1) ์๋ฒโํด๋ผ์ด์ธํธ ์คํธ๋ฆฌ๋ฐ (๋ค์ด๋งํฌ)
๊ฐ์ฅ ํํ ํจํด์ ๋๋ค: ํด๋ผ์ด์ธํธ๊ฐ ํ๋์ ํธ์ถ์ ์ด๊ณ ์๋ฒ๋ ๋ฐ์ํ๋ ์๋ก์ด ๋ฉ์์ง๋ฅผ ๊ณ์ ๋ณด๋ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ณํ๋ฅผ ์ง์ผ๋ณด๋ ํ๋ฉด์ ์ ํฉํฉ๋๋ค.
๋ผ์ด๋ธ ์ด์ ๋์๋ณด๋๊ฐ ๋ช ํํ ์์ ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ 2์ด๋ง๋ค "์ ์ฃผ๋ฌธ ์์ด?"๋ผ๊ณ ๋ฌป๋ ๋์ ์๋ฒ๊ฐ ์ ์ฃผ๋ฌธ์ด ๋์ฐฉํ๋ฉด ์ฆ์ ํธ์ํฉ๋๋ค. ๋ง์ ํ์ด ์ฐ๊ฒฐ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ๋๊น์ ๋น ๋ฅด๊ฒ ๊ฐ์งํ๊ธฐ ์ํด ๊ฐ๋ฒผ์ด ํํธ๋นํธ ๋ฉ์์ง๋ฅผ ํจ๊ป ๋ณด๋ ๋๋ค.
์งํ ์ํฉ ์ ๋ฐ์ดํธ์๋ ๋์ผํ ์์ด๋์ด๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ณด๊ณ ์ ์์ฑ์ 3๋ถ์ด ๊ฑธ๋ฆฐ๋ค๋ฉด ์๋ฒ๋ ๋ง์ผ์คํค(๋๊ธฐ ์ค, 10%, 40%, PDF ์์ฑ ์ค, ์๋ฃ)์ ์คํธ๋ฆฌ๋ฐํด UI๊ฐ ์คํธ ์์ด ์์ง์์ ๋ณด์ฌ์ฃผ๊ฒ ํ ์ ์์ต๋๋ค.
2) ํด๋ผ์ด์ธํธโ์๋ฒ ์คํธ๋ฆฌ๋ฐ (์ ๋งํฌ)
์ด ํจํด์์๋ ํด๋ผ์ด์ธํธ๊ฐ ํ๋์ ํธ์ถ๋ก ๋ง์ ์์ ์ด๋ฒคํธ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ณด๋ด๊ณ ์๋ฒ๋ ๋์ ํ ๋ฒ ์๋ตํ๊ฑฐ๋ ์ต์ข ์์ฝ๋ง ์๋ตํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ํญ์ฃผํ ๋ ์ ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ชจ๋ฐ์ผ ์ฑ์ด ์ผ์ ํ๋ ๊ฐ์ ์์งํ๊ฑฐ๋ POS ์ฑ์ด ์คํ๋ผ์ธ ์์ ์ ๋ฒํผ๋งํ ๋ ๋คํธ์ํฌ๊ฐ ๊ฐ๋ฅํด์ง๋ฉด ์๋ฐฑ ๊ฐ์ ๊ฐ๋ณ REST ์์ฒญ๋ณด๋ค ์ ์ ์ค๋ฒํค๋๋ก ์ด๋ฒคํธ ๋ฐฐ์น๋ฅผ ์คํธ๋ฆฌ๋ฐํ ์ ์์ต๋๋ค.
3) ์๋ฐฉํฅ ์คํธ๋ฆฌ๋ฐ (์์ชฝ ํต์ )
์์ชฝ์ด ์ธ์ ๋ ์ง ๋งํ ์ ์๋ ์ง์ ๋ํ์ ์ ํฉํฉ๋๋ค. ๋์คํจ์ฒ ํด์ ํ์ฅ ์ฑ์ ๋ช ๋ น์ ๋ณด๋ด๊ณ ์ฑ์ ์ํ๋ฅผ ์คํธ๋ฆฌ๋ฐ์ผ๋ก ๋๋๋ ค์ค ์ ์์ต๋๋ค. ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๊ฐ์ ๋ ์ฝ๋๋ฅผ ๋์์ ํธ์งํ๋ ๋ผ์ด๋ธ ํ์ ๋ ์ฌ๊ธฐ์ ๋ง์ต๋๋ค.
๊ฒฐ๊ณผ๊ฐ ๋จ์ผ ์๋ต์ด๊ฑฐ๋ ์ ๋ฐ์ดํธ๊ฐ ๋๋ฌผ๊ฑฐ๋ ์บ์, ๊ฒ์ดํธ์จ์ด, ๋ชจ๋ํฐ๋ง์ ๊ฑฐ์น๋ ๊ฐ์ฅ ๋จ์ํ ๊ฒฝ๋ก๊ฐ ํ์ํ๋ฉด ์์ฒญ-์๋ต ๋ฐฉ์์ด ์ฌ์ ํ ์ต์ ์ ๋๋ค.
๋จ๊ณ๋ณ๋ก ์ด๋ป๊ฒ ๊ฒฐ์ ํ๊ณ ์ค๊ณํ ์ง
ํ๋ฉด์์ ์ฆ์ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ๊ฒ๊ณผ ๋ช ์ด ์ ๋ ๋ฆ์ด์ ธ๋ ๋๋ ๊ฒ์ ์ ์ด๋ณด๋ ๊ฒ๋ถํฐ ์์ํ์ธ์. ๋๋ถ๋ถ ์ ํ์๋ ์์ "ํซ" ๋ถ๋ถ๋ง ์์ต๋๋ค: ์ค์๊ฐ ์นด์ดํฐ, ์งํ ๋ฐ, ์ํ ๋ฐฐ์ง ๋ฑ.
์ ๋ฐ์ดํธ๋ฅผ ๋ ๊ฐ์ ๋ฒํท์ผ๋ก ๋๋์ธ์: ์ค์๊ฐ์ผ๋ก ํ์ํ ๊ฒ๊ณผ "๋์ค์ ๊ด์ฐฎ์" ๊ฒ. ์๋ฅผ ๋ค์ด ์ง์ ๋์๋ณด๋๋ ์ ํฐ์ผ์ ์ฆ์ ๋ํ๋์ผ ํ์ง๋ง, ์ฃผ๊ฐ ํฉ๊ณ๋ 1๋ถ๋ง๋ค ์๋ก๊ณ ์นจํด๋ ์๋ฌด๋ ๋์น์ฑ์ง ๋ชปํ ์ ์์ต๋๋ค.
๊ทธ๋ค์ ์ด๋ฒคํธ ์ ํ์ ์ด๋ฆ์ ์ ํ๊ณ ๊ฐ ์
๋ฐ์ดํธ๋ฅผ ์๊ฒ ์ ์งํ์ธ์. ๋งค๋ฒ ์ ์ฒด ๊ฐ์ฒด๋ฅผ ๋ณด๋ด์ง ๋ง์ญ์์ค. ์ค์ฉ์ ์ธ ์ ๊ทผ๋ฒ์ TicketCreated, TicketStatusChanged, JobProgressUpdated ๊ฐ์ ์ด๋ฒคํธ๋ฅผ ์ ์ํ๊ณ UI๊ฐ ๋ฐ์ํ๋ ๋ฐ ํ์ํ ์ต์ ํ๋๋ง ํฌํจ์ํค๋ ๊ฒ์
๋๋ค.
์ ์ฉํ ์ค๊ณ ํ๋ฆ:
- ๊ฐ UI ์์์ ์ต๋ ํ์ฉ ์ง์ฐ์ ํ์ํ์ธ์(100 ms, 1 s, 10 s).
- ์ด๋ฒคํธ ์ ํ๊ณผ ๊ฐ ์ด๋ฒคํธ์ ์ต์ ํ์ด๋ก๋๋ฅผ ์ ์ํ์ธ์.
- ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ ๋๊น ํ ์ด๋ป๊ฒ ๋ณต๊ตฌํ ์ง ๊ฒฐ์ ํ์ธ์(์ ์ฒด ์ค๋ ์ท ๋๋ ์ปค์๋ก ์ด์ด๊ฐ๊ธฐ).
- ๋๋ฆฐ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ท์น์ ์ ํ์ธ์(๋ฐฐ์น, ์ ๋ฐ์ดํธ ํฉ์น๊ธฐ, ์ค๋๋ ๊ฒ ๋๋กญ ๋๋ ์ ์ก ๋น๋ ์ค์ด๊ธฐ).
- ์คํธ๋ฆฌ๋ฐ์ด ๋ถ๊ฐ๋ฅํ ๋์ ํด๋ฐฑ ๊ณํ์ ์ ํํ์ธ์.
์ฌ์ฐ๊ฒฐ ๋์์ ๋ง์ ํ์ด ๋งํ๋ ์ง์ ์ ๋๋ค. ๊ธฐ๋ณธ ์ ๋ต์ผ๋ก๋: ์ฐ๊ฒฐ ์ ํ์ฌ ์ํ์ ์ค๋ ์ท์ ๋ณด๋ด๊ณ ๊ทธ๋ค์์ ์ฆ๋ถ ์ด๋ฒคํธ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๋๋ค. ๋ฆฌ์ค(resume)์ ์ง์ํ๋ฉด "last event id" ๊ฐ์ ์ปค์๋ฅผ ํฌํจํด ํด๋ผ์ด์ธํธ๊ฐ "18452 ์ดํ ๊ฒ ๋ณด๋ด์ค"๋ผ๊ณ ์์ฒญํ ์ ์๊ฒ ํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ์ฐ๊ฒฐ์ด ์์ธก ๊ฐ๋ฅํด์ง๋๋ค.
๋ฐฑํ๋ ์ (ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ๋ผ์ค์ง ๋ชปํ ๊ฒฝ์ฐ)๋ "ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ๋ผ์ค์ง ๋ชปํ๋ฉด ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ?"์ ๋ฌธ์ ์ ๋๋ค. ๋ผ์ด๋ธ ๋์๋ณด๋์์๋ ์ ๋ฐ์ดํธ๋ฅผ ํฉ์น๋ ๊ฒ ์์ฃผ ๊ด์ฐฎ์ต๋๋ค. ์งํ๋ฅ ์ด 41%, 42%, 43%๋ก ๋น ๋ฅด๊ฒ ๋ณํ ๋ ํฐ์ด ๋ฐ์ ๊ฒฝ์ฐ 43%๋ง ๋ณด๋ด๋ฉด ๋ฉ๋๋ค.
๋ํ ์คํธ๋ฆฌ๋ฐ์ด ์ฌ์ฉ ๋ถ๊ฐํ ๋ ์ ํ์ด ์ฌ์ ํ ์ ์ฉํ๋๋ก ํด๋ฐฑ์ ๊ณํํ์ธ์. ์ผ๋ฐ์ ์ธ ์ ํ์ง๋ ์์๋ก 5~15์ด ๊ฐ๊ฒฉ์ ํด๋ง์ผ๋ก ์ ํํ๊ฑฐ๋ ๋ ์ค์ํ ํ๋ฉด์ ์๋ ์๋ก๊ณ ์นจ ๋ฒํผ์ ๋๋ ๊ฒ์ ๋๋ค.
AppMaster๋ก ๊ฐ๋ฐํ๋ฉด ์ข ์ข ๋ ๊ฒฝ๋ก๋ก ๊น๋ํ๊ฒ ๋งคํ๋ฉ๋๋ค: "ํซ" ์ ๋ฐ์ดํธ๋ฅผ ์ํ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํ๋ฆ๊ณผ ํด๋ฐฑ์ฉ ํ์ค API ์ฝ๊ธฐ์ ๋๋ค.
์ค์ ์: ๋ผ์ด๋ธ ๋์๋ณด๋์ ์์ ์งํ ์ ๋ฐ์ดํธ
์ฌ๊ณ 200๊ฐ SKU๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ฐฝ๊ณ ๋์๋ณด๋๋ฅผ ์์ํด๋ณด์ธ์. REST ํด๋ง์ด๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ /inventory๋ฅผ 5์ด๋ง๋ค ํธ์ถํด ์ ์ฒด JSON ๋ชฉ๋ก์ ๋ฐ๊ณ ํ
์ด๋ธ์ ๋ค์ ๊ทธ๋ฆฝ๋๋ค. ๋๋ถ๋ถ์ ์๊ฐ ์๋ฌด๊ฒ๋ ๋ฐ๋์ง ์์ง๋ง ๋ฐ๋ณต ์์ฒญ, ์ ์ฒด ์๋ต, ๋ฐ๋ณต ํ์ฑ ๋น์ฉ์ ์ง๋ถํฉ๋๋ค.
์คํธ๋ฆฌ๋ฐ์ด๋ฉด ํ๋ฆ์ด ๋ฐ๋๋๋ค. ํด๋ผ์ด์ธํธ๋ ํ๋์ ์ฅ๊ธฐ ์คํธ๋ฆผ์ ์ด๊ณ ์ด๊ธฐ ์ค๋ ์ท์ ๋ฐ์ ๋ค(UI๊ฐ ์ฆ์ ๋ ๋๋งํ๋๋ก) ๋ณ๊ฒฝ์ด ์์ ๋๋ง ์์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ต๋๋ค.
์ผ๋ฐ์ ์ธ ๋์๋ณด๋ ๋ทฐ:
- ์ด๊ธฐ ์ํ: SKU ์ ์ฒด ๋ชฉ๋ก, ์๋, ๊ฐ ํ์ "๋ง์ง๋ง ์ ๋ฐ์ดํธ" ํ์์คํฌํ
- ์ฆ๋ถ ์ ๋ฐ์ดํธ: ๋ณ๊ฒฝ๋ ํ๋ง(์: SKU-184๊ฐ 12์์ 11๋ก ๋ณ๊ฒฝ)
- ์ ์ ๋ ์ ํธ: ์ ์ญ "๋ฐ์ดํฐ ์ต์ ์์ " ํ์๋ก ์ฌ์ฉ์๊ฐ ์ ๋ขฐํ ์ ์๊ฒ ํจ
๋ ๋ฒ์งธ ํ๋ฉด์ผ๋ก ์ฅ์๊ฐ ์์ (์: CSV ๊ฐ์ ธ์ค๊ธฐ, ์๋ณ ์ก์ฅ ์์ฑ)์ ์ถ๊ฐํด ๋ณด์ธ์. ํด๋ง์ ์ข ์ข ์ด์ํ ๋์ฝ์ ๋ง๋ญ๋๋ค: 0%, 0%, 0%, 80%, ์๋ฃ. ์คํธ๋ฆฌ๋ฐ์ ๋ ์ ์งํ๊ณ ์ฐจ๋ถํ ๋๋์ ์ค๋๋ค.
์งํ ์คํธ๋ฆผ์ ๋ณดํต ์๊ณ ๋น๋ฒํ ์ค๋ ์ท์ ๋ณด๋ ๋๋ค:
- ์๋ฃ ๋น์จ(0~100)
- ํ์ฌ ๋จ๊ณ("Validating", "Matching", "Writing")
- ETA(์ถ์ ์น, ๋ณ๊ฒฝ ๊ฐ๋ฅ)
- ์ต์ข ๊ฒฐ๊ณผ(์ฑ๊ณต, ๊ฒฝ๊ณ , ์ค๋ฅ ๋ฉ์์ง)
๋ธํ vs ์ค๋ ์ท ์ ํ์ ์ค์ํฉ๋๋ค. ์ฌ๊ณ ๊ฐ์ ๊ฒฝ์ฐ ๋ธํ๊ฐ ์ข์ต๋๋ค(๋งค์ฐ ์์). ์์ ์งํ์ ๊ฐ ๋ฉ์์ง๊ฐ ์ด๋ฏธ ์๊ธฐ ๋๋ฌธ์ ์ค๋ ์ท์ด ์์ ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ฌ์ฐ๊ฒฐ ์ ๋๋ฝ๋ ๋ฉ์์ง๋ก ์ธํ ํผ๋์ ์ค์ฌ์ค๋๋ค.
AppMaster ๊ฐ์ ํ๋ซํผ์์ ๋น๋ํ๋ฉด ๋ณดํต ์ฝ๊ธฐ ๋ชจ๋ธ(์ด๊ธฐ ์ํ) + ์ด๋ฒคํธ์ฑ ์ ๋ฐ์ดํธ(๋ธํ)๋ก ๋งคํ๋์ด UI๊ฐ API๋ฅผ ๊ณผ๋ค ์ฌ์ฉํ์ง ์๊ณ ๋ ๋ฐ์์ฑ์ ์ ์งํฉ๋๋ค.
๋ชจ๋ฐ์ผ ํด๋ผ์ด์ธํธ์์ ๋ฌ๋ผ์ง๋ ์
ํด๋ํฐ์์๋ "์ฐ์ ์ฐ๊ฒฐ"์ด ๋ฐ์คํฌํฑ๊ณผ ๋ค๋ฅด๊ฒ ๋์ํฉ๋๋ค. ๋คํธ์ํฌ๋ WiโFi์ ์ ๋ฃฐ๋ฌ ์ฌ์ด๋ฅผ ์ ํํ๊ณ ํฐ๋์ด ๋ฆฌ์ ๋๋ฉฐ ์ฌ์ฉ์๋ ์๋ฆฌ๋ฒ ์ดํฐ์ ๋ค์ด๊ฐ๋๋ค. ํต์ฌ์ ์ธ์ ์ด ์ธ์ ๋ ์ฌ๋ผ์ง ์ ์๋ค๋ ๊ด์ ์ผ๋ก ์ค๊ณํด์ผ ํ๋ค๋ ์ ์ ๋๋ค.
๋๊น์ ์์ํ๊ณ ์์ ํ ์ฌ์ฌ์(replay)์ ์ค๊ณํ์ธ์. ์ข์ ์คํธ๋ฆผ์ "last event id" ๊ฐ์ ์ปค์๋ฅผ ํฌํจํด ์ฑ์ด ์ฌ์ฐ๊ฒฐ ์ "์ฌ๊ธฐ์๋ถํฐ ์ด์ด์ค"๋ผ๊ณ ๋งํ ์ ์๊ฒ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ณต ์ ๋ฐ์ดํธ(๊ฐ์ ์งํ ๋จ๊ณ๊ฐ ๋ ๋ฒ ๋ณด์)๋ ๋๋ฝ(40%์์ 90%๋ก ๊ฑด๋๋)์ด ๋ฐ์ํฉ๋๋ค.
๋ฉ์์ง๊ฐ ์๊ณ ์๋ฏธ ์์ ๋ ์คํธ๋ฆฌ๋ฐ์ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ๊ฐ์ ํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ํ์ง๋ง ๋ฉ์์ง๋ง๋ค ์ ์ฒด ๊ฐ์ฒด๋ฅผ ์ด๋น ์ ์กํ๋ฉด ๋ฐ์ดํฐ์ ๋ฐฐํฐ๋ฆฌ๋ฅผ ๋นจ๋ฆฌ ์๋ชจํฉ๋๋ค. "order 183 status changed to Shipped" ๊ฐ์ ๊ฐ๊ฒฐํ ์ด๋ฒคํธ๋ฅผ ์ ํธํ์ธ์.
์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ ์์ ๋ ์คํธ๋ฆฌ๋ฐ์ ๋ณดํต ์ ์ง๋๊ฑฐ๋ OS์ ์ํด ์ข ๋ฃ๋ฉ๋๋ค. ๋ช ํํ ํด๋ฐฑ์ ๊ณํํ์ธ์: ๋ง์ง๋ง ์๋ ค์ง ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ํฌ๊ทธ๋ผ์ด๋๋ก ๋์์ฌ ๋ ์๋ก๊ณ ์นจํฉ๋๋ค. ๊ธด๊ธ ์ด๋ฒคํธ๋ ํ๋ซํผ ํธ์ ์๋ฆผ์ ์ฌ์ฉํด ์ฌ์ฉ์๊ฐ ํญํ๋ฉด ์ฑ์ด ์ด๋ฆฌ๊ณ ๋๊ธฐํํ๋๋ก ํ์ธ์.
๋ชจ๋ฐ์ผ ๋์๋ณด๋ ๋ฐ ์งํ ์ ๋ฐ์ดํธ์ ๋ํ ์ค์ฉ์ ์ ๊ทผ๋ฒ:
- ์ฌ์ฐ๊ฒฐ ์ ๋ฐฑ์คํ(backoff)๋ฅผ ์ ์ฉํด ๋์ ์ฐ๊ฒฐ ์ํ์์ ๋ฐฐํฐ๋ฆฌ๋ฅผ ๋ญ๋นํ์ง ์๊ฒ ํฉ๋๋ค.
- ์ด๋ฒคํธ id๋ ํ์์คํฌํ๋ฅผ ํฌํจํ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ๋ฉฑ๋ฑํ๊ฒ ๋ง๋ค์ด ์ค๋ณต์ด UI๋ฅผ ๋ง์น์ง ์๊ฒ ํฉ๋๋ค.
- ์๋ฏธ๊ฐ ์์ผ๋ฉด ๋ธํ๋ฅผ ๋ณด๋ด๊ณ , ์ฐ์ ์์๊ฐ ๋ฎ์ ์ ๋ฐ์ดํธ๋ ๋ฐฐ์นํฉ๋๋ค.
- ์ฐ๊ฒฐ ์ ์ค๋ ์ท์ ๋ณด๋ด UI๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์์ํ๋๋ก ํ ๋ค ๋ผ์ด๋ธ ์ด๋ฒคํธ๋ฅผ ์ ์ฉํฉ๋๋ค.
- ๊ฐ๋จํ ๋ฒ์ ๊ด๋ฆฌ(๋ฉ์์ง ํ์ + ์ ํ์ ํ๋)๋ฅผ ์ถ๊ฐํด ์ค๋๋ ์ฑ ๋ฒ์ ๋ ๋์ํ๋๋ก ํฉ๋๋ค.
AppMaster๋ก ๋ชจ๋ฐ์ผ ์ฑ์ ๋น๋ํ๋ฉด ์คํธ๋ฆผ์ "์์ผ๋ฉด ์ข์" ๊ฒฝ๋ก๋ก ์ทจ๊ธํ๊ณ "์ ์ผํ ์ง์ค ์์ฒ"์ผ๋ก ๋ง๋ค์ง ๋ง์ธ์. ์งง์ ๋๊น ๋์์๋ UI๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
๋ฐฉํ๋ฒฝ, ํ๋ก์, HTTP/2 ์ฃผ์์ฌํญ
์คํธ๋ฆฌ๋ฐ์ ์ด๋ก ์ ๋ช ํํ ์ด์ ์ผ๋ก ๋ณด์ด์ง๋ง ์ค์ ๋คํธ์ํฌ๊ฐ ๊ฐ์ ํ๋ฉด ์ํฉ์ด ๋ฌ๋ผ์ง๋๋ค. ํต์ฌ ์ฐจ์ด๋ ์ฐ๊ฒฐ์ ๋๋ค: ์คํธ๋ฆฌ๋ฐ์ ๋ณดํต ์ฅ๊ธฐ HTTP/2 ์ฐ๊ฒฐ์ ์๋ฏธํ๋ฉฐ ์ด๋ ๊ธฐ์ ํ๋ก์, ๋ฏธ๋ค๋ฐ์ค, ์๊ฒฉํ ๋ณด์ ์ค์ ์ ํ๋ค๋ฆฌ๊ฒ ํ ์ ์์ต๋๋ค.
๊ธฐ์ ๋คํธ์ํฌ๋ TLS ๊ฒ์ฌ(ํธ๋ํฝ์ ๋ณตํธํํ๊ณ ์ฌ์ํธํํ๋ ํ๋ก์)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด HTTP/2 ํ์์ด ๊นจ์ง๊ฑฐ๋ ์ฅ๊ธฐ ์คํธ๋ฆผ์ด ์ฐจ๋จ๋๊ฑฐ๋ ๋์์ด ์กฐ์ฉํ ์ ํ๋ ์ ์์ต๋๋ค. ์ฆ์์ ๋ฌด์์ ๋๊น, ์คํธ๋ฆผ์ด ์์๋์ง ์์, ์ ๋ฐ์ดํธ๊ฐ ๋ถ๋๋ฝ๊ฒ ์ค์ง ์๊ณ ๋ฒ์คํธ๋ก ๋์ฐฉํ๋ ๋ฑ์ ๋๋ค.
ํด๋์ gRPC๋ HTTP/2 ์ง์์ด ํ์์ ๋๋ค. ํ๋ก์๊ฐ HTTP/1.1๋ง ์ง์ํ๋ฉด ์ ์์ ์ธ REST๋ ์๋ํ์ง๋ง ํธ์ถ์ด ์คํจํ ์ ์์ต๋๋ค. ๊ทธ๋์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์๋ gRPC-Web์ด ๋ ์ ํต๊ณผํ๋๋ก ์ค๊ณ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๋ก๋ ๋ฐธ๋ฐ์, ์ ํด ํ์์์, ํต์ผ๋ผ์ด๋ธ
๋คํธ์ํฌ๊ฐ HTTP/2๋ฅผ ํ์ฉํ๋๋ผ๋ ์ธํ๋ผ์คํธ๋ญ์ฒ๋ ์ข ์ข ์ ํด ํ์์์์ ๊ฐ์ง๋๋ค. ํ๋์ ์กฐ์ฉํ ์คํธ๋ฆผ์ ๋ก๋ ๋ฐธ๋ฐ์๋ ํ๋ก์์ ์ํด ๋๊ธธ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ํด๊ฒฐ์ฑ :
- ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ ์ ํ ํต์ผ๋ผ์ด๋ธ(ping) ์ค์ ์ ๋ก๋๋ค(๋๋ฌด ์ฆ์ง ์๊ฒ).
- ๋ก๋ ๋ฐธ๋ฐ์์ ๋ฆฌ๋ฒ์ค ํ๋ก์์ ์ ํด ํ์์์์ ๋๋ฆฝ๋๋ค.
- ๊ธด ๋ฌด์๋ต ๊ธฐ๊ฐ์ด ์ ์์ธ ๊ฒฝ์ฐ ์์ ํํธ๋นํธ๋ฅผ ๋ณด๋ ๋๋ค.
- ์ฌ์ฐ๊ฒฐ์ ๊น๋ํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค(์ํ๋ฅผ ์ด์ด๊ฐ๊ธฐ, ์ค๋ณต ์ด๋ฒคํธ ํํผ).
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ์์ชฝ์์ ๋๊น ์์ธ์ ๋ก๊ทธ๋ก ๋จ๊น๋๋ค.
gRPC-Web ๋๋ ํด๋ฐฑ์ ์ ํธํ ๋
์ฌ์ฉ์๊ฐ ์ ๊ธด ๊ธฐ์ ๋คํธ์ํฌ ๋ค์ ์๋ค๋ฉด ์คํธ๋ฆฌ๋ฐ์ ์ต์ ์ ๋ ธ๋ ฅ(best-effort)์ผ๋ก ์ทจ๊ธํ๊ณ ํด๋ฐฑ ์ฑ๋์ ์ ๊ณตํ์ธ์. ์ผ๋ฐ์ ์ธ ๋ถํ ์ ๋ค์ดํฐ๋ธ ์ฑ์๋ gRPC ์คํธ๋ฆฌ๋ฐ์ ์ ์งํ๋, ๋ธ๋ผ์ฐ์ ํ๋ก์ ๊ฐ์ ๋คํธ์ํฌ์์๋ gRPC-Web(๋๋ ์งง์ REST ํด๋ง)์ ํ์ฉํ๋ ๊ฒ์ ๋๋ค.
์ฌ์ฉ์๋ค์ด ์ค์ ๋ก ์ฌ์ฉํ๋ ์ฅ์์์ ํ ์คํธํ์ธ์:
- ํ๋ก์ ์ ์ฑ ์ด ์๋ ๊ธฐ์ ์ฌ๋ด ๋คํธ์ํฌ
- ๊ณต๊ณต ์์ดํ์ด
- VPN ์ฐ๊ฒฐ
- ๋ชจ๋ฐ์ผ ํต์ ์ฌ ๋คํธ์ํฌ
AppMaster๋ฅผ AppMaster Cloud๋ ์ฃผ์ ํด๋ผ์ฐ๋ ์ ๊ณต์์ ๋ฐฐํฌํ๋ค๋ฉด ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ๋ฟ๋ง ์๋๋ผ ์๋ํฌ์๋๋ก ์ด๋ฌํ ๋์์ ๊ฒ์ฆํ์ธ์.
ํํ ์ค์์ ํจ์
๊ฐ์ฅ ํฐ ํจ์ ์ ์คํธ๋ฆฌ๋ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ทจ๊ธํ๋ ๊ฒ์ ๋๋ค. ์ค์๊ฐ์ ์ข๊ฒ ๋๊ปด์ง์ง๋ง ์๋ฒ ๋ถํ, ๋ชจ๋ฐ์ผ ๋ฐฐํฐ๋ฆฌ ์ฌ์ฉ, ๊ณ ๊ฐ ์ง์ ์์ฒญ์ ์กฐ์ฉํ ๋๋ฆด ์ ์์ต๋๋ค. ์ด๋ค ํ๋ฉด์ด ์ ๋ง ์ด ๋จ์ ์ ๋ฐ์ดํธ๊ฐ ํ์ํ์ง ์๊ฒฉํ ํ๋จํ๊ณ ๋๋จธ์ง๋ 30~60์ด ๊ฐ๊ฒฉ์ผ๋ก ์๋ก๊ณ ์นจํ๋๋ก ์์ํ์ธ์.
๋ ๋ค๋ฅธ ์ค์๋ ์ด๋ฒคํธ๋ง๋ค ์ ์ฒด ๊ฐ์ฒด๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๋๋ค. ๋ถ๋น 200KB์ง๋ฆฌ JSON ๋ฉ์ด๋ฆฌ๋ฅผ ๋งค์ด ํธ์ํ๋ ๋ผ์ด๋ธ ๋์๋ณด๋๋ ๋ฐ์ ์๊ฐ์ด ๋๋ฉด ๊ธ๋ฐฉ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ์์ ๋ธํ๋ฅผ ์ ํธํ์ธ์: "order 4832 status changed to shipped"์ฒ๋ผ ์ ์ฒด ์ฃผ๋ฌธ์ ๋ค์ ๋ณด๋ด์ง ๋ง์ธ์.
๋ณด์๋ ์ข ์ข ๊ฐ๊ณผ๋ฉ๋๋ค. ์ฅ๊ธฐ ์คํธ๋ฆผ์ด๋ผ๋ ๊ฐ๋ ฅํ ์ธ์ฆ๊ณผ ๊ถํ ๊ฒ์ฌ๊ฐ ํ์ํ๊ณ , ์ค๊ฐ์ ํ ํฐ ๋ง๋ฃ์ ๋๋นํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํ๋ก์ ํธ ์ ๊ทผ ๊ถํ์ ์์ผ๋ฉด ์๋ฒ๋ ์ฆ์ ์ ๋ฐ์ดํธ ์ ์ก์ ์ค๋จํด์ผ ํฉ๋๋ค.
์ฌ์ฐ๊ฒฐ ๋์์ ํนํ ๋ชจ๋ฐ์ผ์์ ๋ง์ ์ฑ์ด ์คํจํ๋ ๊ณณ์ ๋๋ค. ํฐ์ WiโFi์ LTE๋ฅผ ์ค๊ฐ๊ณ ์ ๋ค๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ช ๊ฐ์ง ์ต๊ด์ด ์ต์ ์ ์คํจ๋ฅผ ๋ง์์ค๋๋ค: ๋๊น์ ๊ฐ์ ํ๊ธฐ; ๋ง์ง๋ง์ผ๋ก ๋ณธ ์ด๋ฒคํธ id(๋๋ ํ์์คํฌํ)์์ ์ด์ด๊ฐ๊ธฐ; ์ ๋ฐ์ดํธ๋ฅผ ๋ฉฑ๋ฑ์ผ๋ก ์ค๊ณํด ์ฌ์๋๊ฐ ์ค๋ณต์ ๋ง๋ค์ง ์๊ฒ ํ๊ธฐ; ๋๋ฆฐ ๋คํธ์ํฌ์ ๋ํ ํ์์์๊ณผ ํต์ผ๋ผ์ด๋ธ๋ฅผ ์ค์ ํ๊ธฐ; ์คํธ๋ฆฌ๋ฐ์ด ์คํจํ๋ฉด ์ ๋น๋ ํด๋ง ๊ฐ์ ์ด์ ๋ชจ๋ ์ ๊ณตํ๊ธฐ.
๋ง์ง๋ง์ผ๋ก, ํ๋ค์ด ๊ด์ธก(๋ชจ๋ํฐ๋ง) ์์ด ์คํธ๋ฆฌ๋ฐ์ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋๊น ๋น์จ, ์ฌ์ฐ๊ฒฐ ๋ฃจํ, ๋ฉ์์ง ์ง์ฐ, ๋๋ฝ๋ ์ ๋ฐ์ดํธ๋ฅผ ์ถ์ ํ์ธ์. ์๋ฒ๋ 100% ์๋ฃ๋ฅผ ๋ณด๊ณ ํ๋๋ฐ ํด๋ผ์ด์ธํธ๊ฐ 20์ด๊ฐ 70%์ ๋จธ๋ฌผ๋ฌ ์๋ค๋ฉด ์ง์ฐ์ด ์ด๋์ ๋ฐ์ํ๋์ง(์๋ฒ, ๋คํธ์ํฌ, ํด๋ผ์ด์ธํธ)๋ฅผ ๋ณด์ฌ์ค ๋ฉํธ๋ฆญ์ด ํ์ํฉ๋๋ค.
์คํธ๋ฆฌ๋ฐ์ ์ ํํ๊ธฐ ์ ์ ๋น ๋ฅธ ์ฒดํฌ๋ฆฌ์คํธ
์ฌ์ฉ์์๊ฒ "์ค์๊ฐ"์ด ์ ํํ ๋ฌด์์ ์๋ฏธํ๋์ง ๊ฒฐ์ ํ์ธ์.
์ง์ฐ์ผ๋ก ์์ํ์ธ์. ๋์๋ณด๋๊ฐ ์ค์๊ฐ์ผ๋ก ๋๊ปด์ ธ์ผ ํ๋ค๋ฉด 1์ด ์ดํ ์ ๋ฐ์ดํธ๊ฐ ์คํธ๋ฆผ์ ์ ๋นํํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ 10์ด ๋๋ 1๋ถ ์ ๋๋ฉด ๊ด์ฐฎ๋ค๋ฉด ๋จ์ ํด๋ง์ด ๋น์ฉ๊ณผ ๋จ์์ฑ ์ธก๋ฉด์์ ์ด๊น๋๋ค.
๊ทธ๋ค์ ํฌ์์(fan-out)์ ๋ณด์ธ์. ๊ฐ์ ๋ฐ์ดํฐ ํผ๋๋ฅผ ๋ง์ ์ฌ๋์ด ๋์์ ๋ณด๋ ๊ฒฝ์ฐ(๋ฒฝ๋ฉด์ฉ ์ด์ ๋์๋ณด๋ + 50๋ช ์ ๋ธ๋ผ์ฐ์ ๋ฑ) ํด๋ง์ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ถํ๋ก ์ด์ด์ง๋๋ค. ์คํธ๋ฆฌ๋ฐ์ ๋ฐ๋ณต ์์ฒญ์ ์ค์ด์ง๋ง ์ฌ์ ํ ๋ง์ ์ด๋ฆฐ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
๊ฐ๋จํ ๊ฒฐ์ ์ฒดํฌ๋ฆฌ์คํธ:
- ๋ณ๊ฒฝ์ด ์ผ๋ง๋ ๋นจ๋ฆฌ ๋ณด์ฌ์ผ ํ๋๊ฐ: 1์ด ์ด๋ด, ์ฝ 10์ด, ๋๋ ์ฝ 1๋ถ?
- ๋์์ ๋์ผ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ํด๋ผ์ด์ธํธ ์๋ ์ผ๋ง์ด๋ฉฐ ์ผ๋ง๋ ์ค๋ ๋ณด๋๊ฐ?
- ํด๋ผ์ด์ธํธ๊ฐ 30์ด ์คํ๋ผ์ธ์ด๋ฉด ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ: ์ค๋๋ ๋ฐ์ดํฐ ๋ณด์ฌ์ฃผ๊ธฐ, ์ ๋ฐ์ดํธ ๋ฒํผ๋ง, ๋๋ ์ํ ์ฌ๋ก๋ฉ?
- ๋คํธ์ํฌ ๊ฒฝ๋ก๊ฐ ํ๋ก์์ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ํฌํจํด ๋๊น์ง HTTP/2๋ฅผ ์ง์ํ๋๊ฐ?
- ์คํธ๋ฆฌ๋ฐ์ด ํ๋ก๋์ ์์ ๊นจ์ง ๋ ์์ ํ ํด๋ฐฑ(์: ์์ ํด๋ง)์ด ์๋๊ฐ?
๋ํ ์คํจ์ ๋ณต๊ตฌ๋ฅผ ๊ณ ๋ คํ์ธ์. ์คํธ๋ฆฌ๋ฐ์ ์๋ํ ๋ ํ๋ฅญํ์ง๋ง ์ฌ์ฐ๊ฒฐ, ๋๋ฝ ์ด๋ฒคํธ, UI ์ผ๊ด์ฑ ์ ์ง๊ฐ ์ด๋ ต์ต๋๋ค. ์ค์ฉ์ ์ธ ์ค๊ณ๋ ์คํธ๋ฆฌ๋ฐ์ ๋น ๋ฅธ ๊ฒฝ๋ก๋ก ์ฌ์ฉํ๋ ์ฌ์ฐ๊ฒฐ ํ ํ์ฌ ์ํ๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ๋จ์ผ REST ํธ์ถ(๋ฆฌ์ํฌ(sync) ์ก์ )์ ์ ์ํ๋ ๊ฒ์ ๋๋ค.
๋์๋ณด๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋กํ ํ์ดํํ๋ ๊ฒฝ์ฐ(์: AppMaster์ ๋ ธ์ฝ๋ UI๋ก) ์ด ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ๋นจ๋ฆฌ ์ ์ฉํด ๋ฐฑ์๋๋ฅผ ๊ณผ๋ํ๊ฒ ๊ตฌ์ถํ์ง ๋ง์ธ์.
๋ค์ ๋จ๊ณ: ์์ ์คํธ๋ฆผ์ผ๋ก ํ์ผ๋ฟํ๊ณ ์์ ํ๊ฒ ํ์ฅํ์ธ์
์คํธ๋ฆฌ๋ฐ์ ์ค์์น ํ๋๋ก ์ผ๋ ๊ฒ์ด ์๋๋ผ ์ป์ด์ผ ํ ๊ฐ์น๋ก ์ทจ๊ธํ์ธ์. ์ ์ ๋๊ฐ ๋ถ๋ช ํ ๊ฐ์น ์๋ ํ ๊ณณ์ ์ ํํ๊ณ ๋๋จธ์ง๋ ๊ทธ๋๋ก ๋์ธ์.
์์ ๋ฒ์๋ก ์์ํ์ธ์: ์ฅ์๊ฐ ์์ ์ ์งํ ์ ๋ฐ์ดํธ(ํ์ผ ๊ฐ์ ธ์ค๊ธฐ, ๋ณด๊ณ ์ ์์ฑ)๋ ๋ผ์ด๋ธ ๋์๋ณด๋์ ํ ์นด๋(์ค๋์ ์ฃผ๋ฌธ, ํ์ฑ ํฐ์ผ, ํ์ฌ ๋๊ธฐ์ด ๊ธธ์ด)์ฒ๋ผ ํ๋์ ๊ณ ๊ฐ์น ์คํธ๋ฆผ์ ์ ํํ์ธ์. ๋ฒ์๋ฅผ ์ขํ๋ฉด ํด๋ง๊ณผ ์ค์ ์์น๋ฅผ ๋น๊ตํ๊ธฐ๋ ์ฝ์ต๋๋ค.
๊ฐ๋จํ ํ์ผ๋ฟ ๊ณํ:
- ์ฑ๊ณต ์ ์: ๋ชฉํ ์ ๋ฐ์ดํธ ์ง์ฐ, ํ์ฉ ๊ฐ๋ฅํ ๋๊น ๋น์จ, ๋ชจ๋ฐ์ผ์์์ "์ถฉ๋ถํ ์ข์" ๊ธฐ์ค
- ์ต์ ์คํธ๋ฆผ ๋ฐฐํฌ: ๋ฉ์์ง ํ์ ํ ๊ฐ, ํ๋ฉด ํ ๊ฐ, ๋ฐฑ์๋ ์๋ํฌ์ธํธ ํ ๊ฐ
- ๊ธฐ๋ณธ ์งํ ์ธก์ : ์๋ฒ CPU/๋ฉ๋ชจ๋ฆฌ, ์ด๋ฆฐ ์ฐ๊ฒฐ ์, ๋ฉ์์ง ์ง์ฐ, ์ฌ์ฐ๊ฒฐ ๋น๋, ํด๋ผ์ด์ธํธ ๋ฐฐํฐ๋ฆฌ ์ํฅ
- ํด๋ฐฑ ์ถ๊ฐ: ์คํธ๋ฆผ์ด ์คํจํ๊ฑฐ๋ ๋คํธ์ํฌ๊ฐ ์ฐจ๋จ๋๋ฉด ์๋์ผ๋ก ๋๋ฆฐ ํด๋ง ๋ชจ๋๋ก ์ ํ
- ์ ์คํ ํ์ฅ: ๋ฉํธ๋ฆญ์ ์ค๋ช ํ ์ ์์ ๋๋ง ํ๋๋ ํ๋ฉด ์ถ๊ฐ
ํด๋ฐฑ์ ์๋์ ์ผ๋ก ์ ์งํ์ธ์. ์ผ๋ถ ๊ธฐ์ ๋คํธ์ํฌ, ์ค๋๋ ํ๋ก์, ์๊ฒฉํ ๋ฐฉํ๋ฒฝ์ HTTP/2์ ์ถฉ๋ํ ์ ์๊ณ , ๋ชจ๋ฐ์ผ ๋คํธ์ํฌ๋ ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ ์์ ๋ ๋ถ์์ ํฉ๋๋ค. ์ฐ์ํ ๋ค์ด๊ทธ๋ ์ด๋๋ ๋น ํ๋ฉด๊ณผ ๊ณ ๊ฐ ์ง์ ํฐ์ผ์ ํผํ๊ฒ ํด์ค๋๋ค.
๋ฌด๊ฑฐ์ด ์ปค์คํ ์ฝ๋๋ฅผ ์ฐ์ง ์๊ณ ์ด๊ฑธ ๋ฐฐํฌํ๊ณ ์ถ๋ค๋ฉด AppMaster (appmaster.io)๊ฐ ๋ฐฑ์๋ ๋ก์ง, API, UI๋ฅผ ๋น ๋ฅด๊ฒ ๋น๋ํ๊ณ ์๊ตฌ์ฌํญ ๋ณํ์ ๋ฐ๋ผ ๋ฐ๋ณตํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค. ์๊ฒ ์์ํด ๊ฐ์น๋ฅผ ์ฆ๋ช ํ๊ณ ํด๋ง์ ๋์ฒดํ ๊ณณ์๋ง ์คํธ๋ฆผ์ ์ถ๊ฐํ์ธ์.


